17db96d56Sopenharmony_ciimport os 27db96d56Sopenharmony_ciimport json 37db96d56Sopenharmony_ciimport doctest 47db96d56Sopenharmony_ciimport unittest 57db96d56Sopenharmony_ci 67db96d56Sopenharmony_cifrom test import support 77db96d56Sopenharmony_cifrom test.support import import_helper 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ci# import json with and without accelerations 117db96d56Sopenharmony_cicjson = import_helper.import_fresh_module('json', fresh=['_json']) 127db96d56Sopenharmony_cipyjson = import_helper.import_fresh_module('json', blocked=['_json']) 137db96d56Sopenharmony_ci# JSONDecodeError is cached inside the _json module 147db96d56Sopenharmony_cicjson.JSONDecodeError = cjson.decoder.JSONDecodeError = json.JSONDecodeError 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ci# create two base classes that will be used by the other tests 177db96d56Sopenharmony_ciclass PyTest(unittest.TestCase): 187db96d56Sopenharmony_ci json = pyjson 197db96d56Sopenharmony_ci loads = staticmethod(pyjson.loads) 207db96d56Sopenharmony_ci dumps = staticmethod(pyjson.dumps) 217db96d56Sopenharmony_ci JSONDecodeError = staticmethod(pyjson.JSONDecodeError) 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ci@unittest.skipUnless(cjson, 'requires _json') 247db96d56Sopenharmony_ciclass CTest(unittest.TestCase): 257db96d56Sopenharmony_ci if cjson is not None: 267db96d56Sopenharmony_ci json = cjson 277db96d56Sopenharmony_ci loads = staticmethod(cjson.loads) 287db96d56Sopenharmony_ci dumps = staticmethod(cjson.dumps) 297db96d56Sopenharmony_ci JSONDecodeError = staticmethod(cjson.JSONDecodeError) 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci# test PyTest and CTest checking if the functions come from the right module 327db96d56Sopenharmony_ciclass TestPyTest(PyTest): 337db96d56Sopenharmony_ci def test_pyjson(self): 347db96d56Sopenharmony_ci self.assertEqual(self.json.scanner.make_scanner.__module__, 357db96d56Sopenharmony_ci 'json.scanner') 367db96d56Sopenharmony_ci self.assertEqual(self.json.decoder.scanstring.__module__, 377db96d56Sopenharmony_ci 'json.decoder') 387db96d56Sopenharmony_ci self.assertEqual(self.json.encoder.encode_basestring_ascii.__module__, 397db96d56Sopenharmony_ci 'json.encoder') 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ciclass TestCTest(CTest): 427db96d56Sopenharmony_ci def test_cjson(self): 437db96d56Sopenharmony_ci self.assertEqual(self.json.scanner.make_scanner.__module__, '_json') 447db96d56Sopenharmony_ci self.assertEqual(self.json.decoder.scanstring.__module__, '_json') 457db96d56Sopenharmony_ci self.assertEqual(self.json.encoder.c_make_encoder.__module__, '_json') 467db96d56Sopenharmony_ci self.assertEqual(self.json.encoder.encode_basestring_ascii.__module__, 477db96d56Sopenharmony_ci '_json') 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_cidef load_tests(loader, _, pattern): 517db96d56Sopenharmony_ci suite = unittest.TestSuite() 527db96d56Sopenharmony_ci for mod in (json, json.encoder, json.decoder): 537db96d56Sopenharmony_ci suite.addTest(doctest.DocTestSuite(mod)) 547db96d56Sopenharmony_ci suite.addTest(TestPyTest('test_pyjson')) 557db96d56Sopenharmony_ci suite.addTest(TestCTest('test_cjson')) 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ci pkg_dir = os.path.dirname(__file__) 587db96d56Sopenharmony_ci return support.load_package_tests(pkg_dir, loader, suite, pattern) 59