diff --git a/third_party/python/Lib/test/test_bisect.py b/third_party/python/Lib/test/test_bisect.py index 580a963f6..ed8f9eaf8 100644 --- a/third_party/python/Lib/test/test_bisect.py +++ b/third_party/python/Lib/test/test_bisect.py @@ -199,6 +199,7 @@ class TestBisect: self.module.insort(a=data, x=25, lo=1, hi=3) self.assertEqual(data, [10, 20, 25, 25, 25, 30, 40, 50]) +@unittest.skipIf(c_bisect, "skip pure-python test if C impl is present") class TestBisectPython(TestBisect, unittest.TestCase): module = py_bisect @@ -234,6 +235,7 @@ class TestInsort: self.module.insort_right(lst, 5) self.assertEqual([5, 10], lst.data) +@unittest.skipIf(c_bisect, "skip pure-python test if C impl is present") class TestInsortPython(TestInsort, unittest.TestCase): module = py_bisect @@ -289,6 +291,7 @@ class TestErrorHandling: self.module.insort_left, self.module.insort_right): self.assertRaises(TypeError, f, 10) +@unittest.skipIf(c_bisect, "skip pure-python test if C impl is present") class TestErrorHandlingPython(TestErrorHandling, unittest.TestCase): module = py_bisect @@ -316,6 +319,7 @@ class TestDocExample: self.assertEqual(data[bisect_left(keys, 5)], ('red', 5)) self.assertEqual(data[bisect_left(keys, 8)], ('yellow', 8)) +@unittest.skipIf(c_bisect, "skip pure-python test if C impl is present") class TestDocExamplePython(TestDocExample, unittest.TestCase): module = py_bisect diff --git a/third_party/python/Lib/test/test_functools.py b/third_party/python/Lib/test/test_functools.py index 3e3627402..628fdd438 100644 --- a/third_party/python/Lib/test/test_functools.py +++ b/third_party/python/Lib/test/test_functools.py @@ -431,7 +431,7 @@ class TestPartialC(TestPartial, unittest.TestCase): self.assertIn('astr', r) self.assertIn("['sth']", r) - +@unittest.skipIf(c_functools, "skip pure-python test if C impl is present") class TestPartialPy(TestPartial, unittest.TestCase): partial = py_functools.partial @@ -458,6 +458,7 @@ class TestPartialCSubclass(TestPartialC): # partial subclasses are not optimized for nested calls test_nested_optimization = None +@unittest.skipIf(c_functools, "skip pure-python test if C impl is present") class TestPartialPySubclass(TestPartialPy): partial = PyPartialSubclass @@ -928,6 +929,7 @@ class TestCmpToKeyC(TestCmpToKey, unittest.TestCase): cmp_to_key = c_functools.cmp_to_key +@unittest.skipIf(c_functools, "skip pure-python test if C impl is present") class TestCmpToKeyPy(TestCmpToKey, unittest.TestCase): cmp_to_key = staticmethod(py_functools.cmp_to_key) @@ -1565,6 +1567,7 @@ def c_cached_func(x, y): return 3 * x + y +@unittest.skipIf(c_functools, "skip pure-python test if C impl is present") class TestLRUPy(TestLRU, unittest.TestCase): module = py_functools cached_func = py_cached_func, diff --git a/third_party/python/Lib/test/test_json/__init__.py b/third_party/python/Lib/test/test_json/__init__.py index bac370dad..e5aadb1e7 100644 --- a/third_party/python/Lib/test/test_json/__init__.py +++ b/third_party/python/Lib/test/test_json/__init__.py @@ -12,6 +12,7 @@ pyjson = support.import_fresh_module('json', blocked=['_json']) cjson.JSONDecodeError = cjson.decoder.JSONDecodeError = json.JSONDecodeError # create two base classes that will be used by the other tests +@unittest.skipIf(cjson, '_json is available, no need for pure-python tests') class PyTest(unittest.TestCase): json = pyjson loads = staticmethod(pyjson.loads) diff --git a/third_party/python/Lib/test/test_json/test_recursion.py b/third_party/python/Lib/test/test_json/test_recursion.py index 03b851013..7e3cb7def 100644 --- a/third_party/python/Lib/test/test_json/test_recursion.py +++ b/third_party/python/Lib/test/test_json/test_recursion.py @@ -70,11 +70,11 @@ class TestRecursion: def test_highly_nested_objects_decoding(self): # test that loading highly-nested objects doesn't segfault when C # accelerations are used. See #12017 - with self.assertRaises(RecursionError): + with self.assertRaises((RecursionError, MemoryError)): self.loads('{"a":' * 100000 + '1' + '}' * 100000) - with self.assertRaises(RecursionError): + with self.assertRaises((RecursionError, MemoryError)): self.loads('{"a":' * 100000 + '[1]' + '}' * 100000) - with self.assertRaises(RecursionError): + with self.assertRaises((RecursionError, MemoryError)): self.loads('[' * 100000 + '1' + ']' * 100000) def test_highly_nested_objects_encoding(self): @@ -82,9 +82,9 @@ class TestRecursion: l, d = [], {} for x in range(100000): l, d = [l], {'k':d} - with self.assertRaises(RecursionError): + with self.assertRaises((RecursionError, MemoryError)): self.dumps(l) - with self.assertRaises(RecursionError): + with self.assertRaises((RecursionError, MemoryError)): self.dumps(d) def test_endless_recursion(self): @@ -94,7 +94,7 @@ class TestRecursion: """If check_circular is False, this will keep adding another list.""" return [o] - with self.assertRaises(RecursionError): + with self.assertRaises((RecursionError, MemoryError)): EndlessJSONEncoder(check_circular=False).encode(5j) diff --git a/third_party/python/Lib/test/test_json/test_tool.py b/third_party/python/Lib/test/test_json/test_tool.py index 9d93f931c..1045a40d5 100644 --- a/third_party/python/Lib/test/test_json/test_tool.py +++ b/third_party/python/Lib/test/test_json/test_tool.py @@ -6,6 +6,8 @@ from subprocess import Popen, PIPE from test import support from test.support.script_helper import assert_python_ok +if __name__ == "PYOBJ.COM": + import json.tool class TestTool(unittest.TestCase): data = """ diff --git a/third_party/python/Lib/test/test_operator.py b/third_party/python/Lib/test/test_operator.py index 6254091e7..3f3625299 100644 --- a/third_party/python/Lib/test/test_operator.py +++ b/third_party/python/Lib/test/test_operator.py @@ -496,6 +496,7 @@ class OperatorTestCase: if dunder: self.assertIs(dunder, orig) +@unittest.skipIf(c_operator, "skip pure-python test if C impl is present") class PyOperatorTestCase(OperatorTestCase, unittest.TestCase): module = py_operator diff --git a/third_party/python/Lib/test/test_ordered_dict.py b/third_party/python/Lib/test/test_ordered_dict.py index b1d7f86a6..3890f010b 100644 --- a/third_party/python/Lib/test/test_ordered_dict.py +++ b/third_party/python/Lib/test/test_ordered_dict.py @@ -651,6 +651,7 @@ class OrderedDictTests: support.check_free_after_iterating(self, lambda d: iter(d.items()), self.OrderedDict) +@unittest.skipIf(c_coll, "skip pure-python test if C impl is present") class PurePythonOrderedDictTests(OrderedDictTests, unittest.TestCase): module = py_coll @@ -750,6 +751,7 @@ class CPythonOrderedDictTests(OrderedDictTests, unittest.TestCase): self.assertEqual(list(it), expected) +@unittest.skipIf(c_coll, "skip pure-python test if C impl is present") class PurePythonOrderedDictSubclassTests(PurePythonOrderedDictTests): module = py_coll @@ -764,6 +766,7 @@ class CPythonOrderedDictSubclassTests(CPythonOrderedDictTests): pass +@unittest.skipIf(c_coll, "skip pure-python test if C impl is present") class PurePythonGeneralMappingTests(mapping_tests.BasicTestMappingProtocol): @classmethod @@ -787,6 +790,7 @@ class CPythonGeneralMappingTests(mapping_tests.BasicTestMappingProtocol): self.assertRaises(KeyError, d.popitem) +@unittest.skipIf(c_coll, "skip pure-python test if C impl is present") class PurePythonSubclassMappingTests(mapping_tests.BasicTestMappingProtocol): @classmethod diff --git a/third_party/python/Lib/test/test_pickle.py b/third_party/python/Lib/test/test_pickle.py index 02826f055..dfde11e18 100644 --- a/third_party/python/Lib/test/test_pickle.py +++ b/third_party/python/Lib/test/test_pickle.py @@ -502,15 +502,11 @@ def test_main(): tests.extend([CPickleTests, CUnpicklerTests]) support.run_unittest(*tests) else: - tests = [PyPickleTests, PyUnpicklerTests, PyPicklerTests, - PyPersPicklerTests, PyIdPersPicklerTests, - PyDispatchTableTests, PyChainDispatchTableTests, - CompatPickleTests] + tests = [] if has_c_implementation: tests.extend([CPickleTests, CUnpicklerTests, CPicklerTests, CPersPicklerTests, CIdPersPicklerTests, CDumpPickle_LoadPickle, DumpPickle_CLoadPickle, - PyPicklerUnpicklerObjectTests, CPicklerUnpicklerObjectTests, CDispatchTableTests, CChainDispatchTableTests, InMemoryPickleTests, SizeofTests]) diff --git a/third_party/python/python.mk b/third_party/python/python.mk index f286c192b..69e9a214e 100644 --- a/third_party/python/python.mk +++ b/third_party/python/python.mk @@ -1285,23 +1285,6 @@ THIRD_PARTY_PYTHON_PYTEST_A_PYS = \ third_party/python/Lib/test/support/script_helper.py \ third_party/python/Lib/test/support/testresult.py \ third_party/python/Lib/test/test_dummy_thread.py \ - third_party/python/Lib/test/test_json/test_decode.py \ - third_party/python/Lib/test/test_json/test_default.py \ - third_party/python/Lib/test/test_json/test_dump.py \ - third_party/python/Lib/test/test_json/test_encode_basestring_ascii.py \ - third_party/python/Lib/test/test_json/test_enum.py \ - third_party/python/Lib/test/test_json/test_fail.py \ - third_party/python/Lib/test/test_json/test_float.py \ - third_party/python/Lib/test/test_json/test_indent.py \ - third_party/python/Lib/test/test_json/test_pass1.py \ - third_party/python/Lib/test/test_json/test_pass2.py \ - third_party/python/Lib/test/test_json/test_pass3.py \ - third_party/python/Lib/test/test_json/test_recursion.py \ - third_party/python/Lib/test/test_json/test_scanstring.py \ - third_party/python/Lib/test/test_json/test_separators.py \ - third_party/python/Lib/test/test_json/test_speedups.py \ - third_party/python/Lib/test/test_json/test_tool.py \ - third_party/python/Lib/test/test_json/test_unicode.py \ third_party/python/Lib/test/test_warnings/data/import_warning.py \ third_party/python/Lib/test/test_warnings/data/stacklevel.py \ third_party/python/Lib/test/testcodec.py \ @@ -1872,6 +1855,7 @@ THIRD_PARTY_PYTHON_PYTEST_PYMAINS = \ third_party/python/Lib/test/test_iter.py \ third_party/python/Lib/test/test_iterlen.py \ third_party/python/Lib/test/test_itertools.py \ + third_party/python/Lib/test/test_json/__main__.py \ third_party/python/Lib/test/test_kdf.py \ third_party/python/Lib/test/test_keyword.py \ third_party/python/Lib/test/test_keywordonlyarg.py \ @@ -2537,6 +2521,10 @@ o/$(MODE)/third_party/python/Lib/test/test_iter.py.runs: \ o/$(MODE)/third_party/python/pythontester.com.dbg @$(COMPILE) -ACHECK -tT$@ $(PYHARNESSARGS) $< -m test.test_iter $(PYTESTARGS) +o/$(MODE)/third_party/python/Lib/test/test_json/__main__.py.runs: \ + o/$(MODE)/third_party/python/pythontester.com.dbg + @$(COMPILE) -ACHECK -tT$@ $(PYHARNESSARGS) $< -m test.test_json $(PYTESTARGS) + o/$(MODE)/third_party/python/Lib/test/test_tarfile.py.runs: \ o/$(MODE)/third_party/python/pythontester.com.dbg @$(COMPILE) -ACHECK -tT$@ $(PYHARNESSARGS) $< -m test.test_tarfile $(PYTESTARGS)