__init__.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from __future__ import absolute_import
  2. import unittest
  3. import doctest
  4. import sys
  5. import os
  6. class NoExtensionTestSuite(unittest.TestSuite):
  7. def run(self, result):
  8. import simplejson
  9. simplejson._toggle_speedups(False)
  10. result = unittest.TestSuite.run(self, result)
  11. simplejson._toggle_speedups(True)
  12. return result
  13. class TestMissingSpeedups(unittest.TestCase):
  14. def runTest(self):
  15. if hasattr(sys, 'pypy_translation_info'):
  16. "PyPy doesn't need speedups! :)"
  17. elif hasattr(self, 'skipTest'):
  18. self.skipTest('_speedups.so is missing!')
  19. def additional_tests(suite=None):
  20. import simplejson
  21. import simplejson.encoder
  22. import simplejson.decoder
  23. if suite is None:
  24. suite = unittest.TestSuite()
  25. for mod in (simplejson, simplejson.encoder, simplejson.decoder):
  26. suite.addTest(doctest.DocTestSuite(mod))
  27. suite.addTest(doctest.DocFileSuite('../../index.rst'))
  28. return suite
  29. def all_tests_suite():
  30. def get_suite():
  31. suite_names = [
  32. 'simplejson.tests.%s' % (os.path.splitext(f)[0],)
  33. for f in os.listdir(os.path.dirname(__file__))
  34. if f.startswith('test_') and f.endswith('.py')
  35. ]
  36. return additional_tests(
  37. unittest.TestLoader().loadTestsFromNames(suite_names))
  38. suite = get_suite()
  39. import simplejson
  40. if simplejson._import_c_make_encoder() is None:
  41. suite.addTest(TestMissingSpeedups())
  42. else:
  43. suite = unittest.TestSuite([
  44. suite,
  45. NoExtensionTestSuite([get_suite()]),
  46. ])
  47. return suite
  48. def main():
  49. runner = unittest.TextTestRunner(verbosity=1 + sys.argv.count('-v'))
  50. suite = all_tests_suite()
  51. raise SystemExit(not runner.run(suite).wasSuccessful())
  52. if __name__ == '__main__':
  53. import os
  54. import sys
  55. sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
  56. main()