summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_plistlib.py
diff options
context:
space:
mode:
authorRonald Oussoren <ronaldoussoren@mac.com>2013-04-23 11:47:22 (GMT)
committerRonald Oussoren <ronaldoussoren@mac.com>2013-04-23 11:47:22 (GMT)
commit326edfde560410c8e92545e301722161b657db30 (patch)
tree907d2343844701c9a1523785044e52126921d19e /Lib/test/test_plistlib.py
parentd638381ee0f62dd5df85de1fbdc93cb665347eae (diff)
downloadcpython-326edfde560410c8e92545e301722161b657db30.zip
cpython-326edfde560410c8e92545e301722161b657db30.tar.gz
cpython-326edfde560410c8e92545e301722161b657db30.tar.bz2
Ensure that plistlib doesn't corrupt deeply nested datastructures
Without this changeset plistlib would write empty tags for plistlib.Data objects in deeply nested datastructures. Fixes #17353
Diffstat (limited to 'Lib/test/test_plistlib.py')
-rw-r--r--Lib/test/test_plistlib.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/Lib/test/test_plistlib.py b/Lib/test/test_plistlib.py
index a9e343e..9e86b3d 100644
--- a/Lib/test/test_plistlib.py
+++ b/Lib/test/test_plistlib.py
@@ -141,6 +141,18 @@ class TestPlistlib(unittest.TestCase):
data2 = plistlib.writePlistToBytes(pl2)
self.assertEqual(data, data2)
+ def test_indentation_array(self):
+ data = [[[[[[[[{'test': plistlib.Data(b'aaaaaa')}]]]]]]]]
+ self.assertEqual(plistlib.readPlistFromBytes(plistlib.writePlistToBytes(data)), data)
+
+ def test_indentation_dict(self):
+ data = {'1': {'2': {'3': {'4': {'5': {'6': {'7': {'8': {'9': plistlib.Data(b'aaaaaa')}}}}}}}}}
+ self.assertEqual(plistlib.readPlistFromBytes(plistlib.writePlistToBytes(data)), data)
+
+ def test_indentation_dict_mix(self):
+ data = {'1': {'2': [{'3': [[[[[{'test': plistlib.Data(b'aaaaaa')}]]]]]}]}}
+ self.assertEqual(plistlib.readPlistFromBytes(plistlib.writePlistToBytes(data)), data)
+
def test_appleformatting(self):
pl = plistlib.readPlistFromBytes(TESTDATA)
data = plistlib.writePlistToBytes(pl)