[testsuite] Implement a category to skip libstdcxx tests

On systems where it's not supported.
As far as I understand Linux is the only systems which now ships
with libstdcxx (maybe NetBSD?, but I'm not entirely sure of the
state of lldb on the platform).
We could make this more fine grained looking for the header as
we do for libcxx. This is a little tricky as there's no such
thing as /usr/include/c++/v1, but libstdcxx encodes the version
number in the path (i.e. /usr/include/c++/5.4). I guess we might
match a regex, but it seems fragile to me.

Differential Revision:  https://reviews.llvm.org/D49110

llvm-svn: 336724
This commit is contained in:
Davide Italiano 2018-07-10 20:37:24 +00:00
parent 3a0e12700b
commit 87951b6693
11 changed files with 28 additions and 30 deletions

View File

@ -1104,6 +1104,23 @@ def checkLibcxxSupport():
print("Libc++ tests will not be run because: " + reason)
configuration.skipCategories.append("libc++")
def canRunLibstdcxxTests():
from lldbsuite.test import lldbplatformutil
platform = lldbplatformutil.getPlatform()
if platform == "linux":
return True, "libstdcxx always present"
return False, "Don't know how to build with libstdcxx on %s" % platform
def checkLibstdcxxSupport():
result, reason = canRunLibstdcxxTests()
if result:
return # libstdcxx supported
if "libstdcxx" in configuration.categoriesList:
return # libstdcxx category explicitly requested, let it run.
print("libstdcxx tests will not be run because: " + reason)
configuration.skipCategories.append("libstdcxx")
def checkDebugInfoSupport():
import lldb
@ -1228,6 +1245,7 @@ def run_suite():
target_platform = lldb.DBG.GetSelectedPlatform().GetTriple().split('-')[2]
checkLibcxxSupport()
checkLibstdcxxSupport()
checkDebugInfoSupport()
# Don't do debugserver tests on anything except OS X.

View File

@ -23,8 +23,7 @@ class StdIteratorDataFormatterTestCase(TestBase):
# Find the line number to break at.
self.line = line_number('main.cpp', '// Set break point at this line.')
@skipIfWindows # libstdcpp not ported to Windows
@skipIfwatchOS # libstdcpp not ported to watchos
@add_test_categories(["libstdcxx"])
def test_with_run_command(self):
"""Test that libstdcpp iterators format properly."""
self.build()

View File

@ -27,8 +27,7 @@ class StdListDataFormatterTestCase(TestBase):
self.final_line = line_number(
'main.cpp', '// Set final break point at this line.')
@skipIfWindows # libstdcpp not ported to Windows
@skipIfwatchOS # libstdcpp not ported to watchos
@add_test_categories(["libstdcxx"])
def test_with_run_command(self):
"""Test that that file and class static variables display correctly."""
self.build()

View File

@ -23,9 +23,7 @@ class StdMapDataFormatterTestCase(TestBase):
# Find the line number to break at.
self.line = line_number('main.cpp', '// Set break point at this line.')
@skipIfWindows # libstdcpp not ported to Windows
@skipIfFreeBSD
@skipIfwatchOS # libstdcpp not ported to watchos
@add_test_categories(["libstdcxx"])
def test_with_run_command(self):
"""Test that that file and class static variables display correctly."""
self.build()

View File

@ -15,10 +15,7 @@ from lldbsuite.test import lldbutil
class StdSmartPtrDataFormatterTestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
@skipIfFreeBSD
@skipIfWindows # libstdcpp not ported to Windows
@skipIfDarwin # doesn't compile on Darwin
@skipIfwatchOS # libstdcpp not ported to watchos
@add_test_categories(["libstdcxx"])
def test_with_run_command(self):
self.build()
self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET)

View File

@ -24,8 +24,7 @@ class StdStringDataFormatterTestCase(TestBase):
# Find the line number to break at.
self.line = line_number('main.cpp', '// Set break point at this line.')
@skipIfWindows # libstdcpp not ported to Windows
@skipIfwatchOS # libstdcpp not ported to watchos
@add_test_categories(["libstdcxx"])
def test_with_run_command(self):
"""Test that that file and class static variables display correctly."""
self.build()

View File

@ -15,10 +15,7 @@ from lldbsuite.test import lldbutil
class StdTupleDataFormatterTestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
@skipIfFreeBSD
@skipIfWindows # libstdcpp not ported to Windows
@skipIfDarwin # doesn't compile on Darwin
@skipIfwatchOS # libstdcpp not ported to watchos
@add_test_categories(["libstdcxx"])
def test_with_run_command(self):
self.build()
self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET)

View File

@ -15,10 +15,7 @@ from lldbsuite.test import lldbutil
class StdUniquePtrDataFormatterTestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
@skipIfFreeBSD
@skipIfWindows # libstdcpp not ported to Windows
@skipIfDarwin # doesn't compile on Darwin
@skipIfwatchOS # libstdcpp not ported to watchos
@add_test_categories(["libstdcxx"])
def test_with_run_command(self):
self.build()
self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET)

View File

@ -23,12 +23,7 @@ class StdVBoolDataFormatterTestCase(TestBase):
# Find the line number to break at.
self.line = line_number('main.cpp', '// Set break point at this line.')
@expectedFailureAll(
oslist=['freebsd'],
bugnumber='llvm.org/pr20548 fails to build on lab.llvm.org buildbot')
@skipIfWindows # libstdcpp not ported to Windows.
@skipIfDarwin
@skipIfwatchOS # libstdcpp not ported to watchos
@add_test_categories(["libstdcxx"])
def test_with_run_command(self):
"""Test that that file and class static variables display correctly."""
self.build()

View File

@ -23,9 +23,7 @@ class StdVectorDataFormatterTestCase(TestBase):
# Find the line number to break at.
self.line = line_number('main.cpp', '// Set break point at this line.')
@skipIfFreeBSD
@skipIfWindows # libstdcpp not ported to Windows
@skipIfwatchOS # libstdcpp not ported to watchos
@add_test_categories(["libstdcxx"])
def test_with_run_command(self):
"""Test that that file and class static variables display correctly."""
self.build()

View File

@ -26,6 +26,7 @@ all_categories = {
'gmodules': 'Tests that can be run with -gmodules debug information',
'expression': 'Tests related to the expression parser',
'libc++': 'Test for libc++ data formatters',
'libstdcxx': 'Test for libstdcxx data formatters',
'objc': 'Tests related to the Objective-C programming language support',
'pyapi': 'Tests related to the Python API',
'basic_process': 'Basic process execution sniff tests.',