[testsuite] Add option to run tests from a single file only

This commit is contained in:
Dan Čermák 2018-08-27 21:02:09 +02:00
parent 27aa3ddc67
commit deb9c23df8
3 changed files with 31 additions and 7 deletions

View File

@ -562,7 +562,9 @@ python3 runner.py
One can supply the script with a directory where the suite should look for the
tests (it will search the directory recursively). If omitted, the runner will
look in the directory where the configuration file is located.
look in the directory where the configuration file is located. It is also
possible to instead pass a file as the parameter, the test suite will then only
run the tests from this file.
The runner script also supports the optional arguments `--config_file` which
allows to provide a different test suite configuration file than the default

View File

@ -31,9 +31,10 @@ if __name__ == '__main__':
)
parser.add_argument(
"dir",
help="directory where the test are searched for (defaults to the config"
"file's location)",
"dir_or_file",
help="root directory under which the testsuite searches for tests or a"
"single file which tests are run (defaults to the config file's"
"location)",
default=None,
type=str,
nargs='?'
@ -41,12 +42,30 @@ if __name__ == '__main__':
args = parser.parse_args()
conf_file = args.config_file[0]
discovery_root = os.path.dirname(conf_file if args.dir is None else args.dir)
system_tests.set_debug_mode(args.debug)
DEFAULT_ROOT = os.path.abspath(os.path.dirname(conf_file))
system_tests.set_debug_mode(args.debug)
system_tests.configure_suite(conf_file)
discovered_tests = unittest.TestLoader().discover(discovery_root)
if args.dir_or_file is None or os.path.isdir(args.dir_or_file):
discovered_tests = unittest.defaultTestLoader.discover(
args.dir_or_file or DEFAULT_ROOT
)
elif os.path.isfile(args.dir_or_file):
discovered_tests = unittest.defaultTestLoader.discover(
os.path.dirname(args.dir_or_file),
pattern=os.path.split(args.dir_or_file)[1],
)
else:
print(
"WARNING: Invalid search location, falling back to {!s}"
.format(DEFAULT_ROOT),
file=sys.stderr
)
discovered_tests = unittest.defaultTestLoader.discover(
DEFAULT_ROOT
)
test_res = unittest.runner.TextTestRunner(verbosity=args.verbose)\
.run(discovered_tests)

View File

@ -701,6 +701,9 @@ class CaseMeta(type):
def __new__(mcs, clsname, bases, dct):
assert len(_parameters) != 0, \
"Internal error: substitution dictionary not populated"
changed = True
# expand all non-private variables by brute force