THRIFT-3571 Make feature test result browsable
Client: Test
Patch: Nobuaki Sukegawa
This closes #809
diff --git a/test/test.py b/test/test.py
index 20d76f4..df4c72e 100755
--- a/test/test.py
+++ b/test/test.py
@@ -38,40 +38,13 @@
import crossrunner
from crossrunner.compat import path_join
-TEST_DIR = os.path.realpath(os.path.dirname(__file__))
-FEATURE_DIR = path_join(TEST_DIR, 'features')
+ROOT_DIR = os.path.dirname(os.path.realpath(os.path.dirname(__file__)))
+TEST_DIR_RELATIVE = 'test'
+TEST_DIR = path_join(ROOT_DIR, TEST_DIR_RELATIVE)
+FEATURE_DIR_RELATIVE = path_join(TEST_DIR_RELATIVE, 'features')
CONFIG_FILE = 'tests.json'
-def run_tests(collect_func, basedir, server_match, client_match, jobs, skip):
- logger = multiprocessing.get_logger()
- logger.debug('Collecting tests')
- with open(path_join(basedir, CONFIG_FILE), 'r') as fp:
- j = json.load(fp)
- tests = collect_func(j, server_match, client_match)
- if not tests:
- print('No test found that matches the criteria', file=sys.stderr)
- # print(' servers: %s' % server_match, file=sys.stderr)
- # print(' clients: %s' % client_match, file=sys.stderr)
- return False
- if skip:
- logger.debug('Skipping known failures')
- known = crossrunner.load_known_failures(basedir)
- tests = list(filter(lambda t: crossrunner.test_name(**t) not in known, tests))
-
- dispatcher = crossrunner.TestDispatcher(TEST_DIR, basedir, jobs)
- logger.debug('Executing %d tests' % len(tests))
- try:
- for r in [dispatcher.dispatch(test) for test in tests]:
- r.wait()
- logger.debug('Waiting for completion')
- return dispatcher.wait()
- except (KeyboardInterrupt, SystemExit):
- logger.debug('Interrupted, shutting down')
- dispatcher.terminate()
- return False
-
-
def run_cross_tests(server_match, client_match, jobs, skip_known_failures):
logger = multiprocessing.get_logger()
logger.debug('Collecting tests')
@@ -88,7 +61,7 @@
known = crossrunner.load_known_failures(TEST_DIR)
tests = list(filter(lambda t: crossrunner.test_name(**t) not in known, tests))
- dispatcher = crossrunner.TestDispatcher(TEST_DIR, TEST_DIR, jobs)
+ dispatcher = crossrunner.TestDispatcher(TEST_DIR, ROOT_DIR, TEST_DIR_RELATIVE, jobs)
logger.debug('Executing %d tests' % len(tests))
try:
for r in [dispatcher.dispatch(test) for test in tests]:
@@ -102,7 +75,7 @@
def run_feature_tests(server_match, feature_match, jobs, skip_known_failures):
- basedir = FEATURE_DIR
+ basedir = path_join(ROOT_DIR, FEATURE_DIR_RELATIVE)
logger = multiprocessing.get_logger()
logger.debug('Collecting tests')
with open(path_join(TEST_DIR, CONFIG_FILE), 'r') as fp:
@@ -120,7 +93,7 @@
known = crossrunner.load_known_failures(basedir)
tests = list(filter(lambda t: crossrunner.test_name(**t) not in known, tests))
- dispatcher = crossrunner.TestDispatcher(TEST_DIR, basedir, jobs)
+ dispatcher = crossrunner.TestDispatcher(TEST_DIR, ROOT_DIR, FEATURE_DIR_RELATIVE, jobs)
logger.debug('Executing %d tests' % len(tests))
try:
for r in [dispatcher.dispatch(test) for test in tests]:
@@ -179,7 +152,7 @@
client_match = list(chain(*[x.split(',') for x in options.client]))
if options.update_failures or options.print_failures:
- dire = FEATURE_DIR if options.features is not None else TEST_DIR
+ dire = path_join(ROOT_DIR, FEATURE_DIR_RELATIVE) if options.features is not None else TEST_DIR
res = crossrunner.generate_known_failures(
dire, options.update_failures == 'overwrite',
options.update_failures, options.print_failures)