diff options
Diffstat (limited to 'tests/06_test_upstream_source.py')
-rw-r--r-- | tests/06_test_upstream_source.py | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/06_test_upstream_source.py b/tests/06_test_upstream_source.py new file mode 100644 index 0000000..13e0e95 --- /dev/null +++ b/tests/06_test_upstream_source.py @@ -0,0 +1,86 @@ +# Test the UpstreamSource class + +import glob +import os +import shutil +import tarfile +import tempfile +import unittest +import zipfile + +from gbp.deb import UpstreamSource + +class TestDir(unittest.TestCase): + def test_directory(self): + """Upstream source is a directory""" + source = UpstreamSource('.') + self.assertEqual(source.is_orig, False) + self.assertEqual(source.path, '.') + self.assertEqual(source.unpacked, '.') + + +class TestTar(unittest.TestCase): + def _check_tar(self, us, positive=[], negative=[]): + t = tarfile.open(name=us.path, mode="r:bz2") + for f in positive: + i = t.getmember(f) + self.assertEqual(type(i), tarfile.TarInfo) + + for f in negative: + try: + t.getmember(f) + self.fail("Found %s in archive" % f) + except KeyError: + pass + t.close() + + def setUp(self): + self.tmpdir = tempfile.mkdtemp(prefix='gbp_%s_' % __name__, dir='.') + + def tearDown(self): + if not os.getenv("GBP_TESTS_NOCLEAN"): + shutil.rmtree(self.tmpdir) + + def test_pack_tar(self): + """Check if packing tar archives works""" + source = UpstreamSource(os.path.abspath("gbp/")) + target = os.path.join(self.tmpdir, + "gbp_0.1.tar.bz2") + repacked = source.pack(target) + self.assertEqual(repacked.is_orig, True) + self.assertEqual(repacked.is_dir, False) + self._check_tar(repacked, ["gbp/deb.py", "gbp/__init__.py"]) + + def test_pack_filtered(self): + """Check if filtering out files works""" + source = UpstreamSource(os.path.abspath("gbp/")) + target = os.path.join(self.tmpdir, + "gbp_0.1.tar.bz2") + repacked = source.pack(target, ["__init__.py"]) + self.assertEqual(repacked.is_orig, True) + self.assertEqual(repacked.is_dir, False) + self._check_tar(repacked, ["gbp/deb.py"], + ["gbp/__init__.py"]) + + +class TestZip(unittest.TestCase): + def setUp(self): + self.tmpdir = tempfile.mkdtemp(prefix='gbp_%s_' % __name__, dir='.') + self.zipfile = os.path.join(self.tmpdir, "gbp-0.1.zip") + z = zipfile.ZipFile(os.path.join(self.tmpdir, "gbp-0.1.zip"), "w") + for f in glob.glob("gbp/*.py"): + z.write(f, f, zipfile.ZIP_DEFLATED) + z.close() + + def tearDown(self): + if not os.getenv("GBP_TESTS_NOCLEAN"): + shutil.rmtree(self.tmpdir) + + def test_unpack(self): + source = UpstreamSource(self.zipfile) + self.assertEqual(source.is_orig, False) + self.assertEqual(source.is_dir, False) + self.assertEqual(source.unpacked, None) + source.unpack(self.tmpdir) + self.assertNotEqual(source.unpacked, None) + |