blob: 81015877dbeed75ba3cf1517c053d00ef5c074e8 [file] [log] [blame]
Ed Tanousedee0a32025-03-16 17:40:04 -07001jsonc_daccord = dependency(
2 'jsoncdac',
3 default_options: ['default_library=static'],
4)
Aushim Nagarkattiae8f6d92025-01-29 17:34:44 -08005
Ed Tanous54640292025-03-17 20:55:20 -07006test_sources = files('base64_test.c', 'test-utils.c')
John Chung197ea122024-05-03 19:57:55 +08007
Thu Nguyene42fb482024-10-15 14:43:11 +00008test_include_dirs = ['.', '../include']
John Chung197ea122024-05-03 19:57:55 +08009
Ed Tanousa84fc932024-07-15 13:48:35 -070010cper_tests = executable(
11 'cper-tests',
Ed Tanous54640292025-03-17 20:55:20 -070012 'ir-tests.c',
Ed Tanousd6b62632025-03-14 15:30:07 -070013 test_sources,
Ed Tanousa84fc932024-07-15 13:48:35 -070014 implicit_include_directories: false,
15 include_directories: include_directories(test_include_dirs),
Ed Tanous10eb6de2024-10-03 17:23:12 -070016 dependencies: [
Ed Tanousa3663052025-03-16 12:54:36 -070017 json_c_dep,
18 jsonc_daccord,
Ed Tanous10eb6de2024-10-03 17:23:12 -070019 libcper_parse_dep,
20 libcper_generate_dep,
Ed Tanous10eb6de2024-10-03 17:23:12 -070021 ],
John Chung197ea122024-05-03 19:57:55 +080022)
Ed Tanous54640292025-03-17 20:55:20 -070023test('test-cper-tests', cper_tests)
Ed Tanous6070e1b2025-03-14 11:20:35 -070024
Ed Tanous54640292025-03-17 20:55:20 -070025cc = meson.get_compiler('c')
Ed Tanous6070e1b2025-03-14 11:20:35 -070026
27# Fuzzing only works on linux at this moment. osx clang doesn't have leak detector
28is_darwin = host_machine.system().startswith('darwin')
Ed Tanous54640292025-03-17 20:55:20 -070029if (cc.get_id() == 'clang') and get_option('fuzz').allowed() and not is_darwin
Ed Tanous7a531ff2025-03-14 17:06:49 -070030 sanitize = ['fuzzer']
Ed Tanous8121f7e2025-03-06 14:39:07 -080031 fuzz_args = [
Ed Tanous8121f7e2025-03-06 14:39:07 -080032 '-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION',
Ed Tanousedee0a32025-03-16 17:40:04 -070033 '-fsanitize=fuzzer,address,leak',
Ed Tanous8121f7e2025-03-06 14:39:07 -080034 ]
35
36 foreach fuzzer_test : ['fuzz_cper_buf_to_ir']
37 fuzz_exe = executable(
38 fuzzer_test,
Ed Tanousedee0a32025-03-16 17:40:04 -070039 [fuzzer_test + '.c'] + libcper_parse_sources + edk_sources + 'test-utils.c' + libcper_generate_sources,
Ed Tanous8121f7e2025-03-06 14:39:07 -080040 implicit_include_directories: false,
41 include_directories: include_directories(test_include_dirs),
Ed Tanous8121f7e2025-03-06 14:39:07 -080042 c_args: fuzz_args,
43 link_args: fuzz_args,
Ed Tanousedee0a32025-03-16 17:40:04 -070044 dependencies: [json_c_dep, jsonc_daccord],
Ed Tanous8121f7e2025-03-06 14:39:07 -080045 )
46 test(
47 fuzzer_test,
48 fuzz_exe,
49 args: [
50 '-max_total_time=10',
51 '-max_len=131072',
52 '-error_exitcode=1',
53 '-timeout_exitcode=2',
54 ],
55 )
56 endforeach
57endif