diff options
Diffstat (limited to 'lib/portage/tests/gpkg/test_gpkg_size.py')
-rw-r--r-- | lib/portage/tests/gpkg/test_gpkg_size.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/lib/portage/tests/gpkg/test_gpkg_size.py b/lib/portage/tests/gpkg/test_gpkg_size.py new file mode 100644 index 000000000..9a4ff0574 --- /dev/null +++ b/lib/portage/tests/gpkg/test_gpkg_size.py @@ -0,0 +1,54 @@ +# Copyright Gentoo Foundation 2006-2020 +# Portage Unit Testing Functionality + +import tempfile +import tarfile + +from portage import os, shutil +from portage.tests import TestCase +from portage.tests.resolver.ResolverPlayground import ResolverPlayground +from portage.gpkg import gpkg + + +class test_gpkg_large_size_case(TestCase): + def test_gpkg_large_size(self): + playground = ResolverPlayground( + user_config={ + "make.conf": ('BINPKG_COMPRESS="gzip"',), + } + ) + tmpdir = tempfile.mkdtemp() + + try: + settings = playground.settings + + orig_full_path = os.path.join(tmpdir, "orig/") + os.makedirs(orig_full_path) + # Check if filesystem support sparse file + with open(os.path.join(orig_full_path, "test"), "wb") as test_file: + test_file.truncate(1048576) + + if os.stat(os.path.join(orig_full_path, "test")).st_blocks != 0: + self.skipTest("Filesystem does not support sparse file") + + with open(os.path.join(orig_full_path, "test"), "wb") as test_file: + test_file.truncate(10737418240) + + gpkg_file_loc = os.path.join(tmpdir, "test.gpkg.tar") + test_gpkg = gpkg(settings, "test", gpkg_file_loc) + + check_result = test_gpkg._check_pre_image_files( + os.path.join(tmpdir, "orig") + ) + self.assertEqual(check_result, (0, 4, 0, 10737418240, 10737418240)) + + test_gpkg.compress(os.path.join(tmpdir, "orig"), {"meta": "test"}) + + with open(gpkg_file_loc, "rb") as container: + # container + self.assertEqual( + test_gpkg._get_tar_format(container), tarfile.GNU_FORMAT + ) + finally: + shutil.rmtree(tmpdir) + playground.cleanup() |