ps/Modules/Test-File.ps1

54 lines
1.5 KiB
PowerShell
Raw Permalink Normal View History

2023-05-30 22:51:22 -07:00
param(
[Parameter(Mandatory = $true)]
[string]$FileToTest,
[Parameter(Mandatory = $false)]
[switch]$Coverage,
[Parameter(Mandatory = $false)]
[switch]$Fast
)
Write-Host "File to Test: $FileToTest"
$FileToTest = Resolve-Path $FileToTest
$fileName = Split-Path $FileToTest -leaf
$filePath = Split-Path $FileToTest -Parent
if ($fileName -like "*.tests.ps1") {
$functionFile = $FileToTest -replace "\.tests\.ps1", ".ps1"
$testFile = $FileToTest
} else {
$functionFile = $FileToTest
$testFileName = $fileName -replace "\.ps1$", ".tests.ps1"
$testFile = Join-Path $filePath $testFileName
}
Write-Host "Test File: $testFile"
Write-Host "Function: $functionFile"
if ($Coverage.IsPresent) {
#$coverageFile = ($functionFile + ".coverage.xml")
$coverageFile = Join-Path $PSScriptRoot "coverage.xml"
Write-Host "Coverage File: $coverageFile"
}
$testArray = @{ Path = "$testFile"; Parameters = @{ TestSingleFile = $true; FunctionPath = $functionFile } }
Write-Host "Test Parameters:"
($testArray | ConvertTo-JSON -Depth 3)
Write-Host ""
if ($null -eq $coverageFile) {
Write-Host "Invoking: Invoke-Pester -Script <<TestArray>>"
Invoke-Pester -Script $testArray
} else {
Write-Host "Invoking: Invoke-Pester -Script <<TestArray>> -CodeCoverage `"$functionFile`" -CodeCoverageOutputFile `"$coverageFile`""
Invoke-Pester -Script $testArray -CodeCoverage "$functionFile" -CodeCoverageOutputFile "$coverageFile"
}