summaryrefslogtreecommitdiff
path: root/simplejson/tests/__init__.py
blob: 5490584876256561883a9608b68c07e2eb48df65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
from __future__ import absolute_import
import unittest
import doctest
import sys


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()
    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():
        return additional_tests(
            unittest.TestLoader().loadTestsFromNames([
                'simplejson.tests.test_bigint_as_string',
                'simplejson.tests.test_check_circular',
                'simplejson.tests.test_decode',
                'simplejson.tests.test_default',
                'simplejson.tests.test_dump',
                'simplejson.tests.test_encode_basestring_ascii',
                'simplejson.tests.test_encode_for_html',
                'simplejson.tests.test_errors',
                'simplejson.tests.test_fail',
                'simplejson.tests.test_float',
                'simplejson.tests.test_indent',
                'simplejson.tests.test_pass1',
                'simplejson.tests.test_pass2',
                'simplejson.tests.test_pass3',
                'simplejson.tests.test_recursion',
                'simplejson.tests.test_scanstring',
                'simplejson.tests.test_separators',
                'simplejson.tests.test_speedups',
                'simplejson.tests.test_unicode',
                'simplejson.tests.test_decimal',
                'simplejson.tests.test_tuple',
                'simplejson.tests.test_namedtuple',
                'simplejson.tests.test_tool',
                'simplejson.tests.test_for_json',
            ]))
    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()