From 87742fd9f016873fcd9d91ef8bc4c3b1be925224 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Tue, 19 Dec 2017 20:57:05 -0800 Subject: run_project_tests: correctly search for objcpp compiler Instead of looking for an objc compiler. Fixes objc++ tests on DragonFlyBSD (which has an objc but not an objc++ compiler) Really though, the objc and objc++ tests need to be untangled so that the objc tests can run even if an objc++ compiler is unavilable. --- run_project_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'run_project_tests.py') diff --git a/run_project_tests.py b/run_project_tests.py index 0bf5f31d1..810f00ec7 100755 --- a/run_project_tests.py +++ b/run_project_tests.py @@ -453,7 +453,7 @@ def have_objc_compiler(): return False try: objc_comp.sanity_check(env.get_scratch_dir(), env) - objcpp_comp = env.detect_objc_compiler(False) + objcpp_comp = env.detect_objcpp_compiler(False) except: return False if not objcpp_comp: -- cgit v1.2.3 From 0ec7dd5ac53b0a6955ecce65c011a5d06631bd94 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Tue, 19 Dec 2017 21:10:52 -0800 Subject: tests: Split objc and objc++ tests This allows platforms that can compile one or the other (but not both) to run the tests that they can. --- run_project_tests.py | 15 ++++++++++++--- test cases/objc/3 objc args/meson.build | 4 ++++ test cases/objc/3 objc args/prog.m | 11 +++++++++++ test cases/objc/3 objc++/meson.build | 4 ---- test cases/objc/3 objc++/prog.mm | 9 --------- test cases/objc/4 objc args/meson.build | 4 ---- test cases/objc/4 objc args/prog.m | 11 ----------- test cases/objc/5 objc++ args/meson.build | 4 ---- test cases/objc/5 objc++ args/prog.mm | 16 ---------------- test cases/objcpp/1 simple/meson.build | 4 ++++ test cases/objcpp/1 simple/prog.mm | 9 +++++++++ test cases/objcpp/2 objc++ args/meson.build | 4 ++++ test cases/objcpp/2 objc++ args/prog.mm | 16 ++++++++++++++++ 13 files changed, 60 insertions(+), 51 deletions(-) create mode 100644 test cases/objc/3 objc args/meson.build create mode 100644 test cases/objc/3 objc args/prog.m delete mode 100644 test cases/objc/3 objc++/meson.build delete mode 100644 test cases/objc/3 objc++/prog.mm delete mode 100644 test cases/objc/4 objc args/meson.build delete mode 100644 test cases/objc/4 objc args/prog.m delete mode 100644 test cases/objc/5 objc++ args/meson.build delete mode 100644 test cases/objc/5 objc++ args/prog.mm create mode 100644 test cases/objcpp/1 simple/meson.build create mode 100644 test cases/objcpp/1 simple/prog.mm create mode 100644 test cases/objcpp/2 objc++ args/meson.build create mode 100644 test cases/objcpp/2 objc++ args/prog.mm (limited to 'run_project_tests.py') diff --git a/run_project_tests.py b/run_project_tests.py index 810f00ec7..68d2de50b 100755 --- a/run_project_tests.py +++ b/run_project_tests.py @@ -447,20 +447,28 @@ def have_objc_compiler(): env = environment.Environment(None, build_dir, None, get_fake_options('/'), []) try: objc_comp = env.detect_objc_compiler(False) - except: + except mesonlib.MesonException: return False if not objc_comp: return False try: objc_comp.sanity_check(env.get_scratch_dir(), env) + except mesonlib.MesonException: + return False + return True + +def have_objcpp_compiler(): + with AutoDeletedDir(tempfile.mkdtemp(prefix='b ', dir='.')) as build_dir: + env = environment.Environment(None, build_dir, None, get_fake_options('/'), []) + try: objcpp_comp = env.detect_objcpp_compiler(False) - except: + except mesonlib.MesonException: return False if not objcpp_comp: return False try: objcpp_comp.sanity_check(env.get_scratch_dir(), env) - except: + except mesonlib.MesonException: return False return True @@ -487,6 +495,7 @@ def detect_tests_to_run(): ('rust', 'rust', backend is not Backend.ninja or not shutil.which('rustc')), ('d', 'd', backend is not Backend.ninja or not have_d_compiler()), ('objective c', 'objc', backend not in (Backend.ninja, Backend.xcode) or mesonlib.is_windows() or not have_objc_compiler()), + ('objective c++', 'objcpp', backend not in (Backend.ninja, Backend.xcode) or mesonlib.is_windows() or not have_objcpp_compiler()), ('fortran', 'fortran', backend is not Backend.ninja or not shutil.which('gfortran')), ('swift', 'swift', backend not in (Backend.ninja, Backend.xcode) or not shutil.which('swiftc')), ('python3', 'python3', backend is not Backend.ninja), diff --git a/test cases/objc/3 objc args/meson.build b/test cases/objc/3 objc args/meson.build new file mode 100644 index 000000000..8887d96bc --- /dev/null +++ b/test cases/objc/3 objc args/meson.build @@ -0,0 +1,4 @@ +project('objective c args', 'objc') + +exe = executable('prog', 'prog.m', objc_args : ['-DMESON_TEST']) +test('objective c args', exe) diff --git a/test cases/objc/3 objc args/prog.m b/test cases/objc/3 objc args/prog.m new file mode 100644 index 000000000..bfd686a86 --- /dev/null +++ b/test cases/objc/3 objc args/prog.m @@ -0,0 +1,11 @@ +#import + +int main(int argc, char **argv) +{ +#ifdef MESON_TEST + int x = 3; +#endif + + printf("x = %d\n", x); + return 0; +} diff --git a/test cases/objc/3 objc++/meson.build b/test cases/objc/3 objc++/meson.build deleted file mode 100644 index 7d9188471..000000000 --- a/test cases/objc/3 objc++/meson.build +++ /dev/null @@ -1,4 +0,0 @@ -project('Objective C++', 'objcpp') - -exe = executable('objcppprog', 'prog.mm') -test('objcpp', exe) diff --git a/test cases/objc/3 objc++/prog.mm b/test cases/objc/3 objc++/prog.mm deleted file mode 100644 index 927e8104e..000000000 --- a/test cases/objc/3 objc++/prog.mm +++ /dev/null @@ -1,9 +0,0 @@ -#import - -class MyClass { -}; - -int main(int argc, char **argv) { - return 0; -} - diff --git a/test cases/objc/4 objc args/meson.build b/test cases/objc/4 objc args/meson.build deleted file mode 100644 index 8887d96bc..000000000 --- a/test cases/objc/4 objc args/meson.build +++ /dev/null @@ -1,4 +0,0 @@ -project('objective c args', 'objc') - -exe = executable('prog', 'prog.m', objc_args : ['-DMESON_TEST']) -test('objective c args', exe) diff --git a/test cases/objc/4 objc args/prog.m b/test cases/objc/4 objc args/prog.m deleted file mode 100644 index bfd686a86..000000000 --- a/test cases/objc/4 objc args/prog.m +++ /dev/null @@ -1,11 +0,0 @@ -#import - -int main(int argc, char **argv) -{ -#ifdef MESON_TEST - int x = 3; -#endif - - printf("x = %d\n", x); - return 0; -} diff --git a/test cases/objc/5 objc++ args/meson.build b/test cases/objc/5 objc++ args/meson.build deleted file mode 100644 index e0e34b0f1..000000000 --- a/test cases/objc/5 objc++ args/meson.build +++ /dev/null @@ -1,4 +0,0 @@ -project('objective c++ args', 'objcpp') - -exe = executable('prog', 'prog.mm', objcpp_args : ['-DMESON_OBJCPP_TEST']) -test('objective c++ args', exe) diff --git a/test cases/objc/5 objc++ args/prog.mm b/test cases/objc/5 objc++ args/prog.mm deleted file mode 100644 index 3decaf230..000000000 --- a/test cases/objc/5 objc++ args/prog.mm +++ /dev/null @@ -1,16 +0,0 @@ -#import - -class TestClass -{ -}; - -int main(int argc, char **argv) -{ -#ifdef MESON_OBJCPP_TEST -int x = 1; -#endif - - printf("x = %x\n", x); - - return 0; -} diff --git a/test cases/objcpp/1 simple/meson.build b/test cases/objcpp/1 simple/meson.build new file mode 100644 index 000000000..7d9188471 --- /dev/null +++ b/test cases/objcpp/1 simple/meson.build @@ -0,0 +1,4 @@ +project('Objective C++', 'objcpp') + +exe = executable('objcppprog', 'prog.mm') +test('objcpp', exe) diff --git a/test cases/objcpp/1 simple/prog.mm b/test cases/objcpp/1 simple/prog.mm new file mode 100644 index 000000000..927e8104e --- /dev/null +++ b/test cases/objcpp/1 simple/prog.mm @@ -0,0 +1,9 @@ +#import + +class MyClass { +}; + +int main(int argc, char **argv) { + return 0; +} + diff --git a/test cases/objcpp/2 objc++ args/meson.build b/test cases/objcpp/2 objc++ args/meson.build new file mode 100644 index 000000000..e0e34b0f1 --- /dev/null +++ b/test cases/objcpp/2 objc++ args/meson.build @@ -0,0 +1,4 @@ +project('objective c++ args', 'objcpp') + +exe = executable('prog', 'prog.mm', objcpp_args : ['-DMESON_OBJCPP_TEST']) +test('objective c++ args', exe) diff --git a/test cases/objcpp/2 objc++ args/prog.mm b/test cases/objcpp/2 objc++ args/prog.mm new file mode 100644 index 000000000..3decaf230 --- /dev/null +++ b/test cases/objcpp/2 objc++ args/prog.mm @@ -0,0 +1,16 @@ +#import + +class TestClass +{ +}; + +int main(int argc, char **argv) +{ +#ifdef MESON_OBJCPP_TEST +int x = 1; +#endif + + printf("x = %x\n", x); + + return 0; +} -- cgit v1.2.3