|
1 | 1 | #!/usr/bin/env python |
2 | 2 |
|
3 | 3 | import os |
| 4 | +import pytest |
4 | 5 | import unittest |
5 | 6 | from email.message import Message |
6 | 7 |
|
7 | 8 | from pydpkg.dpkg import Dpkg |
8 | | -from pydpkg.exceptions import DpkgVersionError |
| 9 | +from pydpkg.exceptions import DpkgVersionError, DpkgMissingControlGzipFile |
9 | 10 |
|
10 | 11 | TEST_DPKG_GZ_FILE = "testdeb_1:0.0.0-test_all.deb" |
11 | 12 | TEST_DPKG_XZ_FILE = "sample_package_xz.deb" |
| 13 | +TEST_DPKG_ZST_FILE = "sample_package_zst.deb" |
| 14 | +TEST_DPKG_BAD_FILE = "sample_package_badcontrol.deb" |
12 | 15 |
|
13 | 16 |
|
14 | 17 | class DpkgGzTest(unittest.TestCase): |
@@ -67,6 +70,41 @@ def test_message(self): |
67 | 70 | self.assertIsInstance(self.dpkg.message, type(Message())) |
68 | 71 |
|
69 | 72 |
|
| 73 | +class DpkgZstTest(unittest.TestCase): |
| 74 | + def setUp(self): |
| 75 | + dpkgfile = os.path.join(os.path.dirname(__file__), TEST_DPKG_ZST_FILE) |
| 76 | + self.dpkg = Dpkg(dpkgfile) |
| 77 | + |
| 78 | + def test_get_versions(self): |
| 79 | + self.assertEqual(self.dpkg.epoch, 0) |
| 80 | + self.assertEqual(self.dpkg.upstream_version, "0.0.1") |
| 81 | + self.assertEqual(self.dpkg.debian_revision, "0") |
| 82 | + |
| 83 | + def test_get_message_headers(self): |
| 84 | + self.assertEqual(self.dpkg.package, "samplepackage.test") |
| 85 | + self.assertEqual(self.dpkg.PACKAGE, "samplepackage.test") |
| 86 | + self.assertEqual(self.dpkg["package"], "samplepackage.test") |
| 87 | + self.assertEqual(self.dpkg["PACKAGE"], "samplepackage.test") |
| 88 | + self.assertEqual(self.dpkg.get("package"), "samplepackage.test") |
| 89 | + self.assertEqual(self.dpkg.get("PACKAGE"), "samplepackage.test") |
| 90 | + self.assertEqual(self.dpkg.get("nonexistent"), None) |
| 91 | + self.assertEqual(self.dpkg.get("nonexistent", "foo"), "foo") |
| 92 | + |
| 93 | + def test_missing_header(self): |
| 94 | + self.assertRaises(KeyError, self.dpkg.__getitem__, "xyzzy") |
| 95 | + self.assertRaises(AttributeError, self.dpkg.__getattr__, "xyzzy") |
| 96 | + |
| 97 | + def test_message(self): |
| 98 | + self.assertIsInstance(self.dpkg.message, type(Message())) |
| 99 | + |
| 100 | + |
| 101 | +class DpkgBadTest(unittest.TestCase): |
| 102 | + def test_bad_control(self): |
| 103 | + with pytest.raises(DpkgMissingControlGzipFile): |
| 104 | + dpkgfile = os.path.join(os.path.dirname(__file__), TEST_DPKG_BAD_FILE) |
| 105 | + Dpkg(dpkgfile).message |
| 106 | + |
| 107 | + |
70 | 108 | class DpkgVersionsTest(unittest.TestCase): |
71 | 109 | def test_get_epoch(self): |
72 | 110 | self.assertEqual(Dpkg.get_epoch("0"), (0, "0")) |
@@ -222,15 +260,17 @@ def test_compare_versions(self): |
222 | 260 | ) |
223 | 261 |
|
224 | 262 | # unicode me harder |
225 | | - self.assertEqual(Dpkg.compare_versions(u"2:0.0.44-1", u"2:0.0.44-nobin"), -1) |
226 | | - self.assertEqual(Dpkg.compare_versions(u"2:0.0.44-nobin", u"2:0.0.44-1"), 1) |
227 | | - self.assertEqual(Dpkg.compare_versions(u"2:0.0.44-1", u"2:0.0.44-1"), 0) |
| 263 | + self.assertEqual(Dpkg.compare_versions("2:0.0.44-1", "2:0.0.44-nobin"), -1) |
| 264 | + self.assertEqual(Dpkg.compare_versions("2:0.0.44-nobin", "2:0.0.44-1"), 1) |
| 265 | + self.assertEqual(Dpkg.compare_versions("2:0.0.44-1", "2:0.0.44-1"), 0) |
228 | 266 |
|
229 | 267 |
|
230 | 268 | if __name__ == "__main__": |
231 | 269 | suite = unittest.TestLoader().loadTestsFromTestCase(DpkgGzTest) |
232 | 270 | unittest.TextTestRunner(verbosity=2).run(suite) |
233 | 271 | suite = unittest.TestLoader().loadTestsFromTestCase(DpkgXzTest) |
234 | 272 | unittest.TextTestRunner(verbosity=2).run(suite) |
| 273 | + suite = unittest.TestLoader().loadTestsFromTestCase(DpkgZstTest) |
| 274 | + unittest.TextTestRunner(verbosity=2).run(suite) |
235 | 275 | suite = unittest.TestLoader().loadTestsFromTestCase(DpkgVersionsTest) |
236 | 276 | unittest.TextTestRunner(verbosity=2).run(suite) |
0 commit comments