libei/test/meson.build
Peter Hutterer d55da9466c meson.build: apply consistent indentation
Mostly whitespace changes, the non-whitespace ones are adding trailing
commas on last arguments and moving the closing ) into a separate line
for multiline function calls.

Part-of: <https://gitlab.freedesktop.org/libinput/libei/-/merge_requests/364>
2025-11-06 10:56:01 +10:00

256 lines
8.2 KiB
Meson

if get_option('tests').disabled()
summary({'Test suite enabled': false}, section: 'Test options')
subdir_done()
endif
subproject('munit', default_options: 'werror=false')
munit = dependency('munit', fallback: ['munit', 'munit_dep'])
lib_unittest = static_library('unittest',
'../src/util-munit.c',
dependencies: munit,
include_directories: [inc_builddir],
)
dep_unittest = declare_dependency(
link_with: lib_unittest,
dependencies: munit
)
test('unit-tests-utils',
executable('unit-tests-utils',
'unit-tests.c',
src_libutil,
include_directories: [inc_src, inc_builddir],
c_args: ['-D_enable_tests_'],
dependencies: [dep_unittest, dep_math, dep_epoll],
),
args: ['--log-visible', 'debug'],
)
if build_libei
test('unit-tests-ei',
executable('unit-tests-ei',
'unit-tests.c',
src_libei,
include_directories: [inc_src, inc_builddir],
c_args: ['-D_enable_tests_'],
dependencies: deps_libei + [dep_unittest],
),
args: ['--log-visible', 'debug'],
)
endif
if build_libeis
test('unit-tests-eis',
executable('unit-tests-eis',
'unit-tests.c',
src_libeis,
include_directories: [inc_src, inc_builddir],
c_args: ['-D_enable_tests_'],
dependencies: [dep_unittest, dep_libutil],
),
args: ['--log-visible', 'debug'],
)
endif
if build_oeffis
test('unit-tests-oeffis',
executable('unit-tests-oeffis',
'unit-tests.c',
src_liboeffis,
include_directories: [inc_src, inc_builddir],
c_args: ['-D_enable_tests_'],
dependencies: deps_liboeffis + [dep_unittest],
),
args: ['--log-visible', 'debug'],
)
endif
if build_libei and build_libeis
lib_eierpecken = static_library('eierpecken',
'eierpecken.h',
'eierpecken.c',
include_directories: [inc_src, inc_builddir],
dependencies: [munit, dep_libutil, dep_libei, dep_libeis],
)
eierpecken = executable('eierpecken',
'test-ei-device.c',
'test-ei-seat.c',
'test-ei.c',
'test-eis.c',
'test-main.c',
link_with: lib_eierpecken,
include_directories: [inc_builddir],
dependencies: [dep_unittest, dep_libei, dep_libeis],
)
test('eierpecken',
eierpecken,
args: ['--log-visible', 'debug', '--enable-sigalarm'],
suite: 'sigalrm',
)
test('eierpecken-no-sigalrm',
eierpecken,
args: ['--log-visible', 'debug'],
suite: 'nosigalrm',
)
endif
valgrind = find_program('valgrind', required: false)
if valgrind.found()
add_test_setup('valgrind',
exe_wrapper: [valgrind,
'--leak-check=full',
'--gen-suppressions=all',
'--error-exitcode=3'],
exclude_suites: ['python', 'sigalrm'], # we don't want to valgrind python and SIGALRM tests
timeout_multiplier: 100,
)
else
message('valgrind not found, disabling valgrind test suite')
endif
if build_libei
# build-test only
executable('test-build-libei',
'buildtest.c',
dependencies: [dep_libei],
include_directories: [inc_src],
c_args: ['-Werror', '-DINCLUDE_LIBEI=1'],
install: false,
)
endif
if build_libeis
executable('test-build-libeis',
'buildtest.c',
dependencies: [dep_libeis],
include_directories: [inc_src],
c_args: ['-Werror', '-DINCLUDE_LIBEIS=1'],
install: false,
)
endif
if add_languages('cpp', required: false)
if build_libei
executable('test-build-cxx-libei',
'buildtest.cc',
dependencies: [dep_libei],
include_directories: [inc_src],
c_args: ['-Werror', '-DINCLUDE_LIBEI=1'],
install: false,
)
endif
if build_libeis
executable('test-build-cxx-libeis',
'buildtest.cc',
dependencies: [dep_libeis],
include_directories: [inc_src],
c_args: ['-Werror', '-DINCLUDE_LIBEIS=1'],
install: false,
)
endif
endif
# Python-based tests
pymod = import('python')
required_python_modules = ['pytest', 'structlog']
python = pymod.find_installation('python3', required: get_option('tests'))
if python.found() and python.language_version().version_compare('< 3.11')
required_python_modules += ['strenum']
endif
if build_oeffis
required_python_modules += ['dbusmock']
endif
python = pymod.find_installation('python3',
modules: required_python_modules,
required: get_option('tests'),
)
pytest = find_program('pytest-3', 'pytest', required: get_option('tests'))
pytest_args = ['--verbose', '--log-level=DEBUG']
enable_pytest = python.found() and pytest.found() and build_libeis
if enable_pytest
# pytest xdist is nice because it significantly speeds up our
# test process, but it's not required
optional_python_modules = ['xdist']
if pymod.find_installation('python3', modules: optional_python_modules, required: false).found()
pytest_args += ['-n', 'auto']
configure_file(input: 'conftest.py', output: '@PLAINNAME@', copy: true)
endif
eiproto_python_template = files('eiproto.py.tmpl')
eiproto_python = custom_target('eiproto.py',
input: protocol_xml,
output: 'eiproto.py',
command: [scanner, '--component=ei', '--output=@OUTPUT@', '@INPUT@', eiproto_python_template],
build_by_default: true,
)
protocol_test_config = configuration_data()
protocol_test_config.set('LIBEI_TEST_SERVER', eis_demo_server.full_path())
configure_file(input: 'test_protocol.py',
output: '@PLAINNAME@',
configuration: protocol_test_config,
)
test('protocol-test', pytest,
args: pytest_args + ['-k', 'TestEiProtocol'],
suite: 'python',
workdir: meson.project_build_root(),
)
if valgrind.found()
env = environment()
env.set('LIBEI_USE_VALGRIND', '1')
test('protocol-test-valgrind', pytest,
args: pytest_args + ['-k', 'TestEiProtocol'],
suite: 'python',
workdir: meson.project_build_root(),
env: env,
timeout: 300,
)
endif
if build_oeffis
env = environment()
env.set('LD_LIBRARY_PATH', fs.parent(lib_liboeffis.full_path()))
test('oeffis-pytest', pytest,
args: pytest_args,
suite: 'python',
workdir: meson.current_source_dir(),
env: env,
)
endif
test_scanner_config = configuration_data()
test_scanner_config.set('PROTOFILE', protocol_xml_path)
# ei-scanner can't be imported as-is in python, so we copy + rename it
configure_file(input: scanner_source,
output: 'eiscanner.py',
copy: true,
)
configure_file(input: 'test_scanner.py',
output: '@PLAINNAME@',
configuration: test_scanner_config,
)
test('scanner-pytest', pytest,
args: pytest_args + ['-k', 'TestScanner'],
suite: 'python',
workdir: meson.current_build_dir(),
)
endif
summary({'valgrind available': valgrind.found(),
'unit tests enabled': true,
'pytest tests enabled': enable_pytest,
}, section: 'Test options',
)