maint(linux): fix integration tests in Docker This PR allows the integration tests to work when running them in a Docker container. Also fixes things when running on TC's Ubuntu 24.04 Noble build agent, and improves the behavior when running directly on a developer's machine (previously typing stopped working after the tests...). Also fixes building mcompile in a Docker container. Fixes: #13887 |
||
|---|---|---|
| .. | ||
| dbus-test-server | ||
| scripts | ||
| DbusTestHelper.cpp | ||
| DbusTestHelper.h | ||
| EventSource.cpp | ||
| EventSource.h | ||
| ibusimcontext.c | ||
| ibusimcontext.h | ||
| KeyHandling.cpp | ||
| KeyHandling.h | ||
| meson.build | ||
| README.md | ||
| testfixture.cpp | ||
| testfixture.h | ||
| testmodule.c | ||
| testmodule.h | ||
ibus-keyman integration tests
The ibus-keyman integration tests run the tests defined in common/test/keyboards/baseline.
The tests run in a separate Xephyr session. Any dconf settings that have to be set during the tests
are stored in ~/.config/glib-2.0/settings/keyfile.
Running tests
The tests get run as part of building ibus-keyman, more specifically when running build.sh test.
Run all tests
All tests can be run with the test script:
scripts/run-tests.sh
Run specific tests
To run a single test you pass the testname (as found in
common/test/keyboards/baseline). Multiple tests should be separated by space.
scripts/run-tests.sh -- k_000___null_keyboard k_005___nul_with_initial_context
Debugging tests
This is most easily done by running the tests in a VM and then remote debugging into the VM. The VM should be the same Linux version as the host, and the Keyman repo should be shared with the VM through a shared folder.
Then you can start the run-tests.sh script on the VM with the
--remote-debug option. This will start the background services and then
start a GDB session waiting for the debugger to connect.
For example:
linux/ibus-keyman/tests/scripts/run-tests.sh --remote-debug \
--no-surrounding-text --no-wayland -- k_001___basic_input_unicodei
On the host, you can then attach to the VM. See the
Attach to gdbserver (ibus-keyman integration tests) configuration
in docs/settings/linux/launch.json for a sample configuration in
vscode. You'll have to adjust the IP address to match the VM which the
run-tests.sh script will output.
Manually running tests in TeamCity
To run the tests manually in TeamCity, you'll have to set an
environment variable TEAMCITY_GIT_PATH (the actual value doesn't
matter):
export TEAMCITY_GIT_PATH=/something