Mercurial > hgsubversion
view tests/run.py @ 1541:adba152a5177
test_util: make developer warnings cause our tests to fail
Previously hgsubversion didn't get any help from develwarn calls,
because we don't use core's testrunner. The upstream configitem
refactor was easier to hunt down using the develwarn being a failure,
which prompted this code. It also exposed several locking correctness
bugs, so it feels like it's worth keeping around long term.
We don't bother with develwarn on anything so old that we don't try to
use smartset. The smartset deprecation was not handled gracefully, so
hg complains for many versions without actually breaking anything, and
it'd pointlessly complicate our code to handle smartset living in
multiple places between when the warning was introduced and the
present.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Sun, 29 Oct 2017 09:07:12 -0400 |
parents | dcf9eff9b5b7 |
children |
line wrap: on
line source
#!/usr/bin/env python import optparse import os import sys import unittest if __name__ == '__main__': description = ("This script runs the hgsubversion tests. If no tests are " "specified, all known tests are implied.") parser = optparse.OptionParser(usage="%prog [options] [TESTS ...]", description=description) parser.add_option("-A", "--all", dest="comprehensive", action="store_true", default=False, help="include slow, but comprehensive tests") parser.add_option("-v", "--verbose", dest="verbose", action="store_true", default=False, help="enable verbose output") parser.add_option("", "--no-demandimport", dest="demandimport", action="store_false", default=True, help="disable Mercurial demandimport loading") parser.add_option("", "--bindings", dest="bindings", action="store", default=None, choices=["swig", "subvertpy"], help="test using the specified bindings (swig or " "subvertpy)") parser.add_option("", "--show-stdout", dest="showstdout", action="store_true", default=False, help="show stdout (hidden by default)") (options, args) = parser.parse_args() if options.verbose: testargs = { 'descriptions': 3, 'verbosity': 2 } else: testargs = {'descriptions': 2} sys.path.append(os.path.dirname(os.path.dirname(__file__))) if options.demandimport: from mercurial import demandimport demandimport.enable() if options.bindings: os.environ['HGSUBVERSION_BINDINGS'] = options.bindings # make sure our copy of hgsubversion gets imported by loading test_util import test_util test_util.TestBase # silence output when running outside nose if not options.showstdout: import tempfile sys.stdout = tempfile.TemporaryFile() args = [os.path.basename(os.path.splitext(arg)[0]).replace('-', '_') for arg in args] loader = unittest.TestLoader() suite = unittest.TestSuite() if sys.version_info[:2] < (2, 7): import glob def discover(start_dir, pattern='test*.py', top_level_dir=None): tests = [] sys.path.append(start_dir) for path in glob.glob(os.path.join(start_dir, pattern)): name = os.path.splitext(os.path.basename(path))[0] tests.append(loader.loadTestsFromModule(__import__(name))) return tests loader.discover = discover if not args: suite.addTests(loader.discover('.')) if options.comprehensive: suite.addTests(loader.discover('comprehensive', top_level_dir='comprehensive')) else: sys.path.append(os.path.join(os.path.dirname(__file__), 'comprehensive')) suite.addTests(loader.loadTestsFromNames(args)) runner = unittest.TextTestRunner(**testargs) result = runner.run(suite) if not result.wasSuccessful(): sys.exit(1)