Skip to content

Commit

Permalink
[3.8] Slightly improve plistlib test coverage. (GH-17025) (GH-17028)
Browse files Browse the repository at this point in the history
* 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.
(cherry picked from commit d0d9f7c)

Co-authored-by: Jon Janzen <jjjonjanzen@gmail.com>
  • Loading branch information
bigfootjon authored and serhiy-storchaka committed Nov 2, 2019
1 parent 9528997 commit fe934e1
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 7 deletions.
4 changes: 2 additions & 2 deletions Doc/library/plistlib.rst
Expand Up @@ -188,8 +188,8 @@ The following classes are available:
Wraps an :class:`int`. This is used when reading or writing NSKeyedArchiver
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`.
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`.

.. versionadded:: 3.8

Expand Down
26 changes: 21 additions & 5 deletions Lib/test/test_plistlib.py
Expand Up @@ -505,6 +505,26 @@ def test_xml_encodings(self):
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):

Expand Down Expand Up @@ -748,9 +768,5 @@ def test__all__(self):
support.check__all__(self, plistlib, blacklist=blacklist)


def test_main():
support.run_unittest(TestPlistlib, TestPlistlibDeprecated, TestKeyedArchive, MiscTestCase)


if __name__ == '__main__':
test_main()
unittest.main()

0 comments on commit fe934e1

Please sign in to comment.