TestFunctions.ps1
<# .SYNOPSIS Test if string is a valid string. .INPUTS String or $null .OUTPUTS True if string is not null. #> function Test-String { param ( [Parameter(Mandatory = $false, Position = 0)][string]$Value ) return -Not([System.String]::IsNullOrWhiteSpace($Value)) } <# .SYNOPSIS Test git repo has any changes or state is dirty. .INPUTS None .OUTPUTS True if git changes were not found. #> function Test-GitState { [CmdletBinding()] param ( [Parameter(Mandatory = $false, Position = 0)][switch]$ShowMessage = $false ) $hasDiff = ( git diff-index HEAD -- ).Count -gt 0 if ($hasDiff -and $ShowMessage) { Write-Error "You have uncommitted git changes." } -Not($hasDiff) } <# .SYNOPSIS Test git has tags. .INPUTS None .OUTPUTS True if git has tags. #> function Test-SemVer { param( # If specified, show help message if missing tags. [Parameter(Mandatory = $false, Position = 0)][switch]$ShowMessage = $false ) $hasVer = ( git tag ).Count -gt 0 if ($ShowMessage -and -Not($hasVer)) { Write-Warning "No version found. See 'Set-SemVer' for instructions on how to tag a version." } return $hasVer } <# .SYNOPSIS Test config override. .INPUTS None .OUTPUTS True if .semver.[yaml|yml] exists. #> function Test-SemVerOverride { if (Test-Path ./.semver.yml) { Write-Warning "Please rename .semver.yml to .semver.yaml." } (Test-Path ./.semver.yml, ./.semver.yaml1 | Where-Object { $_ -eq $true }).Count -gt 0 } <# .SYNOPSIS ??? #> function Test-Function { param( [Parameter(Mandatory)][scriptblock]$fun, [Parameter(Mandatory)][string]$msg ) $result = $fun.Invoke() -Not($result) | Where-Object { Write-Error $msg } return $result } |