Skip to content

Commit

Permalink
[Test-Suite] Fix all the sanitizer tests to be based on compiler capa…
Browse files Browse the repository at this point in the history
…bilities

Summary: This patch reworks all the @Skip... lines for sanitizer libraries to be based on whether or not the compiler actually works, rather than whether or not the compiler-rt sources are present in some magically derived directory.

Reviewers: lldb-commits

Subscribers: kubabrecka, tfiala

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

llvm-svn: 286490
  • Loading branch information
Chris Bieneman committed Nov 10, 2016
1 parent 916f445 commit 58ddb8d
Show file tree
Hide file tree
Showing 9 changed files with 18 additions and 33 deletions.
41 changes: 16 additions & 25 deletions lldb/packages/Python/lldbsuite/test/decorators.py
Expand Up @@ -656,31 +656,6 @@ def skipIfTargetAndroid(api_levels=None, archs=None):
archs))


def skipUnlessCompilerRt(func):
"""Decorate the item to skip tests if testing remotely."""
def is_compiler_rt_missing():
compilerRtPath = os.path.join(
os.environ["LLDB_SRC"],
"..",
"..",
"..",
"llvm",
"projects",
"compiler-rt")
if not os.path.exists(compilerRtPath):
compilerRtPath = os.path.join(
os.environ["LLDB_SRC"],
"..",
"..",
"..",
"llvm",
"runtimes",
"compiler-rt")
return "compiler-rt not found" if not os.path.exists(
compilerRtPath) else None
return skipTestIfFn(is_compiler_rt_missing)(func)


def skipUnlessThreadSanitizer(func):
"""Decorate the item to skip test unless Clang -fsanitize=thread is supported."""

Expand All @@ -701,3 +676,19 @@ def is_compiler_clang_with_thread_sanitizer(self):
return "Compiler cannot compile with -fsanitize=thread"
return None
return skipTestIfFn(is_compiler_clang_with_thread_sanitizer)(func)

def skipUnlessAddressSanitizer(func):
"""Decorate the item to skip test unless Clang -fsanitize=thread is supported."""

def is_compiler_with_address_sanitizer(self):
compiler_path = self.getCompiler()
compiler = os.path.basename(compiler_path)
f = tempfile.NamedTemporaryFile()
cmd = "echo 'int main() {}' | %s -x c -o %s -" % (compiler_path, f.name)
if os.popen(cmd).close() is not None:
return None # The compiler cannot compile at all, let's *not* skip the test
cmd = "echo 'int main() {}' | %s -fsanitize=address -x c -o %s -" % (compiler_path, f.name)
if os.popen(cmd).close() is not None:
return "Compiler cannot compile with -fsanitize=address"
return None
return skipTestIfFn(is_compiler_with_address_sanitizer)(func)
Expand Up @@ -23,7 +23,7 @@ class AsanTestCase(TestBase):
bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)")
@skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default
@skipIfRemote
@skipUnlessCompilerRt
@skipUnlessAddressSanitizer
def test(self):
self.build()
self.asan_tests()
Expand Down
Expand Up @@ -23,7 +23,7 @@ class AsanTestReportDataCase(TestBase):
bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)")
@skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default
@skipIfRemote
@skipUnlessCompilerRt
@skipUnlessAddressSanitizer
@expectedFailureAll(archs=['i386'], bugnumber="rdar://28658860")
def test(self):
self.build()
Expand Down
Expand Up @@ -20,7 +20,6 @@ class TsanBasicTestCase(TestBase):
bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)")
@skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default
@skipIfRemote
@skipUnlessCompilerRt
@skipUnlessThreadSanitizer
def test(self):
self.build()
Expand Down
Expand Up @@ -20,7 +20,6 @@ class TsanCPPGlobalLocationTestCase(TestBase):
bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)")
@skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default
@skipIfRemote
@skipUnlessCompilerRt
@skipUnlessThreadSanitizer
def test(self):
self.build()
Expand Down
Expand Up @@ -20,7 +20,6 @@ class TsanGlobalLocationTestCase(TestBase):
bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)")
@skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default
@skipIfRemote
@skipUnlessCompilerRt
@skipUnlessThreadSanitizer
def test(self):
self.build()
Expand Down
Expand Up @@ -20,7 +20,6 @@ class TsanMultipleTestCase(TestBase):
bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)")
@skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default
@skipIfRemote
@skipUnlessCompilerRt
@skipUnlessThreadSanitizer
def test(self):
self.build()
Expand Down
Expand Up @@ -20,7 +20,6 @@ class TsanThreadLeakTestCase(TestBase):
bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)")
@skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default
@skipIfRemote
@skipUnlessCompilerRt
@skipUnlessThreadSanitizer
def test(self):
self.build()
Expand Down
Expand Up @@ -20,7 +20,6 @@ class TsanThreadNumbersTestCase(TestBase):
bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)")
@skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default
@skipIfRemote
@skipUnlessCompilerRt
@skipUnlessThreadSanitizer
def test(self):
self.build()
Expand Down

0 comments on commit 58ddb8d

Please sign in to comment.