Slightly improve plistlib test coverage. (GH-17025)

* 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
This commit is contained in:
Jon Janzen 2019-11-01 11:45:01 -05:00 committed by Serhiy Storchaka
parent 9bc94eca0c
commit d0d9f7cfa3
2 changed files with 22 additions and 6 deletions

View File

@ -133,7 +133,7 @@ The following classes are available:
encoded data, which contains UID (see PList manual). encoded data, which contains UID (see PList manual).
It has one attribute, :attr:`data`, which can be used to retrieve the int value 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 .. versionadded:: 3.8

View File

@ -503,6 +503,26 @@ class TestPlistlib(unittest.TestCase):
pl2 = plistlib.loads(data) pl2 = plistlib.loads(data)
self.assertEqual(dict(pl), dict(pl2)) 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): class TestBinaryPlistlib(unittest.TestCase):
@ -655,9 +675,5 @@ class MiscTestCase(unittest.TestCase):
support.check__all__(self, plistlib, blacklist=blacklist) support.check__all__(self, plistlib, blacklist=blacklist)
def test_main():
support.run_unittest(TestPlistlib, TestKeyedArchive, MiscTestCase)
if __name__ == '__main__': if __name__ == '__main__':
test_main() unittest.main()