1111Py_eval_input = _testcapi .Py_eval_input
1212
1313
14+ class DictSubclass (dict ):
15+ pass
16+
17+
1418class CAPITest (unittest .TestCase ):
1519 # TODO: Test the following functions:
1620 #
@@ -50,15 +54,19 @@ def run(s, *args):
5054 self .assertRaises (TypeError , run , b'a\n ' , dict (a = 1 ), [])
5155 self .assertRaises (TypeError , run , b'a\n ' , dict (a = 1 ), 1 )
5256
57+ self .assertIsNone (run (b'a\n ' , DictSubclass (a = 1 )))
58+ self .assertIsNone (run (b'a\n ' , DictSubclass (), dict (a = 1 )))
59+ self .assertRaises (NameError , run , b'a\n ' , DictSubclass ())
60+
5361 self .assertIsNone (run (b'\xc3 \xa4 \n ' , {'\xe4 ' : 1 }))
5462 self .assertRaises (SyntaxError , run , b'\xe4 \n ' , {})
5563
56- # CRASHES run( b'a\n', NULL)
57- # CRASHES run( b'a\n', NULL, {})
58- # CRASHES run( b'a\n', NULL, dict(a=1))
59- # CRASHES run( b'a\n', UserDict())
60- # CRASHES run( b'a\n', UserDict(), {})
61- # CRASHES run( b'a\n', UserDict(), dict(a=1))
64+ self . assertRaises ( SystemError , run , b'a\n ' , NULL )
65+ self . assertRaises ( SystemError , run , b'a\n ' , NULL , {})
66+ self . assertRaises ( SystemError , run , b'a\n ' , NULL , dict (a = 1 ))
67+ self . assertRaises ( SystemError , run , b'a\n ' , UserDict ())
68+ self . assertRaises ( SystemError , run , b'a\n ' , UserDict (), {})
69+ self . assertRaises ( SystemError , run , b'a\n ' , UserDict (), dict (a = 1 ))
6270
6371 # CRASHES run(NULL, {})
6472
@@ -82,12 +90,16 @@ def run(*args):
8290 self .assertRaises (TypeError , run , dict (a = 1 ), [])
8391 self .assertRaises (TypeError , run , dict (a = 1 ), 1 )
8492
85- # CRASHES run(NULL)
86- # CRASHES run(NULL, {})
87- # CRASHES run(NULL, dict(a=1))
88- # CRASHES run(UserDict())
89- # CRASHES run(UserDict(), {})
90- # CRASHES run(UserDict(), dict(a=1))
93+ self .assertIsNone (run (DictSubclass (a = 1 )))
94+ self .assertIsNone (run (DictSubclass (), dict (a = 1 )))
95+ self .assertRaises (NameError , run , DictSubclass ())
96+
97+ self .assertRaises (SystemError , run , NULL )
98+ self .assertRaises (SystemError , run , NULL , {})
99+ self .assertRaises (SystemError , run , NULL , dict (a = 1 ))
100+ self .assertRaises (SystemError , run , UserDict ())
101+ self .assertRaises (SystemError , run , UserDict (), {})
102+ self .assertRaises (SystemError , run , UserDict (), dict (a = 1 ))
91103
92104 @unittest .skipUnless (TESTFN_UNDECODABLE , 'only works if there are undecodable paths' )
93105 @unittest .skipIf (os .name == 'nt' , 'does not work on Windows' )
0 commit comments