-
Notifications
You must be signed in to change notification settings - Fork 0
/
TestModule.psm1
52 lines (41 loc) · 1.1 KB
/
TestModule.psm1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<#
.SYNOPSIS
This test module contains functions to assist in unit testing.
.DESCRIPTION
This test module contains functions to assist in unit testing.
.INPUTS
.OUTPUTS
.EXAMPLE
.NOTES
Author: dklempfner@gmail.com
Date: 08/12/2016
#>
function ExecuteTests
{
<#
.SYNOPSIS
Executes all functions in $FilePath
.EXAMPLE
ExecuteTests $MyInvocation.MyCommand.Path
#>
param([Parameter(Mandatory=$true)][String]$FilePath)
[ref]$tokens = $null
[ref]$parseErrors = $null
$ast = [Management.Automation.Language.Parser]::ParseFile($FilePath, $tokens, $parseErrors)
$testFunctionIndicator = 'Test_'
$testFunctions = $ast.EndBlock.Statements | Where-Object { $_.Name -and $_.Name.Substring(0, $testFunctionIndicator.Length) -eq $testFunctionIndicator }
$testFunctions | ForEach-Object { & $_.Name }
}
function OutputTestResult
{
param([Parameter(Mandatory=$true)][Bool]$DidTestPass,
[Parameter(Mandatory=$true)][String]$TestName)
if($DidTestPass)
{
Write-Verbose "$TestName Passed"
}
else
{
Write-Warning "$TestName Failed"
}
}