Skip to content

Commit 6b4eed3

Browse files
author
Petr Sramek
committed
created composite test action
1 parent 7825de5 commit 6b4eed3

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

.github/actions/test/action.yml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: 'Test with .NET CLI'
2+
author: 'Pete Sramek'
3+
description: 'Run tests, collects code coverage, logs test results, uploads test artifacts'
4+
inputs:
5+
# Required
6+
7+
# Optional
8+
dotnet_sdk_version:
9+
description: '.NET SDK version. Default: 9.x'
10+
required: false
11+
default: '9.x'
12+
build-configuration:
13+
description: 'Build configuration. Default: Release'
14+
required: false
15+
default: 'Release'
16+
build-platform:
17+
description: 'Build platform. Deafult: Any CPU'
18+
required: false
19+
default: 'Any CPU'
20+
test-project-glob-pattern:
21+
description: 'Search pattern for test projects. Default: **/*Tests.csproj'
22+
required: false
23+
default: |
24+
**/*Tests.csproj
25+
test-runsettings-path:
26+
description: 'Path to the test runsettings file. Default: '''''
27+
required: false
28+
default: ''
29+
test-result-logger:
30+
description: 'Test result logger. Default: trx'
31+
required: false
32+
default: 'trx'
33+
collect-code-coverage:
34+
description: 'Collect code coverage. Default: true'
35+
required: false
36+
default: 'true'
37+
code-coverage-output-format:
38+
description: 'Code coverage output format. Default: cobertura'
39+
required: false
40+
default: 'cobertura'
41+
upload-test-artifacts:
42+
description: 'Upload test artifacts, Default: true'
43+
required: false
44+
default: 'true'
45+
test-results-directory:
46+
description: 'Search pattern for test artifacts. Default: ${{ runner.temp }}/test-results/'
47+
required: false
48+
default: |
49+
'${{ runner.temp }}/test-results/'
50+
test-artifacts-name:
51+
description: 'Test artifacts name, Default: test-results'
52+
required: false
53+
default: 'test-results'
54+
55+
runs:
56+
using: "composite"
57+
steps:
58+
- name: 'Checkout ${{ github.head_ref || github.ref }}'
59+
uses: actions/checkout@v4
60+
61+
- name: 'Setup .NET ${{ inputs.dotnet_sdk_version }}'
62+
uses: actions/setup-dotnet@v4
63+
with:
64+
dotnet-version: ${{ inputs.dotnet_sdk_version }}
65+
66+
- name: 'Test with .NET CLI'
67+
shell: bash
68+
env:
69+
TRX_LOGGER_ARGS: "${{ inputs.test-result-logger != '' && ' --report-trx' || '' }}"
70+
RUN_SETTINGS_ARGS: "${{ inputs.test-runsettings-path != '' && '--settings ${{ inputs.test-runsettings-path }}' || '' }}"
71+
CODE_COVERAGE_ARGS: "${{ inputs.collect-code-coverage == 'true' && '--coverage --coverage-output-format ${{ inputs.code-coverage-output-format }}' || '' }}"
72+
run: dotnet test ${{ inputs.test-project-glob-pattern }} --configuration ${{ inputs.build-configuration }} /p:Platform="${{ inputs.build-platform }}" --verbosity normal -- ${{ env.CODE_COVERAGE_ARGS }} ${{ env.RUN_SETTINGS_ARGS }} --results-directory ${{ inputs.test-results-directory }}
73+
74+
- name: 'Upload test results'
75+
if: ${{ inputs.upload-test-artifacts == 'true' }}
76+
uses: actions/upload-artifact@v4
77+
with:
78+
name: '${{ inputs.test-artifacts-name }}'
79+
path: '${{ inputs.test-results-directory }}*'

0 commit comments

Comments
 (0)