eng/scripts/Test-Packages.ps1 (65 lines of code) (raw):

#!/usr/bin/env pwsh #Requires -Version 7.0 param( [string]$PackageInfoDirectory ) $ErrorActionPreference = 'Stop' Set-StrictMode -Version 2.0 . "$PSScriptRoot/../common/scripts/common.ps1" Write-Host @" Testing packages with PackageInfoDirectory: '$PackageInfoDirectory' RUSTFLAGS: '$env:RUSTFLAGS' RUSTDOCFLAGS: '$env:RUSTDOCFLAGS' RUST_LOG: '$env:RUST_LOG' AZURE_TEST_MODE: '$env:AZURE_TEST_MODE' SYSTEM_ACCESSTOKEN: $($env:SYSTEM_ACCESSTOKEN ? 'present' : 'not present') ARM_OIDC_TOKEN: $($env:ARM_OIDC_TOKEN ? 'present' : 'not present') "@ if ($PackageInfoDirectory) { if (!(Test-Path $PackageInfoDirectory)) { Write-Error "Package info path '$PackageInfoDirectory' does not exist." exit 1 } $packagesToTest = Get-ChildItem $PackageInfoDirectory -Filter "*.json" -Recurse | Get-Content -Raw | ConvertFrom-Json } else { $packagesToTest = Get-AllPackageInfoFromRepo } Write-Host "Testing packages:" foreach ($package in $packagesToTest) { Write-Host " '$($package.Name)' in '$($package.DirectoryPath)'" } foreach ($package in $packagesToTest) { Push-Location ([System.IO.Path]::Combine($RepoRoot, $package.DirectoryPath)) try { $packageDirectory = ([System.IO.Path]::Combine($RepoRoot, $package.DirectoryPath)) $setupScript = Join-Path $packageDirectory "Test-Setup.ps1" if (Test-Path $setupScript) { Write-Host "`n`nRunning test setup script for package: '$($package.Name)'`n" Invoke-LoggedCommand $setupScript -GroupOutput if (!$? -ne 0) { Write-Error "Test setup script failed for package: '$($package.Name)'" exit 1 } } Write-Host "`n`nTesting package: '$($package.Name)'`n" Invoke-LoggedCommand "cargo build --keep-going" -GroupOutput Write-Host "`n`n" Invoke-LoggedCommand "cargo test --doc --no-fail-fast" -GroupOutput Write-Host "`n`n" Invoke-LoggedCommand "cargo test --all-targets --no-fail-fast" -GroupOutput Write-Host "`n`n" $cleanupScript = Join-Path $packageDirectory "Test-Cleanup.ps1" if (Test-Path $cleanupScript) { Write-Host "`n`nRunning test cleanup script for package: '$($package.Name)'`n" Invoke-LoggedCommand $cleanupScript -GroupOutput # We ignore the exit code of the cleanup script. } } finally { Pop-Location } }