PSPesterTest.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# .EXTERNALHELP PSPesterTest.psm1-Help.xml
Function Test-ImportModule
{
    [CmdletBinding()]
    Param (
        [Parameter(ParameterSetName = 'ProduceOutputFile', Mandatory=$true)]
        [Parameter(ParameterSetName = 'NoOutputFile', Mandatory=$true)]
        [validateScript({Test-Path $_})][string]$ModulePath,
        [Parameter(ParameterSetName = 'ProduceOutputFile', Mandatory=$true)][ValidateNotNullOrEmpty()][string]$OutputFile,
        [Parameter(ParameterSetName = 'ProduceOutputFile', Mandatory=$false)][ValidateSet('NUnitXml', 'LegacyNUnitXML')][string]$OutputFormat='NUnitXml'
    )

    $TestFilePath = Join-path $PSScriptRoot '\pester-tests\ImportModule.tests.ps1'
    Write-Verbose "Module Path: '$ModulePath'"
    
    If ($PSCmdlet.ParameterSetName -eq 'ProduceOutputFile')
    {
        $TestResult = Invoke-Pester -Script @{path= $TestFilePath; Parameters = @{ModulePath = $ModulePath}} -OutputFile $OutputFile -OutputFormat $OutputFormat -PassThru
        #Invoke-Pester -TestName $TestName -OutputFile $OutputFile -OutputFormat $OutputFormat
    } else {
        $TestResult = Invoke-Pester -Script @{path= $TestFilePath; Parameters = @{ModulePath = $ModulePath}} -PassThru
        #Invoke-Pester -TestName $TestName
    }
    If ($TestResult.TestResult.Result -ieq 'failed')
    {
        Write-Error "Test failed."
        #exit 1
    }
}

# .EXTERNALHELP PSPesterTest.psm1-Help.xml
Function Test-PSScriptAnalyzerRule
{
    [CmdletBinding()]
    Param (
        [Parameter(ParameterSetName = 'ProduceOutputFile', Mandatory=$true)]
        [Parameter(ParameterSetName = 'NoOutputFile', Mandatory=$true)]
        [validateScript({Test-Path $_})][string]$Path,

        [Parameter(ParameterSetName = 'ProduceOutputFile', Mandatory=$false)]
        [Parameter(ParameterSetName = 'NoOutputFile', Mandatory=$false)]
        [switch]$recurse,

        [Parameter(ParameterSetName = 'ProduceOutputFile', Mandatory=$false)]
        [Parameter(ParameterSetName = 'NoOutputFile', Mandatory=$false)]
        [validateScript({Test-Path $_ -PathType Container})][string]$CustomRulePath,

        [Parameter(ParameterSetName = 'ProduceOutputFile', Mandatory=$false)]
        [Parameter(ParameterSetName = 'NoOutputFile', Mandatory=$false)]
        [validateSet('Information', 'Warning','Error')][string]$MinimumSeverityLevel = 'Error',

        [Parameter(ParameterSetName = 'ProduceOutputFile', Mandatory=$true)][ValidateNotNullOrEmpty()][string]$OutputFile,
        
        [Parameter(ParameterSetName = 'ProduceOutputFile', Mandatory=$false)][ValidateSet('NUnitXml', 'LegacyNUnitXML')][string]$OutputFormat='NUnitXml'
    )

    $TestFilePath = Join-path $PSScriptRoot '\pester-tests\PSScriptAnalyzer.tests.ps1'
    Write-Verbose "Script Path: '$Path'"
    
    $PesterParameters = $PSBoundParameters
    [void]$PesterParameters.Remove('OutputFile')
    [void]$PesterParameters.Remove('OutputFormat')
    If ($PSCmdlet.ParameterSetName -eq 'ProduceOutputFile')
    {
        $TestResult = Invoke-Pester -Script @{path= $TestFilePath; Parameters = $PesterParameters} -OutputFile $OutputFile -OutputFormat $OutputFormat -PassThru
    } else {
        $TestResult = Invoke-Pester -Script @{path= $TestFilePath; Parameters = $PesterParameters} -PassThru
    }
    If ($TestResult.TestResult.Result -ieq 'failed')
    {
        Write-Error "Test failed."
        #exit 1
    }
}