Blame tests/meson.build

Packit Service 8ebd8e
# Add a way to discover and run python unit tests separately
Packit Service 8ebd8e
# https://github.com/mesonbuild/meson/issues/6851
Packit Service 8ebd8e
python_tests = [
Packit Service 8ebd8e
    # List all the python tests, must be in the form:
Packit Service 8ebd8e
    # {
Packit Service 8ebd8e
    #     'name': 'test name',
Packit Service 8ebd8e
    #     'file': 'full test file path, use files('path')[0]',
Packit Service 8ebd8e
    # Fields below are optional:
Packit Service 8ebd8e
    #     'workdir': '',
Packit Service 8ebd8e
    #     'env': [],
Packit Service 8ebd8e
    #     'depends': [],
Packit Service 8ebd8e
    #     'suite': [],
Packit Service 8ebd8e
    #     'extra_args': [],
Packit Service 8ebd8e
    #     'timeout': 30,
Packit Service 8ebd8e
    #     'is_parallel': true,
Packit Service 8ebd8e
    # }
Packit Service 8ebd8e
]
Packit Service 8ebd8e
Packit Service 8ebd8e
address_sanitizer = get_option('b_sanitize') == 'address'
Packit Service 8ebd8e
Packit Service 8ebd8e
tests = [
Packit Service 8ebd8e
    'fprintd',
Packit Service 8ebd8e
    'test_fprintd_utils',
Packit Service 8ebd8e
]
Packit Service 8ebd8e
Packit Service 8ebd8e
foreach t: tests
Packit Service 8ebd8e
    python_tests += [
Packit Service 8ebd8e
        {
Packit Service 8ebd8e
            'name': t,
Packit Service 8ebd8e
            'file': files(meson.current_source_dir() / t + '.py')[0],
Packit Service 8ebd8e
            'env': [
Packit Service 8ebd8e
                'G_DEBUG=fatal-criticals',
Packit Service 8ebd8e
                'G_MESSAGES_DEBUG=all',
Packit Service 8ebd8e
                'FPRINT_BUILD_DIR=' + meson.build_root() / 'src',
Packit Service 8ebd8e
                'TOPSRCDIR=' + meson.source_root(),
Packit Service 8ebd8e
            ],
Packit Service 8ebd8e
            'depends': [
Packit Service 8ebd8e
                fprintd,
Packit Service 8ebd8e
                fprintd_utils,
Packit Service 8ebd8e
            ],
Packit Service 8ebd8e
            'suite': [t == 'fprintd' ? 'daemon' : ''],
Packit Service 8ebd8e
        }
Packit Service 8ebd8e
    ]
Packit Service 8ebd8e
endforeach
Packit Service 8ebd8e
Packit Service 8ebd8e
if get_option('pam')
Packit Service 8ebd8e
    subdir('pam')
Packit Service 8ebd8e
endif
Packit Service 8ebd8e
Packit Service 8ebd8e
# Add a way to discover and run python unit tests separately
Packit Service 8ebd8e
# https://github.com/mesonbuild/meson/issues/6851
Packit Service 8ebd8e
unittest_inspector = find_program('unittest_inspector.py')
Packit Service 8ebd8e
Packit Service 8ebd8e
foreach pt: python_tests
Packit Service 8ebd8e
    r = run_command(unittest_inspector, pt.get('file'))
Packit Service 8ebd8e
    unit_tests = r.stdout().strip().split('\n')
Packit Service 8ebd8e
    base_args = [ pt.get('file') ] + pt.get('extra_args', [])
Packit Service 8ebd8e
    suite = pt.get('suite', [])
Packit Service 8ebd8e
Packit Service 8ebd8e
    if r.returncode() == 0 and unit_tests.length() > 0
Packit Service 8ebd8e
        suite += pt.get('name')
Packit Service 8ebd8e
    else
Packit Service 8ebd8e
        unit_tests = [pt.get('name')]
