[test] Add support for Objective-C++ tests
Differential revision: https://reviews.llvm.org/D33049 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@303466 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -87,14 +87,22 @@ class LibcxxTestFormat(object):
|
||||
name_root, name_ext = os.path.splitext(name)
|
||||
is_libcxx_test = test.path_in_suite[0] == 'libcxx'
|
||||
is_sh_test = name_root.endswith('.sh')
|
||||
is_pass_test = name.endswith('.pass.cpp')
|
||||
is_fail_test = name.endswith('.fail.cpp')
|
||||
assert is_sh_test or name_ext == '.cpp', 'non-cpp file must be sh test'
|
||||
is_pass_test = name.endswith('.pass.cpp') or name.endswith('.pass.mm')
|
||||
is_fail_test = name.endswith('.fail.cpp') or name.endswith('.fail.mm')
|
||||
is_objcxx_test = name.endswith('.mm')
|
||||
is_objcxx_arc_test = name.endswith('.arc.pass.mm') or \
|
||||
name.endswith('.arc.fail.mm')
|
||||
assert is_sh_test or name_ext == '.cpp' or name_ext == '.mm', \
|
||||
'non-cpp file must be sh test'
|
||||
|
||||
if test.config.unsupported:
|
||||
return (lit.Test.UNSUPPORTED,
|
||||
"A lit.local.cfg marked this unsupported")
|
||||
|
||||
if is_objcxx_test and not \
|
||||
'objective-c++' in test.config.available_features:
|
||||
return (lit.Test.UNSUPPORTED, "Objective-C++ is not supported")
|
||||
|
||||
parsers = self._make_custom_parsers()
|
||||
script = lit.TestRunner.parseIntegratedTestScript(
|
||||
test, additional_parsers=parsers, require_script=is_sh_test)
|
||||
@@ -133,6 +141,14 @@ class LibcxxTestFormat(object):
|
||||
if '#define _LIBCPP_ASSERT' in contents:
|
||||
test_cxx.useModules(False)
|
||||
|
||||
if is_objcxx_test:
|
||||
test_cxx.source_lang = 'objective-c++'
|
||||
if is_objcxx_arc_test:
|
||||
test_cxx.compile_flags += ['-fobjc-arc']
|
||||
else:
|
||||
test_cxx.compile_flags += ['-fno-objc-arc']
|
||||
test_cxx.link_flags += ['-framework', 'Foundation']
|
||||
|
||||
# Dispatch the test based on its suffix.
|
||||
if is_sh_test:
|
||||
if not isinstance(self.executor, LocalExecutor):
|
||||
|
||||
Reference in New Issue
Block a user