Private/Add-PlumberTaskGroup.ps1
|
function Add-PlumberTaskGroup { <# .SYNOPSIS Adds a built-in Plumber task group and its enabled children. #> [CmdletBinding()] param ( [Parameter(Mandatory)] [hashtable] $TaskGroup, [Parameter(Mandatory)] [string] $TaskRoot ) $parentRunWhen = Get-PlumberTaskRunWhen -Name $TaskGroup.Parent $parentShouldRun = Test-PlumberTaskShouldRun -Name $TaskGroup.Parent -RunWhen $parentRunWhen if (-not $parentShouldRun) { $parentSplat = @{ Name = $TaskGroup.Parent Path = "$($TaskGroup.Parent)/$($TaskGroup.Parent).ps1" TaskRoot = $TaskRoot Parent = 'Validate' } Add-PlumberTask @parentSplat return } # CodeCoverage measures PesterUnit's test run, so it cannot run when # PesterUnit does not. Resolve PesterUnit's policy up front rather than # relying on it appearing before CodeCoverage in the child ordering. $pesterUnitRuns = $true if ($TaskGroup.Children -contains 'CodeCoverage') { $pesterUnitRunWhen = Get-PlumberTaskRunWhen -Name 'PesterUnit' $pesterUnitRuns = Test-PlumberTaskShouldRun -Name 'PesterUnit' -RunWhen $pesterUnitRunWhen } foreach ($childTask in $TaskGroup.Children) { $childSplat = @{ Name = $childTask Path = "$($TaskGroup.Parent)/$childTask.ps1" TaskRoot = $TaskRoot Parent = $TaskGroup.Parent } if ($childTask -eq 'CodeCoverage' -and -not $pesterUnitRuns) { $childSplat.SkipReason = ( 'Skipping CodeCoverage: PesterUnit does not run, ' + 'so there is no test run to measure.' ) } Add-PlumberTask @childSplat } if (-not $script:PlumberTaskJobs[$TaskGroup.Parent]) { return } $parentSplat = @{ Name = $TaskGroup.Parent Path = "$($TaskGroup.Parent)/$($TaskGroup.Parent).ps1" TaskRoot = $TaskRoot Parent = 'Validate' } Add-PlumberTask @parentSplat } |