aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unittests/archive_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unittests/archive_tests.py')
-rw-r--r--tests/unittests/archive_tests.py120
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/unittests/archive_tests.py b/tests/unittests/archive_tests.py
new file mode 100644
index 00000000..320006d0
--- /dev/null
+++ b/tests/unittests/archive_tests.py
@@ -0,0 +1,120 @@
+# 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.
+import unittest
+import os
+import tarfile
+import tempfile
+import shutil
+
+from sos.archive import TarFileArchive
+from sos.utilities import tail
+from sos.policies import Policy
+
+
+class TarFileArchiveTest(unittest.TestCase):
+
+ def setUp(self):
+ self.tmpdir = tempfile.mkdtemp()
+ enc = {'encrypt': False}
+ self.tf = TarFileArchive('test', self.tmpdir, Policy(), 1, enc, '/')
+
+ def tearDown(self):
+ shutil.rmtree(self.tmpdir)
+
+ def check_for_file(self, filename):
+ rtf = tarfile.open(os.path.join(self.tmpdir, 'test.tar'))
+ 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')))
+
+ def test_add_file(self):
+ self.tf.add_file('tests/ziptest')
+ self.tf.finalize('auto')
+
+ self.check_for_file('test/tests/ziptest')
+
+ def test_add_node_dev_null(self):
+ st = os.lstat('/dev/null')
+ dev_maj = os.major(st.st_rdev)
+ dev_min = os.minor(st.st_rdev)
+ self.tf.add_node('/dev/null', st.st_mode, os.makedev(dev_maj, dev_min))
+
+ # when the string comes from tail() output
+ def test_add_string_from_file(self):
+ self.copy_strings = []
+ testfile = tempfile.NamedTemporaryFile(dir=self.tmpdir, delete=False)
+ testfile.write(b"*" * 1000)
+ testfile.flush()
+ testfile.close()
+
+ self.copy_strings.append((tail(testfile.name, 100), 'string_test.txt'))
+ self.tf.add_string(self.copy_strings[0][0], 'tests/string_test.txt')
+ self.tf.finalize('auto')
+
+# Since commit 179d9bb add_file does not support recursive directory
+# addition. Disable this test for now.
+# def test_add_dir(self):
+# self.tf.add_file('tests/')
+# self.tf.close()
+#
+# self.check_for_file('test/tests/ziptest')
+
+ def test_add_renamed(self):
+ self.tf.add_file('tests/ziptest', dest='tests/ziptest_renamed')
+ self.tf.finalize('auto')
+
+ self.check_for_file('test/tests/ziptest_renamed')
+
+# Since commit 179d9bb add_file does not support recursive directory
+# addition. Disable this test for now.
+# def test_add_renamed_dir(self):
+# self.tf.add_file('tests/', 'tests_renamed/')
+# self.tf.close()
+#
+# self.check_for_file('test/tests_renamed/ziptest')
+
+ def test_add_string(self):
+ self.tf.add_string('this is content', 'tests/string_test.txt')
+ self.tf.finalize('auto')
+
+ self.check_for_file('test/tests/string_test.txt')
+
+ def test_get_file(self):
+ self.tf.add_string('this is my content', 'tests/string_test.txt')
+
+ afp = self.tf.open_file('tests/string_test.txt')
+ self.assertEquals('this is my content', afp.read())
+
+ def test_rewrite_file(self):
+ """Test that re-writing a file with add_string() modifies the content.
+ """
+ self.tf.add_string('this is my content', 'tests/string_test.txt')
+ self.tf.add_string('this is my new content', 'tests/string_test.txt')
+
+ afp = self.tf.open_file('tests/string_test.txt')
+ self.assertEquals('this is my new content', afp.read())
+
+ def test_make_link(self):
+ self.tf.add_file('tests/ziptest')
+ self.tf.add_link('tests/ziptest', 'link_name')
+
+ self.tf.finalize('auto')
+ self.check_for_file('test/link_name')
+
+ def test_compress(self):
+ self.tf.finalize("auto")
+
+
+if __name__ == "__main__":
+ unittest.main()
+
+# vim: set et ts=4 sw=4 :