Files
deskflow/.github/actions/run-tests/action.yml

85 lines
2.3 KiB
YAML

name: "Run tests"
description: "Runs both unit tests and integration tests and appends to a PR comment"
inputs:
job:
description: "The job name to append to the PR comment"
required: true
default: "unknown"
bin-dir:
description: "The directory containing the test binaries"
default: "build/bin"
runs:
using: "composite"
steps:
- name: Unit Tests
id: unittests
env:
QT_QPA_PLATFORM: offscreen
run: |
ctest --test-dir "build/src/unittests" --output-on-failure
result=$?
if [ $result -ne 0 ]; then
echo "Unit tests failed with code: $result" >> $GITHUB_STEP_SUMMARY
fi
shell: bash
continue-on-error: true
- name: Legacy Tests
id: legacytests
env:
QT_QPA_PLATFORM: offscreen
run: |
./${{ inputs.bin-dir }}/legacytests
result=$?
if [ $result -ne 0 ]; then
echo "Legacy tests failed with code: $result" >> $GITHUB_STEP_SUMMARY
fi
shell: bash
continue-on-error: true
- name: Get test results
id: results
run: |
pass="✅ Pass"
fail="❌ Fail"
unittests_outcome="${{ steps.unittests.outcome }}"
legacytests_outcome="${{ steps.legacytests.outcome }}"
unittests=$( [ "$unittests_outcome" = "success" ] && echo $pass || echo $fail )
legacytests=$( [ "$legacytests_outcome" = "success" ] && echo $pass || echo $fail )
echo "unittests=$unittests" >> $GITHUB_OUTPUT
echo "legacytests=$legacytests" >> $GITHUB_OUTPUT
shell: bash
- name: Summary row
id: row
run: |
file="row-${{ inputs.job }}.md"
row=""
row+="| ${{ inputs.job }} "
row+="| ${{ steps.results.outputs.unittests }} "
row+="| ${{ steps.results.outputs.legacytests }} "
echo "$row" > $file
echo "file=$file" > $GITHUB_OUTPUT
shell: bash
- name: Save summary row
uses: actions/upload-artifact@v4
with:
name: test-result-${{ inputs.job }}
path: ${{ steps.row.outputs.file }}
- name: Check test outcome
if: (steps.unittests.outcome != 'success' || steps.legacytests.outcome != 'success')
run: |
echo "Tests failed"
exit 1
shell: bash