""" Helper to run Python unittests in the sandbox. They can be run directly as follows: ./sandbox/nacl/bin/run -E PYTHONPATH=/thirdparty python -m unittest discover -v -s /grist This modules makes this a bit easier, and adds support for --xunit option, needed for running tests under 'arc unit' and under Jenkins. ./sandbox/nacl/bin/run python /grist/runtests.py [--xunit] """ import codecs import logging import os import sys import unittest sys.path.append('/thirdparty') import six def main(): # Change to the directory of this file (/grist in sandbox), to discover everything under it. os.chdir(os.path.dirname(__file__)) argv = sys.argv[:] test_runner = None if "--xunit" in argv: import xmlrunner argv.remove("--xunit") utf8_stdout = sys.stdout if six.PY2: utf8_stdout = codecs.getwriter('utf8')(utf8_stdout) test_runner = xmlrunner.XMLTestRunner(stream=utf8_stdout) if "-v" in argv or "--verbose" in argv: logging.basicConfig(level=logging.DEBUG) if all(arg.startswith("-") for arg in argv[1:]): argv.insert(1, "discover") unittest.main(module=None, argv=argv, testRunner=test_runner) if __name__ == '__main__': main()