107 lines
3.5 KiB
YAML
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 }}
|