PSPesterTest.psm1

# .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
    }
}