blob: 0de7168e23bc390b1d492d8862cf2b4ce1859629 [file] [log] [blame]
William A. Kennington IIIa2d67e22020-02-19 12:17:39 -08001gtest = dependency('gtest', main: true, disabler: true, required: false)
2gmock = dependency('gmock', disabler: true, required: false)
3if not gtest.found() or not gmock.found()
William A. Kennington III83af3fa2021-01-31 15:22:54 -08004 gtest_proj = import('cmake').subproject(
5 'googletest',
6 cmake_options: [
7 '-DCMAKE_CXX_FLAGS=-Wno-pedantic',
8 ],
9 required: false)
William A. Kennington IIIa2d67e22020-02-19 12:17:39 -080010 if gtest_proj.found()
11 gtest = declare_dependency(
12 dependencies: [
13 dependency('threads'),
14 gtest_proj.dependency('gtest'),
15 gtest_proj.dependency('gtest_main'),
16 ])
17 gmock = gtest_proj.dependency('gmock')
18 else
19 assert(not build_tests.enabled(), 'Googletest is required')
20 endif
21endif
William A. Kennington III15982f62019-01-31 14:43:41 -080022
William A. Kennington III245495e2020-02-13 13:07:30 -080023gtests = [
William A. Kennington IIIe847ef82018-11-02 17:29:15 -070024 'handle/copyable',
William A. Kennington III7a5e2322018-11-02 17:28:35 -070025 'handle/managed',
William A. Kennington IIIbff0b0f2018-11-16 19:56:10 -080026 'util/cexec',
William A. Kennington III4ef36e72019-06-27 12:48:59 -070027 'util/string',
William A. Kennington III15982f62019-01-31 14:43:41 -080028]
29
William A. Kennington III83af3fa2021-01-31 15:22:54 -080030if gtest.found() and gmock.found()
31 foreach t : gtests
32 test(t, executable(t.underscorify(), t + '.cpp',
33 build_by_default: false,
34 implicit_include_directories: false,
35 dependencies: [stdplus, gtest, gmock]))
36 endforeach
37endif
William A. Kennington III245495e2020-02-13 13:07:30 -080038
William A. Kennington III01db6622021-01-31 15:24:13 -080039# Switch to `catch2-with-main.pc` when 2.x supports it
40catch2 = dependency('catch2-with-main', required: false)
41if not catch2.found()
42 catch2 = dependency('catch2', required: false)
43 if catch2.found()
44 catch2_main = meson.get_compiler('cpp').find_library(
45 'Catch2WithMain', required: false)
46 if catch2_main.found()
47 catch2 = declare_dependency(
48 dependencies: [
49 catch2,
50 catch2_main,
51 ])
52 else
53 catch2 = declare_dependency(
54 link_with: static_library(
55 'catch2', 'catch2_main.cpp',
56 implicit_include_directories: false,
57 build_by_default: false,
58 dependencies: catch2),
59 dependencies: catch2)
60 endif
61 endif
62endif
63if not catch2.found()
William A. Kennington III245495e2020-02-13 13:07:30 -080064 catch2_proj = import('cmake').subproject(
65 'Catch2',
66 cmake_options: [
William A. Kennington III01db6622021-01-31 15:24:13 -080067 '-DBUILD_TESTING=OFF',
68 '-DCMAKE_CXX_FLAGS=-Wno-non-virtual-dtor',
William A. Kennington III245495e2020-02-13 13:07:30 -080069 ],
70 required: false)
71 if catch2_proj.found()
William A. Kennington III01db6622021-01-31 15:24:13 -080072 catch2 = declare_dependency(
73 dependencies: [
74 catch2_proj.dependency('Catch2'),
75 catch2_proj.dependency('Catch2WithMain'),
76 ])
William A. Kennington III245495e2020-02-13 13:07:30 -080077 else
78 assert(not build_tests.enabled(), 'Catch2 is required')
79 endif
80endif
81
82catch2_tests = [
William A. Kennington III770c5562020-02-13 13:07:42 -080083 'signal',
William A. Kennington IIIe0990382019-10-18 02:10:25 -070084 'raw',
William A. Kennington III245495e2020-02-13 13:07:30 -080085]
86
William A. Kennington III01db6622021-01-31 15:24:13 -080087if catch2.found()
William A. Kennington III245495e2020-02-13 13:07:30 -080088 foreach t : catch2_tests
89 test(t, executable(t.underscorify(), t + '.cpp',
William A. Kennington III31422352020-02-19 13:21:56 -080090 build_by_default: false,
William A. Kennington III245495e2020-02-13 13:07:30 -080091 implicit_include_directories: false,
William A. Kennington III01db6622021-01-31 15:24:13 -080092 dependencies: [stdplus, span_dep, catch2]))
William A. Kennington III245495e2020-02-13 13:07:30 -080093 endforeach
94endif