Author: adrian Date: Thu Jan 24 10:24:14 2019 New Revision: 352072 URL: http://llvm.org/viewvc/llvm-project?rev=352072&view=rev Log: Add decorator support for the DWARF version produced by the compiler and mark up some tests failing in http://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake-matrix/
Modified: lldb/trunk/packages/Python/lldbsuite/test/decorators.py lldb/trunk/packages/Python/lldbsuite/test/expression_command/radar_43822994/TestScopedEnumType.py lldb/trunk/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/template/TestTemplateArgs.py lldb/trunk/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py Modified: lldb/trunk/packages/Python/lldbsuite/test/decorators.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/decorators.py?rev=352072&r1=352071&r2=352072&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/decorators.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/decorators.py Thu Jan 24 10:24:14 2019 @@ -162,7 +162,7 @@ def _decorateTest(mode, debug_info=None, swig_version=None, py_version=None, macos_version=None, - remote=None): + remote=None, dwarf_version=None): def fn(self): skip_for_os = _match_decorator_property( lldbplatform.translate(oslist), self.getPlatform()) @@ -197,6 +197,9 @@ def _decorateTest(mode, macos_version[0], macos_version[1], platform.mac_ver()[0]))) + skip_for_dwarf_version = ( + dwarf_version is None) or _check_expected_version( + dwarf_version[0], dwarf_version[1], self.getDwarfVersion()) # For the test to be skipped, all specified (e.g. not None) parameters must be True. # An unspecified parameter means "any", so those are marked skip by default. And we skip @@ -210,7 +213,8 @@ def _decorateTest(mode, (swig_version, skip_for_swig_version, "swig version"), (py_version, skip_for_py_version, "python version"), (macos_version, skip_for_macos_version, "macOS version"), - (remote, skip_for_remote, "platform locality (remote/local)")] + (remote, skip_for_remote, "platform locality (remote/local)"), + (dwarf_version, skip_for_dwarf_version, "dwarf version")] reasons = [] final_skip_result = True for this_condition in conditions: @@ -254,7 +258,7 @@ def expectedFailureAll(bugnumber=None, debug_info=None, swig_version=None, py_version=None, macos_version=None, - remote=None): + remote=None, dwarf_version=None): return _decorateTest(DecorateMode.Xfail, bugnumber=bugnumber, oslist=oslist, hostoslist=hostoslist, @@ -263,7 +267,7 @@ def expectedFailureAll(bugnumber=None, debug_info=debug_info, swig_version=swig_version, py_version=py_version, macos_version=None, - remote=remote) + remote=remote,dwarf_version=dwarf_version) # provide a function to skip on defined oslist, compiler version, and archs @@ -279,7 +283,7 @@ def skipIf(bugnumber=None, debug_info=None, swig_version=None, py_version=None, macos_version=None, - remote=None): + remote=None, dwarf_version=None): return _decorateTest(DecorateMode.Skip, bugnumber=bugnumber, oslist=oslist, hostoslist=hostoslist, @@ -288,7 +292,7 @@ def skipIf(bugnumber=None, debug_info=debug_info, swig_version=swig_version, py_version=py_version, macos_version=macos_version, - remote=remote) + remote=remote, dwarf_version=dwarf_version) def _skip_for_android(reason, api_levels, archs): Modified: lldb/trunk/packages/Python/lldbsuite/test/expression_command/radar_43822994/TestScopedEnumType.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/radar_43822994/TestScopedEnumType.py?rev=352072&r1=352071&r2=352072&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/expression_command/radar_43822994/TestScopedEnumType.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/expression_command/radar_43822994/TestScopedEnumType.py Thu Jan 24 10:24:14 2019 @@ -11,6 +11,7 @@ class ScopedEnumType(TestBase): mydir = TestBase.compute_mydir(__file__) + @skipIf(dwarf_version=['<', '4']) def test(self): self.build() Modified: lldb/trunk/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py?rev=352072&r1=352071&r2=352072&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py Thu Jan 24 10:24:14 2019 @@ -16,6 +16,7 @@ class TestTailCallFrameSBAPI(TestBase): NO_DEBUG_INFO_TESTCASE = True @skipIf(compiler="clang", compiler_version=['<', '8.0']) + @skipIf(dwarf_version=['<', '4']) @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr26265") def test_tail_call_frame_sbapi(self): self.build() Modified: lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py?rev=352072&r1=352071&r2=352072&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py Thu Jan 24 10:24:14 2019 @@ -16,6 +16,7 @@ class CPP11EnumTypesTestCase(TestBase): mydir = TestBase.compute_mydir(__file__) @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_int8_t(self): """Test C++11 enumeration class types as int8_t types.""" self.build( @@ -24,6 +25,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_int16_t(self): """Test C++11 enumeration class types as int16_t types.""" self.build( @@ -32,6 +34,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_int32_t(self): """Test C++11 enumeration class types as int32_t types.""" self.build( @@ -40,6 +43,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_int64_t(self): """Test C++11 enumeration class types as int64_t types.""" self.build( @@ -48,6 +52,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_uint8_t(self): """Test C++11 enumeration class types as uint8_t types.""" self.build( @@ -56,6 +61,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_uint16_t(self): """Test C++11 enumeration class types as uint16_t types.""" self.build( @@ -64,6 +70,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_uint32_t(self): """Test C++11 enumeration class types as uint32_t types.""" self.build( @@ -72,6 +79,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_uint64_t(self): """Test C++11 enumeration class types as uint64_t types.""" self.build( Modified: lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/template/TestTemplateArgs.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/template/TestTemplateArgs.py?rev=352072&r1=352071&r2=352072&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/template/TestTemplateArgs.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/template/TestTemplateArgs.py Thu Jan 24 10:24:14 2019 @@ -113,6 +113,7 @@ class TemplateArgsTestCase(TestBase): # Gcc does not generate the necessary DWARF attribute for enum template # parameters. @expectedFailureAll(bugnumber="llvm.org/pr28354", compiler="gcc") + @skipIf(dwarf_version=['<', '4']) def test_enum_args(self): frame = self.prepareProcess() Modified: lldb/trunk/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py?rev=352072&r1=352071&r2=352072&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py Thu Jan 24 10:24:14 2019 @@ -25,6 +25,7 @@ class TestObjCIvarsInBlocks(TestBase): @skipUnlessDarwin @add_test_categories(['pyapi']) + @skipIf(dwarf_version=['<', '4']) @expectedFailureAll( archs=["i[3-6]86"], bugnumber="This test requires the 2.0 runtime, so it will fail on i386") Modified: lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py?rev=352072&r1=352071&r2=352072&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py Thu Jan 24 10:24:14 2019 @@ -1309,6 +1309,19 @@ class Base(unittest2.TestCase): version = m.group(1) return version + def getDwarfVersion(self): + """ Returns the dwarf version generated by clang or 'unknown'. """ + if 'clang' not in self.getCompiler(): + return 'unknown' + driver_output = check_output( + [self.getCompiler()] + '-g -c -x c - -o - -###'.split(), + stderr=STDOUT) + for line in driver_output.split(os.linesep): + m = re.search('dwarf-version=([0-9])', line) + if m: + return m.group(1) + return 'unknown' + def platformIsDarwin(self): """Returns true if the OS triple for the selected platform is any valid apple OS""" return lldbplatformutil.platformIsDarwin() _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits