diff options
author | Jake Hunsaker <jhunsake@redhat.com> | 2021-05-05 11:20:09 -0400 |
---|---|---|
committer | Jake Hunsaker <jhunsake@redhat.com> | 2021-05-12 10:53:15 -0400 |
commit | 05d041b1c618d6400bc10544865c3998a3d87131 (patch) | |
tree | 224cea913f7144818c5b891346b43f91a80b618f /tests | |
parent | 61ff5ce165e654a02fe80b9de5ec8e49ed808ec9 (diff) | |
download | sos-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.py | 35 | ||||
-rw-r--r-- | tests/sos_tests.py | 9 | ||||
-rw-r--r-- | tests/unittests/archive_tests.py | 4 |
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') |