mirror of
https://github.com/spalencsar/bearwave.git
synced 2026-07-06 22:24:17 +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
|
qt6-multimedia-ffmpeg
|
||||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
||||||
cmake --build build -j"$(nproc)"
|
cmake --build build -j"$(nproc)"
|
||||||
|
export QT_QPA_PLATFORM=offscreen
|
||||||
|
export QT_MEDIA_BACKEND=ffmpeg
|
||||||
ctest --test-dir build --output-on-failure
|
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
|
"$(/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)
|
find_package(Qt6 REQUIRED COMPONENTS Test)
|
||||||
|
|
||||||
|
set(BEARWAVE_TEST_ENV
|
||||||
|
QT_QPA_PLATFORM=offscreen
|
||||||
|
QT_MEDIA_BACKEND=ffmpeg
|
||||||
|
)
|
||||||
|
|
||||||
set(TEST_SOURCES
|
set(TEST_SOURCES
|
||||||
radiobackend_playback_test.cpp
|
radiobackend_playback_test.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../src/radiobackend.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)
|
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
|
set(RACE_TEST_SOURCES
|
||||||
radiobrowser_race_test.cpp
|
radiobrowser_race_test.cpp
|
||||||
@@ -42,7 +48,7 @@ target_link_libraries(radiobrowser_race_test PRIVATE
|
|||||||
Qt6::Core
|
Qt6::Core
|
||||||
Qt6::Network
|
Qt6::Network
|
||||||
Qt6::Test
|
Qt6::Test
|
||||||
Qt6::Widgets
|
|
||||||
)
|
)
|
||||||
|
|
||||||
add_test(NAME radiobrowser_race_test COMMAND radiobrowser_race_test)
|
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);
|
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"
|
#include "radiobackend_playback_test.moc"
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
#include <QtTest>
|
#include <QtTest>
|
||||||
#include <QApplication>
|
#include <QCoreApplication>
|
||||||
#include <QSignalSpy>
|
#include <QSignalSpy>
|
||||||
#include <QTemporaryDir>
|
#include <QTemporaryDir>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
@@ -100,5 +100,11 @@ void RadioBrowserRaceTest::latest_request_wins_after_rapid_category_switch()
|
|||||||
|| finalName == QStringLiteral("NL Station"));
|
|| 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"
|
#include "radiobrowser_race_test.moc"
|
||||||
Reference in New Issue
Block a user