Packit Service 8ebd8e
    endif
Packit Service 8ebd8e
Packit Service 8ebd8e
    foreach ut: unit_tests
Packit Service 8ebd8e
        ut_suite = suite
Packit Service 8ebd8e
        ut_args = base_args
Packit Service 8ebd8e
        if unit_tests.length() > 1
Packit Service 8ebd8e
            ut_args += ut
Packit Service 8ebd8e
            ut_suite += ut.split('.')[0]
Packit Service 8ebd8e
        endif
Packit Service 8ebd8e
        test(ut,
Packit Service 8ebd8e
            python3,
Packit Service 8ebd8e
            args: ut_args,
Packit Service 8ebd8e
            suite: ut_suite,
Packit Service 8ebd8e
            depends: pt.get('depends', []),
Packit Service 8ebd8e
            workdir: pt.get('workdir', meson.build_root()),
Packit Service 8ebd8e
            env: pt.get('env', []),
Packit Service 8ebd8e
            timeout: pt.get('timeout', 30),
Packit Service 8ebd8e
            is_parallel: pt.get('is_parallel', true),
Packit Service 8ebd8e
        )
Packit Service 8ebd8e
    endforeach
Packit Service 8ebd8e
endforeach
Packit Service 8ebd8e
Packit Service 8ebd8e
timeout_multiplier = 1
Packit Service 8ebd8e
test_envs = [
Packit Service 8ebd8e
    'G_SLICE=always-malloc',
Packit Service 8ebd8e
    'MALLOC_CHECK_=2',
Packit Service 8ebd8e
]
Packit Service 8ebd8e
Packit Service 8ebd8e
if address_sanitizer
Packit Service 8ebd8e
    timeout_multiplier = 3
Packit Service 8ebd8e
    test_envs += [
Packit Service 8ebd8e
        'ADDRESS_SANITIZER=true',
Packit Service 8ebd8e
        'ASAN_OPTIONS=@0@'.format(':'.join([
Packit Service 8ebd8e
            'abort_on_error=true',
Packit Service 8ebd8e
            'symbolize=true',
Packit Service 8ebd8e
        ])),
Packit Service 8ebd8e
        'LSAN_OPTIONS=@0@'.format(':'.join([
Packit Service 8ebd8e
            'exitcode=0',
Packit Service 8ebd8e
            'strict_string_checks=true',
Packit Service 8ebd8e
            'suppressions=@0@'.format(
Packit Service 8ebd8e
                files(meson.current_source_dir() / 'LSAN-leaks-suppress.txt')[0]),
Packit Service 8ebd8e
        ])),
Packit Service 8ebd8e
    ]
Packit Service 8ebd8e
endif
Packit Service 8ebd8e
Packit Service 8ebd8e
add_test_setup('default_setup',
Packit Service 8ebd8e
    is_default: true,
Packit Service 8ebd8e
    env: test_envs,
Packit Service 8ebd8e
    timeout_multiplier: timeout_multiplier
Packit Service 8ebd8e
)
Packit Service 8ebd8e
Packit Service 8ebd8e
if not address_sanitizer and find_program('valgrind', required: false).found()
Packit Service 8ebd8e
    glib_share = glib_dep.get_pkgconfig_variable('prefix') / 'share' / glib_dep.name()
Packit Service 8ebd8e
    glib_suppressions = glib_share + '/valgrind/glib.supp'
Packit Service 8ebd8e
    add_test_setup('valgrind',
Packit Service 8ebd8e
        env: [
Packit Service 8ebd8e
            'G_SLICE=always-malloc',
Packit Service 8ebd8e
            'VALGRIND=' + glib_suppressions,
Packit Service 8ebd8e
        ],
Packit Service 8ebd8e
        timeout_multiplier: 5
Packit Service 8ebd8e
    )
Packit Service 8ebd8e
endif
Packit Service 8ebd8e