dd7a4836e3
Summary: This patch allows the use of LIT's ShTest format in the libc++ test suite. ShTests have the suffix '.sh.cpp'. It also introduces a series of other changes. These changes are: - More functionality including parsing test metadata has been moved into LIT. - LibcxxTestFormat now supports multi-part suffixes. - the `CXXCompiler` functionality has been used to shrink the size of LibcxxTestFormat. - The recursive loading of the site config has been turned into `libcxx.test.config.loadSiteConfig` so it can be used with libc++abi. - Temporary files are now created in the build directory of libc++. This follows how it is down in ShTest. - `not.py` was added as a utility executable that mirrors the functionality of LLVM's `not` executable. - The first ShTest test was added under test/libcxx/double_include.sh.cpp Reviewers: jroelofs, danalbert Reviewed By: danalbert Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D7073 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@226844 91177308-0d34-0410-b5e6-96231b3b80d8
47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
from contextlib import contextmanager
|
|
import os
|
|
import tempfile
|
|
|
|
|
|
def cleanFile(filename):
|
|
try:
|
|
os.remove(filename)
|
|
except OSError:
|
|
pass
|
|
|
|
|
|
@contextmanager
|
|
def guardedTempFilename(suffix='', prefix='', dir=None):
|
|
# Creates and yeilds a temporary filename within a with statement. The file
|
|
# is removed upon scope exit.
|
|
handle, name = tempfile.mkstemp(suffix=suffix, prefix=prefix, dir=dir)
|
|
os.close(handle)
|
|
yield name
|
|
cleanFile(name)
|
|
|
|
|
|
@contextmanager
|
|
def guardedFilename(name):
|
|
# yeilds a filename within a with statement. The file is removed upon scope
|
|
# exit.
|
|
yield name
|
|
cleanFile(name)
|
|
|
|
|
|
@contextmanager
|
|
def nullContext(value):
|
|
# yeilds a variable within a with statement. No action is taken upon scope
|
|
# exit.
|
|
yield value
|
|
|
|
|
|
def makeReport(cmd, out, err, rc):
|
|
report = "Command: %s\n" % cmd
|
|
report += "Exit Code: %d\n" % rc
|
|
if out:
|
|
report += "Standard Output:\n--\n%s--\n" % out
|
|
if err:
|
|
report += "Standard Error:\n--\n%s--\n" % err
|
|
report += '\n'
|
|
return report
|