Skip to content

Add Meziantou.Xunit.ParallelTestFramework #512

Add Meziantou.Xunit.ParallelTestFramework

Add Meziantou.Xunit.ParallelTestFramework #512

Workflow file for this run

name: Build Pipeline
on:
push:
branches:
- master
- 'dependabot/**'
- 'releases/**'
- 'feat/**'
- 'feature/**'
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
UT_PROJECT: Saucery.Core.Tests/Saucery.Core.Tests.csproj # full path to your unit test project file
M_NUNIT_PROJECT: Merlin.NUnit/Merlin.NUnit.csproj # full path to nunit internal integration test project file
EM_NUNIT_PROJECT: ExternalMerlin.NUnit/ExternalMerlin.NUnit.csproj # full path to nunit external integration test project file
M_XUNIT_PROJECT: Merlin.XUnit/Merlin.XUnit.csproj # full path to xunit internal integration test project file
EM_XUNIT_PROJECT: ExternalMerlin.XUnit/ExternalMerlin.XUnit.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
NUNIT_INTEGRATION_COVERAGE_FILENAME: opencover.nunit.integration.xml
XUNIT_INTEGRATION_COVERAGE_FILENAME: opencover.xunit.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@v3
with:
# Check for latest at link at .NET 8 download page (https://dotnet.microsoft.com/download/dotnet/8.0)
dotnet-version: 8.0.x
#dotnet-version: |
# 3.1.x
# 5.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: Run XUnit Integration Tests
uses: b3b00/[email protected]
with:
testProject: ${{ env.M_XUNIT_PROJECT }}
output: ${{ env.XUNIT_INTEGRATION_COVERAGE_FILENAME }}
outputFormat: ${{ env.COVERAGE_FORMAT }}
#threshold: ${{ env.COVERAGE_THRESHOLD }}
excludes: '[Merlin.XUnit]Tests.*'
- name: Run NUnit Integration Tests
uses: b3b00/[email protected]
with:
testProject: ${{ env.M_NUNIT_PROJECT }}
output: ${{ env.NUNIT_INTEGRATION_COVERAGE_FILENAME }}
outputFormat: ${{ env.COVERAGE_FORMAT }}
#threshold: ${{ env.COVERAGE_THRESHOLD }}
excludes: '[Merlin.NUnit]Tests.*'
- name: Run External NUnit Integration Tests
run: dotnet test -c ${{ env.CONFIG }} ${{ env.EM_NUNIT_PROJECT }}
- name: Run External XUnit Integration Tests
run: dotnet test -c ${{ env.CONFIG }} ${{ env.EM_XUNIT_PROJECT }}
- name: ReportGenerator
uses: danielpalme/[email protected]
with:
reports: ${{ env.UT_DIR }}/${{ env.UNIT_COVERAGE_FILENAME }};${{ env.NUNIT_INT_DIR }}/${{ env.NUNIT_INTEGRATION_COVERAGE_FILENAME }};${{ env.XUNIT_INT_DIR }}/${{ env.XUNIT_INTEGRATION_COVERAGE_FILENAME }} # REQUIRED # The coverage reports that should be parsed (separated by semicolon). Globbing is supported.
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@v3
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 }}