1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
test_exe = executable(
'yasl-test',
'test_lifecycle.c',
include_directories: inc,
link_with: yasl_lib.get_static_lib(),
dependencies: deps,
)
add_test_setup('asan')
add_test_setup('tsan')
add_test_setup('msan')
test('basic', test_exe)
shared_dep = declare_dependency(
link_with: yasl_lib.get_shared_lib(),
include_directories: include_directories('../include'),
)
shared_api_test = executable(
'yasl-shared-api-test',
'test_lifecycle.c',
dependencies: shared_dep,
)
test('shared-api', shared_api_test)
if add_languages('cpp', native: false, required: false)
cpp = meson.get_compiler('cpp')
cpp_api_test = executable(
'yasl-cpp-api-test',
'test_api.cpp',
dependencies: shared_dep,
cpp_args: cpp.get_supported_arguments('-pedantic-errors'),
override_options: ['cpp_std=c++11'],
)
test('cpp-api', cpp_api_test)
endif
python = find_program('python3')
if system == 'linux'
nm = find_program('nm')
export_args = []
if get_option('b_sanitize').contains('address')
# Clang's ASan instrumentation exports these linker-generated markers.
export_args += ['--allow-export=__start_asan_globals',
'--allow-export=__stop_asan_globals']
endif
test('public-exports', python,
args: [files('helpers/check_exports.py')] + export_args +
[nm, yasl_lib.get_shared_lib(),
files('../include/yasl/yasl.h', '../include/yasl/timing.h',
'../include/yasl/loop.h', '../include/yasl/native.h')],
)
endif
contracts_test = executable(
'yasl-contracts-test',
'common/test_contracts.c',
include_directories: inc,
dependencies: yasl_dep,
)
test('contracts', contracts_test)
timer_test = executable(
'yasl-timer-test',
'common/test_timers.c',
include_directories: inc,
dependencies: yasl_dep,
)
test('timers', timer_test)
input_alloc_test = executable(
'yasl-input-alloc-test',
['common/test_input_alloc.c', '../src/common/input.c'],
include_directories: inc,
c_args: ['-Dmalloc=yasl_test_malloc'],
)
test('input-allocation-failure', input_alloc_test)
selection_test = executable(
'yasl-selection-test',
'common/test_selection.c',
dependencies: yasl_dep,
)
test('selection', selection_test)
if has_wayland
ime_test = executable('yasl-ime-test', 'wayland/test_input.c',
include_directories: inc,
dependencies: yasl_dep,
)
test('ime-ownership', ime_test)
endif
if get_option('integration_tests')
if has_cocoa
native_test = executable('yasl-native-test', 'cocoa/test_native.c',
dependencies: shared_dep,
)
test('native', native_test, timeout: 20)
ownership_test = executable('yasl-ownership-test', 'cocoa/test_ownership.m',
dependencies: [shared_dep, deps],
)
test('native-ownership', ownership_test, timeout: 20)
else
if not has_wayland or not has_x11
error('Linux integration tests require Wayland and X11.')
endif
backend_test = executable(
'yasl-backend-test',
'common/test_backends.c',
dependencies: [shared_dep, deps],
)
weston = find_program('weston')
xwayland = find_program('Xwayland')
test('backends', python,
args: [files('helpers/run_backends.py'), weston, xwayland,
backend_test, timer_test],
timeout: 60,
)
endif
endif
|