fix(ci): run Qt tests headless in Docker/CI

Use QCoreApplication for the race test, set QT_QPA_PLATFORM=offscreen
and QT_MEDIA_BACKEND=ffmpeg for playback tests, and export the same vars
in CI before ctest to avoid subprocess aborts without a display.
This commit is contained in:
Sebastian Palencsar
2026-06-21 08:56:03 +02:00
parent f4b3109c32
commit 722f417c53
4 changed files with 28 additions and 5 deletions

View File

@@ -35,6 +35,8 @@ jobs:
qt6-multimedia-ffmpeg
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j"$(nproc)"
export QT_QPA_PLATFORM=offscreen
export QT_MEDIA_BACKEND=ffmpeg
ctest --test-dir build --output-on-failure
"$(/usr/lib/qt6/bin/qtpaths6 --query QT_INSTALL_BINS)/qmllint" src/qml/Main.qml src/qml/components/*.qml src/qml/theme/BearTheme.qml
'

View File

@@ -1,5 +1,10 @@
find_package(Qt6 REQUIRED COMPONENTS Test)
set(BEARWAVE_TEST_ENV
QT_QPA_PLATFORM=offscreen
QT_MEDIA_BACKEND=ffmpeg
)
set(TEST_SOURCES
radiobackend_playback_test.cpp
${CMAKE_CURRENT_SOURCE_DIR}/../src/radiobackend.cpp
@@ -25,6 +30,7 @@ target_link_libraries(radiobackend_playback_test PRIVATE
)
add_test(NAME radiobackend_playback_test COMMAND radiobackend_playback_test)
set_tests_properties(radiobackend_playback_test PROPERTIES ENVIRONMENT "${BEARWAVE_TEST_ENV}")
set(RACE_TEST_SOURCES
radiobrowser_race_test.cpp
@@ -42,7 +48,7 @@ target_link_libraries(radiobrowser_race_test PRIVATE
Qt6::Core
Qt6::Network
Qt6::Test
Qt6::Widgets
)
add_test(NAME radiobrowser_race_test COMMAND radiobrowser_race_test)
set_tests_properties(radiobrowser_race_test PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=offscreen")

View File

@@ -328,5 +328,14 @@ void RadioBackendPlaybackTest::manual_station_accepts_http_and_https()
QCOMPARE(backend.stations().size(), 2);
}
QTEST_MAIN(RadioBackendPlaybackTest)
int main(int argc, char *argv[])
{
qputenv("QT_QPA_PLATFORM", "offscreen");
qputenv("QT_MEDIA_BACKEND", "ffmpeg");
QApplication app(argc, argv);
RadioBackendPlaybackTest test;
return QTest::qExec(&test, argc, argv);
}
#include "radiobackend_playback_test.moc"

View File

@@ -2,7 +2,7 @@
// SPDX-License-Identifier: GPL-3.0-or-later
#include <QtTest>
#include <QApplication>
#include <QCoreApplication>
#include <QSignalSpy>
#include <QTemporaryDir>
#include <QDir>
@@ -100,5 +100,11 @@ void RadioBrowserRaceTest::latest_request_wins_after_rapid_category_switch()
|| finalName == QStringLiteral("NL Station"));
}
QTEST_MAIN(RadioBrowserRaceTest)
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
RadioBrowserRaceTest test;
return QTest::qExec(&test, argc, argv);
}
#include "radiobrowser_race_test.moc"