Author: ericwf Date: Mon Jul 6 14:56:45 2015 New Revision: 241492 URL: http://llvm.org/viewvc/llvm-project?rev=241492&view=rev Log: Automatically detect and use clang verify in failure tests.
Automatically enable clang verify whenever the '-verify-ignore-unexpected' flag is supported. Failure tests are run using verify if they contain one or more "expected-*" diagnostics tags. Otherwise they are run normally. Modified: libcxx/trunk/test/libcxx/compiler.py libcxx/trunk/test/libcxx/test/config.py libcxx/trunk/test/libcxx/test/format.py libcxx/trunk/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.fail.cpp Modified: libcxx/trunk/test/libcxx/compiler.py URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/compiler.py?rev=241492&r1=241491&r2=241492&view=diff ============================================================================== --- libcxx/trunk/test/libcxx/compiler.py (original) +++ libcxx/trunk/test/libcxx/compiler.py Mon Jul 6 14:56:45 2015 @@ -139,7 +139,10 @@ class CXXCompiler(object): return lit.util.capture(cmd).strip() def hasCompileFlag(self, flag): - flags = [flag] + if isinstance(flag, list): + flags = list(flag) + else: + flags = [flag] # Add -Werror to ensure that an unrecognized flag causes a non-zero # exit code. -Werror is supported on all known compiler types. if self.type is not None: Modified: libcxx/trunk/test/libcxx/test/config.py URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/test/config.py?rev=241492&r1=241491&r2=241492&view=diff ============================================================================== --- libcxx/trunk/test/libcxx/test/config.py (original) +++ libcxx/trunk/test/libcxx/test/config.py Mon Jul 6 14:56:45 2015 @@ -201,8 +201,10 @@ class Configuration(object): '''If set, run clang with -verify on failing tests.''' self.use_clang_verify = self.get_lit_bool('use_clang_verify') if self.use_clang_verify is None: - # TODO: Default this to True when using clang. - self.use_clang_verify = False + # NOTE: We do not test for the -verify flag directly because + # -verify will always exit with non-zero on an empty file. + self.use_clang_verify = self.cxx.hasCompileFlag( + ['-Xclang', '-verify-ignore-unexpected']) self.lit_config.note( "inferred use_clang_verify as: %r" % self.use_clang_verify) Modified: libcxx/trunk/test/libcxx/test/format.py URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/test/format.py?rev=241492&r1=241491&r2=241492&view=diff ============================================================================== --- libcxx/trunk/test/libcxx/test/format.py (original) +++ libcxx/trunk/test/libcxx/test/format.py Mon Jul 6 14:56:45 2015 @@ -141,13 +141,16 @@ class LibcxxTestFormat(object): def _evaluate_fail_test(self, test): source_path = test.getSourcePath() - # TODO: Move the checking of USE_VERIFY into - # lit.TestRunner.parseIntegratedTestScript by adding support for custom - # tags. with open(source_path, 'r') as f: contents = f.read() - use_verify = 'USE_VERIFY' in contents and self.use_verify_for_fail - extra_flags = ['-Xclang', '-verify'] if use_verify else [] + verify_tags = ['expected-note', 'expected-remark', 'expected-warning', + 'expected-error', 'expected-no-diagnostics'] + use_verify = self.use_verify_for_fail and \ + any([tag in contents for tag in verify_tags]) + extra_flags = [] + if use_verify: + extra_flags += ['-Xclang', '-verify', + '-Xclang', '-verify-ignore-unexpected=note'] cmd, out, err, rc = self.cxx.compile(source_path, out=os.devnull, flags=extra_flags) expected_rc = 0 if use_verify else 1 @@ -155,5 +158,6 @@ class LibcxxTestFormat(object): return lit.Test.PASS, '' else: report = libcxx.util.makeReport(cmd, out, err, rc) - return (lit.Test.FAIL, - report + 'Expected compilation to fail!\n') + report_msg = ('Expected compilation to fail!' if use_verify else + 'Expected compilation using verify to pass!') + return lit.Test.FAIL, report + report_msg + '\n' Modified: libcxx/trunk/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.fail.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.fail.cpp?rev=241492&r1=241491&r2=241492&view=diff ============================================================================== --- libcxx/trunk/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.fail.cpp (original) +++ libcxx/trunk/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/default01.fail.cpp Mon Jul 6 14:56:45 2015 @@ -15,7 +15,6 @@ // default unique_ptr ctor should require default Deleter ctor -// USE_VERIFY #include <memory> _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits