diff options
Diffstat (limited to 'test/meson.build')
-rw-r--r-- | test/meson.build | 119 |
1 files changed, 77 insertions, 42 deletions
diff --git a/test/meson.build b/test/meson.build index d050bfa1..8b6057d4 100644 --- a/test/meson.build +++ b/test/meson.build @@ -7,6 +7,22 @@ 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') @@ -16,7 +32,6 @@ subdir('ipa') subdir('ipc') subdir('log') subdir('media_device') -subdir('pipeline') subdir('process') subdir('py') subdir('serialization') @@ -26,66 +41,86 @@ subdir('v4l2_subdevice') subdir('v4l2_videodevice') public_tests = [ - ['geometry', 'geometry.cpp'], - ['public-api', 'public-api.cpp'], - ['signal', 'signal.cpp'], - ['span', 'span.cpp'], + {'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 = [ - ['bayer-format', 'bayer-format.cpp'], - ['byte-stream-buffer', 'byte-stream-buffer.cpp'], - ['camera-sensor', 'camera-sensor.cpp'], - ['delayed_controls', 'delayed_controls.cpp'], - ['event', 'event.cpp'], - ['event-dispatcher', 'event-dispatcher.cpp'], - ['event-thread', 'event-thread.cpp'], - ['file', 'file.cpp'], - ['flags', 'flags.cpp'], - ['hotplug-cameras', 'hotplug-cameras.cpp'], - ['message', 'message.cpp'], - ['object', 'object.cpp'], - ['object-delete', 'object-delete.cpp'], - ['object-invoke', 'object-invoke.cpp'], - ['pixel-format', 'pixel-format.cpp'], - ['shared-fd', 'shared-fd.cpp'], - ['signal-threads', 'signal-threads.cpp'], - ['threads', 'threads.cpp'], - ['timer', 'timer.cpp'], - ['timer-thread', 'timer-thread.cpp'], - ['unique-fd', 'unique-fd.cpp'], - ['utils', 'utils.cpp'], - ['yaml-parser', 'yaml-parser.cpp'], + {'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': 'yaml-parser', 'sources': ['yaml-parser.cpp']}, ] internal_non_parallel_tests = [ - ['fence', 'fence.cpp'], - ['mapped-buffer', 'mapped-buffer.cpp'], + {'name': 'fence', 'sources': ['fence.cpp']}, + {'name': 'mapped-buffer', 'sources': ['mapped-buffer.cpp']}, ] -foreach t : public_tests - exe = executable(t[0], t[1], - dependencies : libcamera_public, +foreach test : public_tests + deps = [libcamera_public] + if 'dependencies' in test + deps += test['dependencies'] + endif + + exe = executable(test['name'], test['sources'], + dependencies : deps, link_with : test_libraries, include_directories : test_includes_public) - test(t[0], exe) + test(test['name'], exe, should_fail : test.get('should_fail', false)) endforeach -foreach t : internal_tests - exe = executable(t[0], t[1], - dependencies : libcamera_private, +foreach test : internal_tests + deps = [libcamera_private] + if 'dependencies' in test + deps += test['dependencies'] + endif + + exe = executable(test['name'], test['sources'], + dependencies : deps, link_with : test_libraries, include_directories : test_includes_internal) - test(t[0], exe) + test(test['name'], exe, should_fail : test.get('should_fail', false)) endforeach -foreach t : internal_non_parallel_tests - exe = executable(t[0], t[1], - dependencies : libcamera_private, +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, link_with : test_libraries, include_directories : test_includes_internal) - test(t[0], exe, is_parallel : false) + test(test['name'], exe, + is_parallel : false, + should_fail : test.get('should_fail', false)) endforeach |