Skip to content

Address static analysis issues #1255

Address static analysis issues

Address static analysis issues #1255

Workflow file for this run

name: Build Pipeline
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_NUNIT_PROJECT: Merlin.NUnit/Merlin.NUnit.csproj # full path to nunit internal integration test project file
M_RD_NUNIT_PROJECT: Merlin.NUnit.RealDevices/Merlin.NUnit.RealDevices.csproj # full path to nunit internal real device integration test project file
EM_NUNIT_PROJECT: ExternalMerlin.NUnit/ExternalMerlin.NUnit.csproj # full path to nunit external integration test project file
EM_RD_NUNIT_PROJECT: ExternalMerlin.NUnit.RealDevices/ExternalMerlin.NUnit.RealDevices.csproj # full path to nunit external real device integration test project file
M_XUNIT_PROJECT: Merlin.XUnit/Merlin.XUnit.csproj # full path to xunit internal integration test project file
M_RD_XUNIT_PROJECT: Merlin.XUnit.RealDevices/Merlin.XUnit.RealDevices.csproj # full path to xunit internal real device integration test project file
EM_XUNIT_PROJECT: ExternalMerlin.XUnit/ExternalMerlin.XUnit.csproj # full path to xunit external integration test project file
EM_RD_XUNIT_PROJECT: ExternalMerlin.XUnit.RealDevices/ExternalMerlin.XUnit.RealDevices.csproj # full path to xunit external real device integration test project file
M_TUNIT_PROJECT: Merlin.TUnit/Merlin.TUnit.csproj # full path to tunit internal integration test project file
M_RD_TUNIT_PROJECT: Merlin.TUnit.RealDevices/Merlin.TUnit.RealDevices.csproj # full path to tunit internal real device integration test project file
EM_TUNIT_PROJECT: ExternalMerlin.TUnit/ExternalMerlin.TUnit.csproj # full path to tunit external integration test project file
EM_RD_TUNIT_PROJECT: ExternalMerlin.TUnit.RealDevices/ExternalMerlin.TUnit.RealDevices.csproj # full path to tunit external real device integration test project file
SAUCE_USER_NAME: ${{ secrets.SAUCE_USER_NAME }}
SAUCE_API_KEY: ${{ secrets.SAUCE_API_KEY }}
CODACY_PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }}
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
TUNIT_INTEGRATION_COVERAGE_FILENAME: opencover.tunit.integration.xml
NUNIT_RD_INTEGRATION_COVERAGE_FILENAME: opencover.nunit.realdevice.integration.xml
XUNIT_RD_INTEGRATION_COVERAGE_FILENAME: opencover.xunit.realdevice.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}}
xunit-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 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: Display structure of downloaded files
run: ls -R
- name: Publish Artifacts
uses: actions/upload-artifact@v4
with:
name: xunit-integration-test-results
path: ${{ env.XUNIT_INT_DIR }}/${{env.XUNIT_INTEGRATION_COVERAGE_FILENAME}}
nunit-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 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: Display structure of downloaded files
run: ls -R
- name: Publish Artifacts
uses: actions/upload-artifact@v4
with:
name: nunit-integration-test-results
path: ${{ env.NUNIT_INT_DIR }}/${{env.NUNIT_INTEGRATION_COVERAGE_FILENAME}}
nunit-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 NUnit Integration Tests
uses: b3b00/[email protected]
with:
testProject: ${{ env.M_RD_NUNIT_PROJECT }}
output: ${{ env.NUNIT_RD_INTEGRATION_COVERAGE_FILENAME }}
outputFormat: ${{ env.COVERAGE_FORMAT }}
#threshold: ${{ env.COVERAGE_THRESHOLD }}
excludes: '[Merlin.NUnit.RealDevices]Tests.*'
- name: Display structure of downloaded files
run: ls -R
- name: Publish Artifacts
uses: actions/upload-artifact@v4
with:
name: nunit-real-integration-test-results
path: ${{ env.NUNIT_RD_INT_DIR }}/${{env.NUNIT_RD_INTEGRATION_COVERAGE_FILENAME}}
xunit-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 XUnit Real Integration Tests
uses: b3b00/[email protected]
with:
testProject: ${{ env.M_RD_XUNIT_PROJECT }}
output: ${{ env.XUNIT_RD_INTEGRATION_COVERAGE_FILENAME }}
outputFormat: ${{ env.COVERAGE_FORMAT }}
#threshold: ${{ env.COVERAGE_THRESHOLD }}
excludes: '[Merlin.XUnit.RealDevice]Tests.*'
- name: Display structure of downloaded files
run: ls -R
- name: Publish Artifacts
uses: actions/upload-artifact@v4
with:
name: xunit-real-integration-test-results
path: ${{ env.XUNIT_RD_INT_DIR }}/${{env.XUNIT_RD_INTEGRATION_COVERAGE_FILENAME}}
xunit-external-tests:
runs-on: ubuntu-latest
needs: nunit-real-integration-tests
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 External XUnit Integration Tests
run: dotnet test -c ${{ env.CONFIG }} ${{ env.EM_XUNIT_PROJECT }}
nunit-external-tests:
runs-on: ubuntu-latest
needs: nunit-real-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 NUnit Integration Tests
run: dotnet test -c ${{ env.CONFIG }} ${{ env.EM_NUNIT_PROJECT }}
xunit-real-external-tests:
runs-on: ubuntu-latest
needs: xunit-real-integration-tests
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 External XUnit Real Integration Tests
run: dotnet test -c ${{ env.CONFIG }} ${{ env.EM_RD_XUNIT_PROJECT }}
nunit-real-external-tests:
runs-on: ubuntu-latest
needs: xunit-real-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 NUnit Real Integration Tests
run: dotnet test -c ${{ env.CONFIG }} ${{ env.EM_RD_NUNIT_PROJECT }}
tunit-integration-tests:
runs-on: ubuntu-latest
needs: [nunit-integration-tests,
xunit-integration-tests,
xunit-external-tests,
nunit-external-tests,
xunit-real-external-tests,
nunit-real-external-tests]
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 }} --no-build /p:CoverletOutput=${{ env.TUNIT_INTEGRATION_COVERAGE_FILENAME }}
- name: Publish Artifacts
uses: actions/upload-artifact@v4
with:
name: tunit-integration-test-results
path: ${{ env.TUNIT_INT_DIR }}/${{env.TUNIT_INTEGRATION_COVERAGE_FILENAME}}
tunit-real-integration-tests:
runs-on: ubuntu-latest
needs: [nunit-integration-tests,
xunit-integration-tests,
xunit-external-tests,
nunit-external-tests,
xunit-real-external-tests,
nunit-real-external-tests]
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 }} --no-build /p:CoverletOutput=${{ env.TUNIT_RD_INTEGRATION_COVERAGE_FILENAME }}
- name: Publish Artifacts
uses: actions/upload-artifact@v4
with:
name: tunit-real-integration-test-results
path: ${{ env.TUNIT_RD_INT_DIR }}/${{env.TUNIT_RD_INTEGRATION_COVERAGE_FILENAME}}
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 }} --no-build
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 }} --no-build
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: Download nunit-integration-test results
uses: actions/download-artifact@v4
with:
name: nunit-integration-test-results
- name: Download xunit-integration-test results
uses: actions/download-artifact@v4
with:
name: xunit-integration-test-results
- name: Download nunit-real-integration-test results
uses: actions/download-artifact@v4
with:
name: nunit-real-integration-test-results
- name: Download xunit-real-integration-test results
uses: actions/download-artifact@v4
with:
name: xunit-real-integration-test-results
- name: Download tunit-integration-test results
uses: actions/download-artifact@v4
with:
name: tunit-integration-test-results
- name: Download tunit-real-integration-test results
uses: actions/download-artifact@v4
with:
name: tunit-real-integration-test-results
- name: Setup Java JDK for Codacy Code Coverage
uses: actions/[email protected]
with:
distribution: 'oracle'
java-version: '21'
- name: Codacy Code Coverage
run: bash <(curl -Ls https://coverage.codacy.com/get.sh) report -l CSharp \
-r ${{env.UNIT_COVERAGE_FILENAME}} \
-r ${{env.NUNIT_INTEGRATION_COVERAGE_FILENAME}} \
-r ${{env.XUNIT_INTEGRATION_COVERAGE_FILENAME}} \
-r ${{env.TUNIT_INTEGRATION_COVERAGE_FILENAME}} \
-r ${{env.NUNIT_RD_INTEGRATION_COVERAGE_FILENAME}} \
-r ${{env.XUNIT_RD_INTEGRATION_COVERAGE_FILENAME}} \
-r ${{env.TUNIT_RD_INTEGRATION_COVERAGE_FILENAME}}
# - 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}};${{env.NUNIT_INTEGRATION_COVERAGE_FILENAME}};${{env.XUNIT_INTEGRATION_COVERAGE_FILENAME}};${{env.TUNIT_INTEGRATION_COVERAGE_FILENAME}};${{env.NUNIT_RD_INTEGRATION_COVERAGE_FILENAME}}${{env.XUNIT_RD_INTEGRATION_COVERAGE_FILENAME}};${{env.TUNIT_RD_INTEGRATION_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 }}