From 69689bb9274de36fc2706bb62bc2a05ec3ee4fcb Mon Sep 17 00:00:00 2001 From: Mooneer Salem Date: Wed, 21 May 2025 08:33:06 -0700 Subject: [PATCH] Hide main window during tests to prevent GUI from interfering. --- .github/workflows/cmake-linux.yml | 2 +- .github/workflows/cmake-macos.yml | 2 +- .github/workflows/cmake-windows.yml | 1 + src/main.cpp | 26 +++++++++++++++++++++++++- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake-linux.yml b/.github/workflows/cmake-linux.yml index 9b7970de..b7cd0493 100644 --- a/.github/workflows/cmake-linux.yml +++ b/.github/workflows/cmake-linux.yml @@ -81,5 +81,5 @@ jobs: sleep 5 ln -s ${{github.workspace}}/build_linux/rade_src/model19_check3 model19_check3 . ../rade-venv/bin/activate - PYTHONPATH=${{github.workspace}}/build_linux/rade_src:$PYTHONPATH ctest -V + UT_HIDE_WINDOW=1 PYTHONPATH=${{github.workspace}}/build_linux/rade_src:$PYTHONPATH ctest -V diff --git a/.github/workflows/cmake-macos.yml b/.github/workflows/cmake-macos.yml index 55e52066..b9b87bf8 100644 --- a/.github/workflows/cmake-macos.yml +++ b/.github/workflows/cmake-macos.yml @@ -79,7 +79,7 @@ jobs: shell: bash working-directory: ${{github.workspace}}/build_osx run: | - FREEDV_COMPUTER_TO_RADIO_DEVICE="VB-Cable" FREEDV_RADIO_TO_COMPUTER_DEVICE="VB-Cable" FREEDV_COMPUTER_TO_SPEAKER_DEVICE="BlackHole1 2ch" FREEDV_MICROPHONE_TO_COMPUTER_DEVICE="BlackHole2 2ch" ctest -V + UT_HIDE_WINDOW=1 FREEDV_COMPUTER_TO_RADIO_DEVICE="VB-Cable" FREEDV_RADIO_TO_COMPUTER_DEVICE="VB-Cable" FREEDV_COMPUTER_TO_SPEAKER_DEVICE="BlackHole1 2ch" FREEDV_MICROPHONE_TO_COMPUTER_DEVICE="BlackHole2 2ch" ctest -V #- name: Zip up traces # shell: bash diff --git a/.github/workflows/cmake-windows.yml b/.github/workflows/cmake-windows.yml index c6c11e8b..f565f57b 100644 --- a/.github/workflows/cmake-windows.yml +++ b/.github/workflows/cmake-windows.yml @@ -95,6 +95,7 @@ jobs: COMPUTER_TO_RADIO_DEVICE: "Speakers (VB-Audio Virtual Cable)" MICROPHONE_TO_COMPUTER_DEVICE: "Line 1 (Virtual Audio Cable)" COMPUTER_TO_SPEAKER_DEVICE: "Line 1 (Virtual Audio Cable)" + UT_HIDE_WINDOW: "1" steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 diff --git a/src/main.cpp b/src/main.cpp index 226d54da..8ffb4484 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -297,7 +297,23 @@ void MainApp::UnitTest_() if (isRunning) break; std::this_thread::sleep_for(20ms); } - + + // Hide main window temporarily if requested. This is for CI use cases + // where we don't necessarily have access to what the GUI looks like. + wxString envVarName = "UT_HIDE_WINDOW"; + wxString envVarVal; + bool hideWindow = false; + if (wxGetEnv(envVarName, &envVarVal)) + { + hideWindow = envVarVal == "1"; + } + if (hideWindow) + { + CallAfter([&]() { + frame->Hide(); + }); + } + if (testName == "tx") { log_info("Transmitting %d times", utTxAttempts); @@ -392,6 +408,14 @@ void MainApp::UnitTest_() // Wait a second to make sure we're not doing any more processing std::this_thread::sleep_for(1000ms); + + // Re-show window if hidden + if (hideWindow) + { + CallAfter([&]() { + frame->Show(); + }); + } // Fire event to stop FreeDV log_info("Firing stop");