aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/portage/tests/gpkg/test_gpkg_stream.py')
-rw-r--r--lib/portage/tests/gpkg/test_gpkg_stream.py93
1 files changed, 93 insertions, 0 deletions
diff --git a/lib/portage/tests/gpkg/test_gpkg_stream.py b/lib/portage/tests/gpkg/test_gpkg_stream.py
new file mode 100644
index 000000000..040590e49
--- /dev/null
+++ b/lib/portage/tests/gpkg/test_gpkg_stream.py
@@ -0,0 +1,93 @@
+# Copyright Gentoo Foundation 2006-2020
+# Portage Unit Testing Functionality
+
+import tempfile
+import io
+import tarfile
+from os import urandom
+
+import portage.gpkg
+from portage import os
+from portage import shutil
+from portage.tests import TestCase
+from portage.exception import CompressorOperationFailed
+
+
+class test_gpkg_stream_case(TestCase):
+ def test_gpkg_stream_reader(self):
+ data = urandom(1048576)
+ data_io = io.BytesIO(data)
+ data_io.seek(0)
+ with portage.gpkg.tar_stream_reader(data_io, ["cat"]) as test_reader:
+ data2 = test_reader.read()
+ data_io.close()
+ self.assertEqual(data, data2)
+
+ def test_gpkg_stream_reader_without_cmd(self):
+ data = urandom(1048576)
+ data_io = io.BytesIO(data)
+ data_io.seek(0)
+ with portage.gpkg.tar_stream_reader(data_io) as test_reader:
+ data2 = test_reader.read()
+ data_io.close()
+ self.assertEqual(data, data2)
+
+ def test_gpkg_stream_reader_kill(self):
+ data = urandom(1048576)
+ data_io = io.BytesIO(data)
+ data_io.seek(0)
+ with portage.gpkg.tar_stream_reader(data_io, ["cat"]) as test_reader:
+ try:
+ test_reader.kill()
+ except CompressorOperationFailed:
+ pass
+ data_io.close()
+ self.assertNotEqual(test_reader.proc.poll(), None)
+
+ def test_gpkg_stream_reader_kill_without_cmd(self):
+ data = urandom(1048576)
+ data_io = io.BytesIO(data)
+ data_io.seek(0)
+ with portage.gpkg.tar_stream_reader(data_io) as test_reader:
+ test_reader.kill()
+ data_io.close()
+ self.assertEqual(test_reader.proc, None)
+
+ def test_gpkg_stream_writer(self):
+ tmpdir = tempfile.mkdtemp()
+ try:
+ gpkg_file_loc = os.path.join(tmpdir, "test.gpkg.tar")
+ data = urandom(1048576)
+ with tarfile.open(gpkg_file_loc, "w") as test_tar:
+ test_tarinfo = tarfile.TarInfo("test")
+ with portage.gpkg.tar_stream_writer(
+ test_tarinfo, test_tar, tarfile.USTAR_FORMAT, ["cat"]
+ ) as test_writer:
+ test_writer.write(data)
+
+ with tarfile.open(gpkg_file_loc, "r") as test_tar:
+ test_tarinfo = test_tar.getmember("test")
+ data2 = test_tar.extractfile(test_tarinfo).read()
+ self.assertEqual(data, data2)
+ finally:
+ shutil.rmtree(tmpdir)
+
+ def test_gpkg_stream_writer_without_cmd(self):
+ tmpdir = tempfile.mkdtemp()
+
+ try:
+ gpkg_file_loc = os.path.join(tmpdir, "test.gpkg.tar")
+ data = urandom(1048576)
+ with tarfile.open(gpkg_file_loc, "w") as test_tar:
+ test_tarinfo = tarfile.TarInfo("test")
+ with portage.gpkg.tar_stream_writer(
+ test_tarinfo, test_tar, tarfile.USTAR_FORMAT
+ ) as test_writer:
+ test_writer.write(data)
+
+ with tarfile.open(gpkg_file_loc, "r") as test_tar:
+ test_tarinfo = test_tar.getmember("test")
+ data2 = test_tar.extractfile(test_tarinfo).read()
+ self.assertEqual(data, data2)
+ finally:
+ shutil.rmtree(tmpdir)