Files
common/dotnet/dotnet-test/action.yaml
2025-07-01 13:28:45 -07:00

107 lines
3.5 KiB
YAML

# Reference: https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-test
name: dotnet-test
description: "Test a .csproj, .sln file, or .dll."
inputs:
project:
description: "The .csproj or .sln project to pack."
required: true
default: .
collect:
description: "Enable the data collector. Options: 'Code Coverage', 'XPlat Code Coverage' (for Coverlet)"
required: false
default: "XPlat Code Coverage"
resultsDirectory:
description: "Directory for the test results."
required: true
default: "TestResults"
logger:
description: "Logger to use. Default: trx"
required: false
default: "trx"
configuration:
description: "The build configuration to use. Default: Release"
required: false
default: "Release"
filter:
description: "Test filter expression."
required: false
default: ""
additionalArgs:
description: "Additional arguments to use when packing project."
required: false
testFormat:
description: "Test format to use when running tests. Default: opencover"
required: false
default: "opencover"
runSettings:
description: "Additional runs settings to use when testing the project."
required: false
default: ""
uploadArtifacts:
description: "Upload the test output as artifacts. Default: true"
required: false
default: "true"
artifactName:
description: "Name of the artifact to upload. Default: TestResults"
required: false
default: "TestResults"
retention-days:
description: "Default number of retention days."
required: false
default: "7"
runs:
using: "composite"
steps:
- name: "Build the test command."
id: command
run: |
COMMAND="test \"${{ inputs.project }}\" --nologo --results-directory \"${{ inputs.resultsDirectory }}\""
CONFIG="${{ inputs.configuration }}"
if [[ -n "$CONFIG" ]]; then
COMMAND="$COMMAND --configuration \"$CONFIG\""
fi
COLLECT="${{ inputs.collect }}"
if [[ -n "$COLLECT" ]]; then
COMMAND="$COMMAND --collect \"$COLLECT\""
fi
LOGGER="${{ inputs.logger }}"
if [[ -n "$LOGGER" ]]; then
COMMAND="$COMMAND --logger \"$LOGGER\""
fi
FILTER="${{ inputs.filter }}"
if [[ -n "$FILTER" ]]; then
COMMAND="$COMMAND $FILTER --filter \"$FILTER\""
fi
ADDITIONAL_ARGS="${{ inputs.additionalArgs }}"
if [[ -n "$ADDITIONAL_ARGS" ]]; then
COMMAND="$COMMAND $ADDITIONAL_ARGS"
fi
# For run settings.
COMMAND="$COMMAND --"
TEST_FORMAT="${{ inputs.testFormat }}"
if [[ -n "$TEST_FORMAT" ]]; then
COMMAND="$COMMAND DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=\"$TEST_FORMAT\""
fi
RUN_SETTINGS="${{ inputs.runSettings }}"
if [[ -n "$RUN_SETTINGS" ]]; then
COMMAND="$COMMAND $RUN_SETTINGS"
fi
echo "command=$COMMAND" >> "$GITHUB_OUTPUT"
shell: bash
- name: "Run the Unit Tests."
uses: act/common/dotnet/dotnet@master
with:
command: ${{ steps.command.outputs.command }}
- name: "Own artifacts."
uses: act/common/utils/chown@master
with:
file: ${{ inputs.resultsDirectory }}
- name: "Upload artifacts."
if: ${{ !env.ACT && ( inputs.uploadArtifacts == 'true' ) }}
uses: https://github.com/actions/upload-artifact@v3
with:
name: ${{ inputs.artifactName }}
path: ${{ inputs.resultsDirectory }}
if-no-files-found: error
retention-days: ${{ inputs.retention-days }}