name: Unit Tests on: workflow_dispatch: push: branches: [ develop ] pull_request: jobs: tests: name: Tests runs-on: macos-26 timeout-minutes: 60 concurrency: # Only allow a single run of this workflow on each branch, automatically cancelling older runs. group: ${{ format('unit-tests-{0}', github.ref) }} cancel-in-progress: true steps: - uses: nschloe/action-cached-lfs-checkout@f46300cd8952454b9f0a21a3d133d4bd5684cfc2 #v1.2.3 - name: Setup environment run: source ci_scripts/ci_common.sh && setup_github_actions_environment - name: Run tests run: swift run -q tools ci unit-tests - name: Archive artifacts uses: actions/upload-artifact@v7 # We only care about artefacts if the tests fail if: failure() with: name: Results path: test_output/UnitTests.zip retention-days: 1 if-no-files-found: ignore - name: Upload coverage to Codecov # Skip if not successful and in forks if: ${{ success() && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 with: report_type: coverage files: test_output/unit-cobertura.xml,test_output/preview-cobertura.xml disable_search: true fail_ci_if_error: true token: ${{ secrets.CODECOV_TOKEN }} flags: unittests - name: Upload test results to Codecov # Skip if cancelled and in forks if: ${{ !cancelled() && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 continue-on-error: true with: report_type: test_results files: test_output/unit-junit.xml,test_output/preview-junit.xml disable_search: true fail_ci_if_error: false token: ${{ secrets.CODECOV_TOKEN }} flags: unittests