Author: zturner Date: Wed Jan 9 15:26:50 2019 New Revision: 350773 URL: http://llvm.org/viewvc/llvm-project?rev=350773&view=rev Log: Write PDB/variables.test to be more robust.
CHECK-DAG can't really be mixed with CHECK-NEXT statements because each non DAG check sets a new search-origin for following CHECK-DAG statements. This was passing by coincidence before, but a benign change in the way we process symbols caused the order of the output to be different, which triggered this test to fail. This change makes the test resilient against ordering problems by running a separate invocation of FileCheck for each function that we want to test. Note that with the Native PDB reader, we have full control over the ordering that symbols are processed in, so we don't have to worry about different machines returning things in different orders due to different DIA SDK versions. Modified: lldb/trunk/lit/SymbolFile/PDB/variables.test Modified: lldb/trunk/lit/SymbolFile/PDB/variables.test URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/variables.test?rev=350773&r1=350772&r2=350773&view=diff ============================================================================== --- lldb/trunk/lit/SymbolFile/PDB/variables.test (original) +++ lldb/trunk/lit/SymbolFile/PDB/variables.test Wed Jan 9 15:26:50 2019 @@ -1,58 +1,66 @@ REQUIRES: system-windows, msvc RUN: %build --compiler=clang-cl --mode=compile --arch=64 --nodefaultlib --output=%T/VariablesTest.cpp.obj %S/Inputs/VariablesTest.cpp RUN: %build --compiler=msvc --mode=link --arch=64 --nodefaultlib --output=%T/VariablesTest.cpp.exe %T/VariablesTest.cpp.obj -RUN: lldb-test symbols %T/VariablesTest.cpp.exe | FileCheck %s +RUN: lldb-test symbols %T/VariablesTest.cpp.exe > %T/VariablesTest.out +RUN: FileCheck --check-prefix=GLOBALS --input-file=%T/VariablesTest.out %s +RUN: FileCheck --check-prefix=FUNC-F --input-file=%T/VariablesTest.out %s +RUN: FileCheck --check-prefix=FUNC-MAIN --input-file=%T/VariablesTest.out %s +RUN: FileCheck --check-prefix=FUNC-CONSTRUCTOR --input-file=%T/VariablesTest.out %s +RUN: FileCheck --check-prefix=FUNC-MEMBER --input-file=%T/VariablesTest.out %s -CHECK: Module [[MOD:.*]] -CHECK: SymbolVendor ([[MOD]]) -CHECK: CompileUnit{{.*}}, language = "c++", file = '{{.*}}\VariablesTest.cpp' -CHECK-DAG: Variable{{.*}}, name = "g_IntVar" -CHECK-SAME: scope = global, location = {{.*}}, external -CHECK-DAG: Variable{{.*}}, name = "m_StaticClassMember" -CHECK-SAME: scope = global, location = {{.*}}, external -CHECK-DAG: Variable{{.*}}, name = "g_pConst" -CHECK-SAME: scope = global, location = {{.*}}, external -CHECK-DAG: Variable{{.*}}, name = "same_name_var" -CHECK-SAME: scope = global, location = {{.*}}, external -CHECK-DAG: Variable{{.*}}, name = "g_EnumVar" -CHECK-SAME: scope = global, location = {{.*}}, external -CHECK-DAG: Variable{{.*}}, name = "g_tls" -CHECK-SAME: scope = thread local, location = {{.*}}, external -CHECK-DAG: Variable{{.*}}, name = "ClassVar" -CHECK-SAME: scope = global, location = {{.*}}, external -CHECK-DAG: Variable{{.*}}, name = "g_Const" -CHECK-SAME: scope = ??? (2) +GLOBALS: Module [[MOD:.*]] +GLOBALS: SymbolVendor ([[MOD]]) +GLOBALS: CompileUnit{{.*}}, language = "c++", file = '{{.*}}\VariablesTest.cpp' +GLOBALS-DAG: Variable{{.*}}, name = "g_IntVar" +GLOBALS-SAME: scope = global, location = {{.*}}, external +GLOBALS-DAG: Variable{{.*}}, name = "m_StaticClassMember" +GLOBALS-SAME: scope = global, location = {{.*}}, external +GLOBALS-DAG: Variable{{.*}}, name = "g_pConst" +GLOBALS-SAME: scope = global, location = {{.*}}, external +GLOBALS-DAG: Variable{{.*}}, name = "same_name_var" +GLOBALS-SAME: scope = global, location = {{.*}}, external +GLOBALS-DAG: Variable{{.*}}, name = "g_EnumVar" +GLOBALS-SAME: scope = global, location = {{.*}}, external +GLOBALS-DAG: Variable{{.*}}, name = "g_tls" +GLOBALS-SAME: scope = thread local, location = {{.*}}, external +GLOBALS-DAG: Variable{{.*}}, name = "ClassVar" +GLOBALS-SAME: scope = global, location = {{.*}}, external +GLOBALS-DAG: Variable{{.*}}, name = "g_Const" +GLOBALS-SAME: scope = ??? (2) +GLOBALS: Function -CHECK-DAG: Function{[[FID1:.*]]}, mangled = ?f@@YAHHH@Z -CHECK-NEXT: Block{[[FID1]]} -CHECK-DAG: Variable{{.*}}, name = "var_arg1" -CHECK-SAME: scope = parameter -CHECK-DAG: Variable{{.*}}, name = "var_arg2" -CHECK-SAME: scope = parameter -CHECK-DAG: Variable{{.*}}, name = "same_name_var" -CHECK-SAME: scope = local +FUNC-F: Function{{.*}}, mangled = ?f@@YAHHH@Z +FUNC-F-NEXT: Block +FUNC-F-NEXT: Variable{{.*}}, name = "var_arg1" +FUNC-F-SAME: scope = parameter +FUNC-F-NEXT: Variable{{.*}}, name = "var_arg2" +FUNC-F-SAME: scope = parameter +FUNC-F-NEXT: Variable{{.*}}, name = "same_name_var" +FUNC-F-SAME: scope = local -CHECK-DAG: Function{[[FID2:.*]]}, mangled = main -CHECK-NEXT: Block{[[FID2]]} -CHECK-DAG: Variable{{.*}}, name = "same_name_var" -CHECK-SAME: scope = local -CHECK-DAG: Variable{{.*}}, name = "local_const" -CHECK-SAME: scope = local -CHECK-DAG: Variable{{.*}}, name = "local_pCString" -CHECK-SAME: scope = local -CHECK-DAG: Variable{{.*}}, name = "a" -CHECK-SAME: scope = local +FUNC-MAIN: Function{{.*}}, mangled = main +FUNC-MAIN-NEXT: Block +FUNC-MAIN-NEXT: Variable{{.*}}, name = "same_name_var" +FUNC-MAIN-SAME: scope = local +FUNC-MAIN-NEXT: Variable{{.*}}, name = "local_const" +FUNC-MAIN-SAME: scope = local +FUNC-MAIN-NEXT: Variable{{.*}}, name = "local_CString" +FUNC-MAIN-SAME: scope = local +FUNC-MAIN-NEXT: Variable{{.*}}, name = "local_pCString" +FUNC-MAIN-SAME: scope = local +FUNC-MAIN-NEXT: Variable{{.*}}, name = "a" +FUNC-MAIN-SAME: scope = local -CHECK-DAG: Function{[[FID3:.*]]}, mangled = ??0Class@@QEAA@H@Z -CHECK-NEXT: Block{[[FID3]]} -CHECK-DAG: Variable{{.*}}, name = "this" -CHECK-SAME: scope = parameter -CHECK-SAME: artificial -CHECK-DAG: Variable{{.*}}, name = "a" -CHECK-SAME: scope = parameter +FUNC-CONSTRUCTOR: Function{{.*}}, mangled = ??0Class@@QEAA@H@Z +FUNC-CONSTRUCTOR-NEXT: Block +FUNC-CONSTRUCTOR-NEXT: Variable{{.*}}, name = "this" +FUNC-CONSTRUCTOR-SAME: scope = parameter +FUNC-CONSTRUCTOR-SAME: artificial +FUNC-CONSTRUCTOR-NEXT: Variable{{.*}}, name = "a" +FUNC-CONSTRUCTOR-SAME: scope = parameter -CHECK-DAG: Function{[[FID4:.*]]}, mangled = ?Func@Class@@QEAAXXZ -CHECK-NEXT: Block{[[FID4]]} -CHECK-DAG: Variable{{.*}}, name = "this" -CHECK-SAME: scope = parameter -CHECK-SAME: artificial +FUNC-MEMBER: Function{{.*}}, mangled = ?Func@Class@@QEAAXXZ +FUNC-MEMBER-NEXT: Block +FUNC-MEMBER-NEXT: Variable{{.*}}, name = "this" +FUNC-MEMBER-SAME: scope = parameter +FUNC-MEMBER-SAME: artificial _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits