diff --git a/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp b/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp index 476906846793f..46ae81872fa99 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_program_state.cpp @@ -2,11 +2,9 @@ // Check that \DexExpectProgramState correctly applies a penalty when // an expected program state is never found. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// 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) diff --git a/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp b/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp index 9612c068ad611..2075cd22fa673 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_kinds.cpp @@ -2,11 +2,9 @@ // Check that \DexExpectStepKind correctly applies a penalty when // unexpected step kinds are encountered. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// 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){ diff --git a/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp b/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp index e52a7fffe203e..dc5f8c6b0c92b 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_step_order.cpp @@ -2,11 +2,9 @@ // Check that \DexExpectStepOrder correctly applies a penalty for steps // found out of expected order. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// 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() diff --git a/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp b/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp index 145eeed7ef861..838e1f87e3039 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_type.cpp @@ -2,11 +2,14 @@ // Check that \DexExpectWatchType applies penalties when expected // types are not found and unexpected types are. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// RUN: not %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// +// 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_regression_test -- %s | FileCheck %s // CHECK: expect_watch_type.cpp: template diff --git a/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp b/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp index b4c60fa321791..fa0ed119980ea 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/penalty/expect_watch_value.cpp @@ -2,11 +2,10 @@ // Check that \DexExpectWatchValue correctly applies a penalty when // expected values are not found. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// 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() diff --git a/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp b/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp index 5cea1c4257d0c..48f56b7d0452f 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/penalty/unreachable.cpp @@ -2,11 +2,10 @@ // Check that \DexUnreachable correctly applies a penalty if the command // line is stepped on. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// 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 diff --git a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp index ebb4766f089a8..3e77938446b07 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_program_state.cpp @@ -2,11 +2,10 @@ // Check that \DexExpectWatchValue applies no penalties when expected // program states are found. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// 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) diff --git a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp index 3ff0e9fecbc67..1f7a96bafffae 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/direction.cpp @@ -5,11 +5,12 @@ // 'VERTICAL_FORWARD' for every step onto a greater source line number in // the same function. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// RUN: %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// TODO: The dbgeng debugger does not support column step reporting at present. +// XFAIL: system-windows +// +// RUN: %dexter_regression_test -- %s | FileCheck %s // CHECK: direction.cpp: int func(int i) { diff --git a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp index d5ab3ffbd0367..b386dc4aa48c6 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func.cpp @@ -3,11 +3,9 @@ // 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 +// UNSUPPORTED: system-darwin // -// 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) { diff --git a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp index 6dff5c8029687..cbefcb9690822 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/func_external.cpp @@ -2,13 +2,13 @@ // 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. +// UNSUPPORTED: system-darwin // -// RUN: %dexter --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// XFAIL:* +// This fails right now on my linux and windows machine, needs examining as to +// why. +// +// RUN: %dexter_regression_test -- %s | FileCheck %s // CHECK: func_external.cpp: #include diff --git a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp index f2b54e4426790..0264420a46be2 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/recursive.cpp @@ -3,11 +3,9 @@ // Specifically, ensure recursive calls count towards 'FUNC' and not // 'VERTICAL_BACKWARD'. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// 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) { diff --git a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp index 1f9060747ec2c..fb19869f9182d 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_kind/small_loop.cpp @@ -3,11 +3,9 @@ // 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 +// UNSUPPORTED: system-darwin // -// 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){ diff --git a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp index a89a0cee3cc5c..cbcb5063c10f1 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_step_order.cpp @@ -2,11 +2,9 @@ // Check that \DexExpectStepOrder applies no penalty when the expected // order is found. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// 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() diff --git a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp index 41593837a9c88..67077bebcef8c 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_type.cpp @@ -2,11 +2,13 @@ // Check that \DexExpectWatchType applies no penalties when expected // types are found. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// RUN: %dexter_base test --fail-lt 1.0 -w \ -// RUN: --builder 'clang' --debugger 'lldb' --cflags "-O0 -g" -- %s \ -// RUN: | FileCheck %s +// 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_regression_test -- %s | FileCheck %s // CHECK: expect_watch_type.cpp: template diff --git a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp index 035e411369803..f22431a0900d9 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/perfect/expect_watch_value.cpp @@ -2,11 +2,9 @@ // Check that \DexExpectWatchValue applies no penalties when expected // values are found. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// 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) { diff --git a/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp b/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp index b158b4851be44..bcc1b835a6487 100644 --- a/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp +++ b/debuginfo-tests/dexter/feature_tests/commands/perfect/unreachable.cpp @@ -2,11 +2,9 @@ // Check that \DexUnreachable has no effect if the command line is never // stepped on. // -// REQUIRES: system-linux, lldb +// UNSUPPORTED: system-darwin // -// 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() diff --git a/debuginfo-tests/dexter/feature_tests/subtools/view.cpp b/debuginfo-tests/dexter/feature_tests/subtools/view.cpp index 43598dbdc9b91..03e0b9420fb1d 100644 --- a/debuginfo-tests/dexter/feature_tests/subtools/view.cpp +++ b/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 diff --git a/debuginfo-tests/lit.cfg.py b/debuginfo-tests/lit.cfg.py index 2d93b8da9bf6d..fb2f72357b263 100644 --- a/debuginfo-tests/lit.cfg.py +++ b/debuginfo-tests/lit.cfg.py @@ -112,6 +112,35 @@ def get_required_attr(config, attr_name): 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)