aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJake Hunsaker <jhunsake@redhat.com>2021-05-05 11:20:09 -0400
committerJake Hunsaker <jhunsake@redhat.com>2021-05-12 10:53:15 -0400
commit05d041b1c618d6400bc10544865c3998a3d87131 (patch)
tree224cea913f7144818c5b891346b43f91a80b618f /tests
parent61ff5ce165e654a02fe80b9de5ec8e49ed808ec9 (diff)
downloadsos-05d041b1c618d6400bc10544865c3998a3d87131.tar.gz
[archive] Don't shell out for compressing the archive
As sos is now python3-only, we can avoid shelling-out to compression utilities like `xz` or `gzip`, and instead use the method provided by the built-in `tarfile` module. Resolves: #2523 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/report_tests/compression_tests.py35
-rw-r--r--tests/sos_tests.py9
-rw-r--r--tests/unittests/archive_tests.py4
3 files changed, 46 insertions, 2 deletions
diff --git a/tests/report_tests/compression_tests.py b/tests/report_tests/compression_tests.py
new file mode 100644
index 00000000..95fba481
--- /dev/null
+++ b/tests/report_tests/compression_tests.py
@@ -0,0 +1,35 @@
+# This file is part of the sos project: https://github.com/sosreport/sos
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions of
+# version 2 of the GNU General Public License.
+#
+# See the LICENSE file in the source distribution for further information.
+
+
+from sos_tests import StageOneReportTest
+
+
+class AutoCompressionTest(StageOneReportTest):
+ """Tests to ensure that 'auto' defaults to lzma, as it is in the standard
+ library
+
+ :avocado: tags=stageone
+ """
+
+ sos_cmd = '-o kernel -z auto'
+
+ def test_lzma_compressed(self):
+ self.assertTrue(self.archive.endswith('.tar.xz'))
+
+
+class GzipCompressionTest(StageOneReportTest):
+ """Tests to ensure that users can manually specify the use of gzip
+
+ :avocado: tags=stageone
+ """
+
+ sos_cmd = '-o kernel -z gzip'
+
+ def test_gzip_compressed(self):
+ self.assertTrue(self.archive.endswith('.tar.gz'))
diff --git a/tests/sos_tests.py b/tests/sos_tests.py
index 1279755b..4f50f800 100644
--- a/tests/sos_tests.py
+++ b/tests/sos_tests.py
@@ -503,6 +503,15 @@ class StageOneReportTest(BaseSoSReportTest):
self.assertFileExists(self.archive)
self.assertTrue(os.stat(self.archive).st_uid == 0)
+ def test_checksum_is_valid(self):
+ """Ensure that a checksum was generated, reported, and is correct
+ """
+ _chk = re.findall('sha256\t.*\n', self.cmd_output.stdout)
+ _chk = _chk[0].split('sha256\t')[1].strip()
+ assert _chk, "No checksum reported"
+ _found = process.run("sha256sum %s" % self.archive).stdout.decode().split()[0]
+ self.assertEqual(_chk, _found)
+
def test_no_new_kmods_loaded(self):
"""Ensure that no additional kernel modules have been loaded during an
execution of a test
diff --git a/tests/unittests/archive_tests.py b/tests/unittests/archive_tests.py
index db97feba..8af7cd53 100644
--- a/tests/unittests/archive_tests.py
+++ b/tests/unittests/archive_tests.py
@@ -27,14 +27,14 @@ class TarFileArchiveTest(unittest.TestCase):
shutil.rmtree(self.tmpdir)
def check_for_file(self, filename):
- rtf = tarfile.open(os.path.join(self.tmpdir, 'test.tar'))
+ rtf = tarfile.open(os.path.join(self.tmpdir, 'test.tar.xz'))
rtf.getmember(filename)
rtf.close()
def test_create(self):
self.tf.finalize('auto')
self.assertTrue(os.path.exists(os.path.join(self.tmpdir,
- 'test.tar')))
+ 'test.tar.xz')))
def test_add_file(self):
self.tf.add_file('tests/unittests/ziptest')