From d0501f9b3013b96df2eb9d4cf98b7fe1ab264f6f Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 13:48:10 +0200 Subject: [PATCH 01/15] =?UTF-8?q?=F0=9F=A7=AA=20[Test]:=20Assert=20isolate?= =?UTF-8?q?d=20framework=20artifacts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/Workflow-Test-Default.yml | 19 +++++++++++++++---- .../workflows/Workflow-Test-WithManifest.yml | 19 +++++++++++++++---- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/.github/workflows/Workflow-Test-Default.yml b/.github/workflows/Workflow-Test-Default.yml index 2bbae66e..2e0facc6 100644 --- a/.github/workflows/Workflow-Test-Default.yml +++ b/.github/workflows/Workflow-Test-Default.yml @@ -80,15 +80,26 @@ jobs: uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: docs - path: tests/srcTestRepo/outputs/docs + path: tests/srcTestRepo/.PSModule/docs - - name: Verify root Functions index is published + - name: Verify framework artifacts are isolated shell: pwsh run: | - $path = 'tests/srcTestRepo/outputs/docs/index.md' + $path = 'tests/srcTestRepo/.PSModule/docs/index.md' if (-not (Test-Path -Path $path)) { throw 'Expected root Functions index at ' + - 'tests/srcTestRepo/outputs/docs/index.md.' + 'tests/srcTestRepo/.PSModule/docs/index.md.' + } + + $legacyPaths = @( + 'tests/srcTestRepo/outputs' + 'tests/srcTestRepo/_site' + ) + + foreach ($legacyPath in $legacyPaths) { + if (Test-Path -Path $legacyPath) { + throw "Legacy framework artifact path exists: $legacyPath" + } } $content = Get-Content -Path $path -Raw diff --git a/.github/workflows/Workflow-Test-WithManifest.yml b/.github/workflows/Workflow-Test-WithManifest.yml index 83829813..7d4559b8 100644 --- a/.github/workflows/Workflow-Test-WithManifest.yml +++ b/.github/workflows/Workflow-Test-WithManifest.yml @@ -80,15 +80,26 @@ jobs: uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: docs - path: tests/srcWithManifestTestRepo/outputs/docs + path: tests/srcWithManifestTestRepo/.PSModule/docs - - name: Verify root Functions index is published + - name: Verify framework artifacts are isolated shell: pwsh run: | - $path = 'tests/srcWithManifestTestRepo/outputs/docs/index.md' + $path = 'tests/srcWithManifestTestRepo/.PSModule/docs/index.md' if (-not (Test-Path -Path $path)) { throw 'Expected root Functions index at ' + - 'tests/srcWithManifestTestRepo/outputs/docs/index.md.' + 'tests/srcWithManifestTestRepo/.PSModule/docs/index.md.' + } + + $legacyPaths = @( + 'tests/srcWithManifestTestRepo/outputs' + 'tests/srcWithManifestTestRepo/_site' + ) + + foreach ($legacyPath in $legacyPaths) { + if (Test-Path -Path $legacyPath) { + throw "Legacy framework artifact path exists: $legacyPath" + } } $content = Get-Content -Path $path -Raw From 5d4447e627cad4b12904f616137f74d7f5ff60ba Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 13:51:41 +0200 Subject: [PATCH 02/15] =?UTF-8?q?=F0=9F=A9=B9=20[Patch]:=20Isolate=20consu?= =?UTF-8?q?mer=20framework=20artifacts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/Build-PSModule/action.yml | 2 +- .../helpers/Build/Build-PSModuleManifest.ps1 | 2 +- .../Build/Build-PSModuleRootModule.ps1 | 2 +- .github/actions/Build-ZensicalSite/README.md | 2 +- .../src/build-zensical-site.ps1 | 13 +++--------- .../actions/Build-ZensicalSite/src/main.ps1 | 21 +++++++------------ .../actions/Document-PSModule/src/main.ps1 | 4 ++-- .github/actions/Inject-SiteScripts/README.md | 2 +- .../actions/Inject-SiteScripts/src/main.ps1 | 2 +- .github/actions/Publish-PSModule/README.md | 4 ++-- .github/actions/Publish-PSModule/action.yml | 2 +- .../tests/Publish-PSModule.Recovery.Tests.ps1 | 4 ++-- .github/actions/Release-PSModule/README.md | 4 ++-- .github/actions/Release-PSModule/action.yml | 2 +- .../tests/Release-PSModule.WhatIf.Tests.ps1 | 4 ++-- .github/actions/Structure-Site/README.md | 2 +- .github/actions/Structure-Site/src/main.ps1 | 8 +++---- .../Structure-Site/src/structure-site.ps1 | 4 ++-- .github/actions/Test-PSModule/src/main.ps1 | 2 +- .github/workflows/Build-Docs.yml | 6 +++--- .github/workflows/Build-Site.yml | 6 +++--- .github/workflows/Publish-Module.yml | 4 ++-- .github/workflows/Test-Module.yml | 6 +++--- .github/workflows/Test-ModuleLocal.yml | 6 +++--- .../guides/skipping-framework-tests.md | 2 +- docs/content/reference/framework-test-ids.md | 2 +- 26 files changed, 52 insertions(+), 66 deletions(-) diff --git a/.github/actions/Build-PSModule/action.yml b/.github/actions/Build-PSModule/action.yml index ba3459da..54840096 100644 --- a/.github/actions/Build-PSModule/action.yml +++ b/.github/actions/Build-PSModule/action.yml @@ -9,7 +9,7 @@ inputs: OutputFolder: description: Path to the folder where the built module is outputted. required: false - default: 'outputs/module' + default: '.PSModule/module' Version: description: Module version to stamp into the manifest. required: true diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleManifest.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleManifest.ps1 index 8e37790f..8ea8d93a 100644 --- a/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleManifest.ps1 +++ b/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleManifest.ps1 @@ -28,7 +28,7 @@ [Parameter(Mandatory)] [string] $ModuleName, - # Folder where the built modules are outputted. 'outputs/modules/MyModule' + # Folder where the built module is outputted. '.PSModule/module/MyModule' [Parameter(Mandatory)] [System.IO.DirectoryInfo] $ModuleOutputFolder, diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleRootModule.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleRootModule.ps1 index 619a5d95..7a70ee93 100644 --- a/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleRootModule.ps1 +++ b/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleRootModule.ps1 @@ -43,7 +43,7 @@ [Parameter(Mandatory)] [string] $ModuleName, - # Folder where the built modules are outputted. 'outputs/modules/MyModule' + # Folder where the built module is outputted. '.PSModule/module/MyModule' [Parameter(Mandatory)] [System.IO.DirectoryInfo] $ModuleOutputFolder ) diff --git a/.github/actions/Build-ZensicalSite/README.md b/.github/actions/Build-ZensicalSite/README.md index f4eb2bb9..21c225ae 100644 --- a/.github/actions/Build-ZensicalSite/README.md +++ b/.github/actions/Build-ZensicalSite/README.md @@ -1,6 +1,6 @@ # Build-ZensicalSite -Builds Zensical documentation site output and normalizes it to `/_site`. +Builds Zensical documentation site output at `/.PSModule/site/_site`. ## Inputs diff --git a/.github/actions/Build-ZensicalSite/src/build-zensical-site.ps1 b/.github/actions/Build-ZensicalSite/src/build-zensical-site.ps1 index 090f1a09..58c19738 100644 --- a/.github/actions/Build-ZensicalSite/src/build-zensical-site.ps1 +++ b/.github/actions/Build-ZensicalSite/src/build-zensical-site.ps1 @@ -6,24 +6,17 @@ param( $ErrorActionPreference = 'Stop' $resolvedWorkingDirectory = Resolve-Path -Path $WorkingDirectory | Select-Object -ExpandProperty Path -$siteWorkingDirectory = Join-Path -Path $resolvedWorkingDirectory -ChildPath 'outputs/site' -$outputSitePath = Join-Path -Path $resolvedWorkingDirectory -ChildPath '_site' +$siteWorkingDirectory = Join-Path -Path $resolvedWorkingDirectory -ChildPath '.PSModule/site' +$outputSitePath = Join-Path -Path $siteWorkingDirectory -ChildPath '_site' Set-Location -Path $siteWorkingDirectory if (-not (Test-Path -Path 'zensical.toml')) { - throw "No documentation config file found in outputs/site. Expected zensical.toml." + throw "No documentation config file found in .PSModule/site. Expected zensical.toml." } zensical build --config-file 'zensical.toml' -if (Test-Path -Path '_site') { - if (Test-Path -Path $outputSitePath) { - Remove-Item -Path $outputSitePath -Recurse -Force - } - Move-Item -Path '_site' -Destination $outputSitePath -Force -} - if (-not (Test-Path -Path $outputSitePath)) { throw "Expected Zensical output at $outputSitePath but it was not created." } diff --git a/.github/actions/Build-ZensicalSite/src/main.ps1 b/.github/actions/Build-ZensicalSite/src/main.ps1 index 080a8dea..365482df 100644 --- a/.github/actions/Build-ZensicalSite/src/main.ps1 +++ b/.github/actions/Build-ZensicalSite/src/main.ps1 @@ -2,11 +2,11 @@ <# .SYNOPSIS - Builds the Zensical site and normalizes output to the expected _site path. + Builds the Zensical site under the framework artifact directory. .DESCRIPTION - Runs zensical build from outputs/site and moves the generated _site directory - to /_site for downstream workflow steps. + Runs zensical build from .PSModule/site. The generated site remains at + /.PSModule/site/_site for downstream workflow steps. .EXAMPLE ./main.ps1 -WorkingDirectory '.' @@ -19,7 +19,7 @@ #> [CmdletBinding()] param( - # Build working directory containing outputs/site and destination _site. + # Build working directory containing the Zensical project and output. [Parameter(Mandatory)] [string]$WorkingDirectory ) @@ -27,24 +27,17 @@ param( $ErrorActionPreference = 'Stop' $resolvedWorkingDirectory = Resolve-Path -Path $WorkingDirectory | Select-Object -ExpandProperty Path -$siteWorkingDirectory = Join-Path -Path $resolvedWorkingDirectory -ChildPath 'outputs/site' -$outputSitePath = Join-Path -Path $resolvedWorkingDirectory -ChildPath '_site' +$siteWorkingDirectory = Join-Path -Path $resolvedWorkingDirectory -ChildPath '.PSModule/site' +$outputSitePath = Join-Path -Path $siteWorkingDirectory -ChildPath '_site' Set-Location -Path $siteWorkingDirectory if (-not (Test-Path -Path 'zensical.toml')) { - throw "No documentation config file found in outputs/site. Expected zensical.toml." + throw "No documentation config file found in .PSModule/site. Expected zensical.toml." } zensical build --config-file 'zensical.toml' -if (Test-Path -Path '_site') { - if (Test-Path -Path $outputSitePath) { - Remove-Item -Path $outputSitePath -Recurse -Force - } - Move-Item -Path '_site' -Destination $outputSitePath -Force -} - if (-not (Test-Path -Path $outputSitePath)) { throw "Expected Zensical output at $outputSitePath but it was not created." } diff --git a/.github/actions/Document-PSModule/src/main.ps1 b/.github/actions/Document-PSModule/src/main.ps1 index d9a1d877..9e58cce5 100644 --- a/.github/actions/Document-PSModule/src/main.ps1 +++ b/.github/actions/Document-PSModule/src/main.ps1 @@ -40,8 +40,8 @@ Get-ChildItem -Path $path -Filter '*.ps1' -Recurse | Resolve-Path -Relative | Fo Write-Host '::group::Loading inputs' $env:GITHUB_REPOSITORY_NAME = $env:GITHUB_REPOSITORY -replace '.+/' $moduleSourceFolderPath = Resolve-Path -Path 'src' | Select-Object -ExpandProperty Path -$modulesOutputFolderPath = Join-Path -Path . -ChildPath 'outputs/module' -$docsOutputFolderPath = Join-Path -Path . -ChildPath 'outputs/docs' +$modulesOutputFolderPath = Join-Path -Path . -ChildPath '.PSModule/module' +$docsOutputFolderPath = Join-Path -Path . -ChildPath '.PSModule/docs' $params = @{ ModuleName = [string]::IsNullOrEmpty($Name) ? $env:GITHUB_REPOSITORY_NAME : $Name diff --git a/.github/actions/Inject-SiteScripts/README.md b/.github/actions/Inject-SiteScripts/README.md index 9c75bdb1..4cfa8017 100644 --- a/.github/actions/Inject-SiteScripts/README.md +++ b/.github/actions/Inject-SiteScripts/README.md @@ -13,6 +13,6 @@ Injects JavaScript snippets from `.github/scripts/site-injectors/*.js` into gene - name: Inject shared site scripts uses: ./_wf/.github/actions/Inject-SiteScripts with: - SitePath: ./_site + SitePath: ./.PSModule/site/_site WorkflowPath: _wf ``` diff --git a/.github/actions/Inject-SiteScripts/src/main.ps1 b/.github/actions/Inject-SiteScripts/src/main.ps1 index 6fcdad0d..8bc4fbe8 100644 --- a/.github/actions/Inject-SiteScripts/src/main.ps1 +++ b/.github/actions/Inject-SiteScripts/src/main.ps1 @@ -9,7 +9,7 @@ repository and injects each script into every HTML file under SitePath, once per file. .EXAMPLE - ./main.ps1 -SitePath './_site' -WorkflowPath '_wf' + ./main.ps1 -SitePath './.PSModule/site/_site' -WorkflowPath '_wf' .INPUTS None. diff --git a/.github/actions/Publish-PSModule/README.md b/.github/actions/Publish-PSModule/README.md index 6b97fed0..99602dfb 100644 --- a/.github/actions/Publish-PSModule/README.md +++ b/.github/actions/Publish-PSModule/README.md @@ -7,7 +7,7 @@ Publishes a pre-versioned PowerShell module artifact to the PowerShell Gallery. | Name | Description | Required | Default | | --- | --- | --- | --- | | `Name` | Name of the module to publish. | No | Repository name | -| `ModulePath` | Path containing the built `/` module directory. | No | `outputs/module` | +| `ModulePath` | Path containing the built `/` module directory. | No | `.PSModule/module` | | `ArtifactName` | Name of the module artifact to download. | No | `module` | | `PSGALLERY_API_KEY` | PowerShell Gallery API key. | Yes | N/A | | `WhatIf` | Logs publishing operations without publishing the module. | No | `false` | @@ -24,7 +24,7 @@ This action does not provide outputs. uses: ./.github/actions/Publish-PSModule with: Name: ExampleModule - ModulePath: outputs/module + ModulePath: .PSModule/module ArtifactName: module PSGALLERY_API_KEY: ${{ secrets.PSGALLERY_API_KEY }} ``` diff --git a/.github/actions/Publish-PSModule/action.yml b/.github/actions/Publish-PSModule/action.yml index b56277af..d21604d1 100644 --- a/.github/actions/Publish-PSModule/action.yml +++ b/.github/actions/Publish-PSModule/action.yml @@ -9,7 +9,7 @@ inputs: ModulePath: description: Path to the folder containing the / module subdirectory from Build-PSModule. required: false - default: outputs/module + default: .PSModule/module PSGALLERY_API_KEY: description: PowerShell Gallery API Key. required: true diff --git a/.github/actions/Publish-PSModule/tests/Publish-PSModule.Recovery.Tests.ps1 b/.github/actions/Publish-PSModule/tests/Publish-PSModule.Recovery.Tests.ps1 index 859e0539..80368687 100644 --- a/.github/actions/Publish-PSModule/tests/Publish-PSModule.Recovery.Tests.ps1 +++ b/.github/actions/Publish-PSModule/tests/Publish-PSModule.Recovery.Tests.ps1 @@ -42,7 +42,7 @@ Describe 'Publish-PSModule recovery' { BeforeEach { $script:moduleName = 'TestModule' $script:workspacePath = Join-Path -Path $TestDrive -ChildPath 'workspace' - $script:modulePath = Join-Path -Path $script:workspacePath -ChildPath "outputs/module/$script:moduleName" + $script:modulePath = Join-Path -Path $script:workspacePath -ChildPath ".PSModule/module/$script:moduleName" $manifestPath = Join-Path -Path $script:modulePath -ChildPath "$script:moduleName.psd1" $eventPath = Join-Path -Path $TestDrive -ChildPath 'event.json' $null = New-Item -Path $script:modulePath -ItemType Directory -Force @@ -68,7 +68,7 @@ Describe 'Publish-PSModule recovery' { $env:GITHUB_REPOSITORY = "PSModule/$script:moduleName" $env:GITHUB_WORKSPACE = $script:workspacePath $env:PSMODULE_PUBLISH_PSMODULE_INPUT_Name = $script:moduleName - $env:PSMODULE_PUBLISH_PSMODULE_INPUT_ModulePath = 'outputs/module' + $env:PSMODULE_PUBLISH_PSMODULE_INPUT_ModulePath = '.PSModule/module' $env:PSMODULE_PUBLISH_PSMODULE_INPUT_PSGALLERY_API_KEY = 'test-key' $env:PSMODULE_PUBLISH_PSMODULE_INPUT_PullRequest = '' $env:PSMODULE_PUBLISH_PSMODULE_INPUT_WhatIf = 'false' diff --git a/.github/actions/Release-PSModule/README.md b/.github/actions/Release-PSModule/README.md index 770d190b..c86c9e30 100644 --- a/.github/actions/Release-PSModule/README.md +++ b/.github/actions/Release-PSModule/README.md @@ -7,7 +7,7 @@ Creates or resumes a GitHub release for a pre-versioned PowerShell module artifa | Name | Description | Required | Default | | --- | --- | --- | --- | | `Name` | Name of the module to release. | No | Repository name | -| `ModulePath` | Path containing the built `/` module directory. | No | `outputs/module` | +| `ModulePath` | Path containing the built `/` module directory. | No | `.PSModule/module` | | `ArtifactName` | Name of the module artifact to download. | No | `module` | | `ReleaseTag` | Full GitHub release tag resolved by `Resolve-PSModuleVersion`. | Yes | N/A | | `WhatIf` | Logs release operations without creating or uploading anything. | No | `false` | @@ -33,7 +33,7 @@ Pass the Plan job's resolved `FullVersion` as `ReleaseTag` so the configured tag uses: ./.github/actions/Release-PSModule with: Name: ExampleModule - ModulePath: outputs/module + ModulePath: .PSModule/module ArtifactName: module ReleaseTag: ${{ fromJson(inputs.Settings).Publish.Module.Resolution.FullVersion }} ``` diff --git a/.github/actions/Release-PSModule/action.yml b/.github/actions/Release-PSModule/action.yml index 377a92d9..33789546 100644 --- a/.github/actions/Release-PSModule/action.yml +++ b/.github/actions/Release-PSModule/action.yml @@ -9,7 +9,7 @@ inputs: ModulePath: description: Path to the folder containing the / module subdirectory from Build-PSModule. required: false - default: outputs/module + default: .PSModule/module ArtifactName: description: Name of the uploaded artifact to download. Must match the name used in the upstream upload-artifact step. required: false diff --git a/.github/actions/Release-PSModule/tests/Release-PSModule.WhatIf.Tests.ps1 b/.github/actions/Release-PSModule/tests/Release-PSModule.WhatIf.Tests.ps1 index d7df20e8..e24aeaee 100644 --- a/.github/actions/Release-PSModule/tests/Release-PSModule.WhatIf.Tests.ps1 +++ b/.github/actions/Release-PSModule/tests/Release-PSModule.WhatIf.Tests.ps1 @@ -47,7 +47,7 @@ Describe 'Release-PSModule WhatIf' { BeforeEach { $script:moduleName = 'TestModule' $script:workspacePath = Join-Path -Path $TestDrive -ChildPath 'workspace' - $script:modulePath = Join-Path -Path $script:workspacePath -ChildPath "outputs/module/$script:moduleName" + $script:modulePath = Join-Path -Path $script:workspacePath -ChildPath ".PSModule/module/$script:moduleName" $manifestPath = Join-Path -Path $script:modulePath -ChildPath "$script:moduleName.psd1" $eventPath = Join-Path -Path $TestDrive -ChildPath 'event.json' $script:githubOutputPath = Join-Path -Path $TestDrive -ChildPath 'github-output' @@ -89,7 +89,7 @@ Describe 'Release-PSModule WhatIf' { $env:GITHUB_WORKSPACE = $script:workspacePath $env:RELEASE_ACTION_GH_CALL_LOG = $script:ghCallLogPath $env:PSMODULE_RELEASE_PSMODULE_INPUT_Name = $script:moduleName - $env:PSMODULE_RELEASE_PSMODULE_INPUT_ModulePath = 'outputs/module' + $env:PSMODULE_RELEASE_PSMODULE_INPUT_ModulePath = '.PSModule/module' $env:PSMODULE_RELEASE_PSMODULE_INPUT_WhatIf = 'true' $env:PSMODULE_RELEASE_PSMODULE_INPUT_UsePRBodyAsReleaseNotes = 'true' $env:PSMODULE_RELEASE_PSMODULE_INPUT_UsePRTitleAsReleaseName = 'false' diff --git a/.github/actions/Structure-Site/README.md b/.github/actions/Structure-Site/README.md index 203f9564..edd61f07 100644 --- a/.github/actions/Structure-Site/README.md +++ b/.github/actions/Structure-Site/README.md @@ -1,6 +1,6 @@ # Structure-Site -Prepares site content and writes a resolved Zensical config file under `outputs/site`. +Prepares site content and writes a resolved Zensical config file under `.PSModule/site`. ## Inputs diff --git a/.github/actions/Structure-Site/src/main.ps1 b/.github/actions/Structure-Site/src/main.ps1 index 44c8d20c..1a227da8 100644 --- a/.github/actions/Structure-Site/src/main.ps1 +++ b/.github/actions/Structure-Site/src/main.ps1 @@ -5,7 +5,7 @@ Structures generated documentation content and writes a resolved site config. .DESCRIPTION - Copies generated docs, README, and assets into outputs/site and resolves zensical.toml + Copies generated docs, README, and assets into .PSModule/site and resolves zensical.toml placeholders and site_dir for build execution. .EXAMPLE @@ -19,7 +19,7 @@ #> [CmdletBinding()] param( - # Build working directory where src/, README.md, and outputs/ exist. + # Build working directory where src/, README.md, and .PSModule/ exist. [Parameter(Mandatory)] [string]$WorkingDirectory, @@ -31,8 +31,8 @@ param( $ErrorActionPreference = 'Stop' $resolvedWorkingDirectory = Resolve-Path -Path $WorkingDirectory | Select-Object -ExpandProperty Path -$siteOutputPath = Join-Path -Path $resolvedWorkingDirectory -ChildPath 'outputs/site' -$docsOutputPath = Join-Path -Path $resolvedWorkingDirectory -ChildPath 'outputs/docs' +$siteOutputPath = Join-Path -Path $resolvedWorkingDirectory -ChildPath '.PSModule/site' +$docsOutputPath = Join-Path -Path $resolvedWorkingDirectory -ChildPath '.PSModule/docs' $moduleSourcePath = Join-Path -Path $resolvedWorkingDirectory -ChildPath 'src' $moduleName = if ([string]::IsNullOrEmpty($Name)) { $env:GITHUB_REPOSITORY_NAME } else { $Name } diff --git a/.github/actions/Structure-Site/src/structure-site.ps1 b/.github/actions/Structure-Site/src/structure-site.ps1 index 68ece30b..6b3c7ff9 100644 --- a/.github/actions/Structure-Site/src/structure-site.ps1 +++ b/.github/actions/Structure-Site/src/structure-site.ps1 @@ -9,8 +9,8 @@ param( $ErrorActionPreference = 'Stop' $resolvedWorkingDirectory = Resolve-Path -Path $WorkingDirectory | Select-Object -ExpandProperty Path -$siteOutputPath = Join-Path -Path $resolvedWorkingDirectory -ChildPath 'outputs/site' -$docsOutputPath = Join-Path -Path $resolvedWorkingDirectory -ChildPath 'outputs/docs' +$siteOutputPath = Join-Path -Path $resolvedWorkingDirectory -ChildPath '.PSModule/site' +$docsOutputPath = Join-Path -Path $resolvedWorkingDirectory -ChildPath '.PSModule/docs' $moduleSourcePath = Join-Path -Path $resolvedWorkingDirectory -ChildPath 'src' $moduleName = if ([string]::IsNullOrEmpty($Name)) { $env:GITHUB_REPOSITORY_NAME } else { $Name } diff --git a/.github/actions/Test-PSModule/src/main.ps1 b/.github/actions/Test-PSModule/src/main.ps1 index 1706791f..79fec26b 100644 --- a/.github/actions/Test-PSModule/src/main.ps1 +++ b/.github/actions/Test-PSModule/src/main.ps1 @@ -13,7 +13,7 @@ $testPath = Resolve-Path -Path "$PSScriptRoot/tests/$settings" | Select-Object - $localTestPath = Resolve-Path -Path 'tests' | Select-Object -ExpandProperty Path switch ($settings) { 'Module' { - $modulePath = Resolve-Path -Path "outputs/module/$moduleName" | Select-Object -ExpandProperty Path + $modulePath = Resolve-Path -Path ".PSModule/module/$moduleName" | Select-Object -ExpandProperty Path $codePath = Install-PSModule -Path $modulePath -PassThru } 'SourceCode' { diff --git a/.github/workflows/Build-Docs.yml b/.github/workflows/Build-Docs.yml index bc173a90..a8d2fe6b 100644 --- a/.github/workflows/Build-Docs.yml +++ b/.github/workflows/Build-Docs.yml @@ -33,7 +33,7 @@ jobs: uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: module - path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/module + path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/module - name: Document module uses: ./_wf/.github/actions/Document-PSModule @@ -45,7 +45,7 @@ jobs: uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: docs - path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/docs + path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/docs if-no-files-found: error retention-days: 1 @@ -82,7 +82,7 @@ jobs: env: RUN_LOCAL: true DEFAULT_WORKSPACE: ${{ fromJson(inputs.Settings).WorkingDirectory }} - FILTER_REGEX_INCLUDE: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/docs/.*\.(md|markdown)$ + FILTER_REGEX_INCLUDE: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/docs/.*\.(md|markdown)$ ENABLE_GITHUB_ACTIONS_GROUP_TITLE: true GITHUB_TOKEN: ${{ github.token }} VALIDATE_ALL_CODEBASE: true diff --git a/.github/workflows/Build-Site.yml b/.github/workflows/Build-Site.yml index ac7b1f6e..3b334b33 100644 --- a/.github/workflows/Build-Site.yml +++ b/.github/workflows/Build-Site.yml @@ -36,7 +36,7 @@ jobs: uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: docs - path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/docs + path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/docs - name: Install Zensical uses: ./_wf/.github/actions/Install-Zensical @@ -55,11 +55,11 @@ jobs: - name: Inject shared site scripts uses: ./_wf/.github/actions/Inject-SiteScripts with: - SitePath: ${{ fromJson(inputs.Settings).WorkingDirectory }}/_site + SitePath: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/site/_site WorkflowPath: _wf - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 with: name: github-pages - path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/_site + path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/site/_site retention-days: 1 diff --git a/.github/workflows/Publish-Module.yml b/.github/workflows/Publish-Module.yml index 49f747a3..4042920c 100644 --- a/.github/workflows/Publish-Module.yml +++ b/.github/workflows/Publish-Module.yml @@ -60,7 +60,7 @@ jobs: GH_TOKEN: ${{ steps.App-Token.outputs.token }} with: Name: ${{ fromJson(inputs.Settings).Name }} - ModulePath: outputs/module + ModulePath: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/module PSGALLERY_API_KEY: ${{ secrets.PSGALLERY_API_KEY }} PullRequest: ${{ toJson(fromJson(inputs.Settings).Context.PullRequest) }} WhatIf: ${{ github.repository == 'PSModule/Process-PSModule' }} @@ -77,7 +77,7 @@ jobs: GH_TOKEN: ${{ steps.App-Token.outputs.token }} with: Name: ${{ fromJson(inputs.Settings).Name }} - ModulePath: outputs/module + ModulePath: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/module ArtifactName: module WhatIf: ${{ github.repository == 'PSModule/Process-PSModule' }} UsePRTitleAsReleaseName: ${{ fromJson(inputs.Settings).Publish.Module.UsePRTitleAsReleaseName }} diff --git a/.github/workflows/Test-Module.yml b/.github/workflows/Test-Module.yml index be16e8a3..1d48d2f6 100644 --- a/.github/workflows/Test-Module.yml +++ b/.github/workflows/Test-Module.yml @@ -37,7 +37,7 @@ jobs: uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: module - path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/module + path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/module - name: Test-Module uses: ./_wf/.github/actions/Test-PSModule @@ -67,12 +67,12 @@ jobs: uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: module - path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/module + path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/module - name: Lint-Module uses: PSModule/Invoke-ScriptAnalyzer@4d633e4df1f1fa575949a328839d33c3a0838765 # v5.0.0 with: - Path: outputs/module + Path: .PSModule/module Debug: ${{ fromJson(inputs.Settings).Debug }} GitHubPrerelease: ${{ fromJson(inputs.Settings).Prerelease }} GitHubVersion: ${{ fromJson(inputs.Settings).Version }} diff --git a/.github/workflows/Test-ModuleLocal.yml b/.github/workflows/Test-ModuleLocal.yml index c5165913..e05af215 100644 --- a/.github/workflows/Test-ModuleLocal.yml +++ b/.github/workflows/Test-ModuleLocal.yml @@ -47,7 +47,7 @@ jobs: uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: module - path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/module + path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/module - name: Install-PSModule uses: ./_wf/.github/actions/Install-PSModule @@ -62,8 +62,8 @@ jobs: shell: pwsh working-directory: ${{ fromJson(inputs.Settings).WorkingDirectory }} run: | - $name = Get-ChildItem "outputs/module" | Select-Object -ExpandProperty Name - $path = Install-PSModule -Path "outputs/module/$name" -PassThru + $name = Get-ChildItem ".PSModule/module" | Select-Object -ExpandProperty Name + $path = Install-PSModule -Path ".PSModule/module/$name" -PassThru Write-Warning $path "name=$name" >> $env:GITHUB_OUTPUT "path=$path" >> $env:GITHUB_OUTPUT diff --git a/docs/content/guides/skipping-framework-tests.md b/docs/content/guides/skipping-framework-tests.md index 13a6cc03..a69a1265 100644 --- a/docs/content/guides/skipping-framework-tests.md +++ b/docs/content/guides/skipping-framework-tests.md @@ -26,7 +26,7 @@ Every source-code test ID, its meaning, and an example skip comment are listed i [Framework test IDs](../reference/framework-test-ids.md#source-code-tests). [Module tests](../reference/framework-test-ids.md#module-tests) run against the compiled module in the -`outputs/module` directory and typically don't need to be skipped, as they validate the final built module. +`.PSModule/module` directory and typically don't need to be skipped, as they validate the final built module. ## Example Usage diff --git a/docs/content/reference/framework-test-ids.md b/docs/content/reference/framework-test-ids.md index 694f0c65..880c5f3e 100644 --- a/docs/content/reference/framework-test-ids.md +++ b/docs/content/reference/framework-test-ids.md @@ -31,7 +31,7 @@ Run by the [Test source code](pipeline-stages.md#test-source-code) job against f ## Module tests Run by the [Framework test](pipeline-stages.md#framework-test) job against the compiled module in -`outputs/module`. Implemented in +`.PSModule/module`. Implemented in [PSModule - Module tests](https://github.com/PSModule/Process-PSModule/blob/main/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1). | Name | Description | From fc5bc6f6b58b6f89baf90392d9aa688c71863ab8 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 13:52:19 +0200 Subject: [PATCH 03/15] =?UTF-8?q?=F0=9F=93=96=20[Docs]:=20Reference=20isol?= =?UTF-8?q?ated=20module=20artifacts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/psmodule/skills/psmodule-pester-migration/SKILL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/plugin/psmodule/skills/psmodule-pester-migration/SKILL.md b/.github/plugin/psmodule/skills/psmodule-pester-migration/SKILL.md index cd11f56f..436d9f47 100644 --- a/.github/plugin/psmodule/skills/psmodule-pester-migration/SKILL.md +++ b/.github/plugin/psmodule/skills/psmodule-pester-migration/SKILL.md @@ -157,7 +157,7 @@ For every consumer repository, trace and record these surfaces before editing: | Surface | Framework contract to verify | Migration check | | --- | --- | --- | | `PSModule/Invoke-Pester` | Installs/runs Pester and emits per-suite JSON results and coverage artifacts | Pin/verify Pester 6.1.0, map all inputs to v6 configuration, preserve suite names | -| `Test-PSModule` action | Selects `tests/Module` or `tests/SourceCode`, resolves `outputs/module` or `src`, and passes paths to `Invoke-Pester` | Confirm path selection, exclusions, module state, and test extension | +| `Test-PSModule` action | Selects `tests/Module` or `tests/SourceCode`, resolves `.PSModule/module` or `src`, and passes paths to `Invoke-Pester` | Confirm path selection, exclusions, module state, and test extension | | Module-local workflow | Downloads the built module, exposes `TestData`, imports the module, then runs module tests | Tests consume the prepared module; no hidden fallback import | | Source-code workflow | Runs source tests against the checked-out `src` path | Record how source functions/classes are loaded and which fixtures are explicit | | `BeforeAll-ModuleLocal` | Runs exact root `tests/BeforeAll.ps1` once before module-local jobs | Put shared services/data here only when every matrix job needs them | From 7d0ca8c2d54980296514a9691ccdfa741b13b88d Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 13:53:50 +0200 Subject: [PATCH 04/15] =?UTF-8?q?=F0=9F=A7=AA=20[Test]:=20Assert=20isolate?= =?UTF-8?q?d=20Pester=20artifacts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/Test-ModuleLocal.yml | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/.github/workflows/Test-ModuleLocal.yml b/.github/workflows/Test-ModuleLocal.yml index e05af215..f102c30b 100644 --- a/.github/workflows/Test-ModuleLocal.yml +++ b/.github/workflows/Test-ModuleLocal.yml @@ -89,3 +89,31 @@ jobs: Prescript: | # This is to speed up module loading in Pester. Install-PSResource -Repository PSGallery -TrustRepository -Name PSCustomObject Import-Module -Name '${{ steps.import-module.outputs.name }}' -RequiredVersion '${{ fromJson(inputs.Settings).Publish.Module.Resolution.Version }}' + + - name: Verify Pester framework artifact paths + shell: pwsh + working-directory: ${{ fromJson(inputs.Settings).WorkingDirectory }} + run: | + $artifactPaths = @( + '.PSModule/.temp' + '.PSModule/TestResult' + '.PSModule/CodeCoverage' + ) + + foreach ($artifactPath in $artifactPaths) { + if (-not (Test-Path -Path $artifactPath -PathType Container)) { + throw "Expected Pester artifact directory at [$artifactPath]." + } + } + + $legacyPaths = @( + '.temp' + 'TestResult' + 'CodeCoverage' + ) + + foreach ($legacyPath in $legacyPaths) { + if (Test-Path -Path $legacyPath) { + throw "Legacy Pester artifact directory exists: [$legacyPath]." + } + } From 06a363d3e5905770598d0f3f86d0012464876f70 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 14:02:25 +0200 Subject: [PATCH 05/15] =?UTF-8?q?=F0=9F=A9=B9=20[Patch]:=20Direct=20Pester?= =?UTF-8?q?=20artifacts=20to=20.PSModule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/Test-PSModule/action.yml | 3 ++- .github/workflows/Test-ModuleLocal.yml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/actions/Test-PSModule/action.yml b/.github/actions/Test-PSModule/action.yml index f6321f67..80d94774 100644 --- a/.github/actions/Test-PSModule/action.yml +++ b/.github/actions/Test-PSModule/action.yml @@ -279,7 +279,7 @@ runs: run: ${{ github.action_path }}/src/main.ps1 - name: Invoke-Pester - uses: PSModule/Invoke-Pester@4ff33199141fdf22568990b6107fe3148ae93a1c # v5.1.0 + uses: PSModule/Invoke-Pester@f5e3a9fe9a9cac1069d61c7bca0a99f6fceb5fb2 # PR 78 id: test env: LocalTestPath: ${{ steps.paths.outputs.LocalTestPath }} @@ -292,6 +292,7 @@ runs: GitHubVersion: ${{ inputs.Version }} GitHubPrerelease: ${{ inputs.Prerelease }} WorkingDirectory: ${{ inputs.WorkingDirectory }} + OutputDirectory: ${{ inputs.WorkingDirectory }}/.PSModule Path: ${{ steps.paths.outputs.TestPath }} StepSummary_Mode: ${{ inputs.StepSummary_Mode }} StepSummary_ShowTestOverview: ${{ inputs.StepSummary_ShowTestOverview }} diff --git a/.github/workflows/Test-ModuleLocal.yml b/.github/workflows/Test-ModuleLocal.yml index f102c30b..ce2c34a6 100644 --- a/.github/workflows/Test-ModuleLocal.yml +++ b/.github/workflows/Test-ModuleLocal.yml @@ -69,7 +69,7 @@ jobs: "path=$path" >> $env:GITHUB_OUTPUT - name: Test-ModuleLocal - uses: PSModule/Invoke-Pester@4ff33199141fdf22568990b6107fe3148ae93a1c # v5.1.0 + uses: PSModule/Invoke-Pester@f5e3a9fe9a9cac1069d61c7bca0a99f6fceb5fb2 # PR 78 with: Debug: ${{ fromJson(inputs.Settings).Debug }} Verbose: ${{ fromJson(inputs.Settings).Verbose }} @@ -86,6 +86,7 @@ jobs: Path: ${{ matrix.TestPath }} Run_Path: ${{ steps.import-module.outputs.path }} WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }} + OutputDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule Prescript: | # This is to speed up module loading in Pester. Install-PSResource -Repository PSGallery -TrustRepository -Name PSCustomObject Import-Module -Name '${{ steps.import-module.outputs.name }}' -RequiredVersion '${{ fromJson(inputs.Settings).Publish.Module.Resolution.Version }}' From 7af16f7ac0557e1e5039c16cd6dd4057472b802d Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 14:04:26 +0200 Subject: [PATCH 06/15] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20[Maintenance]:=20Adv?= =?UTF-8?q?ance=20Invoke-Pester=20pin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/Test-PSModule/action.yml | 2 +- .github/workflows/Test-ModuleLocal.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/Test-PSModule/action.yml b/.github/actions/Test-PSModule/action.yml index 80d94774..3087645b 100644 --- a/.github/actions/Test-PSModule/action.yml +++ b/.github/actions/Test-PSModule/action.yml @@ -279,7 +279,7 @@ runs: run: ${{ github.action_path }}/src/main.ps1 - name: Invoke-Pester - uses: PSModule/Invoke-Pester@f5e3a9fe9a9cac1069d61c7bca0a99f6fceb5fb2 # PR 78 + uses: PSModule/Invoke-Pester@ac292395857d0e96483760ccde14729cb368117f # PR 78 id: test env: LocalTestPath: ${{ steps.paths.outputs.LocalTestPath }} diff --git a/.github/workflows/Test-ModuleLocal.yml b/.github/workflows/Test-ModuleLocal.yml index ce2c34a6..5abd6643 100644 --- a/.github/workflows/Test-ModuleLocal.yml +++ b/.github/workflows/Test-ModuleLocal.yml @@ -69,7 +69,7 @@ jobs: "path=$path" >> $env:GITHUB_OUTPUT - name: Test-ModuleLocal - uses: PSModule/Invoke-Pester@f5e3a9fe9a9cac1069d61c7bca0a99f6fceb5fb2 # PR 78 + uses: PSModule/Invoke-Pester@ac292395857d0e96483760ccde14729cb368117f # PR 78 with: Debug: ${{ fromJson(inputs.Settings).Debug }} Verbose: ${{ fromJson(inputs.Settings).Verbose }} From 2857ef3691af291d6cdfe76af9606c0e3ebdd090 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 14:15:20 +0200 Subject: [PATCH 07/15] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20[Maintenance]:=20Cor?= =?UTF-8?q?rect=20Invoke-Pester=20pin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/Test-PSModule/action.yml | 2 +- .github/workflows/Test-ModuleLocal.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/Test-PSModule/action.yml b/.github/actions/Test-PSModule/action.yml index 3087645b..f92e0a11 100644 --- a/.github/actions/Test-PSModule/action.yml +++ b/.github/actions/Test-PSModule/action.yml @@ -279,7 +279,7 @@ runs: run: ${{ github.action_path }}/src/main.ps1 - name: Invoke-Pester - uses: PSModule/Invoke-Pester@ac292395857d0e96483760ccde14729cb368117f # PR 78 + uses: PSModule/Invoke-Pester@b62062021d6f1182663f92f97de2cbcd75c08cfd # PR 78 id: test env: LocalTestPath: ${{ steps.paths.outputs.LocalTestPath }} diff --git a/.github/workflows/Test-ModuleLocal.yml b/.github/workflows/Test-ModuleLocal.yml index 5abd6643..5a0675b4 100644 --- a/.github/workflows/Test-ModuleLocal.yml +++ b/.github/workflows/Test-ModuleLocal.yml @@ -69,7 +69,7 @@ jobs: "path=$path" >> $env:GITHUB_OUTPUT - name: Test-ModuleLocal - uses: PSModule/Invoke-Pester@ac292395857d0e96483760ccde14729cb368117f # PR 78 + uses: PSModule/Invoke-Pester@b62062021d6f1182663f92f97de2cbcd75c08cfd # PR 78 with: Debug: ${{ fromJson(inputs.Settings).Debug }} Verbose: ${{ fromJson(inputs.Settings).Verbose }} From 1a5b9f3ebb4138ea941faa6694597ecbb226a7c5 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 14:43:41 +0200 Subject: [PATCH 08/15] =?UTF-8?q?=F0=9F=A9=B9=20[Patch]:=20Configure=20Pes?= =?UTF-8?q?ter=20artifact=20report=20paths?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/Test-PSModule/action.yml | 7 +++---- .github/workflows/Test-ModuleLocal.yml | 14 +++++++------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/actions/Test-PSModule/action.yml b/.github/actions/Test-PSModule/action.yml index f92e0a11..c2f435e7 100644 --- a/.github/actions/Test-PSModule/action.yml +++ b/.github/actions/Test-PSModule/action.yml @@ -279,7 +279,7 @@ runs: run: ${{ github.action_path }}/src/main.ps1 - name: Invoke-Pester - uses: PSModule/Invoke-Pester@b62062021d6f1182663f92f97de2cbcd75c08cfd # PR 78 + uses: PSModule/Invoke-Pester@282916d4de0c6d9b4714ccd6d0297230aa616ae6 # PR 78 id: test env: LocalTestPath: ${{ steps.paths.outputs.LocalTestPath }} @@ -292,7 +292,6 @@ runs: GitHubVersion: ${{ inputs.Version }} GitHubPrerelease: ${{ inputs.Prerelease }} WorkingDirectory: ${{ inputs.WorkingDirectory }} - OutputDirectory: ${{ inputs.WorkingDirectory }}/.PSModule Path: ${{ steps.paths.outputs.TestPath }} StepSummary_Mode: ${{ inputs.StepSummary_Mode }} StepSummary_ShowTestOverview: ${{ inputs.StepSummary_ShowTestOverview }} @@ -313,7 +312,7 @@ runs: Filter_FullName: ${{ inputs.Filter_FullName }} CodeCoverage_Enabled: ${{ inputs.CodeCoverage_Enabled }} CodeCoverage_OutputFormat: ${{ inputs.CodeCoverage_OutputFormat }} - CodeCoverage_OutputPath: ${{ inputs.CodeCoverage_OutputPath }} + CodeCoverage_OutputPath: ${{ inputs.WorkingDirectory }}/.PSModule/CodeCoverage/PSModuleTest-${{ inputs.Settings }}-${{ runner.os }}-CodeCoverage-Report.xml CodeCoverage_OutputEncoding: ${{ inputs.CodeCoverage_OutputEncoding }} CodeCoverage_Path: ${{ inputs.CodeCoverage_Path }} CodeCoverage_ExcludeTests: ${{ inputs.CodeCoverage_ExcludeTests }} @@ -323,7 +322,7 @@ runs: CodeCoverage_SingleHitBreakpoints: ${{ inputs.CodeCoverage_SingleHitBreakpoints }} TestResult_Enabled: ${{ inputs.TestResult_Enabled }} TestResult_OutputFormat: ${{ inputs.TestResult_OutputFormat }} - TestResult_OutputPath: ${{ inputs.TestResult_OutputPath }} + TestResult_OutputPath: ${{ inputs.WorkingDirectory }}/.PSModule/TestResult/PSModuleTest-${{ inputs.Settings }}-${{ runner.os }}-TestResult-Report.xml TestResult_OutputEncoding: ${{ inputs.TestResult_OutputEncoding }} TestResult_TestSuiteName: PSModuleTest-${{ inputs.Settings }}-${{ runner.os }} Should_ErrorAction: ${{ inputs.Should_ErrorAction }} diff --git a/.github/workflows/Test-ModuleLocal.yml b/.github/workflows/Test-ModuleLocal.yml index 5a0675b4..f3e28555 100644 --- a/.github/workflows/Test-ModuleLocal.yml +++ b/.github/workflows/Test-ModuleLocal.yml @@ -69,7 +69,7 @@ jobs: "path=$path" >> $env:GITHUB_OUTPUT - name: Test-ModuleLocal - uses: PSModule/Invoke-Pester@b62062021d6f1182663f92f97de2cbcd75c08cfd # PR 78 + uses: PSModule/Invoke-Pester@282916d4de0c6d9b4714ccd6d0297230aa616ae6 # PR 78 with: Debug: ${{ fromJson(inputs.Settings).Debug }} Verbose: ${{ fromJson(inputs.Settings).Verbose }} @@ -78,15 +78,16 @@ jobs: GitHubPrerelease: ${{ fromJson(inputs.Settings).Prerelease }} TestResult_TestSuiteName: ${{ matrix.TestName }}-${{ matrix.OSName }} TestResult_Enabled: true + TestResult_OutputPath: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/TestResult/${{ matrix.TestName }}-${{ matrix.OSName }}-TestResult-Report.xml CodeCoverage_Enabled: true Output_Verbosity: Detailed CodeCoverage_OutputFormat: JaCoCo + CodeCoverage_OutputPath: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/CodeCoverage/${{ matrix.TestName }}-${{ matrix.OSName }}-CodeCoverage-Report.xml CodeCoverage_CoveragePercentTarget: 0 Filter_ExcludeTag: Flaky Path: ${{ matrix.TestPath }} Run_Path: ${{ steps.import-module.outputs.path }} WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }} - OutputDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule Prescript: | # This is to speed up module loading in Pester. Install-PSResource -Repository PSGallery -TrustRepository -Name PSCustomObject Import-Module -Name '${{ steps.import-module.outputs.name }}' -RequiredVersion '${{ fromJson(inputs.Settings).Publish.Module.Resolution.Version }}' @@ -96,14 +97,13 @@ jobs: working-directory: ${{ fromJson(inputs.Settings).WorkingDirectory }} run: | $artifactPaths = @( - '.PSModule/.temp' - '.PSModule/TestResult' - '.PSModule/CodeCoverage' + '.PSModule/TestResult/${{ matrix.TestName }}-${{ matrix.OSName }}-TestResult-Report.xml' + '.PSModule/CodeCoverage/${{ matrix.TestName }}-${{ matrix.OSName }}-CodeCoverage-Report.xml' ) foreach ($artifactPath in $artifactPaths) { - if (-not (Test-Path -Path $artifactPath -PathType Container)) { - throw "Expected Pester artifact directory at [$artifactPath]." + if (-not (Test-Path -Path $artifactPath -PathType Leaf)) { + throw "Expected Pester report at [$artifactPath]." } } From a08d0ea6ebd3babe890d88bc11df0c7b74dcafe8 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 15:33:28 +0200 Subject: [PATCH 09/15] =?UTF-8?q?=F0=9F=A7=AA=20[Test]:=20Keep=20local=20m?= =?UTF-8?q?odule=20tests=20focused?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/Test-ModuleLocal.yml | 27 -------------------------- 1 file changed, 27 deletions(-) diff --git a/.github/workflows/Test-ModuleLocal.yml b/.github/workflows/Test-ModuleLocal.yml index f3e28555..9f051eeb 100644 --- a/.github/workflows/Test-ModuleLocal.yml +++ b/.github/workflows/Test-ModuleLocal.yml @@ -91,30 +91,3 @@ jobs: Prescript: | # This is to speed up module loading in Pester. Install-PSResource -Repository PSGallery -TrustRepository -Name PSCustomObject Import-Module -Name '${{ steps.import-module.outputs.name }}' -RequiredVersion '${{ fromJson(inputs.Settings).Publish.Module.Resolution.Version }}' - - - name: Verify Pester framework artifact paths - shell: pwsh - working-directory: ${{ fromJson(inputs.Settings).WorkingDirectory }} - run: | - $artifactPaths = @( - '.PSModule/TestResult/${{ matrix.TestName }}-${{ matrix.OSName }}-TestResult-Report.xml' - '.PSModule/CodeCoverage/${{ matrix.TestName }}-${{ matrix.OSName }}-CodeCoverage-Report.xml' - ) - - foreach ($artifactPath in $artifactPaths) { - if (-not (Test-Path -Path $artifactPath -PathType Leaf)) { - throw "Expected Pester report at [$artifactPath]." - } - } - - $legacyPaths = @( - '.temp' - 'TestResult' - 'CodeCoverage' - ) - - foreach ($legacyPath in $legacyPaths) { - if (Test-Path -Path $legacyPath) { - throw "Legacy Pester artifact directory exists: [$legacyPath]." - } - } From de353e6fee6819e7aad1f94f37a877af31eec23e Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 15:35:46 +0200 Subject: [PATCH 10/15] =?UTF-8?q?=F0=9F=A9=B9=20[Patch]:=20Resolve=20neste?= =?UTF-8?q?d=20test=20artifact=20paths?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/Test-PSModule/action.yml | 4 ++-- .github/workflows/Test-ModuleLocal.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/actions/Test-PSModule/action.yml b/.github/actions/Test-PSModule/action.yml index c2f435e7..a33bde6b 100644 --- a/.github/actions/Test-PSModule/action.yml +++ b/.github/actions/Test-PSModule/action.yml @@ -312,7 +312,7 @@ runs: Filter_FullName: ${{ inputs.Filter_FullName }} CodeCoverage_Enabled: ${{ inputs.CodeCoverage_Enabled }} CodeCoverage_OutputFormat: ${{ inputs.CodeCoverage_OutputFormat }} - CodeCoverage_OutputPath: ${{ inputs.WorkingDirectory }}/.PSModule/CodeCoverage/PSModuleTest-${{ inputs.Settings }}-${{ runner.os }}-CodeCoverage-Report.xml + CodeCoverage_OutputPath: .PSModule/CodeCoverage/PSModuleTest-${{ inputs.Settings }}-${{ runner.os }}-CodeCoverage-Report.xml CodeCoverage_OutputEncoding: ${{ inputs.CodeCoverage_OutputEncoding }} CodeCoverage_Path: ${{ inputs.CodeCoverage_Path }} CodeCoverage_ExcludeTests: ${{ inputs.CodeCoverage_ExcludeTests }} @@ -322,7 +322,7 @@ runs: CodeCoverage_SingleHitBreakpoints: ${{ inputs.CodeCoverage_SingleHitBreakpoints }} TestResult_Enabled: ${{ inputs.TestResult_Enabled }} TestResult_OutputFormat: ${{ inputs.TestResult_OutputFormat }} - TestResult_OutputPath: ${{ inputs.WorkingDirectory }}/.PSModule/TestResult/PSModuleTest-${{ inputs.Settings }}-${{ runner.os }}-TestResult-Report.xml + TestResult_OutputPath: .PSModule/TestResult/PSModuleTest-${{ inputs.Settings }}-${{ runner.os }}-TestResult-Report.xml TestResult_OutputEncoding: ${{ inputs.TestResult_OutputEncoding }} TestResult_TestSuiteName: PSModuleTest-${{ inputs.Settings }}-${{ runner.os }} Should_ErrorAction: ${{ inputs.Should_ErrorAction }} diff --git a/.github/workflows/Test-ModuleLocal.yml b/.github/workflows/Test-ModuleLocal.yml index 9f051eeb..5c61ad2e 100644 --- a/.github/workflows/Test-ModuleLocal.yml +++ b/.github/workflows/Test-ModuleLocal.yml @@ -78,11 +78,11 @@ jobs: GitHubPrerelease: ${{ fromJson(inputs.Settings).Prerelease }} TestResult_TestSuiteName: ${{ matrix.TestName }}-${{ matrix.OSName }} TestResult_Enabled: true - TestResult_OutputPath: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/TestResult/${{ matrix.TestName }}-${{ matrix.OSName }}-TestResult-Report.xml + TestResult_OutputPath: .PSModule/TestResult/${{ matrix.TestName }}-${{ matrix.OSName }}-TestResult-Report.xml CodeCoverage_Enabled: true Output_Verbosity: Detailed CodeCoverage_OutputFormat: JaCoCo - CodeCoverage_OutputPath: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/CodeCoverage/${{ matrix.TestName }}-${{ matrix.OSName }}-CodeCoverage-Report.xml + CodeCoverage_OutputPath: .PSModule/CodeCoverage/${{ matrix.TestName }}-${{ matrix.OSName }}-CodeCoverage-Report.xml CodeCoverage_CoveragePercentTarget: 0 Filter_ExcludeTag: Flaky Path: ${{ matrix.TestPath }} From e43c717d5aca0de08c413f7b0870dfeef6999629 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 16:50:21 +0200 Subject: [PATCH 11/15] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20[Patch]:=20Update=20?= =?UTF-8?q?Invoke-Pester=20action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/Test-PSModule/action.yml | 2 +- .github/workflows/Test-ModuleLocal.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/Test-PSModule/action.yml b/.github/actions/Test-PSModule/action.yml index a33bde6b..99935db1 100644 --- a/.github/actions/Test-PSModule/action.yml +++ b/.github/actions/Test-PSModule/action.yml @@ -279,7 +279,7 @@ runs: run: ${{ github.action_path }}/src/main.ps1 - name: Invoke-Pester - uses: PSModule/Invoke-Pester@282916d4de0c6d9b4714ccd6d0297230aa616ae6 # PR 78 + uses: PSModule/Invoke-Pester@c5494aba3c07d7bfd81bdbbc9f301e8fa4a729fb # v5.1.1 id: test env: LocalTestPath: ${{ steps.paths.outputs.LocalTestPath }} diff --git a/.github/workflows/Test-ModuleLocal.yml b/.github/workflows/Test-ModuleLocal.yml index 5c61ad2e..a3945bad 100644 --- a/.github/workflows/Test-ModuleLocal.yml +++ b/.github/workflows/Test-ModuleLocal.yml @@ -69,7 +69,7 @@ jobs: "path=$path" >> $env:GITHUB_OUTPUT - name: Test-ModuleLocal - uses: PSModule/Invoke-Pester@282916d4de0c6d9b4714ccd6d0297230aa616ae6 # PR 78 + uses: PSModule/Invoke-Pester@c5494aba3c07d7bfd81bdbbc9f301e8fa4a729fb # v5.1.1 with: Debug: ${{ fromJson(inputs.Settings).Debug }} Verbose: ${{ fromJson(inputs.Settings).Verbose }} From df9e956ee43440b725b88afc528787caf66f2526 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 17:23:46 +0200 Subject: [PATCH 12/15] =?UTF-8?q?=F0=9F=A9=B9=20[Patch]:=20Preserve=20test?= =?UTF-8?q?=20report=20path=20overrides?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/Test-PSModule/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/Test-PSModule/action.yml b/.github/actions/Test-PSModule/action.yml index 99935db1..aa7d51c4 100644 --- a/.github/actions/Test-PSModule/action.yml +++ b/.github/actions/Test-PSModule/action.yml @@ -312,7 +312,7 @@ runs: Filter_FullName: ${{ inputs.Filter_FullName }} CodeCoverage_Enabled: ${{ inputs.CodeCoverage_Enabled }} CodeCoverage_OutputFormat: ${{ inputs.CodeCoverage_OutputFormat }} - CodeCoverage_OutputPath: .PSModule/CodeCoverage/PSModuleTest-${{ inputs.Settings }}-${{ runner.os }}-CodeCoverage-Report.xml + CodeCoverage_OutputPath: ${{ inputs.CodeCoverage_OutputPath || format('.PSModule/CodeCoverage/PSModuleTest-{0}-{1}-CodeCoverage-Report.xml', inputs.Settings, runner.os) }} CodeCoverage_OutputEncoding: ${{ inputs.CodeCoverage_OutputEncoding }} CodeCoverage_Path: ${{ inputs.CodeCoverage_Path }} CodeCoverage_ExcludeTests: ${{ inputs.CodeCoverage_ExcludeTests }} @@ -322,7 +322,7 @@ runs: CodeCoverage_SingleHitBreakpoints: ${{ inputs.CodeCoverage_SingleHitBreakpoints }} TestResult_Enabled: ${{ inputs.TestResult_Enabled }} TestResult_OutputFormat: ${{ inputs.TestResult_OutputFormat }} - TestResult_OutputPath: .PSModule/TestResult/PSModuleTest-${{ inputs.Settings }}-${{ runner.os }}-TestResult-Report.xml + TestResult_OutputPath: ${{ inputs.TestResult_OutputPath || format('.PSModule/TestResult/PSModuleTest-{0}-{1}-TestResult-Report.xml', inputs.Settings, runner.os) }} TestResult_OutputEncoding: ${{ inputs.TestResult_OutputEncoding }} TestResult_TestSuiteName: PSModuleTest-${{ inputs.Settings }}-${{ runner.os }} Should_ErrorAction: ${{ inputs.Should_ErrorAction }} From c2f7f588bf7b3d75ad1edec22a636644fa054906 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 17:38:36 +0200 Subject: [PATCH 13/15] =?UTF-8?q?=F0=9F=A7=AA=20[Test]:=20Verify=20produce?= =?UTF-8?q?r=20artifact=20paths?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/Build-Docs.yml | 13 +++++++++++++ .github/workflows/Build-Module.yml | 13 +++++++++++++ .github/workflows/Build-Site.yml | 15 +++++++++++++++ .github/workflows/Workflow-Test-Default.yml | 11 ----------- .github/workflows/Workflow-Test-WithManifest.yml | 11 ----------- 5 files changed, 41 insertions(+), 22 deletions(-) diff --git a/.github/workflows/Build-Docs.yml b/.github/workflows/Build-Docs.yml index a8d2fe6b..3580c1f3 100644 --- a/.github/workflows/Build-Docs.yml +++ b/.github/workflows/Build-Docs.yml @@ -41,6 +41,19 @@ jobs: Name: ${{ fromJson(inputs.Settings).Name }} WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }} + - name: Verify framework artifact root + if: ${{ github.repository == 'PSModule/Process-PSModule' }} + shell: pwsh + working-directory: ${{ fromJson(inputs.Settings).WorkingDirectory }} + run: | + if (-not (Test-Path -Path '.PSModule/docs')) { + throw 'Expected generated documentation at .PSModule/docs.' + } + + if (Test-Path -Path 'outputs') { + throw 'Legacy framework artifact path exists: outputs' + } + - name: Upload docs artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: diff --git a/.github/workflows/Build-Module.yml b/.github/workflows/Build-Module.yml index 655e2618..2f6e83d7 100644 --- a/.github/workflows/Build-Module.yml +++ b/.github/workflows/Build-Module.yml @@ -60,3 +60,16 @@ jobs: Prerelease: ${{ fromJson(inputs.Settings).Publish.Module.Resolution.Prerelease }} ArtifactName: ${{ inputs.ArtifactName }} WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }} + + - name: Verify framework artifact root + if: ${{ github.repository == 'PSModule/Process-PSModule' }} + shell: pwsh + working-directory: ${{ fromJson(inputs.Settings).WorkingDirectory }} + run: | + if (-not (Test-Path -Path '.PSModule/module')) { + throw 'Expected built module at .PSModule/module.' + } + + if (Test-Path -Path 'outputs') { + throw 'Legacy framework artifact path exists: outputs' + } diff --git a/.github/workflows/Build-Site.yml b/.github/workflows/Build-Site.yml index 3b334b33..07c26827 100644 --- a/.github/workflows/Build-Site.yml +++ b/.github/workflows/Build-Site.yml @@ -58,6 +58,21 @@ jobs: SitePath: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/site/_site WorkflowPath: _wf + - name: Verify framework artifact root + if: ${{ github.repository == 'PSModule/Process-PSModule' }} + shell: pwsh + working-directory: ${{ fromJson(inputs.Settings).WorkingDirectory }} + run: | + if (-not (Test-Path -Path '.PSModule/site/_site')) { + throw 'Expected generated site at .PSModule/site/_site.' + } + + foreach ($legacyPath in @('outputs', '_site')) { + if (Test-Path -Path $legacyPath) { + throw "Legacy framework artifact path exists: $legacyPath" + } + } + - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 with: name: github-pages diff --git a/.github/workflows/Workflow-Test-Default.yml b/.github/workflows/Workflow-Test-Default.yml index 2e0facc6..04e91ec2 100644 --- a/.github/workflows/Workflow-Test-Default.yml +++ b/.github/workflows/Workflow-Test-Default.yml @@ -91,17 +91,6 @@ jobs: 'tests/srcTestRepo/.PSModule/docs/index.md.' } - $legacyPaths = @( - 'tests/srcTestRepo/outputs' - 'tests/srcTestRepo/_site' - ) - - foreach ($legacyPath in $legacyPaths) { - if (Test-Path -Path $legacyPath) { - throw "Legacy framework artifact path exists: $legacyPath" - } - } - $content = Get-Content -Path $path -Raw $expectedSnippets = @( '# Functions' diff --git a/.github/workflows/Workflow-Test-WithManifest.yml b/.github/workflows/Workflow-Test-WithManifest.yml index 7d4559b8..fbaeb219 100644 --- a/.github/workflows/Workflow-Test-WithManifest.yml +++ b/.github/workflows/Workflow-Test-WithManifest.yml @@ -91,17 +91,6 @@ jobs: 'tests/srcWithManifestTestRepo/.PSModule/docs/index.md.' } - $legacyPaths = @( - 'tests/srcWithManifestTestRepo/outputs' - 'tests/srcWithManifestTestRepo/_site' - ) - - foreach ($legacyPath in $legacyPaths) { - if (Test-Path -Path $legacyPath) { - throw "Legacy framework artifact path exists: $legacyPath" - } - } - $content = Get-Content -Path $path -Raw $expectedSnippets = @( '# Functions' From e5d52574f95f31a49ca145529fde6aa82299a42c Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 17:46:48 +0200 Subject: [PATCH 14/15] =?UTF-8?q?=F0=9F=A7=AA=20[Test]:=20Remove=20artifac?= =?UTF-8?q?t=20path=20assertions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/Build-Docs.yml | 13 ------------- .github/workflows/Build-Module.yml | 13 ------------- .github/workflows/Build-Site.yml | 15 --------------- 3 files changed, 41 deletions(-) diff --git a/.github/workflows/Build-Docs.yml b/.github/workflows/Build-Docs.yml index 3580c1f3..a8d2fe6b 100644 --- a/.github/workflows/Build-Docs.yml +++ b/.github/workflows/Build-Docs.yml @@ -41,19 +41,6 @@ jobs: Name: ${{ fromJson(inputs.Settings).Name }} WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }} - - name: Verify framework artifact root - if: ${{ github.repository == 'PSModule/Process-PSModule' }} - shell: pwsh - working-directory: ${{ fromJson(inputs.Settings).WorkingDirectory }} - run: | - if (-not (Test-Path -Path '.PSModule/docs')) { - throw 'Expected generated documentation at .PSModule/docs.' - } - - if (Test-Path -Path 'outputs') { - throw 'Legacy framework artifact path exists: outputs' - } - - name: Upload docs artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: diff --git a/.github/workflows/Build-Module.yml b/.github/workflows/Build-Module.yml index 2f6e83d7..655e2618 100644 --- a/.github/workflows/Build-Module.yml +++ b/.github/workflows/Build-Module.yml @@ -60,16 +60,3 @@ jobs: Prerelease: ${{ fromJson(inputs.Settings).Publish.Module.Resolution.Prerelease }} ArtifactName: ${{ inputs.ArtifactName }} WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }} - - - name: Verify framework artifact root - if: ${{ github.repository == 'PSModule/Process-PSModule' }} - shell: pwsh - working-directory: ${{ fromJson(inputs.Settings).WorkingDirectory }} - run: | - if (-not (Test-Path -Path '.PSModule/module')) { - throw 'Expected built module at .PSModule/module.' - } - - if (Test-Path -Path 'outputs') { - throw 'Legacy framework artifact path exists: outputs' - } diff --git a/.github/workflows/Build-Site.yml b/.github/workflows/Build-Site.yml index 07c26827..3b334b33 100644 --- a/.github/workflows/Build-Site.yml +++ b/.github/workflows/Build-Site.yml @@ -58,21 +58,6 @@ jobs: SitePath: ${{ fromJson(inputs.Settings).WorkingDirectory }}/.PSModule/site/_site WorkflowPath: _wf - - name: Verify framework artifact root - if: ${{ github.repository == 'PSModule/Process-PSModule' }} - shell: pwsh - working-directory: ${{ fromJson(inputs.Settings).WorkingDirectory }} - run: | - if (-not (Test-Path -Path '.PSModule/site/_site')) { - throw 'Expected generated site at .PSModule/site/_site.' - } - - foreach ($legacyPath in @('outputs', '_site')) { - if (Test-Path -Path $legacyPath) { - throw "Legacy framework artifact path exists: $legacyPath" - } - } - - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 with: name: github-pages From b17a763dfdaa601b4785524f4e257bae3b3ffc93 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Thu, 10 Sep 2026 17:58:55 +0200 Subject: [PATCH 15/15] =?UTF-8?q?=F0=9F=A7=AA=20[Test]:=20Name=20Functions?= =?UTF-8?q?=20index=20checks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/Workflow-Test-Default.yml | 2 +- .github/workflows/Workflow-Test-WithManifest.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Workflow-Test-Default.yml b/.github/workflows/Workflow-Test-Default.yml index 04e91ec2..5b3da9fb 100644 --- a/.github/workflows/Workflow-Test-Default.yml +++ b/.github/workflows/Workflow-Test-Default.yml @@ -82,7 +82,7 @@ jobs: name: docs path: tests/srcTestRepo/.PSModule/docs - - name: Verify framework artifacts are isolated + - name: Verify generated Functions index shell: pwsh run: | $path = 'tests/srcTestRepo/.PSModule/docs/index.md' diff --git a/.github/workflows/Workflow-Test-WithManifest.yml b/.github/workflows/Workflow-Test-WithManifest.yml index fbaeb219..898308b4 100644 --- a/.github/workflows/Workflow-Test-WithManifest.yml +++ b/.github/workflows/Workflow-Test-WithManifest.yml @@ -82,7 +82,7 @@ jobs: name: docs path: tests/srcWithManifestTestRepo/.PSModule/docs - - name: Verify framework artifacts are isolated + - name: Verify generated Functions index shell: pwsh run: | $path = 'tests/srcWithManifestTestRepo/.PSModule/docs/index.md'