mirror of
https://github.com/spalencsar/bearwave.git
synced 2026-07-06 14:24:14 +02:00
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:
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -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
|
||||
'
|
||||
|
||||
@@ -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")
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user