Skip to content

Commit

Permalink
Merge pull request fsprojects#2837 from Numpsy/publish_test
Browse files Browse the repository at this point in the history
Publish unit test results for pull request builds
  • Loading branch information
xperiandri authored Sep 30, 2024
2 parents c40f2a0 + 843ba39 commit 6f2fc43
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 1 deletion.
16 changes: 16 additions & 0 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}
Expand Down Expand Up @@ -31,3 +41,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
47 changes: 47 additions & 0 deletions .github/workflows/publish-test-results.yml
Original file line number Diff line number Diff line change
@@ -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"
4 changes: 3 additions & 1 deletion build.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -393,8 +393,10 @@ let callPaket wd args =
/// <param name="dllPath">Test assembly to run tests from</param>
/// <param name="resultsXml">Expecto test results XML file</param>
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)
Expand Down

0 comments on commit 6f2fc43

Please sign in to comment.