Technically, test discovery already works for test_json.py / json_tests, but not the way really expected (each test file is discovered individually), and not as simply as it could. The attached patch does the following: - remove test_json.py - rename json_tests to test_json (to match all other tests, following the example of test_email and test_importlib) - remove main() and 'if __name__ == "__main__"' stanza from __init__.py - rename test_suite() to load_tests(*args) - Add test_json/__main__.py, which calls unittest.main I believe this is the simplest, cleanest way to convert the json tests from test_main to unittest.main(). The patch is against 3.3; there are changes in 3.4 that make a patch against it not apply to 3.3. It merges forward easily, though.
I like the patch. Can you make "./python Lib/test/test_json/" work too? Currently it doesn't seem to work (it works for e.g. "./python Lib/test/test_email/").
Make sure the tests still work when run from an installed Python rather than just from a build directory. In particular, if you rename test directories, you will need to change LIBSUBDIRS in Makefile.pre.in to ensure the directories and their files are installed.
Here's a new patch; test_json.__main__ now uses an absolute import rather than trying to use a relative one. Also, Makefile.pre.in is fixed (thank you, Ned!).