# Copyright (c) 2009 Jonathan M. Lange. See LICENSE for details.

"""python -m testtools.run testspec [testspec...]

Run some tests with the testtools extended API.

For instance, to run the testtools test suite.
 $ python -m testtools.run testtools.tests.test_suite
"""

import sys

from testtools.tests import test_suite
from testtools import TextTestResult


class TestToolsTestRunner(object):
    """ A thunk object to support unittest.TestProgram."""

    def run(self, test):
        "Run the given test case or test suite."
        result = TextTestResult(sys.stdout)
        result.startTestRun()
        try:
            return test.run(result)
        finally:
            result.stopTestRun()


if __name__ == '__main__':
    import optparse
    from unittest import TestProgram
    parser = optparse.OptionParser(__doc__)
    args = parser.parse_args()[1]
    if not args:
        parser.error("No testspecs given.")
    runner = TestToolsTestRunner()
    program = TestProgram(module=None, argv=[sys.argv[0]] + args,
        testRunner=runner)