diff options
Diffstat (limited to 'utils/libcxx/test/format.py')
-rw-r--r-- | utils/libcxx/test/format.py | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/utils/libcxx/test/format.py b/utils/libcxx/test/format.py index 3ac5472b4720..317fc8079bb8 100644 --- a/utils/libcxx/test/format.py +++ b/utils/libcxx/test/format.py @@ -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): |