blob: a0be74284d9ae9c21369b37d5353d671bdebe406 [file] [log] [blame]
William A. Kennington III245495e2020-02-13 13:07:30 -08001gtests = [
William A. Kennington III458aeae2021-06-14 15:07:16 -07002 'cancel',
William A. Kennington III9a70f4e2021-05-01 17:16:57 -07003 'exception',
William A. Kennington IIIe847ef82018-11-02 17:29:15 -07004 'handle/copyable',
William A. Kennington III7a5e2322018-11-02 17:28:35 -07005 'handle/managed',
William A. Kennington IIIbff0b0f2018-11-16 19:56:10 -08006 'util/cexec',
William A. Kennington III4ef36e72019-06-27 12:48:59 -07007 'util/string',
William A. Kennington III15982f62019-01-31 14:43:41 -08008]
9
William A. Kennington IIId7acddd2022-07-13 16:41:11 -070010gtest_deps = [
11 stdplus_dep,
William A. Kennington III953de362022-07-13 17:32:55 -070012 gtest_main_dep,
13 gmock_dep,
William A. Kennington IIId7acddd2022-07-13 16:41:11 -070014]
15
William A. Kennington III5a528022021-04-28 12:52:43 -070016if has_dl
17 gtests += [
18 'dl',
19 ]
William A. Kennington IIId7acddd2022-07-13 16:41:11 -070020
21 gtest_deps += [
22 stdplus_dl_dep,
23 ]
William A. Kennington III5a528022021-04-28 12:52:43 -070024elif build_tests.enabled()
25 error('Not testing libdl feature')
26else
27 warning('Not testing libdl feature')
28endif
29
William A. Kennington IIIeac9d472020-08-03 13:57:14 -070030if has_fd
31 gtests += [
32 'fd/dupable',
33 'fd/managed',
34 'fd/intf',
35 'fd/impl',
William A. Kennington III9a512c92022-08-12 15:15:55 -070036 'fd/line',
William A. Kennington III891e6a32022-05-17 16:35:03 -070037 'fd/mmap',
William A. Kennington IIIeac9d472020-08-03 13:57:14 -070038 'fd/mock',
39 'fd/ops',
40 ]
William A. Kennington IIId7acddd2022-07-13 16:41:11 -070041
42 gtest_deps += [
43 stdplus_fd_dep,
44 ]
William A. Kennington III45754242021-04-28 12:48:31 -070045elif build_tests.enabled()
46 error('Not testing file descriptor feature')
William A. Kennington IIIeac9d472020-08-03 13:57:14 -070047else
48 warning('Not testing file descriptor feature')
49endif
50
William A. Kennington III5c20da22021-06-18 16:44:55 -070051if has_io_uring
52 gtests += [
53 'io_uring',
54 ]
William A. Kennington IIId7acddd2022-07-13 16:41:11 -070055
56 gtest_deps += [
57 stdplus_io_uring_dep,
58 ]
William A. Kennington III5c20da22021-06-18 16:44:55 -070059elif build_tests.enabled()
60 error('Not testing io_uring feature')
61else
62 warning('Not testing io_uring feature')
63endif
64
William A. Kennington III953de362022-07-13 17:32:55 -070065if has_gtest
66 gtests += [
67 'gtest/tmp',
68 ]
69
70 gtest_deps += [
71 stdplus_gtest_dep,
72 ]
73elif build_tests.enabled()
74 error('Not testing gtest lib feature')
75else
76 warning('Not testing gtest lib feature')
77endif
78
79if gtest_dep.found() and gmock_dep.found()
William A. Kennington III83af3fa2021-01-31 15:22:54 -080080 foreach t : gtests
William A. Kennington III953de362022-07-13 17:32:55 -070081 test(
82 t,
William A. Kennington III2030ea52022-07-19 17:06:39 -070083 run_with_tmp,
William A. Kennington III953de362022-07-13 17:32:55 -070084 env: {'TMPTMPL': 'stdplus-test.XXXXXXXXXX'},
85 args: executable(
86 t.underscorify(), t + '.cpp',
87 build_by_default: false,
88 implicit_include_directories: false,
89 dependencies: gtest_deps))
William A. Kennington III83af3fa2021-01-31 15:22:54 -080090 endforeach
91endif
William A. Kennington III245495e2020-02-13 13:07:30 -080092
William A. Kennington III01db6622021-01-31 15:24:13 -080093# Switch to `catch2-with-main.pc` when 2.x supports it
94catch2 = dependency('catch2-with-main', required: false)
95if not catch2.found()
96 catch2 = dependency('catch2', required: false)
97 if catch2.found()
98 catch2_main = meson.get_compiler('cpp').find_library(
99 'Catch2WithMain', required: false)
100 if catch2_main.found()
101 catch2 = declare_dependency(
102 dependencies: [
103 catch2,
104 catch2_main,
105 ])
106 else
107 catch2 = declare_dependency(
108 link_with: static_library(
109 'catch2', 'catch2_main.cpp',
110 implicit_include_directories: false,
111 build_by_default: false,
112 dependencies: catch2),
113 dependencies: catch2)
114 endif
115 endif
116endif
117if not catch2.found()
William A. Kennington IIIb5d1c582021-04-16 13:41:39 -0700118 catch2_opts = import('cmake').subproject_options()
119 catch2_opts.add_cmake_defines({
120 'BUILD_TESTING': 'OFF',
121 'CMAKE_CXX_FLAGS': '-Wno-non-virtual-dtor',
122 })
William A. Kennington III245495e2020-02-13 13:07:30 -0800123 catch2_proj = import('cmake').subproject(
124 'Catch2',
William A. Kennington IIIb5d1c582021-04-16 13:41:39 -0700125 options: catch2_opts,
William A. Kennington III245495e2020-02-13 13:07:30 -0800126 required: false)
127 if catch2_proj.found()
William A. Kennington III01db6622021-01-31 15:24:13 -0800128 catch2 = declare_dependency(
129 dependencies: [
130 catch2_proj.dependency('Catch2'),
131 catch2_proj.dependency('Catch2WithMain'),
132 ])
William A. Kennington III245495e2020-02-13 13:07:30 -0800133 else
134 assert(not build_tests.enabled(), 'Catch2 is required')
135 endif
136endif
137
138catch2_tests = [
William A. Kennington III770c5562020-02-13 13:07:42 -0800139 'signal',
William A. Kennington IIIe0990382019-10-18 02:10:25 -0700140 'raw',
William A. Kennington III245495e2020-02-13 13:07:30 -0800141]
142
William A. Kennington III01db6622021-01-31 15:24:13 -0800143if catch2.found()
William A. Kennington III245495e2020-02-13 13:07:30 -0800144 foreach t : catch2_tests
145 test(t, executable(t.underscorify(), t + '.cpp',
William A. Kennington III31422352020-02-19 13:21:56 -0800146 build_by_default: false,
William A. Kennington III245495e2020-02-13 13:07:30 -0800147 implicit_include_directories: false,
William A. Kennington III3acf92b2021-04-16 13:33:50 -0700148 dependencies: [stdplus_dep, catch2]))
William A. Kennington III245495e2020-02-13 13:07:30 -0800149 endforeach
150endif