75 lines
2.1 KiB
Python
75 lines
2.1 KiB
Python
from __future__ import absolute_import
|
|
import unittest
|
|
import sys
|
|
import os
|
|
|
|
|
|
class NoExtensionTestSuite(unittest.TestSuite):
|
|
def run(self, result):
|
|
import simplejson
|
|
simplejson._toggle_speedups(False)
|
|
result = unittest.TestSuite.run(self, result)
|
|
simplejson._toggle_speedups(True)
|
|
return result
|
|
|
|
|
|
class TestMissingSpeedups(unittest.TestCase):
|
|
def runTest(self):
|
|
if hasattr(sys, 'pypy_translation_info'):
|
|
"PyPy doesn't need speedups! :)"
|
|
elif hasattr(self, 'skipTest'):
|
|
self.skipTest('_speedups.so is missing!')
|
|
|
|
|
|
def additional_tests(suite=None):
|
|
import simplejson
|
|
import simplejson.encoder
|
|
import simplejson.decoder
|
|
if suite is None:
|
|
suite = unittest.TestSuite()
|
|
try:
|
|
import doctest
|
|
except ImportError:
|
|
if sys.version_info < (2, 7):
|
|
# doctests in 2.6 depends on cStringIO
|
|
return suite
|
|
raise
|
|
for mod in (simplejson, simplejson.encoder, simplejson.decoder):
|
|
suite.addTest(doctest.DocTestSuite(mod))
|
|
suite.addTest(doctest.DocFileSuite('../../index.rst'))
|
|
return suite
|
|
|
|
|
|
def all_tests_suite():
|
|
def get_suite():
|
|
suite_names = [
|
|
'simplejson.tests.%s' % (os.path.splitext(f)[0],)
|
|
for f in os.listdir(os.path.dirname(__file__))
|
|
if f.startswith('test_') and f.endswith('.py')
|
|
]
|
|
return additional_tests(
|
|
unittest.TestLoader().loadTestsFromNames(suite_names))
|
|
suite = get_suite()
|
|
import simplejson
|
|
if simplejson._import_c_make_encoder() is None:
|
|
suite.addTest(TestMissingSpeedups())
|
|
else:
|
|
suite = unittest.TestSuite([
|
|
suite,
|
|
NoExtensionTestSuite([get_suite()]),
|
|
])
|
|
return suite
|
|
|
|
|
|
def main():
|
|
runner = unittest.TextTestRunner(verbosity=1 + sys.argv.count('-v'))
|
|
suite = all_tests_suite()
|
|
raise SystemExit(not runner.run(suite).wasSuccessful())
|
|
|
|
|
|
if __name__ == '__main__':
|
|
import os
|
|
import sys
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
|
main()
|