summaryrefslogtreecommitdiff
path: root/test/meson.build
blob: 4095664994fd78add714709a3ecba2a4edf45b33 (plain)
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
123
124
125
126
127
128
129
130
# SPDX-License-Identifier: CC0-1.0

if not get_option('test')
    test_enabled = false
    subdir_done()
endif

test_enabled = true

# When ASan is enabled, find the path to the ASan runtime needed by multiple
# tests. This currently works with gcc only, as clang uses different file names
# depending on the compiler version and target architecture.
asan_enabled = false
asan_runtime_missing = false

if get_option('b_sanitize').contains('address')
    asan_enabled = true

    if cc.get_id() == 'gcc'
        asan_runtime = run_command(cc, '-print-file-name=libasan.so', check : true).stdout().strip()
    else
        asan_runtime_missing = true
    endif
endif

subdir('libtest')

subdir('camera')
subdir('controls')
subdir('gstreamer')
subdir('ipa')
subdir('ipc')
subdir('log')
subdir('media_device')
subdir('process')
subdir('py')
subdir('serialization')
subdir('stream')
subdir('v4l2_compat')
subdir('v4l2_subdevice')
subdir('v4l2_videodevice')

public_tests = [
    {'name': 'color-space', 'sources': ['color-space.cpp']},
    {'name': 'geometry', 'sources': ['geometry.cpp']},
    {'name': 'public-api', 'sources': ['public-api.cpp']},
    {'name': 'signal', 'sources': ['signal.cpp']},
    {'name': 'span', 'sources': ['span.cpp']},
    {'name': 'transform', 'sources': ['transform.cpp']},
]

internal_tests = [
    {'name': 'bayer-format', 'sources': ['bayer-format.cpp']},
    {'name': 'byte-stream-buffer', 'sources': ['byte-stream-buffer.cpp']},
    {'name': 'camera-sensor', 'sources': ['camera-sensor.cpp']},
    {'name': 'delayed_controls', 'sources': ['delayed_controls.cpp']},
    {'name': 'event', 'sources': ['event.cpp']},
    {'name': 'event-dispatcher', 'sources': ['event-dispatcher.cpp']},
    {'name': 'event-thread', 'sources': ['event-thread.cpp']},
    {'name': 'file', 'sources': ['file.cpp']},
    {'name': 'flags', 'sources': ['flags.cpp']},
    {'name': 'hotplug-cameras', 'sources': ['hotplug-cameras.cpp']},
    {'name': 'message', 'sources': ['message.cpp']},
    {'name': 'object', 'sources': ['object.cpp']},
    {'name': 'object-delete', 'sources': ['object-delete.cpp']},
    {'name': 'object-invoke', 'sources': ['object-invoke.cpp']},
    {'name': 'pixel-format', 'sources': ['pixel-format.cpp']},
    {'name': 'shared-fd', 'sources': ['shared-fd.cpp']},
    {'name': 'signal-threads', 'sources': ['signal-threads.cpp']},
    {'name': 'threads', 'sources': 'threads.cpp', 'dependencies': [libthreads]},
    {'name': 'timer', 'sources': ['timer.cpp']},
    {'name': 'timer-fail', 'sources': ['timer-fail.cpp'], 'should_fail': true},
    {'name': 'timer-thread', 'sources': ['timer-thread.cpp']},
    {'name': 'unique-fd', 'sources': ['unique-fd.cpp']},
    {'name': 'utils', 'sources': ['utils.cpp']},
    {'name': 'vector', 'sources': ['vector.cpp']},
    {'name': 'yaml-parser', 'sources': ['yaml-parser.cpp']},
]

internal_non_parallel_tests = [
    {'name': 'fence', 'sources': ['fence.cpp']},
    {'name': 'mapped-buffer', 'sources': ['mapped-buffer.cpp']},
]

foreach test : public_tests
    deps = [libcamera_public]
    if 'dependencies' in test
        deps += test['dependencies']
    endif

    exe = executable(test['name'], test['sources'],
                     dependencies : deps,
                     implicit_include_directories : false,
                     link_with : test_libraries,
                     include_directories : test_includes_public)

    test(test['name'], exe, should_fail : test.get('should_fail', false))
endforeach

foreach test : internal_tests
    deps = [libcamera_private]
    if 'dependencies' in test
        deps += test['dependencies']
    endif

    exe = executable(test['name'], test['sources'],
                     dependencies : deps,
                     implicit_include_directories : false,
                     link_with : test_libraries,
                     include_directories : test_includes_internal)

    test(test['name'], exe, should_fail : test.get('should_fail', false))
endforeach

foreach test : internal_non_parallel_tests
    deps = [libcamera_private]
    if 'dependencies' in test
        deps += test['dependencies']
    endif

    exe = executable(test['name'], test['sources'],
                     dependencies : deps,
                     implicit_include_directories : false,
                     link_with : test_libraries,
                     include_directories : test_includes_internal)

    test(test['name'], exe,
         is_parallel : false,
         should_fail : test.get('should_fail', false))
endforeach