diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 86b70da15e1..afc20651818 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -4,6 +4,16 @@ on: [push, pull_request] jobs: + event_file: # Used for test reporting + name: "Publish event file" + runs-on: ubuntu-latest + steps: + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: EventFile + path: ${{ github.event_path }} + build: runs-on: ${{ matrix.os }} @@ -35,3 +45,9 @@ jobs: with: name: fake-artifacts-${{ matrix.os }} path: release/artifacts + - name: publish test results + if: always() + uses: actions/upload-artifact@v4 + with: + name: test-results-${{ matrix.os }} + path: testresults diff --git a/.github/workflows/publish-test-results.yml b/.github/workflows/publish-test-results.yml new file mode 100644 index 00000000000..4f3b4e91681 --- /dev/null +++ b/.github/workflows/publish-test-results.yml @@ -0,0 +1,47 @@ +# This is used to publish test results to PRs so that we can support external forks + +name: Publish FAKE Test Results + +on: + workflow_run: + workflows: ["FAKE Build and Test"] + types: + - completed +permissions: {} + +jobs: + test-results: + name: Test Results + runs-on: ubuntu-latest + if: github.event.workflow_run.conclusion != 'skipped' + + permissions: + checks: write + pull-requests: write + actions: read + + steps: + # Download the Github event file + - name: Download Event file + uses: dawidd6/action-download-artifact@v4 + with: + run_id: ${{ github.event.workflow_run.id }} + path: artifacts + name: EventFile + + # Download all the test results files + - name: Download test results + uses: dawidd6/action-download-artifact@v4 + with: + run_id: ${{ github.event.workflow_run.id }} + path: test-results + pattern: test-results-* + + # Publish the test report + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + with: + commit: ${{ github.event.workflow_run.head_sha }} + event_file: artifacts/event.json + event_name: ${{ github.event.workflow_run.event }} + files: "test-results/**/*.xml" diff --git a/build.fsx b/build.fsx index f04216f2638..79323733cc7 100644 --- a/build.fsx +++ b/build.fsx @@ -390,8 +390,10 @@ let callPaket wd args = /// Test assembly to run tests from /// Expecto test results XML file let runExpecto workDir dllPath resultsXml = + let resultsFile = "testresults" resultsXml + let processResult = - DotNet.exec (dotnetWorkingDir workDir) (sprintf "%s" dllPath) (sprintf "--nunit-summary %s" resultsXml) + DotNet.exec (dotnetWorkingDir workDir) (sprintf "%s" dllPath) (sprintf "--nunit-summary %s" resultsFile) if processResult.ExitCode <> 0 then failwithf "Tests in %s failed." (Path.GetFileName dllPath)