Add support for UNSUPPORTED tag to lit
authorEric Fiselier <eric@efcs.ca>
Thu, 6 Nov 2014 15:26:20 +0000 (15:26 +0000)
committerEric Fiselier <eric@efcs.ca>
Thu, 6 Nov 2014 15:26:20 +0000 (15:26 +0000)
llvm-svn: 221460

libcxxabi/test/lit.cfg

index f6efacf..7963ddd 100644 (file)
@@ -58,6 +58,7 @@ class LibcxxabiTestFormat(lit.formats.FileBasedTest):
     def _execute(self, test, lit_config):
         # Extract test metadata from the test file.
         requires = []
+        unsupported = []
         with open(test.getSourcePath()) as f:
             for ln in f:
                 if 'XFAIL:' in ln:
@@ -66,7 +67,10 @@ class LibcxxabiTestFormat(lit.formats.FileBasedTest):
                 elif 'REQUIRES:' in ln:
                     items = ln[ln.index('REQUIRES:') + 9:].split(',')
                     requires.extend([s.strip() for s in items])
-                elif not ln.startswith("//") and ln.strip():
+                elif 'UNSUPPORTED:' in ln:
+                    items = ln[ln.index('UNSUPPORTED:') + 12:].split(',')
+                    unsupported.extend([s.strip() for s in items])
+                elif not ln.strip().startswith("//") and ln.strip():
                     # Stop at the first non-empty line that is not a C++
                     # comment.
                     break
@@ -83,6 +87,13 @@ class LibcxxabiTestFormat(lit.formats.FileBasedTest):
                     "Test requires the following features: %s" % (
                       ', '.join(missing_required_features),))
 
+        unsupported_features = [f for f in unsupported
+                             if f in test.config.available_features]
+        if unsupported_features:
+            return (lit.Test.UNSUPPORTED,
+                    "Test is unsupported with the following features: %s" % (
+                       ', '.join(unsupported_features),))
+
         # Evaluate the test.
         return self._evaluate_test(test, lit_config)