summaryrefslogtreecommitdiffstats
path: root/llvm/utils/lit/TestFormats.py
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-09-16 01:34:52 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-09-16 01:34:52 +0000
commit8d2aa3837791f945ba99fd563501c17481b36968 (patch)
treec33b159f2865903da23474880236538cb16c98e7 /llvm/utils/lit/TestFormats.py
parent1855a56f92a660a13647592e9e57c39996476648 (diff)
downloadbcm5719-llvm-8d2aa3837791f945ba99fd563501c17481b36968.tar.gz
bcm5719-llvm-8d2aa3837791f945ba99fd563501c17481b36968.zip
lit: Add a custom test format for use in clang.
llvm-svn: 81987
Diffstat (limited to 'llvm/utils/lit/TestFormats.py')
-rw-r--r--llvm/utils/lit/TestFormats.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/llvm/utils/lit/TestFormats.py b/llvm/utils/lit/TestFormats.py
index 62451469fda..61bdb185355 100644
--- a/llvm/utils/lit/TestFormats.py
+++ b/llvm/utils/lit/TestFormats.py
@@ -89,3 +89,56 @@ class ShTest(FileBasedTest):
class TclTest(FileBasedTest):
def execute(self, test, litConfig):
return TestRunner.executeTclTest(test, litConfig)
+
+###
+
+import re
+import tempfile
+
+class SyntaxCheckTest:
+ # FIXME: Refactor into generic test for running some command on a directory
+ # of inputs.
+
+ def __init__(self, compiler, dir, recursive, pattern, extra_cxx_args=[]):
+ self.compiler = str(compiler)
+ self.dir = str(dir)
+ self.recursive = bool(recursive)
+ self.pattern = re.compile(pattern)
+ self.extra_cxx_args = list(extra_cxx_args)
+
+ def getTestsInDirectory(self, testSuite, path_in_suite,
+ litConfig, localConfig):
+ for dirname,subdirs,filenames in os.walk(self.dir):
+ if not self.recursive:
+ subdirs[:] = []
+
+ for filename in filenames:
+ if (not self.pattern.match(filename) or
+ filename in localConfig.excludes):
+ continue
+
+ path = os.path.join(dirname,filename)
+ suffix = path[len(self.dir):]
+ if suffix.startswith(os.sep):
+ suffix = suffix[1:]
+ test = Test.Test(testSuite,
+ path_in_suite + tuple(suffix.split(os.sep)),
+ localConfig)
+ # FIXME: Hack?
+ test.source_path = path
+ yield test
+
+ def execute(self, test, litConfig):
+ tmp = tempfile.NamedTemporaryFile(suffix='.cpp')
+ print >>tmp, '#include "%s"' % test.source_path
+ tmp.flush()
+
+ cmd = [self.compiler, '-x', 'c++', '-fsyntax-only', tmp.name]
+ cmd.extend(self.extra_cxx_args)
+ out, err, exitCode = TestRunner.executeCommand(cmd)
+
+ diags = out + err
+ if not exitCode and not diags.strip():
+ return Test.PASS,''
+
+ return Test.FAIL, diags
OpenPOWER on IntegriCloud