name: Testing on: workflow_dispatch: push: branches: - "main" - "rc" - "hotfix-rc" pull_request: env: _AZ_REGISTRY: "bitwardenprod.azurecr.io" jobs: check-test-secrets: name: Check for test secrets runs-on: ubuntu-22.04 outputs: available: ${{ steps.check-test-secrets.outputs.available }} permissions: contents: read steps: - name: Check id: check-test-secrets run: | if [ "${{ secrets.CODECOV_TOKEN }}" != '' ]; then echo "available=true" >> $GITHUB_OUTPUT; else echo "available=false" >> $GITHUB_OUTPUT; fi testing: name: Run tests if: ${{ startsWith(github.head_ref, 'version_bump_') == false }} runs-on: ubuntu-22.04 needs: check-test-secrets permissions: checks: write contents: read pull-requests: write env: NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages steps: - name: Check out repo uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Set up .NET uses: actions/setup-dotnet@6bd8b7f7774af54e05809fcc5431931b3eb1ddee # v4.0.1 - name: Print environment run: | dotnet --info nuget help | grep Version echo "GitHub ref: $GITHUB_REF" echo "GitHub event: $GITHUB_EVENT" - name: Remove SQL project run: dotnet sln bitwarden-server.sln remove src/Sql/Sql.sqlproj - name: Test OSS solution run: dotnet test ./test --configuration Debug --logger "trx;LogFileName=oss-test-results.trx" /p:CoverletOutputFormatter="cobertura" --collect:"XPlat Code Coverage" - name: Test Bitwarden solution run: dotnet test ./bitwarden_license/test --configuration Debug --logger "trx;LogFileName=bw-test-results.trx" /p:CoverletOutputFormatter="cobertura" --collect:"XPlat Code Coverage" - name: Report test results uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5 # v1.9.1 if: ${{ needs.check-test-secrets.outputs.available == 'true' && !cancelled() }} with: name: Test Results path: "**/*-test-results.trx" reporter: dotnet-trx fail-on-error: true - name: Upload to codecov.io uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0 if: ${{ needs.check-test-secrets.outputs.available == 'true' }} env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}