xref: /openbmc/libcper/tests/meson.build (revision a11dbaba55213f9fc1bf8d81bcbc7dfaa1bd1929)
1jsonc_daccord = dependency(
2    'jsoncdac',
3    default_options: ['default_library=static', 'warning_level=2'],
4)
5
6test_sources = files('base64_test.c', 'test-utils.c')
7
8test_include_dirs = ['.', '../include']
9
10cper_tests = executable(
11    'cper-tests',
12    'ir-tests.c',
13    test_sources,
14    implicit_include_directories: false,
15    include_directories: include_directories(test_include_dirs),
16    dependencies: [
17        json_c_dep,
18        jsonc_daccord,
19        libcper_parse_dep,
20        libcper_generate_dep,
21    ],
22)
23test('test-cper-tests', cper_tests)
24
25cc = meson.get_compiler('c')
26
27# Fuzzing only works on linux at this moment.  osx clang doesn't have leak detector
28is_darwin = host_machine.system().startswith('darwin')
29if (cc.get_id() == 'clang') and get_option('fuzz').allowed() and not is_darwin
30    sanitize = ['fuzzer']
31    fuzz_args = [
32        '-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION',
33        '-fsanitize=fuzzer,address,leak',
34    ]
35
36    foreach fuzzer_test : ['fuzz_cper_buf_to_ir']
37        fuzz_exe = executable(
38            fuzzer_test,
39            [fuzzer_test + '.c'] + libcper_parse_sources + edk_sources + 'test-utils.c' + libcper_generate_sources,
40            implicit_include_directories: false,
41            include_directories: include_directories(test_include_dirs),
42            c_args: fuzz_args,
43            link_args: fuzz_args,
44            dependencies: [json_c_dep, jsonc_daccord],
45        )
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
58