tests = [ 'hb-shape-fuzzer.cc', 'hb-subset-fuzzer.cc', 'hb-repacker-fuzzer.cc', 'hb-set-fuzzer.cc', 'hb-draw-fuzzer.cc', ] foreach file_name : tests test_name = file_name.split('.')[0] sources = [file_name] fuzzer_ldflags = [] extra_cpp_args = [] if get_option('fuzzer_ldflags') == '' sources += 'main.cc' else fuzzer_ldflags += get_option('fuzzer_ldflags').split() extra_cpp_args += '-DHB_IS_IN_FUZZER' endif # TODO tie this to the experimental api setting. extra_cpp_args += '-DHB_EXPERIMENTAL_API' exe = executable(test_name, sources, cpp_args: cpp_args + extra_cpp_args, include_directories: [incconfig, incsrc], link_args: fuzzer_ldflags, link_with: [libharfbuzz, libharfbuzz_subset], install: false, ) set_variable('@0@_exe'.format(test_name.underscorify()), exe) endforeach env = environment() env.set('srcdir', meson.current_source_dir()) test('shape_fuzzer', find_program('run-shape-fuzzer-tests.py'), args: [ hb_shape_fuzzer_exe, ], timeout: 300, depends: [hb_shape_fuzzer_exe, libharfbuzz, libharfbuzz_subset], workdir: meson.current_build_dir() / '..' / '..', env: env, suite: ['fuzzing', 'slow'], ) test('subset_fuzzer', find_program('run-subset-fuzzer-tests.py'), args: [ hb_subset_fuzzer_exe, ], # as the tests are ran concurrently let's raise acceptable time here # ideally better to break and let meson handles them in parallel timeout: 300, workdir: meson.current_build_dir() / '..' / '..', env: env, suite: ['fuzzing', 'slow'], ) test('draw_fuzzer', find_program('run-draw-fuzzer-tests.py'), args: [ hb_draw_fuzzer_exe, ], workdir: meson.current_build_dir() / '..' / '..', env: env, suite: ['fuzzing'], )