Improved unit tests for FFmpegRunner #237
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build-test | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
workflow_dispatch: | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
build: | |
timeout-minutes: 60 | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
framework: [net462, net48, net8.0] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.framework }} | |
cancel-in-progress: true | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: '0' | |
- name: Build project | |
run: dotnet build -bl:build.binlog -c Release | |
- name: Get Path to Tests | |
run: echo "TEST_PATH=$(dotnet msbuild SIL.Core.Tests/ --getProperty:OutputPath -p:TargetFramework=${{ matrix.framework }} -p:Configuration=Release)" >> $GITHUB_ENV | |
# Several steps to set up FFmpeg and Scream and start Audio Service so that audio tests can run | |
- name: Install FFmpeg | |
uses: FedericoCarboni/setup-ffmpeg@v3 | |
id: setup-ffmpeg | |
with: | |
ffmpeg-version: release | |
- run: echo ffmpeg path ${{ steps.setup-ffmpeg.outputs.ffmpeg-path }} | |
- name: Verify FFmpeg Installation | |
run: | | |
echo $PATH | |
ffmpeg -version | |
- name: Install Scream | |
shell: powershell | |
run: | | |
Invoke-WebRequest https://github.com/duncanthrax/scream/releases/download/4.0/Scream4.0.zip -OutFile Scream4.0.zip | |
Expand-Archive -Path Scream4.0.zip -DestinationPath Scream | |
openssl req -batch -verbose -x509 -newkey rsa -keyout ScreamCertificate.pvk -out ScreamCertificate.cer -nodes -extensions v3_req | |
openssl pkcs12 -export -nodes -in ScreamCertificate.cer -inkey ScreamCertificate.pvk -out ScreamCertificate.pfx -passout pass: | |
- name: Setup MSVC Dev Cmd | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Sign and Install Scream Driver | |
shell: powershell | |
run: | | |
signtool sign /v /fd SHA256 /f ScreamCertificate.pfx Scream\Install\driver\x64\Scream.cat | |
Import-Certificate -FilePath ScreamCertificate.cer -CertStoreLocation Cert:\LocalMachine\root | |
Import-Certificate -FilePath ScreamCertificate.cer -CertStoreLocation Cert:\LocalMachine\TrustedPublisher | |
Scream\Install\helpers\devcon-x64.exe install Scream\Install\driver\x64\Scream.inf *Scream | |
timeout-minutes: 5 | |
- name: Download Virtual Audio Cable Driver ZIP | |
shell: powershell | |
run: Invoke-WebRequest -Uri "https://download.vb-audio.com/Download_CABLE/VBCABLE_Driver_Pack45.zip" -OutFile "VBCABLE_Driver_Pack45.zip" | |
- name: Extract the ZIP file | |
shell: powershell | |
run: Expand-Archive -Path "VBCABLE_Driver_Pack45.zip" -DestinationPath "VBCABLE_Driver_Pack45" | |
- name: Run the Installer | |
shell: powershell | |
run: Start-Process -FilePath "VBCABLE_Driver_Pack45\VBCABLE_Setup.exe" -ArgumentList -Wait -NoNewWindow | |
- name: Cleanup extracted files | |
shell: powershell | |
run: | | |
if (Test-Path "VBCABLE_Driver_Pack45") { | |
Remove-Item -Recurse -Force "VBCABLE_Driver_Pack45" | |
} | |
if (Test-Path "VBCABLE_Driver_Pack45.zip") { | |
Remove-Item -Force "VBCABLE_Driver_Pack45.zip" | |
} | |
- name: Start Windows Audio Service | |
run: net start audiosrv | |
shell: powershell | |
# there are cases where this will fail and we want to know about it | |
# so we don't use continue-on-error, but we still want to publish the results | |
- name: Test project | |
id: test | |
run: dotnet test "$TEST_PATH"/SIL*Tests.dll --filter "TestCategory != SkipOnTeamCity" --blame-hang-timeout 5m --logger:"trx;LogFilePrefix=results" --results-directory ./test-results | |
- name: Upload test results | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Test results (${{ matrix.framework }}) | |
path: ./test-results | |
- name: Publish logs on failure | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: binary-logs (${{ matrix.framework }}) | |
path: build.binlog | |
publish-test-results: | |
runs-on: ubuntu-latest | |
needs: build | |
if: always() | |
steps: | |
- name: Download test results | |
uses: actions/download-artifact@v4 | |
with: | |
path: artifacts | |
pattern: Test results * | |
- name: Publish test results | |
uses: EnricoMi/publish-unit-test-result-action@8885e273a4343cd7b48eaa72428dea0c3067ea98 # v2.14.0 | |
with: | |
check_name: Palaso Tests | |
files: artifacts/**/*.trx | |
action_fail: true | |
action_fail_on_inconclusive: true |