54 lines
1.5 KiB
PowerShell
54 lines
1.5 KiB
PowerShell
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"
|
|
} |