spiegel-keyman/linux/ibus-keyman/tests/meson.build
2025-09-25 19:32:29 +02:00

155 lines
4 KiB
Meson

test_files = [
'DbusTestHelper.cpp',
'EventSource.cpp',
'ibusimcontext.c',
'KeyHandling.cpp',
'testfixture.cpp',
'testmodule.c',
'../src/KeymanSystemServiceClient.cpp',
]
common_test_files = [ meson.global_source_root() / '../../common/include/test_color.cpp' ]
keymancore_tests_lib = c_compiler.find_library(
'keymancore-tests', # meson will prefix 'lib'
dirs: [ core_dir / 'build/arch' / get_option('buildtype') / 'tests/kmx_test_source' ]
)
test_deps = [gtk, ibus, icu, json_glib, keymancore_lib, keymancore_tests_lib, systemd]
dbus_deps = [gtk, systemd]
test_env = [
'G_TEST_SRCDIR=' + meson.current_source_dir(),
'G_TEST_BUILDDIR=' + meson.current_build_dir(),
]
test_include_dirs = [
core_include_dirs,
linux_include_dirs,
include_directories('../../../core/tests/kmx_test_source'),
include_directories('../src'),
include_directories('..'),
]
test_exe = executable(
'ibus-keyman-tests',
test_files, util_files, common_test_files,
dependencies: test_deps,
include_directories: test_include_dirs,
)
subdir('dbus-test-server')
env_file = '/tmp/env.txt'
cleanup_file = '/tmp/ibus-keyman-test-cleanup'
pid_file = '/tmp/ibus-keyman-test-pids.pids'
setup_tests = find_program('setup-tests.sh', dirs: [meson.current_source_dir() / 'scripts'])
teardown_tests = find_program('teardown-tests.sh', dirs: [meson.current_source_dir() / 'scripts'])
run_test = find_program('run-single-test.sh', dirs: [meson.current_source_dir() / 'scripts'])
find_tests = find_program('find-tests.sh', dirs: [meson.current_source_dir() / 'scripts'])
# Mutter 40.x added the --headless option wich we need in order to be able to run the Wayland tests
mutter = find_program('mutter', required: false, version: '>=40')
can_build_wayland = mutter.found()
test(
'setup-x11',
setup_tests,
args: ['--x11', env_file, cleanup_file, pid_file],
env: test_env,
priority: -10,
is_parallel: false,
protocol: 'exitcode'
)
test(
'teardown-x11',
teardown_tests,
args: [cleanup_file, '--x11'],
priority: -19,
is_parallel: false,
protocol: 'exitcode'
)
if can_build_wayland
test(
'setup-wayland',
setup_tests,
args: ['--wayland', env_file, cleanup_file, pid_file],
env: test_env,
priority: -20,
is_parallel: false,
protocol: 'exitcode'
)
test(
'teardown-wayland',
teardown_tests,
args: [cleanup_file, '--wayland'],
priority: -29,
is_parallel: false,
protocol: 'exitcode'
)
endif
kmxtest_files = run_command(
find_tests,
[ common_dir / 'test/keyboards/baseline' ],
check: true,
).stdout().split('\n')
foreach kmx: kmxtest_files
filename = kmx.split('\t')
if filename[0] == ''
continue
endif
testname = filename[1].split('.kmx')[0]
test_args = [ '--tap', '-k', '--env', env_file, '--cleanup', cleanup_file, '--check', pid_file, '--', filename]
test(
'X11-' + testname + '__surrounding-text',
run_test,
args: [ '--testname', testname, '--x11', '--surrounding-text', test_args],
env: test_env,
depends: [test_exe],
priority: -11,
is_parallel: false,
timeout: 120,
protocol: 'tap',
)
test(
'X11-' + testname + '__no-surrounding-text',
run_test,
args: [ '--testname', testname, '--x11', '--no-surrounding-text', test_args],
env: test_env,
depends: [test_exe],
priority: -12,
is_parallel: false,
timeout: 120,
protocol: 'tap',
)
if can_build_wayland
test(
'Wayland-' + testname + '__surrounding-text',
run_test,
args: [ '--testname', testname, '--wayland', '--surrounding-text', test_args],
env: test_env,
depends: [test_exe],
priority: -21,
is_parallel: false,
timeout: 120,
protocol: 'tap',
)
test(
'Wayland-' + testname + '__no-surrounding-text',
run_test,
args: [ '--testname', testname, '--wayland', '--no-surrounding-text', test_args],
env: test_env,
depends: [test_exe],
priority: -22,
is_parallel: false,
timeout: 120,
protocol: 'tap',
)
endif
endforeach