22author : ' Pete Sramek'
33description : ' Run tests, collects code coverage, logs test results, uploads test artifacts'
44inputs :
5- # Required
6-
7- # Optional
5+ project-path :
6+ description : ' Test project path. '
7+ required : true
88 dotnet_sdk_version :
99 description : ' .NET SDK version. Default: 10.x'
1010 required : false
@@ -13,9 +13,6 @@ inputs:
1313 description : ' Build configuration. Default: Release'
1414 required : false
1515 default : ' Release'
16- project-path :
17- description : ' Test project path.'
18- required : true
1916 use-trf-logger :
2017 description : ' Use TRX logger. Default: true'
2118 required : false
@@ -28,8 +25,20 @@ inputs:
2825 description : ' Code coverage output format. Default: cobertura'
2926 required : false
3027 default : ' cobertura'
28+ code-coverage-include :
29+ description : ' Comma separated patterns for --cc-include. Default: ""'
30+ required : false
31+ default : ' '
32+ code-coverage-exclude :
33+ description : ' Comma separated patterns for --cc-exclude. Default: ""'
34+ required : false
35+ default : ' '
36+ code-coverage-exclude-attribute :
37+ description : ' Comma separated attribute names for --cc-exclude-attribute. Default: "System.Diagnostics.DebuggerHiddenAttribute,System.Diagnostics.DebuggerNonUserCodeAttribute,System.CodeDom.Compiler.GeneratedCodeAttribute,System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute"'
38+ required : false
39+ default : ' System.Diagnostics.DebuggerHiddenAttribute,System.Diagnostics.DebuggerNonUserCodeAttribute,System.CodeDom.Compiler.GeneratedCodeAttribute,System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute'
3140 code-coverage-settings-file :
32- description : ' Code coverage settings file. Default: '
41+ description : ' Code coverage settings file. Default: "" '
3342 required : false
3443 default : ' '
3544 upload-test-artifacts :
@@ -39,8 +48,7 @@ inputs:
3948 test-results-directory :
4049 description : ' Search pattern for test artifacts. Default: test-results'
4150 required : false
42- default : |
43- 'test-results'
51+ default : ' test-results'
4452 test-artifacts-name :
4553 description : ' Test artifacts name, Default: test-results'
4654 required : false
@@ -57,31 +65,34 @@ runs:
5765 with :
5866 dotnet-version : ${{ inputs.dotnet_sdk_version }}
5967
60- - name : ' Test with .NET CLI'
68+ - name : ' Test with .NET CLI (Native Code Coverage) '
6169 shell : bash
6270 env :
63- DOTNET_USE_TEST_PLATFORM : ' 1' # Ensures you're using the new test platform if necessary
71+ DOTNET_USE_TEST_PLATFORM : ' 1'
6472 run : |
6573 ARGS=()
6674 ARGS+=("${{ inputs.project-path }}")
6775 ARGS+=(--configuration "${{ inputs.build-configuration }}")
6876 ARGS+=(--results-directory "${{ inputs.test-results-directory }}")
6977
70- # Optional: TRX logger
7178 if [[ "${{ inputs.use-trf-logger }}" == "true" ]]; then
7279 ARGS+=(--logger:trx)
7380 fi
7481
75- # Native Code Coverage switches
82+ # Native Code Coverage switches & filters
7683 if [[ "${{ inputs.collect-code-coverage }}" == "true" ]]; then
7784 ARGS+=(--collect:"Code Coverage")
78- # Output format: cobertura, json, etc
7985 ARGS+=(--cc-output-format:"${{ inputs.code-coverage-output-format }}")
80- # Exclude by attribute (comma-separated, no regex)
81- ARGS+=(--cc-exclude-attribute:"System.Diagnostics.DebuggerHiddenAttribute,System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute")
82- # You can add more --cc-* switches if needed, e.g.:
83- # ARGS+=(--cc-include:"MyNamespace*") # Include filters
84- # ARGS+=(--cc-exclude:"OtherNamespace*") # Exclude by name
86+
87+ if [[ -n "${{ inputs.code-coverage-include }}" ]]; then
88+ ARGS+=(--cc-include:"${{ inputs.code-coverage-include }}")
89+ fi
90+ if [[ -n "${{ inputs.code-coverage-exclude }}" ]]; then
91+ ARGS+=(--cc-exclude:"${{ inputs.code-coverage-exclude }}")
92+ fi
93+
94+ # Always use exclude-attribute; will be default unless overridden by user
95+ ARGS+=(--cc-exclude-attribute:"${{ inputs.code-coverage-exclude-attribute }}")
8596 fi
8697
8798 echo "Running: dotnet test ${ARGS[*]}"
0 commit comments