summaryrefslogtreecommitdiff
path: root/lib/python2.7/json/tests/test_recursion.py
diff options
context:
space:
mode:
authorJosh Gao <jmgao@google.com>2016-04-30 01:54:12 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-04-30 01:54:12 +0000
commit8976760f7e912b5c4bdb4bb41d09fdf25d7f848c (patch)
treeae775a6a70c7c350fa9eeb9a9dd6c191ec041b9a /lib/python2.7/json/tests/test_recursion.py
parent0eac5d899bac5ad9180ff04f80cd2edb5ffa3f19 (diff)
parent22338e075a9316174e8c447bac3a7291eae39cfa (diff)
downloadlinux-x86-8976760f7e912b5c4bdb4bb41d09fdf25d7f848c.tar.gz
Update gdb to 7.11. am: 039a04d8a5 am: c5013ed49b am: b525580bd7
am: 22338e075a * commit '22338e075a9316174e8c447bac3a7291eae39cfa': Update gdb to 7.11. Change-Id: Id7528a30c768e3582605f861e6d73727726ab44c
Diffstat (limited to 'lib/python2.7/json/tests/test_recursion.py')
-rw-r--r--lib/python2.7/json/tests/test_recursion.py108
1 files changed, 0 insertions, 108 deletions
diff --git a/lib/python2.7/json/tests/test_recursion.py b/lib/python2.7/json/tests/test_recursion.py
deleted file mode 100644
index b5221e5..0000000
--- a/lib/python2.7/json/tests/test_recursion.py
+++ /dev/null
@@ -1,108 +0,0 @@
-from json.tests import PyTest, CTest
-
-
-class JSONTestObject:
- pass
-
-
-class TestRecursion(object):
- def test_listrecursion(self):
- x = []
- x.append(x)
- try:
- self.dumps(x)
- except ValueError:
- pass
- else:
- self.fail("didn't raise ValueError on list recursion")
- x = []
- y = [x]
- x.append(y)
- try:
- self.dumps(x)
- except ValueError:
- pass
- else:
- self.fail("didn't raise ValueError on alternating list recursion")
- y = []
- x = [y, y]
- # ensure that the marker is cleared
- self.dumps(x)
-
- def test_dictrecursion(self):
- x = {}
- x["test"] = x
- try:
- self.dumps(x)
- except ValueError:
- pass
- else:
- self.fail("didn't raise ValueError on dict recursion")
- x = {}
- y = {"a": x, "b": x}
- # ensure that the marker is cleared
- self.dumps(x)
-
- def test_defaultrecursion(self):
- class RecursiveJSONEncoder(self.json.JSONEncoder):
- recurse = False
- def default(self, o):
- if o is JSONTestObject:
- if self.recurse:
- return [JSONTestObject]
- else:
- return 'JSONTestObject'
- return pyjson.JSONEncoder.default(o)
-
- enc = RecursiveJSONEncoder()
- self.assertEqual(enc.encode(JSONTestObject), '"JSONTestObject"')
- enc.recurse = True
- try:
- enc.encode(JSONTestObject)
- except ValueError:
- pass
- else:
- self.fail("didn't raise ValueError on default recursion")
-
-
- def test_highly_nested_objects_decoding(self):
- # test that loading highly-nested objects doesn't segfault when C
- # accelerations are used. See #12017
- # str
- with self.assertRaises(RuntimeError):
- self.loads('{"a":' * 100000 + '1' + '}' * 100000)
- with self.assertRaises(RuntimeError):
- self.loads('{"a":' * 100000 + '[1]' + '}' * 100000)
- with self.assertRaises(RuntimeError):
- self.loads('[' * 100000 + '1' + ']' * 100000)
- # unicode
- with self.assertRaises(RuntimeError):
- self.loads(u'{"a":' * 100000 + u'1' + u'}' * 100000)
- with self.assertRaises(RuntimeError):
- self.loads(u'{"a":' * 100000 + u'[1]' + u'}' * 100000)
- with self.assertRaises(RuntimeError):
- self.loads(u'[' * 100000 + u'1' + u']' * 100000)
-
- def test_highly_nested_objects_encoding(self):
- # See #12051
- l, d = [], {}
- for x in xrange(100000):
- l, d = [l], {'k':d}
- with self.assertRaises(RuntimeError):
- self.dumps(l)
- with self.assertRaises(RuntimeError):
- self.dumps(d)
-
- def test_endless_recursion(self):
- # See #12051
- class EndlessJSONEncoder(self.json.JSONEncoder):
- def default(self, o):
- """If check_circular is False, this will keep adding another list."""
- return [o]
-
- with self.assertRaises(RuntimeError):
- EndlessJSONEncoder(check_circular=False).encode(5j)
-
-
-class TestPyRecursion(TestRecursion, PyTest): pass
-class TestCRecursion(TestRecursion, CTest): pass