11# spell-checker:ignore excludeme
2- BeforeDiscovery {
3- if ($null -eq $env: BHProjectPath ) {
4- $path = Join-Path - Path $PSScriptRoot - ChildPath ' ..\build.ps1'
5- . $path - Task Build
6- }
7- $manifest = Import-PowerShellDataFile - Path $env: BHPSModuleManifest
8- $outputDir = Join-Path - Path $env: BHProjectPath - ChildPath ' Output'
9- $outputModDir = Join-Path - Path $outputDir - ChildPath $env: BHProjectName
10- $outputModVerDir = Join-Path - Path $outputModDir - ChildPath $manifest.ModuleVersion
11- $global :outputModVerManifest = Join-Path - Path $outputModVerDir - ChildPath " $ ( $env: BHProjectName ) .psd1"
12-
13- # Get module commands
14- # Remove all versions of the module from the session. Pester can't handle multiple versions.
15- Get-Module $env: BHProjectName | Remove-Module - Force - ErrorAction Ignore
16- Import-Module - Name $outputModVerManifest - Verbose:$false - ErrorAction Stop
17- }
182Describe ' Build' {
19- BeforeAll {
20- <#
21- We prepare the tests by copying the TestModule to a temporary location
22- and setting the output path to a known location.
23- #>
3+ BeforeDiscovery {
4+ if ($null -eq $env: BHProjectPath ) {
5+ $path = Join-Path - Path $PSScriptRoot - ChildPath ' ..\build.ps1'
6+ . $path - Task Build
7+ }
8+ $manifest = Import-PowerShellDataFile - Path $env: BHPSModuleManifest
9+ $outputDir = Join-Path - Path $env: BHProjectPath - ChildPath ' Output'
10+ $outputModDir = Join-Path - Path $outputDir - ChildPath $env: BHProjectName
11+ $outputModVerDir = Join-Path - Path $outputModDir - ChildPath $manifest.ModuleVersion
12+ $global :outputModVerManifest = Join-Path - Path $outputModVerDir - ChildPath " $ ( $env: BHProjectName ) .psd1"
13+
14+ # Get module commands
15+ # Remove all versions of the module from the session. Pester can't handle multiple versions.
16+ Get-Module $env: BHProjectName | Remove-Module - Force - ErrorAction Ignore
17+ Import-Module - Name $outputModVerManifest - Verbose:$false - ErrorAction Stop
18+ }
2419
20+ BeforeAll {
2521 $script :testModuleSource = Join-Path $TestDrive ' TestModule'
26- Copy -Item $PSScriptRoot / fixtures / TestModule $script :testModuleSource - Recurse
27- Set-Location $ script :testModuleSource
22+ New -Item - Path $script :testModuleSource - ItemType Directory - Force | Out-Null
23+ Copy-Item $PSScriptRoot / fixtures / TestModule /* $ script :testModuleSource - Recurse
2824 $script :testModuleOutputPath = [IO.Path ]::Combine($script :testModuleSource , ' Output' , ' TestModule' , ' 0.1.0' )
2925
30- # Capture any of the jobs for cleanup later
31- [array ]$script :jobs = @ ()
32- }
33-
34- AfterAll {
35- Set-Location $PSScriptRoot
26+ <# Hack for GH Actions
27+ # For some reason, the TestModule build process create the output in the project root
28+ # and not relative to it's own build file.
29+ if ($env:GITHUB_ACTION) {
30+ $script:testModuleSource = [IO.Path]::Combine($PSScriptRoot, 'Fixtures', 'TestModule')
31+ $script:testModuleOutputPath = [IO.Path]::Combine($env:BHProjectPath, 'Output', 'TestModule', '0.1.0')
32+ } else {
33+ $script:testModuleSource = [IO.Path]::Combine($PSScriptRoot, 'Fixtures', 'TestModule')
34+ $script:testModuleOutputPath = [IO.Path]::Combine($script:testModuleSource, 'Output', 'TestModule', '0.1.0')
35+ }#>
3636 }
3737
3838 Context ' Compile module' {
3939 BeforeAll {
40- Write-Host " PSScriptRoot: $script :testModuleSource "
40+ Write-Host " PSScriptRoot: $PSScriptRoot "
4141 Write-Host " OutputPath: $script :testModuleOutputPath "
4242
4343 # build is PS job so psake doesn't freak out because it's nested
44- $script :jobs += Start-Job - ScriptBlock {
45- param ($testModuleSource , $outputModVerManifest )
44+ Start-Job - Scriptblock {
4645 Set-Location - Path $using :testModuleSource
4746 # We want to load the current build of PowerShellBuild so we use a
4847 # global variable to store the output path.
49- $global :PSBOutput = $outputModVerManifest
48+ $global :PSBOutput = $using : outputModVerManifest
5049 $global :PSBuildCompile = $true
5150 ./ build.ps1 - Task Build
52- } - WorkingDirectory $script :testModuleSource - ArgumentList $testModuleSource , $outputModVerManifest | Wait-Job
53- }
54- AfterAll {
55- Remove-Item $script :testModuleOutputPath - Recurse - Force
56- $jobs | Stop-Job - ErrorAction Ignore
57- $jobs | Remove-Job - ErrorAction Ignore
51+ } - WorkingDirectory $script :testModuleSource | Wait-Job
5852 }
5953
6054 It ' Creates module' {
@@ -105,20 +99,14 @@ Describe 'Build' {
10599 # Overwrite the existing PSM1 with the dot-sourced version
106100 Copy-Item @copyItemSplat
107101 # build is PS job so psake doesn't freak out because it's nested
108- $script :jobs += Start-Job - ScriptBlock {
109- param ($testModuleSource , $outputModVerManifest )
110- Set-Location - Path $testModuleSource
102+ Start-Job - Scriptblock {
103+ Set-Location - Path $using :testModuleSource
111104 # We want to load the current build of PowerShellBuild so we use a
112105 # global variable to store the output path.
113- $global :PSBOutput = $outputModVerManifest
106+ $global :PSBOutput = $using : outputModVerManifest
114107 $global :PSBuildCompile = $false
115108 ./ build.ps1 - Task Build
116- } - WorkingDirectory $script :testModuleSource - ArgumentList $testModuleSource , $outputModVerManifest | Wait-Job
117- }
118- AfterAll {
119- Remove-Item $script :testModuleOutputPath - Recurse - Force
120- $jobs | Stop-Job - ErrorAction Ignore
121- $jobs | Remove-Job - ErrorAction Ignore
109+ } - WorkingDirectory $script :testModuleSource | Wait-Job
122110 }
123111
124112 It ' Creates module' {
@@ -139,7 +127,7 @@ Describe 'Build' {
139127 }
140128
141129 It ' Has MAML help XML' {
142- [ IO.Path ]::Combine( $script :testModuleOutputPath , " en-US" , " TestModule-help.xml" ) | Should - Exist
130+ " $script :testModuleOutputPath / en-US/ TestModule-help.xml" | Should - Exist
143131 }
144132 }
145133 Context ' Overwrite Docs' {
@@ -155,16 +143,15 @@ Describe 'Build' {
155143 }
156144 # Overwrite the existing PSM1 with the dot-sourced version
157145 Copy-Item @copyItemSplat
158- # Build once, and then we'll modify
159- $script :jobs += Start-Job - ScriptBlock {
160- param ($testModuleSource , $outputModVerManifest )
146+ # build is PS job so psake doesn't freak out because it's nested
147+ Start-Job - Scriptblock {
161148 Set-Location - Path $using :testModuleSource
162149 # We want to load the current build of PowerShellBuild so we use a
163150 # global variable to store the output path.
164- $global :PSBOutput = $global :outputModVerManifest
151+ $global :PSBOutput = $using :outputModVerManifest
165152 $global :PSBuildCompile = $false
166153 ./ build.ps1 - Task Build
167- } - WorkingDirectory $script :testModuleSource - ArgumentList $testModuleSource , $outputModVerManifest | Wait-Job
154+ } - WorkingDirectory $script :testModuleSource | Wait-Job
168155
169156 # Replace with a different string to test the overwrite
170157 $script :docPath = [IO.Path ]::Combine($script :testModuleSource , " docs" , " en-US" , " Get-HelloWorld.md" )
@@ -179,26 +166,19 @@ Describe 'Build' {
179166 Set-Content $psakeFile - Value $psakeFileContent - Force
180167
181168 # build is PS job so psake doesn't freak out because it's nested
182- $script :jobs += Start-Job - ScriptBlock {
183- param ($testModuleSource , $outputModVerManifest )
169+ Start-Job - Scriptblock {
184170 Set-Location - Path $using :testModuleSource
185171 # We want to load the current build of PowerShellBuild so we use a
186172 # global variable to store the output path.
187- $global :PSBOutput = $global :outputModVerManifest
173+ $global :PSBOutput = $using :outputModVerManifest
188174 $global :PSBuildCompile = $false
189175 ./ build.ps1 - Task Build
190- } - WorkingDirectory $script :testModuleSource - ArgumentList $testModuleSource , $outputModVerManifest | Wait-Job
191- }
192-
193- AfterAll {
194- Remove-Item $script :testModuleOutputPath - Recurse - Force
195- $jobs | Stop-Job - ErrorAction Ignore
196- $jobs | Remove-Job - ErrorAction Ignore
176+ } - WorkingDirectory $script :testModuleSource | Wait-Job
197177 }
198178
199179 It ' Can Overwrite the Docs' {
200180 # Test that the file reset as expected
201- Get-Content $script :docPath - Raw | Should - BeExactly $ script :original
181+ Get-Content $script :docPath - Raw | Should -Not - Contain ' Hello Universe '
202182 }
203183 }
204184}
0 commit comments