Index: debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp +++ debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp @@ -2,11 +2,7 @@ // Check that \DexExpectProgramState correctly applies a penalty when // an expected program state is never found. // -// REQUIRES: system-linux, lldb -// -// RUN: not %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -glldb" -- %s \ -// RUN: | FileCheck %s +// RUN: not %dexter_regression_test -- %s | FileCheck %s // CHECK: expect_program_state.cpp: int GCD(int lhs, int rhs) Index: debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp +++ debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp @@ -2,11 +2,7 @@ // Check that \DexExpectStepKind correctly applies a penalty when // unexpected step kinds are encountered. // -// REQUIRES: system-linux, lldb -// -// RUN: not %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: not %dexter_regression_test -- %s | FileCheck %s // CHECK: expect_step_kinds.cpp: int abs(int i){ Index: debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp +++ debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp @@ -2,11 +2,7 @@ // Check that \DexExpectStepOrder correctly applies a penalty for steps // found out of expected order. // -// REQUIRES: system-linux, lldb -// -// RUN: not %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: not %dexter_regression_test -- %s | FileCheck %s // CHECK: expect_step_order.cpp: int main() Index: debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp +++ debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp @@ -2,11 +2,11 @@ // Check that \DexExpectWatchType applies penalties when expected // types are not found and unexpected types are. // -// REQUIRES: system-linux, lldb +// NOTE: This test passes but not in the expected way on Windows. +// TODO: Reduce this test's coverage and be more specific about +// expected behaviour. // -// RUN: not %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: not %dexter_regression_test -- %s | FileCheck %s // CHECK: expect_watch_type.cpp: template Index: debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp +++ debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp @@ -2,11 +2,7 @@ // Check that \DexExpectWatchValue correctly applies a penalty when // expected values are not found. // -// REQUIRES: system-linux, lldb -// -// RUN: not %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: not %dexter_regression_test -- %s | FileCheck %s // CHECK: expect_watch_value.cpp: int main() Index: debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp +++ debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp @@ -2,11 +2,7 @@ // Check that \DexUnreachable correctly applies a penalty if the command // line is stepped on. // -// REQUIRES: system-linux, lldb -// -// RUN: not %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: not %dexter_regression_test -- %s | FileCheck %s // CHECK: unreachable.cpp: int Index: debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp +++ debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp @@ -2,11 +2,7 @@ // Check that \DexExpectWatchValue applies no penalties when expected // program states are found. // -// REQUIRES: system-linux, lldb -// -// RUN: %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -glldb" -- %s \ -// RUN: | FileCheck %s +// RUN: %dexter_regression_test -- %s | FileCheck %s // CHECK: expect_program_state.cpp: int GCD(int lhs, int rhs) Index: debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp +++ debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp @@ -5,11 +5,10 @@ // 'VERTICAL_FORWARD' for every step onto a greater source line number in // the same function. // -// REQUIRES: system-linux, lldb +// TODO: The dbgeng debugger does not support column step reporting at present. +// XFAIL: system-windows // -// RUN: %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: %dexter_regression_test -- %s | FileCheck %s // CHECK: direction.cpp: int func(int i) { Index: debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp +++ debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp @@ -3,11 +3,7 @@ // trivial test. Expect one 'FUNC' per call to a function which is defined // in one of the source files in the test directory. // -// REQUIRES: system-linux, lldb -// -// RUN: %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: %dexter_regression_test -- %s | FileCheck %s // CHECK: func.cpp: int func(int i) { Index: debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp +++ debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp @@ -2,13 +2,11 @@ // Check that \DexExpectStepKind correctly counts 'FUNC_EXTERNAL' steps // for a trivial test. Expect one 'FUNC_EXTERNAL' per external call. // -// REQUIRES: system-linux, lldb -// XFAIL: system-linux -// This fails right now on my linux machine, needs examining as to why. +// XFAIL:* +// This fails right now on my linux and windows machine, needs examining as to +// why. // -// RUN: %dexter --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: %dexter_regression_test -- %s | FileCheck %s // CHECK: func_external.cpp: #include Index: debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp +++ debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp @@ -3,11 +3,7 @@ // Specifically, ensure recursive calls count towards 'FUNC' and not // 'VERTICAL_BACKWARD'. // -// REQUIRES: system-linux, lldb -// -// RUN: %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: %dexter_regression_test -- %s | FileCheck %s // CHECK: recursive.cpp: int func(int i) { Index: debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp +++ debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp @@ -3,11 +3,7 @@ // where the last source line in the loop is a call. Expect steps out // of a function to a line before the call to count as 'VERTICAL_BACKWARD'. // -// REQUIRES: system-linux, lldb -// -// RUN: %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: %dexter_regression_test -- %s | FileCheck %s // CHECK: small_loop.cpp: int func(int i){ Index: debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp +++ debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp @@ -2,11 +2,7 @@ // Check that \DexExpectStepOrder applies no penalty when the expected // order is found. // -// REQUIRES: system-linux, lldb -// -// RUN: %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: %dexter_regression_test -- %s | FileCheck %s // CHECK: expect_step_order.cpp: int main() Index: debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp +++ debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp @@ -2,11 +2,11 @@ // Check that \DexExpectWatchType applies no penalties when expected // types are found. // -// REQUIRES: system-linux, lldb +// TODO: On Windows WITH dbgeng, This test takes a long time to run and doesn't evaluate type values +// in the same manner as LLDB. +// XFAIL: system-windows // -// RUN: %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: %dexter_regression_test -- %s | FileCheck %s // CHECK: expect_watch_type.cpp: template Index: debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp +++ debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp @@ -2,11 +2,7 @@ // Check that \DexExpectWatchValue applies no penalties when expected // values are found. // -// REQUIRES: system-linux, lldb -// -// RUN: %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: %dexter_regression_test -- %s | FileCheck %s // CHECK: expect_watch_value.cpp: unsigned long Factorial(int n) { Index: debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp +++ debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp @@ -2,11 +2,7 @@ // Check that \DexUnreachable has no effect if the command line is never // stepped on. // -// REQUIRES: system-linux, lldb -// -// RUN: %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// RUN: %dexter_regression_test -- %s | FileCheck %s // CHECK: unreachable.cpp: int main() Index: debuginfo-tests/dexter/feature_tests/subtools/view.cpp =================================================================== --- debuginfo-tests/dexter/feature_tests/subtools/view.cpp +++ debuginfo-tests/dexter/feature_tests/subtools/view.cpp @@ -1,11 +1,7 @@ // Purpose: // Check the `view` subtool works with typical inputs. // -// REQUIRES: system-linux, lldb -// -// RUN: %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" \ -// RUN: --results %t -- %s +// RUN: %dexter_regression_test --results %t -- %s // // RUN: %dexter_base view %t/view.cpp.dextIR | FileCheck %s // CHECK: ## BEGIN Index: debuginfo-tests/lit.cfg.py =================================================================== --- debuginfo-tests/lit.cfg.py +++ debuginfo-tests/lit.cfg.py @@ -112,6 +112,35 @@ dexter_base_cmd = '"{}" "{}"'.format(config.python3_executable, dexter_path) tools.append(ToolSubst('%dexter_base', dexter_base_cmd)) +# Set up commands for DexTer regression tests. +# Builder, debugger, optimisation level and several other flags differ +# depending on whether we're running a unix like or windows os. +if platform.system() == 'Windows': + dexter_regression_test_builder = '--builder clang-cl_vs2015' + dexter_regression_test_debugger = '--debugger dbgeng' + dexter_regression_test_cflags = '--cflags "/Zi /Od"' + dexter_regression_test_ldflags = '--ldflags "/Zi"' +else: + dexter_regression_test_builder = '--builder clang' + dexter_regression_test_debugger = "--debugger lldb" + dexter_regression_test_cflags = '--cflags "-O0 -glldb"' + dexter_regression_test_ldflags = '' + +# Typical command would take the form: +# ./path_to_py/python.exe ./path_to_dex/dexter.py test --fail-lt 1.0 -w --builder clang --debugger lldb --cflags '-O0 -g' +dexter_regression_test_command = ' '.join( + # "python3", "dexter.py", test, fail_mode, builder, debugger, cflags, ldflags + ["{}".format(config.python3_executable), + "{}".format(dexter_path), + 'test', + '--fail-lt 1.0 -w', + dexter_regression_test_builder, + dexter_regression_test_debugger, + dexter_regression_test_cflags, + dexter_regression_test_ldflags]) + +tools.append(ToolSubst('%dexter_regression_test', dexter_regression_test_command)) + tool_dirs = [config.llvm_tools_dir] llvm_config.add_tool_substitutions(tools, tool_dirs)