# 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 }}