diff --git a/util/test/rdtest/runner.py b/util/test/rdtest/runner.py index 717a113a7..a48f6464b 100644 --- a/util/test/rdtest/runner.py +++ b/util/test/rdtest/runner.py @@ -141,7 +141,7 @@ def _run_test(testclass, failedcases: list): .format(test_run.returncode)) -def run_tests(test_include: str, test_exclude: str, in_process: bool, slow_tests: bool): +def run_tests(test_include: str, test_exclude: str, in_process: bool, slow_tests: bool, debugger: bool): start_time = time.time() rd.InitGlobalEnv(rd.GlobalEnvironment(), []) @@ -278,15 +278,21 @@ def run_tests(test_include: str, test_exclude: str, in_process: bool, slow_tests util.set_current_test(name) - try: + def do(): if in_process: instance = testclass() instance.invoketest() else: _run_test(testclass, failedcases) - except Exception as ex: - log.failure(ex) - failedcases.append(testclass) + + if debugger: + do() + else: + try: + do() + except Exception as ex: + log.failure(ex) + failedcases.append(testclass) log.end_test(name) diff --git a/util/test/run_tests.py b/util/test/run_tests.py index e0f7d79d3..ef6a6f623 100644 --- a/util/test/run_tests.py +++ b/util/test/run_tests.py @@ -26,6 +26,8 @@ parser.add_argument('--artifacts', default="artifacts", help="The folder to put output artifacts in. Will be completely cleared.", type=str) parser.add_argument('--temp', default="tmp", help="The folder to put temporary run data in. Will be completely cleared.", type=str) +parser.add_argument('--debugger', + help="Enable debugger mode, exceptions are not caught by the framework.", action="store_true") # Internal command, when we fork out to run a test in a separate process parser.add_argument('--internal_run_test', help=argparse.SUPPRESS, type=str, required=False) # Internal command, when we re-run as admin to register vulkan layer @@ -90,9 +92,13 @@ rdtest.set_data_dir(os.path.realpath(args.data)) rdtest.set_data_extra_dir(os.path.realpath(args.data_extra)) rdtest.set_temp_dir(os.path.realpath(args.temp)) +# debugger option implies in-process test running +if args.debugger: + args.in_process = True + if args.internal_vulkan_register: rdtest.vulkan_register() elif args.internal_run_test is not None: rdtest.internal_run_test(args.internal_run_test) else: - rdtest.run_tests(args.test_include, args.test_exclude, args.in_process, args.slow_tests) + rdtest.run_tests(args.test_include, args.test_exclude, args.in_process, args.slow_tests, args.debugger)