Replace the broken test suite with working GdUnit4 tests

The previous tests never compiled: they used GUT's assert functions,
Godot 3 APIs and reassigned autoload functions, so no test ran.

- 90 tests: unit tests for the playlist, songs, player scoring, time
  formatting, search and the server client, plus integration tests
  that run MainWindow and SyncWindow against a fake server
- Keybind tests check that Alt+<number> and Ctrl+Alt+<number> keep
  following the player rows while players are added and removed
- run_tests.sh finds Godot and runs the suite headless (~10 seconds)
- CI runs the tests before the build job in gitea-build.yaml; the
  separate test.yml used a GitHub action that does not exist
- GdUnit4 is committed instead of ignored, since the project enables
  it, and .gitea/ is no longer ignored
- Exported builds leave out tests/ and addons/gdUnit4/
This commit is contained in:
Sansan committed 2026-10-05 19:33:41 +02:00
1 parent 87ff3d899b
commit 91adf52cf4
559 files changed
+32474 -2100

No files matched your search

+21 -2
View File
@@ -4,8 +4,10 @@
#
name: "Build"
on:
push:
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
env:
@@ -14,7 +16,24 @@ env:
EXPORT_NAME: MusicPlayer
jobs:
# Runs before build in the same workflow, so the two never race for the runner
test:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Download Godot
run: |
curl -L -o godot.zip https://github.com/godotengine/godot-builds/releases/download/$GODOT_VERSION-stable/Godot_v$GODOT_VERSION-stable_linux.x86_64.zip
unzip godot.zip
mv Godot_v$GODOT_VERSION-stable_linux.x86_64 godot
chmod +x godot
- name: Run tests
run: GODOT=./godot ./run_tests.sh
build:
needs: test
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
-62
View File
@@ -1,62 +0,0 @@
name: Run Tests
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
jobs:
test:
name: Run GdUnit4 Tests
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: https://github.com/actions/checkout@v4
- name: Setup Godot 4.7
uses: https://github.com/godotengine/godot-action@v1
with:
godot-version: 4.7
- name: Install GdUnit4
run: |
# GdUnit4 is already included in the repo at addons/gdUnit4
# Just verify it exists
if [ ! -d "addons/gdUnit4" ]; then
echo "GdUnit4 not found, downloading..."
wget https://github.com/godot-gdunit-labs/gdUnit4/releases/download/v6.2.1/gdUnit4-v6.2.1.zip
unzip -q gdUnit4-v6.2.1.zip
mv gdUnit4-v6.2.1/addons/gdUnit4 addons/gdUnit4
rm -rf gdUnit4-v6.2.1 gdUnit4-v6.2.1.zip
fi
- name: Run Tests (Headless)
run: |
# Run tests in headless mode
godot --path . -s addons/gdUnit4/test.gd --gdunit.cli
env:
GODOT_HEADLESS: 1
- name: Upload Test Results
if: always()
uses: https://github.com/actions/upload-artifact@v3
with:
name: test-results
path: |
test_results.xml
test_results.html
retention-days: 30
- name: Fail if Tests Failed
run: |
if [ ! -f "test_results.xml" ]; then
echo "Test results not found!"
exit 1
fi
# Check if there were any failures in the JUnit XML
if grep -q '<failure' test_results.xml; then
echo "Tests failed!"
exit 1
fi