Skip to content

Commit

Permalink
Rebuilt at version v1.2.1
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewrdavidson committed Jan 23, 2021
1 parent 0f30c24 commit d0ee80e
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 38 deletions.
2 changes: 1 addition & 1 deletion PSQualityCheck.Functions.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#
# Generated by: Andrew Davidson
#
# Generated on: 22/01/2021
# Generated on: 23/01/2021
#

@{
Expand Down
2 changes: 1 addition & 1 deletion PSQualityCheck.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#
# Generated by: Andrew Davidson
#
# Generated on: 22/01/2021
# Generated on: 23/01/2021
#

@{
Expand Down
100 changes: 64 additions & 36 deletions PSQualityCheck.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,14 @@ function Invoke-PSQualityCheck {
.PARAMETER ShowCheckResults
Show a summary of the Check results at the end of processing
Note: this cannot be used with -Passthru
.PARAMETER ExportCheckResults
Exports the Check results at the end of processing to file
.PARAMETER Passthru
Returns the Check results objects back to the caller
Note: this cannot be used with -ShowCheckResults
.PARAMETER PesterConfiguration
A Pester configuration object to allow configuration of Pester
Expand Down Expand Up @@ -140,11 +142,23 @@ function Invoke-PSQualityCheck {

$modulePath = (Get-Module -Name 'PSQualityCheck').ModuleBase

# Analyse the incoming Path and File parameters and produce a list of Modules and Scripts
# Validate any incoming parameters for clashes
if ($PSBoundParameters.ContainsKey('ShowCheckResults') -and $PSBoundParameters.ContainsKey('Passthru')) {

Write-Error "-ShowCheckResults and -Passthru cannot be used at the same time"
break

}

$scriptsToTest = @()
$modulesToTest = @()

$projectResults = $null
$moduleResults = $null
$extractionResults = $null
$extractedScriptResults = $null
$scriptResults = $null

if ($PSBoundParameters.ContainsKey('PesterConfiguration') -and $PesterConfiguration -is [PesterConfiguration]) {

# left here so that we can over-ride passed in object with values we require
Expand All @@ -160,34 +174,16 @@ function Invoke-PSQualityCheck {
$PesterConfiguration.Should.ErrorAction = 'Stop'
}

# Analyse the incoming Path and File parameters and produce a list of Modules and Scripts
if ($PSBoundParameters.ContainsKey('Path') -or $PSBoundParameters.ContainsKey('ProjectPath')) {

if ($PSBoundParameters.ContainsKey('ProjectPath')) {

# ProjectPath
# |
# -Source
# | |
# | -Module
# | | |
# | | -Public
# | | -Private
# | -Module
# | |
# | -Public
# | -Private
# -Tests
# |
# -Unit
# |
# -Module
# -Module

if (Test-Path -Path $ProjectPath) {

$container1 = New-PesterContainer -Path (Join-Path -Path $modulePath -ChildPath 'Checks\Project.Tests.ps1') -Data @{ Path = $ProjectPath }
$PesterConfiguration.Run.Container = $container1
$moduleResults = Invoke-Pester -Configuration $PesterConfiguration
$projectResults = Invoke-Pester -Configuration $PesterConfiguration

# setup the rest of the Path based tests
$Path = Join-Path -Path $ProjectPath -ChildPath "Source"
Expand Down Expand Up @@ -343,11 +339,6 @@ function Invoke-PSQualityCheck {

}

$moduleResults = $null
$extractionResults = $null
$extractedScriptResults = $null
$scriptResults = $null

if ($modulesToTest.Count -ge 1) {

# Location of files extracted from any passed modules
Expand Down Expand Up @@ -378,6 +369,13 @@ function Invoke-PSQualityCheck {
$extractedScriptResults = Invoke-Pester -Configuration $PesterConfiguration
}

# Tidy up and temporary paths that have been used

if ( Test-Path -Path $ExtractPath -ErrorAction SilentlyContinue) {
Get-ChildItem -Path $ExtractPath -Recurse -ErrorAction SilentlyContinue | Remove-Item -Force -Recurse
Remove-Item $ExtractPath -Force -ErrorAction SilentlyContinue
}

}

if ($scriptsToTest.Count -ge 1 -and $runScriptCheck -eq $true) {
Expand All @@ -389,23 +387,42 @@ function Invoke-PSQualityCheck {

}

# Show/Export results in the various formats

if ($PSBoundParameters.ContainsKey('ShowCheckResults')) {

$qualityCheckResults = @()
$filesTested = $total = $passed = $failed = $skipped = 0

if ($null -ne $projectResults) {
$qualityCheckResults +=
@{
'Test' = 'Project Tests'
'Files Tested' = 0
'Total' = ($projectResults.TotalCount - $projectResults.NotRunCount)
'Passed' = $projectResults.PassedCount
'Failed' = $projectResults.FailedCount
'Skipped' = $projectResults.SkippedCount
}
$filesTested += 0
$total += ($projectResults.TotalCount - $projectResults.NotRunCount)
$passed += $projectResults.PassedCount
$failed += $projectResults.FailedCount
$skipped += $projectResults.SkippedCount
}

if ($null -ne $moduleResults) {
$qualityCheckResults +=
@{
'Test' = 'Module Tests'
'Files Tested' = $ModulesToTest.Count
'Total' = $moduleResults.TotalCount
'Total' = ($moduleResults.TotalCount - $moduleResults.NotRunCount)
'Passed' = $moduleResults.PassedCount
'Failed' = $moduleResults.FailedCount
'Skipped' = $moduleResults.SkippedCount
}
$filesTested += $ModulesToTest.Count
$total += $moduleResults.TotalCount
$total += ($moduleResults.TotalCount - $moduleResults.NotRunCount)
$passed += $moduleResults.PassedCount
$failed += $moduleResults.FailedCount
$skipped += $moduleResults.SkippedCount
Expand All @@ -416,12 +433,12 @@ function Invoke-PSQualityCheck {
@{
'Test' = 'Extracting functions'
'Files Tested' = $ModulesToTest.Count
'Total' = $extractionResults.TotalCount
'Total' = ($extractionResults.TotalCount - $extractionResults.NotRunCount)
'Passed' = $extractionResults.PassedCount
'Failed' = $extractionResults.FailedCount
'Skipped' = $extractionResults.SkippedCount
}
$total += $extractionResults.TotalCount
$total += ($extractionResults.TotalCount - $extractionResults.NotRunCount)
$passed += $extractionResults.PassedCount
$failed += $extractionResults.FailedCount
$skipped += $extractionResults.SkippedCount
Expand All @@ -432,13 +449,13 @@ function Invoke-PSQualityCheck {
@{
'Test' = 'Extracted function script tests'
'Files Tested' = $extractedScriptsToTest.Count
'Total' = $extractedScriptResults.TotalCount
'Total' = ($extractedScriptResults.TotalCount - $extractedScriptResults.NotRunCount)
'Passed' = $extractedScriptResults.PassedCount
'Failed' = $extractedScriptResults.FailedCount
'Skipped' = $extractedScriptResults.SkippedCount
}
$filesTested += $extractedScriptsToTest.Count
$total += $extractedScriptResults.TotalCount
$total += ($extractedScriptResults.TotalCount - $extractedScriptResults.NotRunCount)
$passed += $extractedScriptResults.PassedCount
$failed += $extractedScriptResults.FailedCount
$skipped += $extractedScriptResults.SkippedCount
Expand All @@ -449,13 +466,13 @@ function Invoke-PSQualityCheck {
@{
'Test' = "Script Tests"
'Files Tested' = $scriptsToTest.Count
'Total' = $scriptResults.TotalCount
'Total' = ($scriptResults.TotalCount - $scriptResults.NotRunCount)
'Passed' = $scriptResults.PassedCount
'Failed' = $scriptResults.FailedCount
'Skipped' = $scriptResults.SkippedCount
}
$filesTested += $scriptsToTest.Count
$total += $scriptResults.TotalCount
$total += ($scriptResults.TotalCount - $scriptResults.NotRunCount)
$passed += $scriptResults.PassedCount
$failed += $scriptResults.FailedCount
$skipped += $scriptResults.SkippedCount
Expand Down Expand Up @@ -490,17 +507,28 @@ function Invoke-PSQualityCheck {

if ($PSBoundParameters.ContainsKey('ExportCheckResults')) {

$projectResults | Export-Clixml -Path "projectResults.xml"
$moduleResults | Export-Clixml -Path "moduleResults.xml"
$extractionResults | Export-Clixml -Path "extractionResults.xml"
$scriptsToTest | Export-Clixml -Path "scriptsToTest.xml"
$scriptResults | Export-Clixml -Path "scriptsToTest.xml"
$extractedScriptResults | Export-Clixml -Path "extractedScriptResults.xml"

}

if ($PSBoundParameters.ContainsKey('Passthru')) {

if ($PesterConfiguration.Run.PassThru.Value -eq $true) {
return $moduleResults, $extractionResults, $scriptsToTest, $extractedScriptResults

$resultObject = @{
'project' = $projectResults
'module' = $moduleResults
'extraction' = $extractionResults
'script' = $scriptResults
'extractedscript' = $extractedScriptResults
}

return $resultObject

}
else {
Write-Error "Unable to pass back result objects. Passthru not enabled in Pester Configuration object"
Expand Down

0 comments on commit d0ee80e

Please sign in to comment.