name: Unit Tests on: workflow_dispatch: push: branches: [ develop ] pull_request: permissions: {} 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@1c185ad576953eab13e35ffe1bffef437d97e9d2 # v1.2.4 with: persist-credentials: false - 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@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 # 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@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0 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@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0 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