Skip to content

Update TUnit version #44

Update TUnit version

Update TUnit version #44

name: TUnit Only
on:
push:
branches:
- master
- 'dependabot/**'
- 'releases/**'
- 'feat/**'
- 'feature/**'
- 'fix/**'
env:
PROJECT_NAME: Saucery
SOLN_FILE: Saucery.sln # full path to your solution file
UT_DIR: Saucery.Core.Tests
NUNIT_INT_DIR: Merlin.NUnit
XUNIT_INT_DIR: Merlin.XUnit
TUNIT_INT_DIR: Merlin.TUnit
NUNIT_RD_INT_DIR: Merlin.NUnit.RealDevices
XUNIT_RD_INT_DIR: Merlin.XUnit.RealDevices
TUNIT_RD_INT_DIR: Merlin.TUnit.RealDevices
UT_PROJECT: Saucery.Core.Tests/Saucery.Core.Tests.csproj # full path to your unit test project file
M_TUNIT_PROJECT: Merlin.TUnit/Merlin.TUnit.csproj # full path to xunit internal integration test project file
M_RD_TUNIT_PROJECT: Merlin.TUnit.RealDevices/Merlin.TUnit.RealDevices.csproj # full path to xunit internal integration test project file
EM_TUNIT_PROJECT: ExternalMerlin.TUnit/ExternalMerlin.TUnit.csproj # full path to xunit external integration test project file
EM_RD_TUNIT_PROJECT: ExternalMerlin.TUnit.RealDevices/ExternalMerlin.TUnit.RealDevices.csproj # full path to xunit external integration test project file
SAUCE_USER_NAME: ${{ secrets.SAUCE_USER_NAME }}
SAUCE_API_KEY: ${{ secrets.SAUCE_API_KEY }}
CONFIG: Release
APP_PACKAGE_PATH: 'published' # set this to the path to your web app project, defaults to the repository root
COVERAGE_FORMAT: opencover
UNIT_COVERAGE_FILENAME: opencover.unit.xml
TUNIT_INTEGRATION_COVERAGE_FILENAME: opencover.tunit.integration.xml
TUNIT_RD_INTEGRATION_COVERAGE_FILENAME: opencover.tunit.realdevice.integration.xml
COVERAGE_THRESHOLD: 80
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
# Check for latest at link at .NET 9 download page (https://dotnet.microsoft.com/download/dotnet/9.0)
dotnet-version: 9.0.x
- name: Compile solution
run: dotnet build -c ${{ env.CONFIG }}
## Run code analysis for all projects/solutions, such that code analysis violations break the build.
#- name: Run .NET Code Analysis
# uses: dotnet/code-analysis@v1
# id: code-analysis
# with:
# build-breaking: true
- name: Run Unit Tests
uses: b3b00/[email protected]
with:
testProject: ${{ env.UT_PROJECT }}
output: ${{ env.UNIT_COVERAGE_FILENAME }}
outputFormat: ${{ env.COVERAGE_FORMAT }}
threshold: ${{ env.COVERAGE_THRESHOLD }}
excludes: '[Saucery.Core.Tests]Tests.*,[Saucery]AutoGeneratedProgram,[Saucery]Saucery.Selenium.*,[Saucery]Saucery.Driver.SauceryAndroid*,[Saucery]Saucery.Driver.SauceryIOS*,[Saucery]Saucery.Tests.SauceryAndroid*,[Saucery]Saucery.Tests.SauceryIOS*,[Saucery]Saucery.DataSources.EnvCompositor*,[Saucery]Saucery.Util.WebControl'
- name: Display structure of downloaded files
run: ls -R
- name: Publish Artifacts
uses: actions/upload-artifact@v4
with:
name: unit-test-results
path: ${{ env.UT_DIR }}/${{env.UNIT_COVERAGE_FILENAME}}
tunit-integration-tests:
runs-on: ubuntu-latest
needs: [build]
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
# Check for latest at link at .NET 9 download page (https://dotnet.microsoft.com/download/dotnet/9.0)
dotnet-version: 9.0.x
- name: Compile solution
run: dotnet build -c ${{ env.CONFIG }}
- name: Run TUnit Integration Tests
run: dotnet test -c ${{ env.CONFIG }} ${{ env.M_TUNIT_PROJECT }}
tunit-real-integration-tests:
runs-on: ubuntu-latest
needs: [build]
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
# Check for latest at link at .NET 9 download page (https://dotnet.microsoft.com/download/dotnet/9.0)
dotnet-version: 9.0.x
- name: Compile solution
run: dotnet build -c ${{ env.CONFIG }}
- name: Run TUnit Real Integration Tests
run: dotnet test -c ${{ env.CONFIG }} ${{ env.M_RD_TUNIT_PROJECT }}
tunit-external-tests:
runs-on: ubuntu-latest
needs: [tunit-real-integration-tests,
tunit-integration-tests]
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup dotnet
uses: actions/setup-dotnet@v3
with:
# Check for latest at link at .NET 9 download page (https://dotnet.microsoft.com/download/dotnet/9.0)
dotnet-version: 9.0.x
- name: Compile solution
run: dotnet build -c ${{ env.CONFIG }}
- name: Run External TUnit Integration Tests
run: dotnet test -c ${{ env.CONFIG }} ${{ env.EM_TUNIT_PROJECT }}
tunit-real-external-tests:
runs-on: ubuntu-latest
needs: [tunit-real-integration-tests,
tunit-integration-tests]
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup dotnet
uses: actions/setup-dotnet@v3
with:
# Check for latest at link at .NET 9 download page (https://dotnet.microsoft.com/download/dotnet/9.0)
dotnet-version: 9.0.x
- name: Compile solution
run: dotnet build -c ${{ env.CONFIG }}
- name: Run External TUnit Real Integration Tests
run: dotnet test -c ${{ env.CONFIG }} ${{ env.EM_RD_TUNIT_PROJECT }}
generate-report:
runs-on: ubuntu-latest
needs: [tunit-external-tests,
tunit-real-external-tests]
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Download unit-test results
uses: actions/download-artifact@v4
with:
name: unit-test-results
- name: Present working directory
run: pwd
- name: Display structure of downloaded files
run: ls -R
- name: ReportGenerator
uses: danielpalme/[email protected]
with:
# REQUIRED # The coverage reports that should be parsed (separated by semicolon). Globbing is supported.
reports: ${{env.UNIT_COVERAGE_FILENAME}}
targetdir: 'coveragereport' # REQUIRED # The directory where the generated report should be saved.
reporttypes: 'HtmlInline;Cobertura' # The output formats and scope (separated by semicolon) Values: Badges, Clover, Cobertura, CsvSummary, Html, HtmlChart, HtmlInline, HtmlInline_AzurePipelines, HtmlInline_AzurePipelines_Dark, HtmlSummary, JsonSummary, Latex, LatexSummary, lcov, MarkdownSummary, MHtml, PngChart, SonarQube, TeamCitySummary, TextSummary, Xml, XmlSummary
- name: Upload coverage report artifact
uses: actions/upload-artifact@v4
with:
name: CoverageReport # Artifact name
path: coveragereport # Directory containing files to upload
# Use always() to always run this step to publish test results when there are test failures
if: ${{ always() }}
- name: Bump version and push tag
if: ${{ (github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/master') && success() }}
id: tag_version
uses: mathieudutour/[email protected]
with:
github_token: ${{ secrets.GITHUB_TOKEN }}