]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Slightly improve plistlib test coverage. (GH-17025)
authorJon Janzen <jjjonjanzen@gmail.com>
Fri, 1 Nov 2019 16:45:01 +0000 (11:45 -0500)
committerSerhiy Storchaka <storchaka@gmail.com>
Fri, 1 Nov 2019 16:45:01 +0000 (18:45 +0200)
* Add missing test class (mistake in GH-4455)

* Increase coverage with 4 more test cases

* Rename neg_uid to huge_uid in test_modified_uid_huge

* Replace test_main() with unittest.main()

* Update plistlib docs

Doc/library/plistlib.rst
Lib/test/test_plistlib.py

index 68320f15777109f4b139afc5ffefa9d483b2f6ce..6def72b3736b91d6290a054d0f0f2922ed824758 100644 (file)
@@ -133,7 +133,7 @@ The following classes are available:
    encoded data, which contains UID (see PList manual).
 
    It has one attribute, :attr:`data`, which can be used to retrieve the int value
-   of the UID.  :attr:`data` must be in the range `0 <= data <= 2**64`.
+   of the UID.  :attr:`data` must be in the range `0 <= data < 2**64`.
 
    .. versionadded:: 3.8
 
index d3ef6f8ffe3a41be44d5ec83c85c7398263a23a7..e82a53c533df037d8fd4a8fdfcda297a5879f382 100644 (file)
@@ -503,6 +503,26 @@ class TestPlistlib(unittest.TestCase):
                 pl2 = plistlib.loads(data)
                 self.assertEqual(dict(pl), dict(pl2))
 
+    def test_dump_invalid_format(self):
+        with self.assertRaises(ValueError):
+            plistlib.dumps({}, fmt="blah")
+
+    def test_load_invalid_file(self):
+        with self.assertRaises(plistlib.InvalidFileException):
+            plistlib.loads(b"these are not plist file contents")
+
+    def test_modified_uid_negative(self):
+        neg_uid = UID(1)
+        neg_uid.data = -1  # dodge the negative check in the constructor
+        with self.assertRaises(ValueError):
+            plistlib.dumps(neg_uid, fmt=plistlib.FMT_BINARY)
+
+    def test_modified_uid_huge(self):
+        huge_uid = UID(1)
+        huge_uid.data = 2 ** 64  # dodge the size check in the constructor
+        with self.assertRaises(OverflowError):
+            plistlib.dumps(huge_uid, fmt=plistlib.FMT_BINARY)
+
 
 class TestBinaryPlistlib(unittest.TestCase):
 
@@ -655,9 +675,5 @@ class MiscTestCase(unittest.TestCase):
         support.check__all__(self, plistlib, blacklist=blacklist)
 
 
-def test_main():
-    support.run_unittest(TestPlistlib, TestKeyedArchive, MiscTestCase)
-
-
 if __name__ == '__main__':
-    test_main()
+    unittest.main()