From b92a8612f715f774868e2ab20c48d1e15d4a954f Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Wed, 15 Jul 2026 02:33:40 +0200 Subject: [PATCH 1/4] feat: internalize Process-PSModule actions --- .github/actions/Build-PSModule/action.yml | 53 + .../src/helpers/Build-PSModule.ps1 | 60 + .../src/helpers/Build/Add-ContentFromItem.ps1 | 66 + .../src/helpers/Build/Build-PSModuleBase.ps1 | 47 + .../helpers/Build/Build-PSModuleManifest.ps1 | 474 ++++++ .../Build/Build-PSModuleRootModule.ps1 | 264 ++++ .../Build/Get-PSModuleAliasesToExport.ps1 | 36 + .../Build/Get-PSModuleClassesToExport.ps1 | 40 + .../Build/Get-PSModuleCmdletsToExport.ps1 | 36 + .../Build/Get-PSModuleFunctionsToExport.ps1 | 46 + .../Build/Get-PSModuleVariablesToExport.ps1 | 50 + .../helpers/Build/Get-RootLevelVariables.ps1 | 22 + .../helpers/Build/PSScriptAnalyzer.Tests.psd1 | 55 + ...Update-PSModuleManifestAliasesToExport.ps1 | 97 ++ .github/actions/Build-PSModule/src/main.ps1 | 69 + .../functions/public/Test-PSModuleTest.ps1 | 18 + .../srcTestRepo/src/assemblies/LsonLib.dll | Bin 0 -> 43520 bytes .../src/classes/private/SecretWriter.ps1 | 15 + .../srcTestRepo/src/classes/public/Book.ps1 | 147 ++ .../tests/srcTestRepo/src/data/Config.psd1 | 3 + .../tests/srcTestRepo/src/data/Settings.psd1 | 3 + .../tests/srcTestRepo/src/finally.ps1 | 3 + .../src/formats/CultureInfo.Format.ps1xml | 37 + .../src/formats/Mygciview.Format.ps1xml | 65 + .../private/Get-InternalPSModule.ps1 | 18 + .../private/Set-InternalPSModule.ps1 | 22 + .../public/PSModule/Get-PSModuleTest.ps1 | 22 + .../public/PSModule/New-PSModuleTest.ps1 | 37 + .../src/functions/public/PSModule/PSModule.md | 1 + .../public/SomethingElse/Set-PSModuleTest.ps1 | 22 + .../public/SomethingElse/SomethingElse.md | 1 + .../functions/public/Test-PSModuleTest.ps1 | 18 + .../tests/srcTestRepo/src/header.ps1 | 3 + .../srcTestRepo/src/init/initializer.ps1 | 3 + .../src/modules/OtherPSModule.psm1 | 19 + .../tests/srcTestRepo/src/scripts/loader.ps1 | 3 + .../src/types/DirectoryInfo.Types.ps1xml | 21 + .../src/types/FileInfo.Types.ps1xml | 14 + .../variables/private/PrivateVariables.ps1 | 47 + .../src/variables/public/Moons.ps1 | 6 + .../src/variables/public/Planets.ps1 | 20 + .../src/variables/public/SolarSystems.ps1 | 17 + .../src/assemblies/LsonLib.dll | Bin 0 -> 43520 bytes .../src/data/Config.psd1 | 3 + .../src/data/Settings.psd1 | 3 + .../srcWithManifestTestRepo/src/finally.ps1 | 3 + .../src/formats/CultureInfo.Format.ps1xml | 37 + .../src/formats/Mygciview.Format.ps1xml | 65 + .../private/Get-InternalPSModule.ps1 | 18 + .../private/Set-InternalPSModule.ps1 | 22 + .../public/PSModule/Get-PSModuleTest.ps1 | 22 + .../public/PSModule/New-PSModuleTest.ps1 | 37 + .../src/functions/public/PSModule/PSModule.md | 1 + .../public/SomethingElse/Set-PSModuleTest.ps1 | 22 + .../public/SomethingElse/SomethingElse.md | 1 + .../functions/public/Test-PSModuleTest.ps1 | 18 + .../srcWithManifestTestRepo/src/header.ps1 | 3 + .../src/init/initializer.ps1 | 3 + .../srcWithManifestTestRepo/src/manifest.psd1 | 6 + .../src/modules/OtherPSModule.psm1 | 19 + .../src/scripts/loader.ps1 | 3 + .../src/types/DirectoryInfo.Types.ps1xml | 21 + .../src/types/FileInfo.Types.ps1xml | 14 + .../variables/private/PrivateVariables.ps1 | 47 + .../src/variables/public/Moons.ps1 | 6 + .../src/variables/public/Planets.ps1 | 20 + .../src/variables/public/SolarSystems.ps1 | 17 + .../Build-PSModule/tests/tools/1-build.ps1 | 1 + .../Build-PSModule/tests/tools/2-build.ps1 | 1 + .github/actions/Document-PSModule/action.yml | 32 + .../helpers/Build-PSModuleDocumentation.ps1 | 282 ++++ .../actions/Document-PSModule/src/main.ps1 | 56 + .../module/PSModuleTest/PSModuleTest.psd1 | 75 + .../module/PSModuleTest/PSModuleTest.psm1 | 400 +++++ .../PSModuleTest/assemblies/LsonLib.dll | Bin 0 -> 43520 bytes .../module/PSModuleTest/data/Config.psd1 | 3 + .../module/PSModuleTest/data/Settings.psd1 | 3 + .../formats/CultureInfo.Format.ps1xml | 37 + .../formats/Mygciview.Format.ps1xml | 65 + .../PSModuleTest/modules/OtherPSModule.psm1 | 19 + .../module/PSModuleTest/scripts/loader.ps1 | 3 + .../types/DirectoryInfo.Types.ps1xml | 21 + .../PSModuleTest/types/FileInfo.Types.ps1xml | 14 + .../srcTestRepo/src/assemblies/LsonLib.dll | Bin 0 -> 43520 bytes .../src/classes/private/SecretWriter.ps1 | 15 + .../srcTestRepo/src/classes/public/Book.ps1 | 147 ++ .../tests/srcTestRepo/src/data/Config.psd1 | 3 + .../tests/srcTestRepo/src/data/Settings.psd1 | 3 + .../tests/srcTestRepo/src/finally.ps1 | 3 + .../src/formats/CultureInfo.Format.ps1xml | 37 + .../src/formats/Mygciview.Format.ps1xml | 65 + .../private/Get-InternalPSModule.ps1 | 18 + .../private/Set-InternalPSModule.ps1 | 22 + .../public/PSModule/Get-PSModuleTest.ps1 | 22 + .../public/PSModule/New-PSModuleTest.ps1 | 37 + .../src/functions/public/PSModule/PSModule.md | 1 + .../public/SomethingElse/Set-PSModuleTest.ps1 | 28 + .../functions/public/SomethingElse/index.md | 1 + .../functions/public/Test-PSModuleTest.ps1 | 18 + .../src/functions/public/Widgets/Index.md | 4 + .../tests/srcTestRepo/src/header.ps1 | 3 + .../srcTestRepo/src/init/initializer.ps1 | 3 + .../src/modules/OtherPSModule.psm1 | 19 + .../tests/srcTestRepo/src/scripts/loader.ps1 | 3 + .../src/types/DirectoryInfo.Types.ps1xml | 21 + .../src/types/FileInfo.Types.ps1xml | 14 + .../variables/private/PrivateVariables.ps1 | 47 + .../src/variables/public/Moons.ps1 | 6 + .../src/variables/public/Planets.ps1 | 20 + .../src/variables/public/SolarSystems.ps1 | 17 + .../actions/Get-PSModuleSettings/action.yml | 73 + .../src/Settings.schema.json | 447 ++++++ .../actions/Get-PSModuleSettings/src/main.ps1 | 636 ++++++++ .../tests/Environment.Tests.ps1 | 15 + .../tests/PSModuleTest.Tests.ps1 | 15 + .../invalid-percent-target/PSModule.yml | 23 + .../tests/scenarios/valid/PSModule.yml | 23 + .../actions/Get-PesterCodeCoverage/action.yml | 54 + .../src/Get-PesterCodeCoverage.Helpers.psm1 | 68 + .../Get-PesterCodeCoverage/src/main.ps1 | 317 ++++ ...ironments-Windows-CodeCoverage-Report.json | 1 + ...vironments-Windows-CodeCoverage-Report.xml | 418 +++++ ...nvironments-macOS-CodeCoverage-Report.json | 1 + ...Environments-macOS-CodeCoverage-Report.xml | 418 +++++ .../Module-Windows-CodeCoverage-Report.json | 1 + .../Module-Windows-CodeCoverage-Report.xml | 418 +++++ .../Module-macOS-CodeCoverage-Report.json | 1 + .../Module-macOS-CodeCoverage-Report.xml | 418 +++++ .../MyTests-Windows-CodeCoverage-Report.json | 1 + .../MyTests-Windows-CodeCoverage-Report.xml | 418 +++++ .../MyTests-macOS-CodeCoverage-Report.json | 1 + .../MyTests-macOS-CodeCoverage-Report.xml | 418 +++++ .../actions/Get-PesterTestResults/action.yml | 56 + .../Get-PesterTestResults/src/main.ps1 | 230 +++ .../PATH-Windows-TestResult-Report.json | 1 + .../PATH-Windows-TestResult-Report.xml | 48 + ...Lint-Module-Windows-TestResult-Report.json | 1 + ...eLint-Module-Windows-TestResult-Report.xml | 111 ++ ...-SourceCode-Windows-TestResult-Report.json | 1 + ...t-SourceCode-Windows-TestResult-Report.xml | 111 ++ ...Test-Module-Windows-TestResult-Report.json | 1 + ...eTest-Module-Windows-TestResult-Report.xml | 28 + ...-SourceCode-Windows-TestResult-Report.json | 1 + ...t-SourceCode-Windows-TestResult-Report.xml | 43 + .../Install-PSModuleHelpers/action.yml | 15 + .../src/Helpers/Helpers.psd1 | 4 + .../src/Helpers/Helpers.psm1 | 1351 +++++++++++++++++ .../src/Helpers/PSScriptAnalyzer.Tests.psd1 | 55 + .../Install-PSModuleHelpers/src/main.ps1 | 16 + .../tests/Import-TestData.Tests.ps1 | 127 ++ .../tests/Install-PSModule.Tests.ps1 | 132 ++ .../Install-PSModuleHelpers/tests/README.md | 3 + .github/actions/Publish-PSModule/action.yml | 82 + .../actions/Publish-PSModule/src/cleanup.ps1 | 79 + .../actions/Publish-PSModule/src/publish.ps1 | 285 ++++ .../PSModuleTest/PSModuleTest.psd1 | 38 + .../PSModuleTest/PSModuleTest.psm1 | 1 + .../PSModuleTest/PSModuleTest.psd1 | 37 + .../PSModuleTest/PSModuleTest.psm1 | 1 + .../module/PSModuleTest/PSModuleTest.psd1 | 75 + .../module/PSModuleTest/PSModuleTest.psm1 | 382 +++++ .../PSModuleTest/assemblies/LsonLib.dll | Bin 0 -> 43520 bytes .../module/PSModuleTest/data/Config.psd1 | 3 + .../module/PSModuleTest/data/Settings.psd1 | 3 + .../formats/CultureInfo.Format.ps1xml | 37 + .../formats/Mygciview.Format.ps1xml | 65 + .../PSModuleTest/modules/OtherPSModule.psm1 | 19 + .../module/PSModuleTest/scripts/loader.ps1 | 3 + .../types/DirectoryInfo.Types.ps1xml | 21 + .../PSModuleTest/types/FileInfo.Types.ps1xml | 14 + .../Resolve-PSModuleVersion/action.yml | 76 + .../src/Resolve-PSModuleVersion.Helpers.psm1 | 675 ++++++++ .../Resolve-PSModuleVersion/src/main.ps1 | 45 + ...ve-PSModuleVersion.Helpers.Tests.Data.psd1 | 598 ++++++++ .../Resolve-PSModuleVersion.Helpers.Tests.ps1 | 280 ++++ .github/actions/Test-PSModule/action.yml | 340 +++++ .github/actions/Test-PSModule/src/main.ps1 | 38 + .../src/tests/Module/Module.Configuration.ps1 | 11 + .../Module/PSModule/PSModule.Container.ps1 | 6 + .../tests/Module/PSModule/PSModule.Tests.ps1 | 137 ++ .../PSModule/PSModule.Container.ps1 | 7 + .../SourceCode/PSModule/PSModule.Tests.ps1 | 388 +++++ .../SourceCode/SourceCode.Configuration.ps1 | 8 + .../PSModuleEnumOnly/PSModuleEnumOnly.psd1 | 36 + .../PSModuleEnumOnly/PSModuleEnumOnly.psm1 | 48 + .../outputEnumOnlyTestRepo/tests/.gitkeep | 1 + .../docs/PSModuleTest/Get-PSModuleTest.md | 72 + .../docs/PSModuleTest/New-PSModuleTest.md | 72 + .../docs/PSModuleTest/Set-PSModuleTest.md | 72 + .../docs/PSModuleTest/Test-PSModuleTest.md | 72 + .../module/PSModuleTest/PSModuleTest.psd1 | 75 + .../module/PSModuleTest/PSModuleTest.psm1 | 434 ++++++ .../PSModuleTest/assemblies/LsonLib.dll | Bin 0 -> 43520 bytes .../module/PSModuleTest/data/Config.psd1 | 3 + .../module/PSModuleTest/data/Settings.psd1 | 3 + .../formats/CultureInfo.Format.ps1xml | 37 + .../formats/Mygciview.Format.ps1xml | 65 + .../PSModuleTest/modules/OtherPSModule.psm1 | 19 + .../module/PSModuleTest/scripts/loader.ps1 | 3 + .../types/DirectoryInfo.Types.ps1xml | 21 + .../PSModuleTest/types/FileInfo.Types.ps1xml | 14 + .../tests/Environments/Environment.Tests.ps1 | 15 + .../tests/MyTests/PSModuleTest.Tests.ps1 | 44 + .../Test-PSModule/tests/srcTestRepo/README.md | 3 + .../tests/srcTestRepo/icon/icon.png | Bin 0 -> 5882 bytes .../tests/srcTestRepo/mkdocs.yml | 75 + .../srcTestRepo/src/assemblies/LsonLib.dll | Bin 0 -> 43520 bytes .../src/classes/private/SecretWriter.ps1 | 15 + .../srcTestRepo/src/classes/public/Book.ps1 | 147 ++ .../tests/srcTestRepo/src/data/Config.psd1 | 3 + .../tests/srcTestRepo/src/data/Settings.psd1 | 3 + .../tests/srcTestRepo/src/finally.ps1 | 3 + .../src/formats/CultureInfo.Format.ps1xml | 37 + .../src/formats/Mygciview.Format.ps1xml | 65 + .../private/Get-InternalPSModule.ps1 | 18 + .../private/Set-InternalPSModule.ps1 | 22 + .../public/PSModule/Get-PSModuleTest.ps1 | 23 + .../public/PSModule/New-PSModuleTest.ps1 | 37 + .../src/functions/public/PSModule/PSModule.md | 1 + .../public/SomethingElse/Set-PSModuleTest.ps1 | 22 + .../public/SomethingElse/SomethingElse.md | 1 + .../functions/public/Test-PSModuleTest.ps1 | 18 + .../src/functions/public/completers.ps1 | 8 + .../tests/srcTestRepo/src/header.ps1 | 3 + .../srcTestRepo/src/init/initializer.ps1 | 3 + .../src/modules/OtherPSModule.psm1 | 19 + .../tests/srcTestRepo/src/scripts/loader.ps1 | 3 + .../src/types/DirectoryInfo.Types.ps1xml | 21 + .../src/types/FileInfo.Types.ps1xml | 14 + .../variables/private/PrivateVariables.ps1 | 47 + .../src/variables/public/Moons.ps1 | 6 + .../src/variables/public/Planets.ps1 | 20 + .../src/variables/public/SolarSystems.ps1 | 17 + .../srcTestRepo/tests/Environment.Tests.ps1 | 15 + .../srcTestRepo/tests/PSModuleTest.Tests.ps1 | 44 + .../tests/srcWithManifestTestRepo/README.md | 3 + .../srcWithManifestTestRepo/icon/icon.png | Bin 0 -> 5882 bytes .../tests/srcWithManifestTestRepo/mkdocs.yml | 75 + .../src/assemblies/LsonLib.dll | Bin 0 -> 43520 bytes .../src/classes/private/SecretWriter.ps1 | 15 + .../src/classes/public/Book.ps1 | 147 ++ .../src/data/Config.psd1 | 3 + .../src/data/Settings.psd1 | 3 + .../srcWithManifestTestRepo/src/finally.ps1 | 3 + .../src/formats/CultureInfo.Format.ps1xml | 37 + .../src/formats/Mygciview.Format.ps1xml | 65 + .../private/Get-InternalPSModule.ps1 | 18 + .../private/Set-InternalPSModule.ps1 | 22 + .../public/PSModule/Get-PSModuleTest.ps1 | 23 + .../public/PSModule/New-PSModuleTest.ps1 | 37 + .../src/functions/public/PSModule/PSModule.md | 1 + .../public/SomethingElse/Set-PSModuleTest.ps1 | 22 + .../public/SomethingElse/SomethingElse.md | 1 + .../functions/public/Test-PSModuleTest.ps1 | 18 + .../src/functions/public/completers.ps1 | 8 + .../srcWithManifestTestRepo/src/header.ps1 | 3 + .../src/init/initializer.ps1 | 3 + .../srcWithManifestTestRepo/src/manifest.psd1 | 3 + .../src/modules/OtherPSModule.psm1 | 19 + .../src/scripts/loader.ps1 | 3 + .../src/types/DirectoryInfo.Types.ps1xml | 21 + .../src/types/FileInfo.Types.ps1xml | 14 + .../variables/private/PrivateVariables.ps1 | 47 + .../src/variables/public/Moons.ps1 | 6 + .../src/variables/public/Planets.ps1 | 20 + .../src/variables/public/SolarSystems.ps1 | 17 + .../tests/Environments/Environment.Tests.ps1 | 15 + .../tests/MyTests/PSModuleTest.Tests.ps1 | 44 + .../srcWithManifestTestRepo/tools/1-build.ps1 | 1 + .../srcWithManifestTestRepo/tools/2-build.ps1 | 1 + .github/workflows/AfterAll-ModuleLocal.yml | 10 +- .github/workflows/BeforeAll-ModuleLocal.yml | 10 +- .github/workflows/Build-Docs.yml | 10 +- .github/workflows/Build-Module.yml | 10 +- .github/workflows/Build-Site.yml | 10 +- .github/workflows/Get-CodeCoverage.yml | 10 +- .github/workflows/Get-TestResults.yml | 10 +- .github/workflows/Plan.yml | 12 +- .github/workflows/Publish-Module.yml | 10 +- .github/workflows/Test-Module.yml | 10 +- .github/workflows/Test-ModuleLocal.yml | 10 +- .github/workflows/Test-SourceCode.yml | 10 +- 282 files changed, 16920 insertions(+), 13 deletions(-) create mode 100644 .github/actions/Build-PSModule/action.yml create mode 100644 .github/actions/Build-PSModule/src/helpers/Build-PSModule.ps1 create mode 100644 .github/actions/Build-PSModule/src/helpers/Build/Add-ContentFromItem.ps1 create mode 100644 .github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleBase.ps1 create mode 100644 .github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleManifest.ps1 create mode 100644 .github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleRootModule.ps1 create mode 100644 .github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleAliasesToExport.ps1 create mode 100644 .github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleClassesToExport.ps1 create mode 100644 .github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleCmdletsToExport.ps1 create mode 100644 .github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleFunctionsToExport.ps1 create mode 100644 .github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleVariablesToExport.ps1 create mode 100644 .github/actions/Build-PSModule/src/helpers/Build/Get-RootLevelVariables.ps1 create mode 100644 .github/actions/Build-PSModule/src/helpers/Build/PSScriptAnalyzer.Tests.psd1 create mode 100644 .github/actions/Build-PSModule/src/helpers/Build/Update-PSModuleManifestAliasesToExport.ps1 create mode 100644 .github/actions/Build-PSModule/src/main.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcMinimalTestRepo/src/functions/public/Test-PSModuleTest.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/assemblies/LsonLib.dll create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/classes/private/SecretWriter.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/classes/public/Book.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/data/Config.psd1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/data/Settings.psd1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/finally.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/formats/CultureInfo.Format.ps1xml create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/formats/Mygciview.Format.ps1xml create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/functions/private/Get-InternalPSModule.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/functions/private/Set-InternalPSModule.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/PSModule/PSModule.md create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/SomethingElse.md create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/Test-PSModuleTest.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/header.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/init/initializer.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/modules/OtherPSModule.psm1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/scripts/loader.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/types/DirectoryInfo.Types.ps1xml create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/types/FileInfo.Types.ps1xml create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/variables/private/PrivateVariables.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/variables/public/Moons.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/variables/public/Planets.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcTestRepo/src/variables/public/SolarSystems.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/assemblies/LsonLib.dll create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/data/Config.psd1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/data/Settings.psd1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/finally.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/formats/CultureInfo.Format.ps1xml create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/formats/Mygciview.Format.ps1xml create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Get-InternalPSModule.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Set-InternalPSModule.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/PSModule.md create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/SomethingElse.md create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/Test-PSModuleTest.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/header.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/init/initializer.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/manifest.psd1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/modules/OtherPSModule.psm1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/scripts/loader.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/types/DirectoryInfo.Types.ps1xml create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/types/FileInfo.Types.ps1xml create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/private/PrivateVariables.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Moons.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Planets.ps1 create mode 100644 .github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/public/SolarSystems.ps1 create mode 100644 .github/actions/Build-PSModule/tests/tools/1-build.ps1 create mode 100644 .github/actions/Build-PSModule/tests/tools/2-build.ps1 create mode 100644 .github/actions/Document-PSModule/action.yml create mode 100644 .github/actions/Document-PSModule/src/helpers/Build-PSModuleDocumentation.ps1 create mode 100644 .github/actions/Document-PSModule/src/main.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/PSModuleTest.psd1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/assemblies/LsonLib.dll create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/data/Config.psd1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/data/Settings.psd1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/formats/CultureInfo.Format.ps1xml create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/formats/Mygciview.Format.ps1xml create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/types/DirectoryInfo.Types.ps1xml create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/types/FileInfo.Types.ps1xml create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/assemblies/LsonLib.dll create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/classes/private/SecretWriter.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/classes/public/Book.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/data/Config.psd1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/data/Settings.psd1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/finally.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/formats/CultureInfo.Format.ps1xml create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/formats/Mygciview.Format.ps1xml create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/functions/private/Get-InternalPSModule.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/functions/private/Set-InternalPSModule.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/PSModule/PSModule.md create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/index.md create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/Test-PSModuleTest.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/Widgets/Index.md create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/header.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/init/initializer.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/modules/OtherPSModule.psm1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/scripts/loader.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/types/DirectoryInfo.Types.ps1xml create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/types/FileInfo.Types.ps1xml create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/variables/private/PrivateVariables.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/variables/public/Moons.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/variables/public/Planets.ps1 create mode 100644 .github/actions/Document-PSModule/tests/srcTestRepo/src/variables/public/SolarSystems.ps1 create mode 100644 .github/actions/Get-PSModuleSettings/action.yml create mode 100644 .github/actions/Get-PSModuleSettings/src/Settings.schema.json create mode 100644 .github/actions/Get-PSModuleSettings/src/main.ps1 create mode 100644 .github/actions/Get-PSModuleSettings/tests/Environment.Tests.ps1 create mode 100644 .github/actions/Get-PSModuleSettings/tests/PSModuleTest.Tests.ps1 create mode 100644 .github/actions/Get-PSModuleSettings/tests/scenarios/invalid-percent-target/PSModule.yml create mode 100644 .github/actions/Get-PSModuleSettings/tests/scenarios/valid/PSModule.yml create mode 100644 .github/actions/Get-PesterCodeCoverage/action.yml create mode 100644 .github/actions/Get-PesterCodeCoverage/src/Get-PesterCodeCoverage.Helpers.psm1 create mode 100644 .github/actions/Get-PesterCodeCoverage/src/main.ps1 create mode 100644 .github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-Windows-CodeCoverage/Environments-Windows-CodeCoverage-Report.json create mode 100644 .github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-Windows-CodeCoverage/Environments-Windows-CodeCoverage-Report.xml create mode 100644 .github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-macOS-CodeCoverage/Environments-macOS-CodeCoverage-Report.json create mode 100644 .github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-macOS-CodeCoverage/Environments-macOS-CodeCoverage-Report.xml create mode 100644 .github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-Windows-CodeCoverage/Module-Windows-CodeCoverage-Report.json create mode 100644 .github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-Windows-CodeCoverage/Module-Windows-CodeCoverage-Report.xml create mode 100644 .github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-macOS-CodeCoverage/Module-macOS-CodeCoverage-Report.json create mode 100644 .github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-macOS-CodeCoverage/Module-macOS-CodeCoverage-Report.xml create mode 100644 .github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-Windows-CodeCoverage/MyTests-Windows-CodeCoverage-Report.json create mode 100644 .github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-Windows-CodeCoverage/MyTests-Windows-CodeCoverage-Report.xml create mode 100644 .github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-macOS-CodeCoverage/MyTests-macOS-CodeCoverage-Report.json create mode 100644 .github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-macOS-CodeCoverage/MyTests-macOS-CodeCoverage-Report.xml create mode 100644 .github/actions/Get-PesterTestResults/action.yml create mode 100644 .github/actions/Get-PesterTestResults/src/main.ps1 create mode 100644 .github/actions/Get-PesterTestResults/tests/TestResults/PATH-Windows-TestResults/PATH-Windows-TestResult-Report.json create mode 100644 .github/actions/Get-PesterTestResults/tests/TestResults/PATH-Windows-TestResults/PATH-Windows-TestResult-Report.xml create mode 100644 .github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-Module-Windows-TestResults/PSModuleLint-Module-Windows-TestResult-Report.json create mode 100644 .github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-Module-Windows-TestResults/PSModuleLint-Module-Windows-TestResult-Report.xml create mode 100644 .github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-SourceCode-Windows-TestResults/PSModuleLint-SourceCode-Windows-TestResult-Report.json create mode 100644 .github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-SourceCode-Windows-TestResults/PSModuleLint-SourceCode-Windows-TestResult-Report.xml create mode 100644 .github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-Module-Windows-TestResults/PSModuleTest-Module-Windows-TestResult-Report.json create mode 100644 .github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-Module-Windows-TestResults/PSModuleTest-Module-Windows-TestResult-Report.xml create mode 100644 .github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-SourceCode-Windows-TestResults/PSModuleTest-SourceCode-Windows-TestResult-Report.json create mode 100644 .github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-SourceCode-Windows-TestResults/PSModuleTest-SourceCode-Windows-TestResult-Report.xml create mode 100644 .github/actions/Install-PSModuleHelpers/action.yml create mode 100644 .github/actions/Install-PSModuleHelpers/src/Helpers/Helpers.psd1 create mode 100644 .github/actions/Install-PSModuleHelpers/src/Helpers/Helpers.psm1 create mode 100644 .github/actions/Install-PSModuleHelpers/src/Helpers/PSScriptAnalyzer.Tests.psd1 create mode 100644 .github/actions/Install-PSModuleHelpers/src/main.ps1 create mode 100644 .github/actions/Install-PSModuleHelpers/tests/Import-TestData.Tests.ps1 create mode 100644 .github/actions/Install-PSModuleHelpers/tests/Install-PSModule.Tests.ps1 create mode 100644 .github/actions/Install-PSModuleHelpers/tests/README.md create mode 100644 .github/actions/Publish-PSModule/action.yml create mode 100644 .github/actions/Publish-PSModule/src/cleanup.ps1 create mode 100644 .github/actions/Publish-PSModule/src/publish.ps1 create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module-prerelease/PSModuleTest/PSModuleTest.psd1 create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module-prerelease/PSModuleTest/PSModuleTest.psm1 create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module-unstamped/PSModuleTest/PSModuleTest.psd1 create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module-unstamped/PSModuleTest/PSModuleTest.psm1 create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/PSModuleTest.psd1 create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/PSModuleTest.psm1 create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/assemblies/LsonLib.dll create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/data/Config.psd1 create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/data/Settings.psd1 create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/formats/CultureInfo.Format.ps1xml create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/formats/Mygciview.Format.ps1xml create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/modules/OtherPSModule.psm1 create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/scripts/loader.ps1 create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/types/DirectoryInfo.Types.ps1xml create mode 100644 .github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/types/FileInfo.Types.ps1xml create mode 100644 .github/actions/Resolve-PSModuleVersion/action.yml create mode 100644 .github/actions/Resolve-PSModuleVersion/src/Resolve-PSModuleVersion.Helpers.psm1 create mode 100644 .github/actions/Resolve-PSModuleVersion/src/main.ps1 create mode 100644 .github/actions/Resolve-PSModuleVersion/tests/Resolve-PSModuleVersion.Helpers.Tests.Data.psd1 create mode 100644 .github/actions/Resolve-PSModuleVersion/tests/Resolve-PSModuleVersion.Helpers.Tests.ps1 create mode 100644 .github/actions/Test-PSModule/action.yml create mode 100644 .github/actions/Test-PSModule/src/main.ps1 create mode 100644 .github/actions/Test-PSModule/src/tests/Module/Module.Configuration.ps1 create mode 100644 .github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Container.ps1 create mode 100644 .github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1 create mode 100644 .github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Container.ps1 create mode 100644 .github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Tests.ps1 create mode 100644 .github/actions/Test-PSModule/src/tests/SourceCode/SourceCode.Configuration.ps1 create mode 100644 .github/actions/Test-PSModule/tests/outputEnumOnlyTestRepo/outputs/module/PSModuleEnumOnly/PSModuleEnumOnly.psd1 create mode 100644 .github/actions/Test-PSModule/tests/outputEnumOnlyTestRepo/outputs/module/PSModuleEnumOnly/PSModuleEnumOnly.psm1 create mode 100644 .github/actions/Test-PSModule/tests/outputEnumOnlyTestRepo/tests/.gitkeep create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/Get-PSModuleTest.md create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/New-PSModuleTest.md create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/Set-PSModuleTest.md create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/Test-PSModuleTest.md create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/PSModuleTest.psd1 create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1 create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/assemblies/LsonLib.dll create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/data/Config.psd1 create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/data/Settings.psd1 create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/formats/CultureInfo.Format.ps1xml create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/formats/Mygciview.Format.ps1xml create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1 create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1 create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/types/DirectoryInfo.Types.ps1xml create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/types/FileInfo.Types.ps1xml create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/tests/Environments/Environment.Tests.ps1 create mode 100644 .github/actions/Test-PSModule/tests/outputTestRepo/tests/MyTests/PSModuleTest.Tests.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/README.md create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/icon/icon.png create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/mkdocs.yml create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/assemblies/LsonLib.dll create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/classes/private/SecretWriter.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/classes/public/Book.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/data/Config.psd1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/data/Settings.psd1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/finally.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/formats/CultureInfo.Format.ps1xml create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/formats/Mygciview.Format.ps1xml create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/functions/private/Get-InternalPSModule.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/functions/private/Set-InternalPSModule.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/PSModule/PSModule.md create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/SomethingElse.md create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/Test-PSModuleTest.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/completers.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/header.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/init/initializer.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/modules/OtherPSModule.psm1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/scripts/loader.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/types/DirectoryInfo.Types.ps1xml create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/types/FileInfo.Types.ps1xml create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/variables/private/PrivateVariables.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/variables/public/Moons.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/variables/public/Planets.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/src/variables/public/SolarSystems.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/tests/Environment.Tests.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcTestRepo/tests/PSModuleTest.Tests.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/README.md create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/icon/icon.png create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/mkdocs.yml create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/assemblies/LsonLib.dll create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/classes/private/SecretWriter.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/classes/public/Book.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/data/Config.psd1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/data/Settings.psd1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/finally.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/formats/CultureInfo.Format.ps1xml create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/formats/Mygciview.Format.ps1xml create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Get-InternalPSModule.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Set-InternalPSModule.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/PSModule.md create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/SomethingElse.md create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/Test-PSModuleTest.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/completers.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/header.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/init/initializer.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/manifest.psd1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/modules/OtherPSModule.psm1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/scripts/loader.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/types/DirectoryInfo.Types.ps1xml create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/types/FileInfo.Types.ps1xml create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/private/PrivateVariables.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Moons.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Planets.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/public/SolarSystems.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tests/Environments/Environment.Tests.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tests/MyTests/PSModuleTest.Tests.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tools/1-build.ps1 create mode 100644 .github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tools/2-build.ps1 diff --git a/.github/actions/Build-PSModule/action.yml b/.github/actions/Build-PSModule/action.yml new file mode 100644 index 00000000..c4f9414e --- /dev/null +++ b/.github/actions/Build-PSModule/action.yml @@ -0,0 +1,53 @@ +name: Build-PSModule +description: Build a PowerShell module to the PowerShell Gallery. +author: PSModule + +inputs: + Name: + description: Name of the module to build. Defaults to the repository name. + required: false + OutputFolder: + description: Path to the folder where the built module is outputted. + required: false + default: 'outputs/module' + Version: + description: Module version to stamp into the manifest. + required: true + Prerelease: + description: Prerelease tag to stamp into the manifest's `PrivateData.PSData.Prerelease`. When empty, no prerelease tag is written. + required: false + ArtifactName: + description: Name of the artifact to upload. + required: false + default: module + WorkingDirectory: + description: The working directory where the script will run from. + required: false + default: '.' + +runs: + using: composite + steps: + - name: Install-PSModuleHelpers + uses: ./_wf/.github/actions/Install-PSModuleHelpers + + - name: Run Build-PSModule + shell: pwsh + id: build + working-directory: ${{ inputs.WorkingDirectory }} + env: + PSMODULE_BUILD_PSMODULE_INPUT_Name: ${{ inputs.Name }} + PSMODULE_BUILD_PSMODULE_INPUT_OutputFolder: ${{ inputs.OutputFolder }} + PSMODULE_BUILD_PSMODULE_INPUT_Version: ${{ inputs.Version }} + PSMODULE_BUILD_PSMODULE_INPUT_Prerelease: ${{ inputs.Prerelease }} + run: | + # Build-PSModule + ${{ github.action_path }}/src/main.ps1 + + - name: Upload module artifact + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: ${{ inputs.ArtifactName }} + path: ${{ steps.build.outputs.ModuleOutputFolderPath }} + if-no-files-found: error + retention-days: 1 diff --git a/.github/actions/Build-PSModule/src/helpers/Build-PSModule.ps1 b/.github/actions/Build-PSModule/src/helpers/Build-PSModule.ps1 new file mode 100644 index 00000000..f4ee2ba1 --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build-PSModule.ps1 @@ -0,0 +1,60 @@ +function Build-PSModule { + <# + .SYNOPSIS + Builds a module. + + .DESCRIPTION + Builds a module. + #> + [OutputType([void])] + [CmdletBinding()] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSReviewUnusedParameter', '', Scope = 'Function', + Justification = 'LogGroup - Scoping affects the variables line of sight.' + )] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', Scope = 'Function', + Justification = 'Want to just write to the console, not the pipeline.' + )] + param( + # Name of the module. + [Parameter(Mandatory)] + [string] $ModuleName, + + # Path to the folder where the modules are located. + [Parameter(Mandatory)] + [string] $ModuleSourceFolderPath, + + # Path to the folder where the built modules are outputted. + [Parameter(Mandatory)] + [string] $ModuleOutputFolderPath, + + # Module version to stamp into the manifest. + [Parameter(Mandatory)] + [string] $ModuleVersion, + + # Prerelease tag to stamp into the manifest. When empty, no prerelease tag is written. + [Parameter()] + [string] $ModulePrerelease + ) + + Set-GitHubLogGroup "Building module [$ModuleName]" { + $moduleSourceFolder = Get-Item -Path $ModuleSourceFolderPath + $moduleOutputFolder = New-Item -Path $ModuleOutputFolderPath -Name $ModuleName -ItemType Directory -Force + [pscustomobject]@{ + ModuleSourceFolderPath = $moduleSourceFolder + ModuleOutputFolderPath = $moduleOutputFolder + } | Format-List | Out-String + } + + Build-PSModuleBase -ModuleName $ModuleName -ModuleSourceFolder $moduleSourceFolder -ModuleOutputFolder $moduleOutputFolder + Build-PSModuleManifest -ModuleName $ModuleName -ModuleOutputFolder $moduleOutputFolder ` + -ModuleVersion $ModuleVersion -ModulePrerelease $ModulePrerelease + Build-PSModuleRootModule -ModuleName $ModuleName -ModuleOutputFolder $moduleOutputFolder + Update-PSModuleManifestAliasesToExport -ModuleName $ModuleName -ModuleSourceFolder $moduleSourceFolder -ModuleOutputFolder $moduleOutputFolder + + Set-GitHubLogGroup 'Build manifest file - Final Result' { + $outputManifestPath = Join-Path -Path $ModuleOutputFolder -ChildPath "$ModuleName.psd1" + Show-FileContent -Path $outputManifestPath + } +} diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Add-ContentFromItem.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Add-ContentFromItem.ps1 new file mode 100644 index 00000000..9046b204 --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build/Add-ContentFromItem.ps1 @@ -0,0 +1,66 @@ +function Add-ContentFromItem { + <# + .SYNOPSIS + Add the content of a folder or file to the root module file. + + .DESCRIPTION + This function will add the content of a folder or file to the root module file. + + .EXAMPLE + Add-ContentFromItem -Path 'C:\MyModule\src\MyModule' -RootModuleFilePath 'C:\MyModule\src\MyModule.psm1' -RootPath 'C:\MyModule\src' + #> + param( + # The path to the folder or file to process. + [Parameter(Mandatory)] + [string] $Path, + + # The path to the root module file. + [Parameter(Mandatory)] + [string] $RootModuleFilePath, + + # The root path of the module. + [Parameter(Mandatory)] + [string] $RootPath + ) + # Get the path separator for the current OS + $pathSeparator = [System.IO.Path]::DirectorySeparatorChar + + $relativeFolderPath = $Path -replace $RootPath, '' + $relativeFolderPath = $relativeFolderPath -replace $file.Extension, '' + $relativeFolderPath = $relativeFolderPath.TrimStart($pathSeparator) + $relativeFolderPath = $relativeFolderPath -split $pathSeparator | ForEach-Object { "[$_]" } + $relativeFolderPath = $relativeFolderPath -join ' - ' + + Add-Content -Path $RootModuleFilePath -Force -Value @" +#region $relativeFolderPath +Write-Debug "[`$scriptName] - $relativeFolderPath - Processing folder" +"@ + + $files = $Path | Get-ChildItem -File -Force -Filter '*.ps1' | Sort-Object -Property FullName + foreach ($file in $files) { + $relativeFilePath = $file.FullName -replace $RootPath, '' + $relativeFilePath = $relativeFilePath -replace $file.Extension, '' + $relativeFilePath = $relativeFilePath.TrimStart($pathSeparator) + $relativeFilePath = $relativeFilePath -split $pathSeparator | ForEach-Object { "[$_]" } + $relativeFilePath = $relativeFilePath -join ' - ' + + Add-Content -Path $RootModuleFilePath -Force -Value @" +#region $relativeFilePath +Write-Debug "[`$scriptName] - $relativeFilePath - Importing" +"@ + Get-Content -Path $file.FullName | Add-Content -Path $RootModuleFilePath -Force + Add-Content -Path $RootModuleFilePath -Value @" +Write-Debug "[`$scriptName] - $relativeFilePath - Done" +#endregion $relativeFilePath +"@ + } + + $subFolders = $Path | Get-ChildItem -Directory -Force | Sort-Object -Property Name + foreach ($subFolder in $subFolders) { + Add-ContentFromItem -Path $subFolder.FullName -RootModuleFilePath $RootModuleFilePath -RootPath $RootPath + } + Add-Content -Path $RootModuleFilePath -Force -Value @" +Write-Debug "[`$scriptName] - $relativeFolderPath - Done" +#endregion $relativeFolderPath +"@ +} diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleBase.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleBase.ps1 new file mode 100644 index 00000000..cc95352b --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleBase.ps1 @@ -0,0 +1,47 @@ +function Build-PSModuleBase { + <# + .SYNOPSIS + Compiles the base module files. + + .DESCRIPTION + This function will compile the base module files. + It will copy the source files to the output folder and remove the files that are not needed. + + .EXAMPLE + Build-PSModuleBase -SourceFolderPath 'C:\MyModule\src\MyModule' -OutputFolderPath 'C:\MyModule\build\MyModule' + #> + [CmdletBinding()] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSReviewUnusedParameter', '', Scope = 'Function', + Justification = 'LogGroup - Scoping affects the variables line of sight.' + )] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', Scope = 'Function', + Justification = 'Want to just write to the console, not the pipeline.' + )] + param( + # Name of the module. + [Parameter(Mandatory)] + [string] $ModuleName, + + # Path to the folder where the module source code is located. + [Parameter(Mandatory)] + [System.IO.DirectoryInfo] $ModuleSourceFolder, + + # Path to the folder where the built modules are outputted. + [Parameter(Mandatory)] + [System.IO.DirectoryInfo] $ModuleOutputFolder + ) + + Set-GitHubLogGroup 'Build base' { + $relModuleSourceFolder = $ModuleSourceFolder | Resolve-Path -Relative + $relModuleOutputFolder = $ModuleOutputFolder | Resolve-Path -Relative + Write-Host "Copying files from [$relModuleSourceFolder] to [$relModuleOutputFolder]" + Copy-Item -Path "$ModuleSourceFolder\*" -Destination $ModuleOutputFolder -Recurse -Force -Exclude "$ModuleName.psm1" + $null = New-Item -Path $ModuleOutputFolder -Name "$ModuleName.psm1" -ItemType File -Force + } + + Set-GitHubLogGroup 'Build base - Result' { + Get-ChildItem -Path $ModuleOutputFolder -Recurse -Force | Resolve-Path -Relative | Sort-Object + } +} diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleManifest.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleManifest.ps1 new file mode 100644 index 00000000..fd564a61 --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleManifest.ps1 @@ -0,0 +1,474 @@ +function Build-PSModuleManifest { + <# + .SYNOPSIS + Compiles the module manifest. + + .DESCRIPTION + This function will compile the module manifest. + It will generate the module manifest file and copy it to the output folder. + + .EXAMPLE + Build-PSModuleManifest -SourceFolderPath 'C:\MyModule\src\MyModule' -OutputFolderPath 'C:\MyModule\build\MyModule' + #> + [CmdletBinding()] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidLongLines', '', Scope = 'Function', + Justification = 'Easier to read the multi ternery operators in a single line.' + )] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSReviewUnusedParameter', '', Scope = 'Function', + Justification = 'LogGroup - Scoping affects the variables line of sight.' + )] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', Scope = 'Function', + Justification = 'Want to just write to the console, not the pipeline.' + )] + param( + # Name of the module. + [Parameter(Mandatory)] + [string] $ModuleName, + + # Folder where the built modules are outputted. 'outputs/modules/MyModule' + [Parameter(Mandatory)] + [System.IO.DirectoryInfo] $ModuleOutputFolder, + + # Module version to stamp into the manifest. + [Parameter(Mandatory)] + [string] $ModuleVersion, + + # Prerelease tag to stamp into the manifest's `PrivateData.PSData.Prerelease`. + [Parameter()] + [string] $ModulePrerelease + ) + + Set-GitHubLogGroup 'Build manifest file' { + $sourceManifestFilePath = Join-Path -Path $ModuleOutputFolder -ChildPath "$ModuleName.psd1" + Write-Host "[SourceManifestFilePath] - [$sourceManifestFilePath]" + if (-not (Test-Path -Path $sourceManifestFilePath)) { + Write-Host "[SourceManifestFilePath] - [$sourceManifestFilePath] - Not found" + $sourceManifestFilePath = Join-Path -Path $ModuleOutputFolder -ChildPath 'manifest.psd1' + } + if (-not (Test-Path -Path $sourceManifestFilePath)) { + Write-Host "[SourceManifestFilePath] - [$sourceManifestFilePath] - Not found" + $manifest = @{} + Write-Host '[Manifest] - Loading empty manifest' + } else { + Write-Host "[SourceManifestFilePath] - [$sourceManifestFilePath] - Found" + $manifest = Get-ModuleManifest -Path $sourceManifestFilePath -Verbose:$false + Write-Host '[Manifest] - Loading from file' + Remove-Item -Path $sourceManifestFilePath -Force -Verbose:$false + } + + $rootModule = "$ModuleName.psm1" + $manifest.RootModule = $rootModule + Write-Host "[RootModule] - [$($manifest.RootModule)]" + + $manifest.ModuleVersion = $ModuleVersion + Write-Host "[ModuleVersion] - [$($manifest.ModuleVersion)]" + + $manifest.Author = $manifest.Keys -contains 'Author' ? (-not [string]::IsNullOrEmpty($manifest.Author)) ? $manifest.Author : $env:GITHUB_REPOSITORY_OWNER : $env:GITHUB_REPOSITORY_OWNER + Write-Host "[Author] - [$($manifest.Author)]" + + $manifest.CompanyName = $manifest.Keys -contains 'CompanyName' ? (-not [string]::IsNullOrEmpty($manifest.CompanyName)) ? $manifest.CompanyName : $env:GITHUB_REPOSITORY_OWNER : $env:GITHUB_REPOSITORY_OWNER + Write-Host "[CompanyName] - [$($manifest.CompanyName)]" + + $year = Get-Date -Format 'yyyy' + $copyrightOwner = $manifest.CompanyName -eq $manifest.Author ? $manifest.Author : "$($manifest.Author) | $($manifest.CompanyName)" + $copyright = "(c) $year $copyrightOwner. All rights reserved." + $manifest.Copyright = $manifest.Keys -contains 'Copyright' ? -not [string]::IsNullOrEmpty($manifest.Copyright) ? $manifest.Copyright : $copyright : $copyright + Write-Host "[Copyright] - [$($manifest.Copyright)]" + + $repoDescription = gh repo view --json description | ConvertFrom-Json | Select-Object -ExpandProperty description + $manifest.Description = $manifest.Keys -contains 'Description' ? (-not [string]::IsNullOrEmpty($manifest.Description)) ? $manifest.Description : $repoDescription : $repoDescription + Write-Host "[Description] - [$($manifest.Description)]" + + $manifest.PowerShellHostName = $manifest.Keys -contains 'PowerShellHostName' ? -not [string]::IsNullOrEmpty($manifest.PowerShellHostName) ? $manifest.PowerShellHostName : $null : $null + Write-Host "[PowerShellHostName] - [$($manifest.PowerShellHostName)]" + + $manifest.PowerShellHostVersion = $manifest.Keys -contains 'PowerShellHostVersion' ? -not [string]::IsNullOrEmpty($manifest.PowerShellHostVersion) ? $manifest.PowerShellHostVersion : $null : $null + Write-Host "[PowerShellHostVersion] - [$($manifest.PowerShellHostVersion)]" + + $manifest.DotNetFrameworkVersion = $manifest.Keys -contains 'DotNetFrameworkVersion' ? -not [string]::IsNullOrEmpty($manifest.DotNetFrameworkVersion) ? $manifest.DotNetFrameworkVersion : $null : $null + Write-Host "[DotNetFrameworkVersion] - [$($manifest.DotNetFrameworkVersion)]" + + $manifest.ClrVersion = $manifest.Keys -contains 'ClrVersion' ? -not [string]::IsNullOrEmpty($manifest.ClrVersion) ? $manifest.ClrVersion : $null : $null + Write-Host "[ClrVersion] - [$($manifest.ClrVersion)]" + + $manifest.ProcessorArchitecture = $manifest.Keys -contains 'ProcessorArchitecture' ? -not [string]::IsNullOrEmpty($manifest.ProcessorArchitecture) ? $manifest.ProcessorArchitecture : 'None' : 'None' + Write-Host "[ProcessorArchitecture] - [$($manifest.ProcessorArchitecture)]" + + # Get the path separator for the current OS + $pathSeparator = [System.IO.Path]::DirectorySeparatorChar + + Write-Host '[FileList]' + $files = [System.Collections.Generic.List[System.IO.FileInfo]]::new() + + # Get files on module root + $ModuleOutputFolder | Get-ChildItem -File -ErrorAction SilentlyContinue | Where-Object -Property Name -NotLike '*.ps1' | + ForEach-Object { $files.Add($_) } + + # Get files on module subfolders, excluding the following folders 'init', 'classes', 'public', 'private' + $skipList = @('init', 'classes', 'functions', 'variables') + $ModuleOutputFolder | Get-ChildItem -Directory | Where-Object { $_.Name -notin $skipList } | + Get-ChildItem -Recurse -File -ErrorAction SilentlyContinue | ForEach-Object { $files.Add($_) } + + # Get the relative file path and store it in the manifest + $files = $files | Select-Object -ExpandProperty FullName | ForEach-Object { $_.Replace($ModuleOutputFolder, '').TrimStart($pathSeparator) } + $manifest.FileList = $files.count -eq 0 ? @() : @($files) + $manifest.FileList | ForEach-Object { Write-Host "[FileList] - [$_]" } + + $requiredAssembliesFolderPath = Join-Path $ModuleOutputFolder 'assemblies' + $nestedModulesFolderPath = Join-Path $ModuleOutputFolder 'modules' + + Write-Host '[RequiredAssemblies]' + $existingRequiredAssemblies = $manifest.RequiredAssemblies + $requiredAssemblies = Get-ChildItem -Path $requiredAssembliesFolderPath -Recurse -File -ErrorAction SilentlyContinue -Filter '*.dll' | + Select-Object -ExpandProperty FullName | + ForEach-Object { $_.Replace($ModuleOutputFolder, '').TrimStart([System.IO.Path]::DirectorySeparatorChar) } + $requiredAssemblies += Get-ChildItem -Path $nestedModulesFolderPath -Recurse -Depth 1 -File -ErrorAction SilentlyContinue -Filter '*.dll' | + Select-Object -ExpandProperty FullName | + ForEach-Object { $_.Replace($ModuleOutputFolder, '').TrimStart([System.IO.Path]::DirectorySeparatorChar) } + $manifest.RequiredAssemblies = if ($existingRequiredAssemblies) { $existingRequiredAssemblies } elseif ($requiredAssemblies.Count -gt 0) { @($requiredAssemblies) } else { @() } + $manifest.RequiredAssemblies | ForEach-Object { Write-Host "[RequiredAssemblies] - [$_]" } + + Write-Host '[NestedModules]' + $existingNestedModules = $manifest.NestedModules + $nestedModules = Get-ChildItem -Path $nestedModulesFolderPath -Recurse -Depth 1 -File -ErrorAction SilentlyContinue -Include '*.psm1', '*.ps1', '*.dll' | + Select-Object -ExpandProperty FullName | + ForEach-Object { $_.Replace($ModuleOutputFolder, '').TrimStart([System.IO.Path]::DirectorySeparatorChar) } + $manifest.NestedModules = if ($existingNestedModules) { $existingNestedModules } elseif ($nestedModules.Count -gt 0) { @($nestedModules) } else { @() } + $manifest.NestedModules | ForEach-Object { Write-Host "[NestedModules] - [$_]" } + + Write-Host '[ScriptsToProcess]' + $existingScriptsToProcess = $manifest.ScriptsToProcess + $allScriptsToProcess = @('scripts') | ForEach-Object { + Write-Host "[ScriptsToProcess] - Processing [$_]" + $scriptsFolderPath = Join-Path $ModuleOutputFolder $_ + Get-ChildItem -Path $scriptsFolderPath -Recurse -File -ErrorAction SilentlyContinue -Include '*.ps1' | Select-Object -ExpandProperty FullName | ForEach-Object { + $_.Replace($ModuleOutputFolder, '').TrimStart([System.IO.Path]::DirectorySeparatorChar) } + } + $manifest.ScriptsToProcess = if ($existingScriptsToProcess) { $existingScriptsToProcess } elseif ($allScriptsToProcess.Count -gt 0) { @($allScriptsToProcess) } else { @() } + $manifest.ScriptsToProcess | ForEach-Object { Write-Host "[ScriptsToProcess] - [$_]" } + + Write-Host '[TypesToProcess]' + $typesToProcess = Get-ChildItem -Path $ModuleOutputFolder -Recurse -File -ErrorAction SilentlyContinue -Include '*.Types.ps1xml' | + Select-Object -ExpandProperty FullName | + ForEach-Object { $_.Replace($ModuleOutputFolder, '').TrimStart($pathSeparator) } + $manifest.TypesToProcess = $typesToProcess.count -eq 0 ? @() : @($typesToProcess) + $manifest.TypesToProcess | ForEach-Object { Write-Host "[TypesToProcess] - [$_]" } + + Write-Host '[FormatsToProcess]' + $formatsToProcess = Get-ChildItem -Path $ModuleOutputFolder -Recurse -File -ErrorAction SilentlyContinue -Include '*.Format.ps1xml' | + Select-Object -ExpandProperty FullName | + ForEach-Object { $_.Replace($ModuleOutputFolder, '').TrimStart($pathSeparator) } + $manifest.FormatsToProcess = $formatsToProcess.count -eq 0 ? @() : @($formatsToProcess) + $manifest.FormatsToProcess | ForEach-Object { Write-Host "[FormatsToProcess] - [$_]" } + + Write-Host '[DscResourcesToExport]' + $dscResourcesToExportFolderPath = Join-Path $ModuleOutputFolder 'resources' + $dscResourcesToExport = Get-ChildItem -Path $dscResourcesToExportFolderPath -Recurse -File -ErrorAction SilentlyContinue -Include '*.psm1' | + Select-Object -ExpandProperty FullName | + ForEach-Object { $_.Replace($ModuleOutputFolder, '').TrimStart($pathSeparator) } + $manifest.DscResourcesToExport = $dscResourcesToExport.count -eq 0 ? @() : @($dscResourcesToExport) + $manifest.DscResourcesToExport | ForEach-Object { Write-Host "[DscResourcesToExport] - [$_]" } + + $manifest.FunctionsToExport = Get-PSModuleFunctionsToExport -SourceFolderPath $ModuleOutputFolder + $manifest.CmdletsToExport = Get-PSModuleCmdletsToExport -SourceFolderPath $ModuleOutputFolder + $manifest.AliasesToExport = Get-PSModuleAliasesToExport -SourceFolderPath $ModuleOutputFolder + $manifest.VariablesToExport = Get-PSModuleVariablesToExport -SourceFolderPath $ModuleOutputFolder + + Write-Host '[ModuleList]' + $moduleList = Get-ChildItem -Path $ModuleOutputFolder -Recurse -File -ErrorAction SilentlyContinue -Include '*.psm1' | Where-Object -Property Name -NE $rootModule | + Select-Object -ExpandProperty FullName | + ForEach-Object { $_.Replace($ModuleOutputFolder, '').TrimStart($pathSeparator) } + $manifest.ModuleList = $moduleList.count -eq 0 ? @() : @($moduleList) + $manifest.ModuleList | ForEach-Object { Write-Host "[ModuleList] - [$_]" } + + Write-Host '[Gather]' + $capturedModules = [System.Collections.Generic.List[System.Object]]::new() + $capturedVersions = [System.Collections.Generic.List[string]]::new() + $capturedPSEdition = [System.Collections.Generic.List[string]]::new() + + $files = $ModuleOutputFolder | Get-ChildItem -Recurse -File -ErrorAction SilentlyContinue + Write-Host "[Gather] - Processing [$($files.Count)] files" + foreach ($file in $files) { + $relativePath = $file.FullName.Replace($ModuleOutputFolder, '').TrimStart($pathSeparator) + Write-Host "[Gather] - [$relativePath]" + + if ($file.extension -in '.psm1', '.ps1') { + $fileContent = Get-Content -Path $file + + switch -Regex ($fileContent) { + # RequiredModules -> REQUIRES -Modules | , @() if not provided + '^\s*#Requires -Modules (.+)$' { + # Add captured module name to array + $capturedMatches = $matches[1].Split(',').trim() + $capturedMatches | ForEach-Object { + $hashtable = '@\{[^}]*\}' + if ($_ -match $hashtable) { + Write-Host " - [#Requires -Modules] - [$_] - Hashtable" + } else { + Write-Host " - [#Requires -Modules] - [$_] - String" + } + $capturedModules.Add($_) + } + } + # PowerShellVersion -> REQUIRES -Version [.], $null if not provided + '^\s*#Requires -Version (.+)$' { + Write-Host " - [#Requires -Version] - [$($matches[1])]" + $capturedVersions.Add($matches[1]) + } + #CompatiblePSEditions -> REQUIRES -PSEdition , $null if not provided + '^\s*#Requires -PSEdition (.+)$' { + Write-Host " - [#Requires -PSEdition] - [$($matches[1])]" + $capturedPSEdition.Add($matches[1]) + } + } + } + } + + <# + $test = [Microsoft.PowerShell.Commands.ModuleSpecification]::new() + [Microsoft.PowerShell.Commands.ModuleSpecification]::TryParse("@{ModuleName = 'Az'; RequiredVersion = '5.0.0' }", [ref]$test) + $test + + $test.ToString() + + $required = [Microsoft.PowerShell.Commands.ModuleSpecification]::new(@{ModuleName = 'Az'; RequiredVersion = '5.0.0' }) + $required.ToString() + #> + + Write-Host '[RequiredModules] - Gathered' + # Group the module specifications by ModuleName + $capturedModules = $capturedModules | ForEach-Object { + $test = [Microsoft.PowerShell.Commands.ModuleSpecification]::new() + if ([Microsoft.PowerShell.Commands.ModuleSpecification]::TryParse($_, [ref]$test)) { + $test + } else { + [Microsoft.PowerShell.Commands.ModuleSpecification]::new($_) + } + } + + $groupedModules = $capturedModules | Group-Object -Property Name + + # Initialize a list to store unique module specifications + $uniqueModules = [System.Collections.Generic.List[System.Object]]::new() + + # Iterate through each group + foreach ($group in $groupedModules) { + $requiredModuleName = $group.Name + Write-Host "Processing required module [$requiredModuleName]" + $requiredVersion = $group.Group.RequiredVersion | ForEach-Object { [Version]$_ } | Sort-Object -Unique + $minimumVersion = $group.Group.Version | ForEach-Object { [Version]$_ } | Sort-Object -Unique | Select-Object -Last 1 + $maximumVersion = $group.Group.MaximumVersion | ForEach-Object { [Version]$_ } | Sort-Object -Unique | Select-Object -First 1 + Write-Host "RequiredVersion: [$($requiredVersion -join ', ')]" + Write-Host "ModuleVersion: [$minimumVersion]" + Write-Host "MaximumVersion: [$maximumVersion]" + + if ($requiredVersion.Count -gt 1) { + throw 'Multiple RequiredVersions specified.' + } + + if (-not $minimumVersion) { + $minimumVersion = [Version]'0.0.0' + } + + if (-not $maximumVersion) { + $maximumVersion = [Version]'9999.9999.9999' + } + + if ($requiredVersion -and ($minimumVersion -gt $requiredVersion)) { + throw 'ModuleVersion is higher than RequiredVersion.' + } + + if ($minimumVersion -gt $maximumVersion) { + throw 'ModuleVersion is higher than MaximumVersion.' + } + if ($requiredVersion -and ($requiredVersion -gt $maximumVersion)) { + throw 'RequiredVersion is higher than MaximumVersion.' + } + + if ($requiredVersion) { + Write-Host '[RequiredModules] - RequiredVersion' + $uniqueModule = @{ + ModuleName = $requiredModuleName + RequiredVersion = $requiredVersion + } + } elseif (($minimumVersion -ne [Version]'0.0.0') -or ($maximumVersion -ne [Version]'9999.9999.9999')) { + Write-Host '[RequiredModules] - ModuleVersion/MaximumVersion' + $uniqueModule = @{ + ModuleName = $requiredModuleName + } + if ($minimumVersion -ne [Version]'0.0.0') { + $uniqueModule['ModuleVersion'] = $minimumVersion + } + if ($maximumVersion -ne [Version]'9999.9999.9999') { + $uniqueModule['MaximumVersion'] = $maximumVersion + } + } else { + Write-Host '[RequiredModules] - Simple string' + $uniqueModule = $requiredModuleName + } + $uniqueModules.Add([Microsoft.PowerShell.Commands.ModuleSpecification]::new($uniqueModule)) + } + + Write-Host '[RequiredModules] - Result' + $manifest.RequiredModules = $uniqueModules + $manifest.RequiredModules | ForEach-Object { Write-Host " - [$($_ | Out-String)]" } + + Write-Host '[PowerShellVersion]' + $capturedVersions = $capturedVersions | Sort-Object -Unique -Descending + $capturedVersions | ForEach-Object { Write-Host "[PowerShellVersion] - [$_]" } + $manifest.PowerShellVersion = $capturedVersions.count -eq 0 ? [version]'5.1' : [version]($capturedVersions | Select-Object -First 1) + Write-Host '[PowerShellVersion] - Selecting version' + Write-Host "[PowerShellVersion] - [$($manifest.PowerShellVersion)]" + + Write-Host '[CompatiblePSEditions]' + $capturedPSEdition = $capturedPSEdition | Sort-Object -Unique + if ($capturedPSEdition.count -eq 2) { + throw "Conflict detected: The module requires both 'Desktop' and 'Core' editions." + + "'Desktop' and 'Core' editions cannot be required at the same time." + } + if ($capturedPSEdition.count -eq 0 -and $manifest.PowerShellVersion -gt '5.1') { + Write-Host "[CompatiblePSEditions] - Defaulting to 'Core', as no PSEdition was specified and PowerShellVersion > 5.1" + $capturedPSEdition = @('Core') + } + $manifest.CompatiblePSEditions = $capturedPSEdition.count -eq 0 ? @('Core', 'Desktop') : @($capturedPSEdition) + $manifest.CompatiblePSEditions | ForEach-Object { Write-Host "[CompatiblePSEditions] - [$_]" } + + if ($manifest.PowerShellVersion -gt '5.1' -and $manifest.CompatiblePSEditions -contains 'Desktop') { + throw "Conflict detected: The module requires PowerShellVersion > 5.1 while CompatiblePSEditions = 'Desktop'" + + "'Desktop' edition is not supported for PowerShellVersion > 5.1" + } + + Write-Host '[PrivateData]' + $privateData = $manifest.Keys -contains 'PrivateData' ? $null -ne $manifest.PrivateData ? $manifest.PrivateData : @{} : @{} + if ($manifest.Keys -contains 'PrivateData') { + $manifest.Remove('PrivateData') + } + + Write-Host '[HelpInfoURI]' + $manifest.HelpInfoURI = $privateData.Keys -contains 'HelpInfoURI' ? $null -ne $privateData.HelpInfoURI ? $privateData.HelpInfoURI : '' : '' + Write-Host "[HelpInfoURI] - [$($manifest.HelpInfoURI)]" + if ([string]::IsNullOrEmpty($manifest.HelpInfoURI)) { + $manifest.Remove('HelpInfoURI') + } + + Write-Host '[DefaultCommandPrefix]' + $manifest.DefaultCommandPrefix = $privateData.Keys -contains 'DefaultCommandPrefix' ? $null -ne $privateData.DefaultCommandPrefix ? $privateData.DefaultCommandPrefix : '' : '' + Write-Host "[DefaultCommandPrefix] - [$($manifest.DefaultCommandPrefix)]" + + $PSData = $privateData.Keys -contains 'PSData' ? $null -ne $privateData.PSData ? $privateData.PSData : @{} : @{} + + Write-Host '[Tags]' + try { + $repoLabels = gh repo view --json repositoryTopics | ConvertFrom-Json | Select-Object -ExpandProperty repositoryTopics | Select-Object -ExpandProperty name + } catch { + $repoLabels = @() + } + $manifestTags = [System.Collections.Generic.List[string]]::new() + $tags = $PSData.Keys -contains 'Tags' ? ($PSData.Tags).Count -gt 0 ? $PSData.Tags : $repoLabels : $repoLabels + $tags | ForEach-Object { $manifestTags.Add($_) } + 'Windows', 'Linux', 'MacOS' | ForEach-Object { $manifestTags.Add($_) } + # Add tags for compatibility mode. https://docs.microsoft.com/en-us/powershell/scripting/developer/module/how-to-write-a-powershell-module-manifest?view=powershell-7.1#compatibility-tags + if ($manifest.CompatiblePSEditions -contains 'Desktop') { + if ($manifestTags -notcontains 'PSEdition_Desktop') { + $manifestTags.Add('PSEdition_Desktop') + } + } + if ($manifest.CompatiblePSEditions -contains 'Core') { + if ($manifestTags -notcontains 'PSEdition_Core') { + $manifestTags.Add('PSEdition_Core') + } + } + $manifestTags | ForEach-Object { Write-Host "[Tags] - [$_]" } + $manifest.Tags = $manifestTags + + if ($PSData.Tags -contains 'PSEdition_Core' -and $manifest.PowerShellVersion -lt '6.0') { + throw "[Tags] - Cannot be PSEdition = 'Core' and PowerShellVersion < 6.0" + } + <# + Windows: Packages that are compatible with the Windows Operating System + Linux: Packages that are compatible with Linux Operating Systems + MacOS: Packages that are compatible with the Mac Operating System + https://learn.microsoft.com/en-us/powershell/gallery/concepts/package-manifest-affecting-ui?view=powershellget-2.x#tag-details + #> + + Write-Host '[LicenseUri]' + $licenseUri = "https://github.com/$env:GITHUB_REPOSITORY/blob/main/LICENSE" + $manifest.LicenseUri = $PSData.Keys -contains 'LicenseUri' ? $null -ne $PSData.LicenseUri ? $PSData.LicenseUri : $licenseUri : $licenseUri + Write-Host "[LicenseUri] - [$($manifest.LicenseUri)]" + if ([string]::IsNullOrEmpty($manifest.LicenseUri)) { + $manifest.Remove('LicenseUri') + } + + Write-Host '[ProjectUri]' + $projectUri = gh repo view --json url | ConvertFrom-Json | Select-Object -ExpandProperty url + $manifest.ProjectUri = $PSData.Keys -contains 'ProjectUri' ? $null -ne $PSData.ProjectUri ? $PSData.ProjectUri : $projectUri : $projectUri + Write-Host "[ProjectUri] - [$($manifest.ProjectUri)]" + if ([string]::IsNullOrEmpty($manifest.ProjectUri)) { + $manifest.Remove('ProjectUri') + } + + Write-Host '[IconUri]' + $iconUri = "https://raw.githubusercontent.com/$env:GITHUB_REPOSITORY/main/icon/icon.png" + $manifest.IconUri = $PSData.Keys -contains 'IconUri' ? $null -ne $PSData.IconUri ? $PSData.IconUri : $iconUri : $iconUri + Write-Host "[IconUri] - [$($manifest.IconUri)]" + if ([string]::IsNullOrEmpty($manifest.IconUri)) { + $manifest.Remove('IconUri') + } + + Write-Host '[ReleaseNotes]' + $manifest.ReleaseNotes = $PSData.Keys -contains 'ReleaseNotes' ? $null -ne $PSData.ReleaseNotes ? $PSData.ReleaseNotes : '' : '' + Write-Host "[ReleaseNotes] - [$($manifest.ReleaseNotes)]" + if ([string]::IsNullOrEmpty($manifest.ReleaseNotes)) { + $manifest.Remove('ReleaseNotes') + } + + Write-Host '[Prerelease]' + if (-not [string]::IsNullOrWhiteSpace($ModulePrerelease)) { + $manifest.Prerelease = $ModulePrerelease + Write-Host "[Prerelease] - [$($manifest.Prerelease)]" + } + + Write-Host '[RequireLicenseAcceptance]' + $manifest.RequireLicenseAcceptance = $PSData.Keys -contains 'RequireLicenseAcceptance' ? $null -ne $PSData.RequireLicenseAcceptance ? $PSData.RequireLicenseAcceptance : $false : $false + Write-Host "[RequireLicenseAcceptance] - [$($manifest.RequireLicenseAcceptance)]" + if ($manifest.RequireLicenseAcceptance -eq $false) { + $manifest.Remove('RequireLicenseAcceptance') + } + + Write-Host '[ExternalModuleDependencies]' + $manifest.ExternalModuleDependencies = $PSData.Keys -contains 'ExternalModuleDependencies' ? $null -ne $PSData.ExternalModuleDependencies ? $PSData.ExternalModuleDependencies : @() : @() + if (($manifest.ExternalModuleDependencies).count -eq 0) { + $manifest.Remove('ExternalModuleDependencies') + } else { + $manifest.ExternalModuleDependencies | ForEach-Object { Write-Host "[ExternalModuleDependencies] - [$_]" } + } + + Write-Host 'Creating new manifest file in outputs folder' + $outputManifestPath = Join-Path -Path $ModuleOutputFolder -ChildPath "$ModuleName.psd1" + Write-Host "OutputManifestPath - [$outputManifestPath]" + New-ModuleManifest -Path $outputManifestPath @manifest + } + + Set-GitHubLogGroup 'Build manifest file - Result - Before format' { + Show-FileContent -Path $outputManifestPath + } + + Set-GitHubLogGroup 'Build manifest file - Format' { + Set-ModuleManifest -Path $outputManifestPath + } + + Set-GitHubLogGroup 'Build manifest file - Result - After format' { + Show-FileContent -Path $outputManifestPath + } + + Set-GitHubLogGroup 'Build manifest file - Validate - Install module dependencies' { + Resolve-PSModuleDependency -ManifestFilePath $outputManifestPath + } + + Set-GitHubLogGroup 'Build manifest file - Validate - Test manifest file' { + Test-ModuleManifest -Path $outputManifestPath | Format-List | Out-String + } +} diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleRootModule.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleRootModule.ps1 new file mode 100644 index 00000000..02aaa984 --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build/Build-PSModuleRootModule.ps1 @@ -0,0 +1,264 @@ +function Build-PSModuleRootModule { + <# + .SYNOPSIS + Compiles the module root module files. + + .DESCRIPTION + This function will compile the modules root module from source files. + It will copy the source files to the output folder and start compiling the module. + During compilation, the source files are added to the root module file in the following order: + + 1. Module header from header.ps1 file. Usually to suppress code analysis warnings/errors and to add [CmdletBinding()] to the module. + 2. Data loader is added if data files are available. + 3. Combines *.ps1 files from the following folders in alphabetical order from each folder: + 1. init + 2. classes/private + 3. classes/public + 4. functions/private + 5. functions/public + 6. variables/private + 7. variables/public + 8. Any remaining *.ps1 on module root. + 4. Adds a class loader for classes found in the classes/public folder. + 5. Export-ModuleMember by using the functions, cmdlets, variables and aliases found in the source files. + - `Functions` will only contain functions that are from the `functions/public` folder. + - `Cmdlets` will only contain cmdlets that are from the `cmdlets/public` folder. + - `Variables` will only contain variables that are from the `variables/public` folder. + - `Aliases` will only contain aliases that are from the functions from the `functions/public` folder. + + .EXAMPLE + Build-PSModuleRootModule -SourceFolderPath 'C:\MyModule\src\MyModule' -OutputFolderPath 'C:\MyModule\build\MyModule' + #> + [CmdletBinding()] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSReviewUnusedParameter', '', Scope = 'Function', + Justification = 'LogGroup - Scoping affects the variables line of sight.' + )] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', Scope = 'Function', + Justification = 'Want to just write to the console, not the pipeline.' + )] + param( + # Name of the module. + [Parameter(Mandatory)] + [string] $ModuleName, + + # Folder where the built modules are outputted. 'outputs/modules/MyModule' + [Parameter(Mandatory)] + [System.IO.DirectoryInfo] $ModuleOutputFolder + ) + + # Get the path separator for the current OS + $pathSeparator = [System.IO.Path]::DirectorySeparatorChar + + Set-GitHubLogGroup 'Build root module' { + $rootModuleFile = New-Item -Path $ModuleOutputFolder -Name "$ModuleName.psm1" -Force + + #region - Analyze source files + + #region - Export-Classes + $classesFolder = Join-Path -Path $ModuleOutputFolder -ChildPath 'classes/public' + $classExports = '' + if (Test-Path -Path $classesFolder) { + $classes = Get-PSModuleClassesToExport -SourceFolderPath $classesFolder + if ($classes.count -gt 0) { + $classExports += @' +#region Class exporter +# Get the internal TypeAccelerators class to use its static methods. +$TypeAcceleratorsClass = [psobject].Assembly.GetType( + 'System.Management.Automation.TypeAccelerators' +) +# Ensure none of the types would clobber an existing type accelerator. +# If a type accelerator with the same name exists, throw an exception. +$ExistingTypeAccelerators = $TypeAcceleratorsClass::Get +# Define the types to export with type accelerators. +$ExportableEnums = @( + +'@ + $classes | Where-Object Type -EQ 'enum' | ForEach-Object { + $classExports += " [$($_.Name)]`n" + } + + $classExports += @' +) +$ExportableEnums | Foreach-Object { Write-Verbose "Exporting enum '$($_.FullName)'." } +foreach ($Type in $ExportableEnums) { + if ($Type.FullName -in $ExistingTypeAccelerators.Keys) { + Write-Verbose "Enum already exists [$($Type.FullName)]. Skipping." + } else { + Write-Verbose "Importing enum '$Type'." + $TypeAcceleratorsClass::Add($Type.FullName, $Type) + } +} +$ExportableClasses = @( + +'@ + $classes | Where-Object Type -EQ 'class' | ForEach-Object { + $classExports += " [$($_.Name)]`n" + } + + $classExports += @' +) +$ExportableClasses | Foreach-Object { Write-Verbose "Exporting class '$($_.FullName)'." } +foreach ($Type in $ExportableClasses) { + if ($Type.FullName -in $ExistingTypeAccelerators.Keys) { + Write-Verbose "Class already exists [$($Type.FullName)]. Skipping." + } else { + Write-Verbose "Importing class '$Type'." + $TypeAcceleratorsClass::Add($Type.FullName, $Type) + } +} + +# Remove type accelerators when the module is removed. +$MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = { + foreach ($Type in ($ExportableEnums + $ExportableClasses)) { + $null = $TypeAcceleratorsClass::Remove($Type.FullName) + } +}.GetNewClosure() +#endregion Class exporter +'@ + } + } + #endregion - Export-Classes + + $exports = [System.Collections.Specialized.OrderedDictionary]::new() + $exports.Add('Alias', (Get-PSModuleAliasesToExport -SourceFolderPath $ModuleOutputFolder)) + $exports.Add('Cmdlet', (Get-PSModuleCmdletsToExport -SourceFolderPath $ModuleOutputFolder)) + $exports.Add('Function', (Get-PSModuleFunctionsToExport -SourceFolderPath $ModuleOutputFolder)) + $exports.Add('Variable', (Get-PSModuleVariablesToExport -SourceFolderPath $ModuleOutputFolder)) + + [pscustomobject]$exports | Format-List | Out-String + #endregion - Analyze source files + + #region - Module header + $headerFilePath = Join-Path -Path $ModuleOutputFolder -ChildPath 'header.ps1' + if (Test-Path -Path $headerFilePath) { + Get-Content -Path $headerFilePath -Raw | Add-Content -Path $rootModuleFile -Force + $headerFilePath | Remove-Item -Force + } else { + Add-Content -Path $rootModuleFile -Force -Value @' +[CmdletBinding()] +param() +'@ + } + #endregion - Module header + + #region - Module post-header + Add-Content -Path $rootModuleFile -Force -Value @' +$baseName = [System.IO.Path]::GetFileNameWithoutExtension($PSCommandPath) +$script:PSModuleInfo = Import-PowerShellDataFile -Path "$PSScriptRoot\$baseName.psd1" +$script:PSModuleInfo | Format-List | Out-String -Stream | ForEach-Object { Write-Debug $_ } +$scriptName = $script:PSModuleInfo.Name +Write-Debug "[$scriptName] - Importing module" + +'@ + #endregion - Module post-header + + #region - Data loader + if (Test-Path -Path (Join-Path -Path $ModuleOutputFolder -ChildPath 'data')) { + + Add-Content -Path $rootModuleFile.FullName -Force -Value @' +#region Data importer +Write-Debug "[$scriptName] - [data] - Processing folder" +$dataFolder = (Join-Path $PSScriptRoot 'data') +Write-Debug "[$scriptName] - [data] - [$dataFolder]" +Get-ChildItem -Path "$dataFolder" -Recurse -Force -Include '*.psd1' -ErrorAction SilentlyContinue | ForEach-Object { + Write-Debug "[$scriptName] - [data] - [$($_.BaseName)] - Importing" + New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force + Write-Debug "[$scriptName] - [data] - [$($_.BaseName)] - Done" +} +Write-Debug "[$scriptName] - [data] - Done" +#endregion Data importer +'@ + } + #endregion - Data loader + + #region - Add content from subfolders + $scriptFoldersToProcess = @( + 'init', + 'classes/private', + 'classes/public', + 'functions/private', + 'functions/public', + 'variables/private', + 'variables/public' + ) + + foreach ($scriptFolder in $scriptFoldersToProcess) { + $scriptFolder = Join-Path -Path $ModuleOutputFolder -ChildPath $scriptFolder + if (-not (Test-Path -Path $scriptFolder)) { + continue + } + Add-ContentFromItem -Path $scriptFolder -RootModuleFilePath $rootModuleFile -RootPath $ModuleOutputFolder + Remove-Item -Path $scriptFolder -Force -Recurse + } + #endregion - Add content from subfolders + + #region - Add content from *.ps1 files on module root + $files = $ModuleOutputFolder | Get-ChildItem -File -Force -Filter '*.ps1' | Sort-Object -Property FullName + foreach ($file in $files) { + $relativePath = $file.FullName -replace $ModuleOutputFolder, '' + $relativePath = $relativePath -replace $file.Extension, '' + $relativePath = $relativePath.TrimStart($pathSeparator) + $relativePath = $relativePath -split $pathSeparator | ForEach-Object { "[$_]" } + $relativePath = $relativePath -join ' - ' + + Add-Content -Path $rootModuleFile -Force -Value @" +#region $relativePath +Write-Debug "[`$scriptName] - $relativePath - Importing" +"@ + Get-Content -Path $file.FullName | Add-Content -Path $rootModuleFile -Force + + Add-Content -Path $rootModuleFile -Force -Value @" +Write-Debug "[`$scriptName] - $relativePath - Done" +#endregion $relativePath +"@ + $file | Remove-Item -Force + } + #endregion - Add content from *.ps1 files on module root + + #region - Export-ModuleMember + Add-Content -Path $rootModuleFile -Force -Value $classExports + + $exportsString = $exports | Format-Hashtable + + $exportsString | Out-String + + $params = @{ + Path = $rootModuleFile + Force = $true + Value = @" +#region Member exporter +`$exports = $exportsString +Export-ModuleMember @exports +#endregion Member exporter +"@ + } + Add-Content @params + #endregion - Export-ModuleMember + + } + + Set-GitHubLogGroup 'Build root module - Result - Before format' { + Write-Host (Show-FileContent -Path $rootModuleFile) + } + + Set-GitHubLogGroup 'Build root module - Format' { + $AllContent = Get-Content -Path $rootModuleFile -Raw + $settings = Join-Path -Path $PSScriptRoot 'PSScriptAnalyzer.Tests.psd1' + Invoke-Formatter -ScriptDefinition $AllContent -Settings $settings | + Out-File -FilePath $rootModuleFile -Encoding utf8BOM -Force + } + + Set-GitHubLogGroup 'Build root module - Result - After format' { + Write-Host (Show-FileContent -Path $rootModuleFile) + } + + # Set-GitHubLogGroup 'Build root module - Validate - Import' { + # Install-PSModule -Path $ModuleOutputFolder + # } + + # Set-GitHubLogGroup 'Build root module - Validate - File list' { + # Get-ChildItem -Path $ModuleOutputFolder -Recurse -Force | Resolve-Path -Relative | Sort-Object + # } +} diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleAliasesToExport.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleAliasesToExport.ps1 new file mode 100644 index 00000000..adc21d13 --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleAliasesToExport.ps1 @@ -0,0 +1,36 @@ +function Get-PSModuleAliasesToExport { + <# + .SYNOPSIS + Gets the aliases to export from the module manifest. + + .DESCRIPTION + This function will get the aliases to export from the module manifest. + + .EXAMPLE + Get-PSModuleAliasesToExport -SourceFolderPath 'C:\MyModule\src\MyModule' + #> + [CmdletBinding()] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWriteHost', '', Scope = 'Function', Justification = 'Want to just write to the console, not the pipeline.')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidLongLines', '', Scope = 'Function', Justification = 'Contains long links.')] + param( + # Path to the folder where the module source code is located. + [Parameter(Mandatory)] + [string] $SourceFolderPath + ) + + $manifestPropertyName = 'AliasesToExport' + + $moduleName = Split-Path -Path $SourceFolderPath -Leaf + $manifestFileName = "$moduleName.psd1" + $manifestFilePath = Join-Path -Path $SourceFolderPath $manifestFileName + + $manifest = Get-ModuleManifest -Path $manifestFilePath -Verbose:$false + + Write-Host "[$manifestPropertyName]" + $aliasesToExport = (($manifest.AliasesToExport).count -eq 0) -or [string]::IsNullOrEmpty($manifest.AliasesToExport) ? '*' : $manifest.AliasesToExport + $aliasesToExport | ForEach-Object { + Write-Host "[$manifestPropertyName] - [$_]" + } + + $aliasesToExport +} diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleClassesToExport.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleClassesToExport.ps1 new file mode 100644 index 00000000..4b541f63 --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleClassesToExport.ps1 @@ -0,0 +1,40 @@ +function Get-PSModuleClassesToExport { + <# + .SYNOPSIS + Gets the classes to export from the module source code. + + .DESCRIPTION + This function will get the classes to export from the module source code. + + .EXAMPLE + Get-PSModuleClassesToExport -SourceFolderPath 'C:\MyModule\src\MyModule' + + Book + BookList + + This will return the classes to export from the module source code. + + .NOTES + Inspired by [about_Classes | Exporting classes with type accelerators](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_classes?view=powershell-7.4#exporting-classes-with-type-accelerators) + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidLongLines', '', Scope = 'Function', Justification = 'Contains long links.')] + [CmdletBinding()] + param ( + # The path to the module root folder. + [Parameter(Mandatory)] + [string] $SourceFolderPath + ) + + $files = Get-ChildItem -Path $SourceFolderPath -Recurse -Include '*.ps1' | Sort-Object -Property FullName + + foreach ($file in $files) { + $content = Get-Content -Path $file.FullName -Raw + $stringMatches = [Regex]::Matches($content, '(?i)^(class|enum)\s+([^\s{]+)', 'Multiline') + foreach ($match in $stringMatches) { + [pscustomobject]@{ + Type = $match.Groups[1].Value + Name = $match.Groups[2].Value + } + } + } +} diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleCmdletsToExport.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleCmdletsToExport.ps1 new file mode 100644 index 00000000..1ac20e65 --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleCmdletsToExport.ps1 @@ -0,0 +1,36 @@ +function Get-PSModuleCmdletsToExport { + <# + .SYNOPSIS + Gets the cmdlets to export from the module manifest. + + .DESCRIPTION + This function will get the cmdlets to export from the module manifest. + + .EXAMPLE + Get-PSModuleCmdletsToExport -SourceFolderPath 'C:\MyModule\src\MyModule' + #> + [CmdletBinding()] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWriteHost', '', Scope = 'Function', Justification = 'Want to just write to the console, not the pipeline.')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidLongLines', '', Scope = 'Function', Justification = 'Contains long links.')] + param( + # Path to the folder where the module source code is located. + [Parameter(Mandatory)] + [string] $SourceFolderPath + ) + + $manifestPropertyName = 'CmdletsToExport' + + $moduleName = Split-Path -Path $SourceFolderPath -Leaf + $manifestFileName = "$moduleName.psd1" + $manifestFilePath = Join-Path -Path $SourceFolderPath $manifestFileName + + $manifest = Get-ModuleManifest -Path $manifestFilePath -Verbose:$false + + Write-Host "[$manifestPropertyName]" + $cmdletsToExport = (($manifest.CmdletsToExport).count -eq 0) -or [string]::IsNullOrEmpty($manifest.CmdletsToExport) ? '' : $manifest.CmdletsToExport + $cmdletsToExport | ForEach-Object { + Write-Host "[$manifestPropertyName] - [$_]" + } + + $cmdletsToExport +} diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleFunctionsToExport.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleFunctionsToExport.ps1 new file mode 100644 index 00000000..3d64494d --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleFunctionsToExport.ps1 @@ -0,0 +1,46 @@ +function Get-PSModuleFunctionsToExport { + <# + .SYNOPSIS + Gets the functions to export from the module manifest. + + .DESCRIPTION + This function will get the functions to export from the module manifest. + + .EXAMPLE + Get-PSModuleFunctionsToExport -SourceFolderPath 'C:\MyModule\src\MyModule' + #> + [CmdletBinding()] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWriteHost', '', Scope = 'Function', Justification = 'Want to just write to the console, not the pipeline.')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidLongLines', '', Scope = 'Function', Justification = 'Contains long links.')] + [OutputType([array])] + param( + # Path to the folder where the module source code is located. + [Parameter(Mandatory)] + [string] $SourceFolderPath + ) + + $manifestPropertyName = 'FunctionsToExport' + + Write-Host "[$manifestPropertyName]" + Write-Host "[$manifestPropertyName] - Checking path for functions and filters" + + $publicFolderPath = Join-Path -Path $SourceFolderPath -ChildPath 'functions/public' + if (-not (Test-Path -Path $publicFolderPath -PathType Container)) { + Write-Host "[$manifestPropertyName] - [Folder not found] - [$publicFolderPath]" + return $functionsToExport + } + Write-Host "[$manifestPropertyName] - [$publicFolderPath]" + $functionsToExport = [Collections.Generic.List[string]]::new() + $scriptFiles = Get-ChildItem -Path $publicFolderPath -Recurse -File -ErrorAction SilentlyContinue -Include '*.ps1' + Write-Host "[$manifestPropertyName] - [$($scriptFiles.Count)]" + foreach ($file in $scriptFiles) { + $fileContent = Get-Content -Path $file.FullName -Raw + $containsFunction = ($fileContent -match 'function ') -or ($fileContent -match 'filter ') + Write-Host "[$manifestPropertyName] - [$($file.BaseName)] - [$containsFunction]" + if ($containsFunction) { + $functionsToExport.Add($file.BaseName) + } + } + + [array]$functionsToExport +} diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleVariablesToExport.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleVariablesToExport.ps1 new file mode 100644 index 00000000..6649d91b --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build/Get-PSModuleVariablesToExport.ps1 @@ -0,0 +1,50 @@ +function Get-PSModuleVariablesToExport { + <# + .SYNOPSIS + Gets the variables to export from the module manifest. + + .DESCRIPTION + This function will get the variables to export from the module manifest. + + .EXAMPLE + Get-PSModuleVariablesToExport -SourceFolderPath 'C:\MyModule\src\MyModule' + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', Scope = 'Function', + Justification = 'Want to just write to the console, not the pipeline.' + )] + [OutputType([string])] + [OutputType([Collections.Generic.List[string]])] + [CmdletBinding()] + param( + # Path to the folder where the module source code is located. + [Parameter(Mandatory)] + [string] $SourceFolderPath + ) + + $manifestPropertyName = 'VariablesToExport' + + Write-Host "[$manifestPropertyName]" + + $variablesToExport = [Collections.Generic.List[string]]::new() + $variableFolderPath = Join-Path -Path $SourceFolderPath -ChildPath 'variables/public' + if (-not (Test-Path -Path $variableFolderPath -PathType Container)) { + Write-Host "[$manifestPropertyName] - [Folder not found] - [$variableFolderPath]" + return '' + } + $scriptFilePaths = Get-ChildItem -Path $variableFolderPath -Recurse -File -Filter *.ps1 | Select-Object -ExpandProperty FullName + + $scriptFilePaths | ForEach-Object { + $ast = [System.Management.Automation.Language.Parser]::ParseFile($_, [ref]$null, [ref]$null) + $variables = Get-RootLevelVariable -Ast $ast + $variables | ForEach-Object { + $variablesToExport.Add($_) + } + } + + $variablesToExport | ForEach-Object { + Write-Host "[$manifestPropertyName] - [$_]" + } + + $variablesToExport +} diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Get-RootLevelVariables.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Get-RootLevelVariables.ps1 new file mode 100644 index 00000000..20daece6 --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build/Get-RootLevelVariables.ps1 @@ -0,0 +1,22 @@ +function Get-RootLevelVariable { + <# + .SYNOPSIS + Get the root-level variables in a ast. + + .EXAMPLE + Get-RootLevelVariable -Ast $ast + #> + [CmdletBinding()] + param ( + # The Abstract Syntax Tree (AST) to analyze + [System.Management.Automation.Language.ScriptBlockAst]$Ast + ) + # Iterate over the top-level statements in the AST + foreach ($statement in $Ast.EndBlock.Statements) { + # Check if the statement is an assignment statement + if ($statement -is [System.Management.Automation.Language.AssignmentStatementAst]) { + # Get the variable name, removing the scope prefix + $statement.Left.VariablePath.UserPath -replace '.*:' + } + } +} diff --git a/.github/actions/Build-PSModule/src/helpers/Build/PSScriptAnalyzer.Tests.psd1 b/.github/actions/Build-PSModule/src/helpers/Build/PSScriptAnalyzer.Tests.psd1 new file mode 100644 index 00000000..9f7bc652 --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build/PSScriptAnalyzer.Tests.psd1 @@ -0,0 +1,55 @@ +@{ + Rules = @{ + PSAlignAssignmentStatement = @{ + Enable = $true + CheckHashtable = $true + } + PSAvoidLongLines = @{ + Enable = $true + MaximumLineLength = 150 + } + PSAvoidSemicolonsAsLineTerminators = @{ + Enable = $true + } + PSPlaceCloseBrace = @{ + Enable = $true + NewLineAfter = $false + IgnoreOneLineBlock = $true + NoEmptyLineBefore = $false + } + PSPlaceOpenBrace = @{ + Enable = $true + OnSameLine = $true + NewLineAfter = $true + IgnoreOneLineBlock = $true + } + PSProvideCommentHelp = @{ + Enable = $true + ExportedOnly = $false + BlockComment = $true + VSCodeSnippetCorrection = $false + Placement = 'begin' + } + PSUseConsistentIndentation = @{ + Enable = $true + IndentationSize = 4 + PipelineIndentation = 'IncreaseIndentationForFirstPipeline' + Kind = 'space' + } + PSUseConsistentWhitespace = @{ + Enable = $true + CheckInnerBrace = $true + CheckOpenBrace = $true + CheckOpenParen = $true + CheckOperator = $true + CheckPipe = $true + CheckPipeForRedundantWhitespace = $true + CheckSeparator = $true + CheckParameter = $true + IgnoreAssignmentOperatorInsideHashTable = $true + } + } + ExcludeRules = @( + 'PSUseToExportFieldsInManifest' + ) +} diff --git a/.github/actions/Build-PSModule/src/helpers/Build/Update-PSModuleManifestAliasesToExport.ps1 b/.github/actions/Build-PSModule/src/helpers/Build/Update-PSModuleManifestAliasesToExport.ps1 new file mode 100644 index 00000000..5597cd1e --- /dev/null +++ b/.github/actions/Build-PSModule/src/helpers/Build/Update-PSModuleManifestAliasesToExport.ps1 @@ -0,0 +1,97 @@ +function Update-PSModuleManifestAliasesToExport { + <# + .SYNOPSIS + Updates the aliases to export in the module manifest. + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Updates a file that is being built.' + )] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSReviewUnusedParameter', '', Scope = 'Function', + Justification = 'LogGroup - Scoping affects the variables line of sight.' + )] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', Scope = 'Function', + Justification = 'Want to just write to the console, not the pipeline.' + )] + [CmdletBinding()] + param( + # Name of the module. + [Parameter(Mandatory)] + [string] $ModuleName, + + # Path to the folder where the module source code is located. + [Parameter(Mandatory)] + [System.IO.DirectoryInfo] $ModuleSourceFolder, + + # Path to the folder where the built modules are outputted. + [Parameter(Mandatory)] + [System.IO.DirectoryInfo] $ModuleOutputFolder + ) + Set-GitHubLogGroup 'Updating aliases to export in module manifest' { + Write-Host "Module name: [$ModuleName]" + Write-Host "Module output folder: [$ModuleSourceFolder]" + + $publicFunctionsPath = Join-Path -Path $ModuleSourceFolder -ChildPath 'functions/public' + Write-Host "Public functions path: [$publicFunctionsPath]" + if (-not (Test-Path -Path $publicFunctionsPath)) { + Write-Host "Public functions path does not exist: [$publicFunctionsPath]" + return + } + + # Get all child items in the module source folder of a powershell file type + $files = Get-ChildItem -Path $publicFunctionsPath -Recurse -File -Include '*.ps1', '*.psm1' | Select-Object -ExpandProperty FullName + + # Initialize an array to store all found aliases + $allAliases = @() + + foreach ($file in $files) { + Write-Host "Parsing file: [$file]" + + # Parse the file using AST + $ast = [System.Management.Automation.Language.Parser]::ParseFile( + $file, + [ref]$null, + [ref]$null + ) + + # Get all function definitions + $functionAsts = $ast.FindAll( + { + param($node) + $node -is [System.Management.Automation.Language.FunctionDefinitionAst] + }, $false) + + Write-Host " Found functions: [$($functionAsts.Count)]" + foreach ($functionAst in $functionAsts) { + # Get the function name + $functionName = $functionAst.Name + Write-Host " Processing: [$functionName]" + + $functionAst | ForEach-Object { + $funcName = $_.Name + $funcAttributes = $_.Body.FindAll({ $args[0] -is [System.Management.Automation.Language.AttributeAst] }, $true) | Where-Object { + $_.Parent -is [System.Management.Automation.Language.ParamBlockAst] + } + $aliasAttr = $funcAttributes | Where-Object { $_.TypeName.Name -eq 'Alias' } + + if ($aliasAttr) { + $aliases = $aliasAttr.PositionalArguments | ForEach-Object { $_.ToString().Trim('"', "'") } + Write-Host " Found alias [$aliases] for function [$funcName]" + $allAliases += $aliases + } + } + } + } + + Write-Host "Found aliases: [$($allAliases.Count)]" + foreach ($alias in $allAliases) { + Write-Host " - [$alias]" + } + $outputManifestPath = Join-Path -Path $ModuleOutputFolder -ChildPath "$ModuleName.psd1" + Write-Host "Output manifest path: [$outputManifestPath]" + Write-Host 'Setting module manifest with AliasesToExport' + Set-ModuleManifest -Path $outputManifestPath -AliasesToExport $allAliases -Verbose + } +} diff --git a/.github/actions/Build-PSModule/src/main.ps1 b/.github/actions/Build-PSModule/src/main.ps1 new file mode 100644 index 00000000..b782d904 --- /dev/null +++ b/.github/actions/Build-PSModule/src/main.ps1 @@ -0,0 +1,69 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', + Justification = 'Want to just write to the console, not the pipeline.' +)] +[CmdletBinding()] +param() + +$path = (Join-Path -Path $PSScriptRoot -ChildPath 'helpers') | Get-Item | Resolve-Path -Relative +Set-GitHubLogGroup "Loading helper scripts from [$path]" { + Get-ChildItem -Path $path -Filter '*.ps1' -Recurse | Resolve-Path -Relative | ForEach-Object { + Write-Host "$_" + . $_ + } +} + +$env:GITHUB_REPOSITORY_NAME = $env:GITHUB_REPOSITORY -replace '.+/' + +Set-GitHubLogGroup 'Loading inputs' { + $moduleName = if ([string]::IsNullOrEmpty($env:PSMODULE_BUILD_PSMODULE_INPUT_Name)) { + $env:GITHUB_REPOSITORY_NAME + } else { + $env:PSMODULE_BUILD_PSMODULE_INPUT_Name + } + $moduleVersion = $env:PSMODULE_BUILD_PSMODULE_INPUT_Version + $modulePrerelease = $env:PSMODULE_BUILD_PSMODULE_INPUT_Prerelease + $sourceFolderPath = Resolve-Path -Path 'src' | Select-Object -ExpandProperty Path + $moduleOutputFolderPath = Join-Path $pwd -ChildPath $env:PSMODULE_BUILD_PSMODULE_INPUT_OutputFolder + [pscustomobject]@{ + moduleName = $moduleName + moduleVersion = $moduleVersion + modulePrerelease = $modulePrerelease + sourceFolderPath = $sourceFolderPath + moduleOutputFolderPath = $moduleOutputFolderPath + } | Format-List | Out-String +} + +if ([string]::IsNullOrWhiteSpace($moduleVersion)) { + throw 'Version is required. Please provide a module version.' +} + +if ($moduleVersion -notmatch '^\d+\.\d+\.\d+$') { + throw "Version '$moduleVersion' is not a valid version. Expected format: 'Major.Minor.Patch' (e.g., '1.2.3')." +} + +Set-GitHubLogGroup 'Build local scripts' { + Write-Host 'Execution order:' + $scripts = Get-ChildItem -Filter '*build.ps1' -Recurse | Sort-Object -Property Name | Resolve-Path -Relative + $scripts | ForEach-Object { + Write-Host " - $_" + } + $scripts | ForEach-Object { + Set-GitHubLogGroup "Build local scripts - [$_]" { + . $_ + } + } +} + +$params = @{ + ModuleName = $moduleName + ModuleSourceFolderPath = $sourceFolderPath + ModuleOutputFolderPath = $moduleOutputFolderPath + ModuleVersion = $moduleVersion + ModulePrerelease = $modulePrerelease +} +Build-PSModule @params + +"ModuleOutputFolderPath=$moduleOutputFolderPath" >> $env:GITHUB_OUTPUT + +exit 0 diff --git a/.github/actions/Build-PSModule/tests/srcMinimalTestRepo/src/functions/public/Test-PSModuleTest.ps1 b/.github/actions/Build-PSModule/tests/srcMinimalTestRepo/src/functions/public/Test-PSModuleTest.ps1 new file mode 100644 index 00000000..26be2b9b --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcMinimalTestRepo/src/functions/public/Test-PSModuleTest.ps1 @@ -0,0 +1,18 @@ +function Test-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/assemblies/LsonLib.dll b/.github/actions/Build-PSModule/tests/srcTestRepo/src/assemblies/LsonLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..36618070d5c9f5131ec66720aa0565c13e86d23f GIT binary patch literal 43520 zcmeIb3w&HvwLiYjIrDxcGm|ELl4+Zkp_7F41!*a@Z(8VsJ}7-jm?qOUG|7aSq|g_n z3Mf#tDDnfvOHmL}^^c zi+?hD)t2^Rs=JWiT*!8&TC-hU`JU9qT&mF9m1^%w&0DrI)tPV0HAbVMI?ejr`9zBi zi>^05bb&4HFpWutjV7W`A;+h3A3lJ43fEy=M3s^@mEN48$v|TeA^(@-4YcdRE18u4 zm+l(nEPQ$n5G~`xVWKP85Cc92MUXe+TSOxVlpQA{MHFxq2Y@eh;f+1HOM8GH+7FPz z#chS&?oW#7!p1_e(27ja?JyGDQMcoAeP*G%8Vk9OJP27=B4q>mtRN1UMKs4jbmFrI zRDyLg$xAcZiTchX3hHwE_TWRvw~^!AlT9W~ML9HxlUWR*XF|UGFxLfVv}^EZT!R%n_#|JS7w&Gd~XZaOOP;BR!t0ldk|Z zyYnXl8ShJ&=`<1=E39`)P;d$geAVgAkV1s&5D{wl+LILt<7jmh((+ZvpeM@sdrVOrv+%Hbl8d?;KdkL7w*`4H$+b<_y?>f@%lGYPEt0;qR$ zzPXcOI79vkK;B4?@=~#zKxXlS>_> zS%Ap$i5RhmMW4al&-I%zbYWo8OI6G_LXD8GHq}_=s|_|*_-dn#Kto53>Z3-+s1Ez< z=aa9tVRECQuUVsN=TAkwQ-`@()vOU_wGC1ct_TN9!xwy%iDyoMHCWM_HKHnXkXDK& z!t1Cf8l0Ye`|Y=3%p`pETqufuj#FmppbAGD{i0^ZsDX}VX8bz~hy)t$pTPbx9lT*l z?$3T&oI2FqB56;t2`$Y86LfS4+;W6%*kqHRI>84H3qEP(lFTiE;gElco6Rw%d-!$m zE@ND^Z!db$_|&)>zfP1%s;yXCTao@VYJF;4nNjWB^s6X~WGJ9~T*Xi2lWE5txotmy zPSBHe;>Zy4B|ULZ1S6K?L;WZuphqYgtR2%h9z(JAkCv=$Up{Snp zW_FrsconBERxFdggfBe_Ov3)!hQ@@ywrNtxUpwunsXPW9lJv*@^&vA|qv}ob*Up~g z_1CVO2;wXg?{E_b;&2r+jgielB4*)tjuLS%`pZY(K$|cexJ?)$Xj7rWpzic!(V@PM zbl3aDk(7h!@l%ujG%7?gm-!0A>?+aVajR78D(CnLL(AU`g z{VC}(6^GGl$tDl&LOU=ZY`+U-wsIWfQLl#pEQoPaRpx_JxVth7RGv><5{A!C@{1YS z+N|72cO4xR*5;>5-H@+lO^9k>+bUgkAxAw**hQ|aSI)=9_>(ys~)!r z8X^hr(IIfR5pi@BYOyO7Ph%mq>ysW#LZ>4g_Z&5lY(}yr5}5V|8f{xnkAB@bW;)J& z?tAw_-aDue=q(-x&2KGfUKVd0i99CWO>@pXrX+S(NP6-3lH$H(Fq0rFe;x$ZtVv^{ zX--bf3Za6DYQaq4`)F=y~X2DS{>o_xj?c5?mN`3Std)GG|Col^c%l0(N(p%er>D#N~v=4pbRdHJ8kXX6dPK0aI;9L<9>XYSMo0r1rPlWYEH*4`q zt#kcZC&Ff$n~k`oX2Wh7iif6s4xO6$XPMx?Nl(PU>FcmY=2g;_j$53F85-SYD0M%g z?z9c)n0_PTL^zkZKw10GJ`py@>?fI>YU~Iy)MH1D|F8EMB9ipk2|0ak&~9p&cOsUY zKPV4gFjmAXrv2p~>+Q^-%uh_g!9x)%SQ)RZ|8E(J|5R6u$KyPiUGsm9D<Nz127?s9@aR{^O8MtA%C6n=F{bUNHZbx8HWmV}Jx@<^%2sa-49{N!sUX{jn zo-a%pe=z-RPU%V1pRC5zS*_Q-!?6m)qaN119iYK;pRD>k36H(*bw6QvO6%T8?anA3 zUikqdhW$>{wxI!BsFvl~*|d)71~ADJGNpVFLob zY&%hA)d_GP%nqzECKcBB0;g-Rz=}3+JNow9gZ7ax8H1n1^crUuEQrMw{Nzk@Is8Nv zYhF8eKjN9*+dQ9*E;~BmOpg5hpRALxF*b_MRr!8-l1_T#UOY?t0C!9r3piWS>n7G9 z-6ZL06T?Wi*c)QvF=i&@uUQjDdjgpo-A~>S%6mZeh?2*8SAT!SF@?53VBnU;K*LA% zVlIlsoNGiR!?kB7BZ;tD%tbIL!p@+uz2%Sn1(rX7`vThOX2QmV=ERzBMfdoU73hfy z*(<{q0-;G*Q``H_?4>8N?`#rws%Z%GAj?b-NA=}3p(lgm$*Njj9ePsj+wy)e?{G(B z6vXn@Og0%DC#YIv*9S~lg=dT^y)nz>a0y*r{1CXf4%#bd6`V;=KhvSaeVgXZ9EnQ!x0z&x1jm^{98EFQcqBlb9p zc`%uqhsk4(Ux%Q->w{)>9-BKQ0^VQ5{*~%W6k?tz+Xqjf410cDH>Qh=3n51Bo}z>G z?y1cOJB*;M&d(Zz4}8Yv!^Oo#4j;HtKR$3N;RE{&&}T%64;L5DcKE=%`tcd5`G95s zpHU?~TwFZI;RB2Hij?= zTc!3y&dHR$Eb{>PsQ}59=#qi1nTBxBJ`U=vx{_j=tk;eKFWXU&!mPucBdn z2NK!(j<@v{l5%}j8S7grwDpy-%KCoX(bwzfTNM!h)mkDYm{VwZ0sK`{}D_Sl@v}w!RZ=eTAf4 zUscBXmI`fsCHAnsYXY`E_#J&q;b#&RzGxHd;JP4EF~3?(z8r_pc9m!KV%ybhu&S{s zVfAo2pXKH$wa|7$#w8q&<6gj&EwzkSUamNExmltq3=dMbnZF1;(o0|;ho(QDO`zz{ z$C5agVOi=Ow`sqmR$F<>*lb6{5wwv>PKH@2mMe`{m$W4;^d*ONj^M$s+LRa~?3-VQCWZ>UuqjMg3x4!KRs{_!C6 zY~uE4$M9E&n?Hv_kiQYy#T^Z9$mO}wl1wt>O|ZtV-_5EH+tm&=Cvv+|BM`Skw$9cS9#ac|8Ue#G?1`)=-?hTma-g*(lc{w}l>vrE66K`7uZvv5X2ovX2G>y;)} zVI6eDdgr|;FKj|OeF0KRY0Au_At9?)zi`s*U0ezmISo9v2x(dim`)#t{biivF^^XB zDAaxKv@YOoT>!0vvv`hrctfM%_f`SJL)#Mbkd8lR(vgh8OBI~E&<4E_f@F-9oxS1V zoaer=$4c4UQ=@Y2aSme4CwiP`?Mkk3ys=!yEhi>ljwz6_do{11(9eJL7 z&Zck)lt>JJQ!#c5)9Vl(%2fGe(1w-5eigHPYIHsQWY|~l_c>A9wp)-=rci48$`eP^S3Ps6()>Xdh25x$@J$xv+B+p@@01U0MENKM zJOoE6BAN4WL`u=iHftJ-9~{a`V|fv32>8++xbwC+NB7aZe!GHgycoG@G%J${xp@WE zvvTRIkcTdYQqzv3f0*@O#QJB>;iv}vaXN|BSL$>^k~}y^G8vU$n^*h6l*aTQ!V5>w z(IK$nh`1-?Q_t8X`ChsNVHJ;(gWC^BPQ-q^Tn)?HL1pEkWmd*axRRWRJHoA9p0$H( zg~H915TuHnz3gtKUujp_7u3YRgH^~Q!Po9ByIDSI7RPs<3oA>fUc${^;98l4TLCr? z_f6c#Q*I;8@!Yl6<%OHQew9VsO;DvYC;z>)I0+ykEfrZN!!BiO=(4o{w^vqxB9|9+Aww2* z80d1InRT8HS36VeXg^^60E10UK9+qtM+by(b)@+XwA~+&jsGYGd11!uw^3{7V-yl5 zY&prj19z;hh$H#AxDb5#n2-ktCZP-N8yb_DZC2smAWAPAKLHY}@JK1+8p-&TlabkF z6%LoMF01hS5_X|gc)oJueaAKv)LFC<(nQ2(=b2eO`}Tik{&&#vr??Y>#>s7%T%&NsuQbikFabfr_S^du+U$BwTh@o`U^<7p1XxWaT-dX6i-(3M{8N^f$~ zeLQ~ByP~#!|VZ$6A=iSFl_Alq%M>P-1!Oq;jyJzKFQT<)6S$Ldcg~V$! z)<=(1gKCkF!GZkxs45zCi(S?=%mZPB_5T-p2y+ZL$=B9ooQ%#MkA78gM(y(oofuGyL^~`A1G8ABngxfKtwikj%1C9lmPawoqv01++Ap+sv_C@)64sW7NA{1chV0 zr`9~a2w{WrfS)NIFwU{wF>4-QIu?&+n+FUr@EvnmTkby=55yy-2Lj4q@5}MDso#C2 zzX~25;!iF=#G^Hh7kiZ)K^IFu)fhww;blIC(YO|V&YqP*^}dTHVQLbLm-`nTH4!_p zB{G&D!RsR0The|^M{otKyt&H)(dLIxSJi8m{){%?jT|+XoK%`i8t{zG9mHJ+CTi|tBd4!McOeYzk}z})5ZAoC9=s7Ccpmh^6>5(2 zd^gq28CGC|n}yfmL29q-IyW2c zSM@-}-`GSAxT@$KW5>4PJJNzcuZyeFkC*Xr?cq9m;jTRA-K@$JJGt`E zx$N_Cs^SHiiv5jLg^j<>+$>oahe3l0Do&SSR#A@};%A6!>Y0PT1j*YAu6c>eWX|O> z1m*r^vKHVn-s|jF4^rZIX{Q2bzcTcZDl3~`Rok$vL_4H^8;g%X{XW)r!b#>%tN{28 zt+iVch0=FxdzIlWZ2YEwFAav??BA%VpD)tSAiuuCl)LOb)T}|kSHq_NSctj$oYUz) zqOv9x+8N-xg!R<#_;@TdDBc(x@cf9CXMsS%nJQJFa^#(mUVB*l{Knf5h{2*)ZxF&T zPbGbp+Nd||cYjb7Tm$LffN3-n^^a@tjn@djDdYEG`@n0t@M5Wctd#%CkrV7gJ6KKB z4;KP4JBz=_jIH2sA?0MLL%VoU`61N7m&?b+J^2rF((AME5)lH_`vVV<>w&1#tRTXp zY^dQEPew7X1%Oro#ka$gKJ2LYCa8Cbi)hkLIbH_)S=0wz5l`@bp@C_s_z~R3Rp&p- zSO~^kY^fuhwV}pFI~kpv@>{acQM0x&Vd0FXZ1y-`XXYJKWv7sj3xye<0td&jm7@0ei?{ch=u>her zLSwi8VcA5h?7o(#B3ECVVk4VnQ99X(cvC5k_q8k_*1}AByxXrg5P<^;)i-r zGlb`{HI-&{C4MDBNjNo#EqnF7U~x_n6wQpcJZrQHro2J5rA0Ae;ot?HA=K{#T%>y+ z0~$|Nc=-EY+%H(*@O$0T?*f=RxfEYp|65}K9W%7i%tYu(znT6Edg6%;hiv^WatLN) zInILdU=jiWVKV`95Z4d;=cAMP2NKw*9O@|(%)~NhG+%>cb?7&EpdfRIXoB@!9mv#} z8HcY0@>hj-<5|gL)(AmO=r>$TljD@@<$Thb>&VF#{_%#;ZuGmyto@r*$efOH&d67D z(aBt7?&O3-$D6s6%h9iIt{r+BJNMAF!%j0Z zbMa-!x0+(eZXAuw+PCoC^*Y}$>H85#50$>RFzY{|{lFt>$u?DTf&tbh-in!LD1R_% zKAC6P>0vZ&MafUr!zYxVus-k;Ecwg)geOkemM3o6u*!_ejLFPy{tVFOzcOex0QNFC z3IJaUfhDZZ{NOz^5MXzof;7B`v*0~{0G%d4X1&mvJ2SYK&Lr$cXcPzHI?Y?ThPjLL z;D$DHUzq*k@QbVPCC#K#X&A2!`kgZRr*$ zGyO{bPD7eqi&XZ}AvH`Q=OL8jky`STN!_bzaN@+f8l1EFK?1Gi&vG~iUjc>EMYbbI z=eiGOOxR{yM|BC0Vd)w*hFzuH3@(*6IwPEYPR&6)w%0ggPK|9IlBKcD{$YkP$!a-Y z!(*GhQBK*&*bbm6?y)_Y=~cv@isS^J%%yW7M~!VR$Hc@DyQa~T;eU126VOyH;AnXo z?&(d47`rhO@zCIc8k?e;BNP{u^j|CbGnLYx#g_Eve5F6XN@D$4z-|VjKc=lR{b3PX z|7l3V7#ssj`g8f9`f~y6KOJ|aKQ=^Ie=ZRHIU)LUK}r90qCXcZ{aI{Df6iC>^KLim z&jNNc5dHDuwM_prm|ofcOe6>B&*g*a&jqaiOx%_JSj@8iTp;>$LiFc?lK$&Oe=bz| zv)GdUoUiof2Qt>51?*-Z`lncbnzQokIR-`rfB2bY+myzp#>q{SC&C!~D?1&40Zb}m zFT;2IaUYpPdSy?cy=!xkDfYpn3$Y>}d)`X=~nGd3}^f|bYB&bKDk?|7lV{qNXIIg9*&|cAzaZGW9(IoFtxjy(p zTXn~B4xf!d&gaQ^tnZUiAAMQiX?{+(c(+EA^i3@2eDo=AYY0Cc<72o|;3z+*AC>eG zfsYBzhrE}e?s9>rN&YL|^#LEvuXr5aq4_S|WBBmh9Zrvp^u^DiiNgO&lK&YW=N}F- z42Btg7#u=0v*K3NYLHqJrF6Q`*9yGS!;}wrS?ALPo+3Hlid+}-Vcuqml^#xqeOp2E z9pr>)VuX2KB&7=lzUJZ5B3kXEyG2&e&zv6#F#M?Gd^)@ot$tn7hoYQLM!0m2Nc=^J z(+>ikLsy1)zoi#2L??N^7WUD#LixPV92FRlwtPFzwRTmC6y$S%@b6`DpBuD?7f2P? z8uJA+kiS26t&s(05n~Ss7SPzw1&cD4s-(L@*BUuI%p$e{3wxPM5)ph4us!~3jZS#e za56?$(i%ue0qYR#69L9*=vu+{2N@ed|03Am!ip!YdG!&&wg8)t9q(sE z>&u|ad`i*tQq~17jJ-g8Xi-DOc<+4p>?>pe!<37a&S=<`v9W@s>21L-5NtAq3@*Ez znDTV|oDpNEOW7GT-0=C{Z&U_W_g!9*1l$u~xG=)-gF%Lq@RJ{_`?8hEK#8&jIll`t z{9uq_wz9@mIzmbr?g=o=R*t}AQtPdSFOLe31$;49iJW^P;{z7;R!l(p$NsT_)9Blt zDS*H5Gu$4TA^GzF{~S0AaFOTiz(jh%T!QpR%;kVXE6xKP;bm^?;$s1yMq3Ozi>myEXQa zIAe!2c2&hNV9#sp615vDAu&aPo0$Z#wy4-UoY_?Zp|0b)SS!220 zRn*RtDcz#5Kx_1FP(H0Omgl1jIbhPmbYFn6O9i`%w)yV|kS+T_z91Cf?XE;9I9OvaNqZe^O0bH)rm-JY%nS~pUpm;l zU^TtwU}pzwC?#{}je#FktO^dL84k8CIE=P9SX*#7UEyF`gCpo(2iq1LNrxP4S8x=) z;b2z`KtINg)-v~C)BO04t`F608-q6@0%M-#*EEY>F z?`u{?=u~PF?4Z#Y91840UG_|%E;Ny@&{(E<D0wR%2&cjld3S><+6rG?@+ycF=es zFbh~EFJ&O%&5CnEQ)!CE)>qCnPNOv%>$aAMPNN=;J!P#Aolg4%J7}1dt-!t|*u%y_ z{CLqc8w+kmM43j1R9Ub+l6IASC)gD#QT{mC8=CIatE<=@n&DuNM_rh4kN>JtnbBqT zhGyE726;Xln&n`N1Gk1|JJ_S~TSIf`u+oKIjouNO%MHipVehNaTSM~{LJ#9q{!Gl1 z5#D0Oc)u?&GdQ1`1XFQo0j<(yd(4@^1$3!kSJ56sqO)kfE-RRy3!P>2^cKu7h0dm* z=(3TXuZI>pWg|TYLrds4Qg(&J)+O|N#ZzN%IoO9mdDASe%2EGNXem9RvEO=r5n4u7 zv$^ab@yJ;&uYQSsZ!|`K6u8sl`(fhNuA{vg zW4o-Qq4T-k!^GaRfzk>Ku=i}Bg&Je;*+3gK#@@4mc4&;f=e@L7W9&UGbhpOXds^s_ z!ic@6h5n>5_MR-gr7`xNRyr3?1FQ>sPaAb>jJ+pE`viL`SV*Mti(+()(Hc3P#e-+IP{FQUB)L!562chKDqRvYf5LxLS7juTz9cOmO?ka)az zQ)H3Cc*GTG-`NV|QQSi##hnfkN2zUelg2pmT}t-~rh04#J>g)thIUe533K5dn;hOn zQv_2zwwsn~jC*W1wP}odY&YG_4?23DzMLKr?E0Z|qSL~c)0dWU8CzlqR*MG(V@sSF z?xVoDT*kBL-0&Wnr7+A7=Y-!+Yc%#y#q#hKbcKVh4_`^QI9N7(75zXk)uIp3YYuj6 z=!2A6&JwsqTf} z<9_%E-K{b1ha2cMjj`o#q**Ju9$Vt#@J)2BgWcr4nLh7eUivs4a)7Wo4?+bsDexNYe?3(bc^oGVBs@NCaPczPwdMNvN_%`Zsu-n3)qWunbclgtE z$icoCzMbB1um{6;P~B>q%Xh+`p>s9%P{pC}owUWlei8mG-QZwPgzuue9qhN^&(SX( z?D_EL=_LnyC44uHJl~e^R`?4v#lft|J#?X9%GUo%eH!C_xR3U0j4l5qI=F_p93-~< zmudf6g|X$oN^fb5$HN2EwvNlL3Vhw)j9(4CMKI+(-=H5j*sY-l={3RFdt#Aq(yH}b zPkGNnbgjnNdmf@sXpFt*A$mkGwK6_HhjkgxG6yKKL2=<(=G)XP*j0$1Rgv$|D#30H zyq*{y`7UkIn3)_N`5x`k^*DZhpY~~trGKA3t1*`TeY#)QJ8X`L{E!X_rabwF^qj`n zf-V`I966L7x>&S@1D>L}P51$JBXhtUO+gHbj0&3ol^Jt_pl7I63k--5}VF zw7Ozid2GyoW@3nR!9DmA{PoJRfg6_4pY5gd+3(<>d5ct z0>N&iz45ll)6}N1|EdW3pP@dDooaPNo~55TSRwKUT9hSxcogG#h}r~u%J@EZf?uH9 zHFiln4eYZUnQ{-lS;J-D6YQzr3s|YXKtEBK@e!OlEtQ=bZwB^=F8gt0d*lVGX=N^I zo_>L91yj;rpc%T1r5~X~8e{24=-f>u=|^a*#(oA}j?mQ_drq)B1yhk*v8*DrpfKfW-RYzBn?Vdl;Eo|-Y0y+ z;+!#IhC8J6T0f_+^_wVtNpcQJ&i^cY)vCnP{j)IzS;J>V|Npss*5OFph9-7%RGRH( zr`f_PjrZVX^aiy?I7h+$wl(P%qp}ib!m+z(NZQnCH@B?xPPU@dQ?E*IJ`&_wZuouZ zY0~|oty`{2vn-qcKhmPvk&-4#&(8!{lh0tkXfR*0dyr}Vk@WFfq%^rpY;sp{a82Cy zKR&mAL{E2Jw?uauTRN~tV1OmvH2>VRTdRL0eSEtOEZyS~pOnbsPP@JFAJNBM*KM&{ z@dTxh^7j8SS(EcILM>V(49K_Ch2ycMG*hPxqL`ed_l$1bz0=WtN zV0416$9{hd*Uh*>xUR!>J>I{>aNUe6gzGw7*W;K#4A;%LLb$HObv>lTaNUe6gzGw7 z*Fz@nzs3Q*I8)E*(SUfL0$7P17KXD0E)uw0;97xMf$e}puu5Ud?E?1*d;rj(pG!Ju z%!rPrIG{npj9+0^A8qh#S4B(Xlaam;>zL8TQp{>2sWCc-CSsRiF-;TtI_ff8@a}7I zAP3kRV|Yt=E8w$ua&8CBXK1@nZlK%zX}V41wt>%c)B*l)BIhpCXY|ldAghN~`Kyc$ zV(C}Q&hQUK!>gs%9wS&W&Det@X}nu7Bie#pg8!(P47kca8E-*ePwYYIuLJu8e$3b< zG`oammzI8)dBnKhxY1K*-faBVGr_zM@N~0H__v`g`^+nZ@(SU(SJHbWeS@TLkn}B* zzD3fz1YRMs_6oc~;4K0lK-=;D$Dq&`tjCdK;Lpr3{I=xR5$}9(ju&4)WZT{?Hosr2 zaX&a$p_H|{T`YFB?6BM}wI0;g+w9ryx!T}e^gTvX#burc#d^2P4$JNIo#2(8+v&$a z=1^DhF{B@l-UfJ&{|kWJYq!&*@fv;H$C?m&v*>)ea22B2w0g6djEju z)6syinD=UwE(83n=X~V+$ zWA}LviX9G$|2$=U-t!nr|26z3;5rYW*yj)QdV;x46K=~i&srbznF9Dw#dP1xLirct zPo4{X_lX^D7I>e*Pg6Gwy5eq*-LC=+*rv*MQnmjL>JWt<>zvwf}Hv@0_ z_86z*i6LnI(5UstP42Y-{=MK2VEn%VSV{i{SVeCE4kZKc3PzF-uuf>wLQ^j^O%z5x z*8iZKA^Ec;f1c!DDfw3m{FuO-1>Pa>E`eVb_<+Fg3H+hJM+H7EaGb&X8w7R={ENyl zIsb10M_VuW8xg}^0Zh`tNF&}g{seF=Jr9_nKLbuCGunvniZh%m@EplsNde@nmz-9C zTd4s#Ma1hy+DUEER(d};zhB^|1zN_n^r6^Tf!`JQJA_he3VX&%^LnuS{vIxk|_@eJUB9GyyEX0 z#r$WT^lQKiPvUf+!2JRbNd94gvucG#V4uMK0uKm0ERa%6vtQr=frkasXwFXwoF(u= zf%^p>5O`Q1jS)(Lvjko!aKFF<0uKwMu|g?umcR=I?iYAK;9-GOCzJxeK!<3QG1?f1 zAMlxE%rO=k=NapbON|d0pD-RYUNhb@=9xM3Ci717^X3oD|1f`LK5IU2zG=Q~Myz4h zNmjiz)tYZDwJxyQt)12t)(zGtt*=@STd!MQ&qc}vsOM?VA3QN{ zvv<4q)86lSf8%}L`?B|KZva1kFx)rJH_JEQceZbtFX!v^UFLhAZ=dfb-zR-{`kwIp z*;nbW@sIVN;&1d%_BZ>_^!qUX`te4Q$5jyXUj(BmirJ87!UV=t5_4}AM%56^z15V$ zb5pP9eOQ&%g%~~%XLwD;Re=8zxdw1^^utch5$k^;y;W#BBex*^)8Kxda7Yz%>dAmV!8sKZyDRwf2RJ>@0LtG3n)E09#+FHc#p=Su+iXMu z@*4QtOXN3B2aMwV4zw~57ifraCSZ;69>7t?Y`|J$E?V$3eoZC_ZqoptLj(!ZAMu^g zAofz;1DF71f{qxc0KQ~o0ADj20ADvw1$@Jp2*?L;67&}2Cb5h=h1+dr07GU2V8lEX zFlJ5!tTZPBCd{eukZMp?(NIuU(Qr`0XFyp+CxNnxQlPA&F`yhm<3Txu(x4nd6F@nH z>Onb#8bLXPnm{>(CV{e=P6K5%HG{I6rh~GYW`MGqW`eSsW`VMr=74fIe(7xn-m(;F zH(i4@+f8&U_7M-$s}wQ5V%%$f#eC5GuK7*tKdl$6A)cRkzwZ0C?}xr$_@485`go

62(tSI^{0G^4vc*P3I!kY>Fm(SqKt)(a=mIl1ktvmL#; zbF=LQpo`|UixSzwc3^Jyz_xDdW)_pn@+Y&1)21l4xb@eed8$h~(*4UPo;EOVGV)kU z+#JPEA4rCyY%`YR+j={4GigzAX?7_N>Tl!5w6xITV!mr}`$p<4w&n{RNEA2H%I(FT zTxa9F?OoZ<_EsA$S-#kKR<0{oK+)!0Ps`liLLt}Hvn1P<-JEM%wWW~Dwk>LdVjV3l z?Op9X?b!||Q*$1KRpX*k=8WTzx%**;R=$z%(mVA7a%RqKoZZ$&v%9-h9kPhgt1_U>HCw+nW!ZOazg zvt2!Ndpml1b>^}{8;6cXo4fLb++1`#Ey#8NYBzN$*{Jjd^TPIX*=dkK{K)p?XkKn( z@8-?9!kj|>5^2!N9?oWm70QCbXUv?~(gJ_cMHrfm=N8(xG0s7*y(3qU!H0~t**)-z zjlC#3tGC^SDN$^+62$=Vr6TZM-Ck@jBcEL?<~lcaY+u#hU=ofJD44{(()Zl;n>z@!d4bc!b~&8u=|h8U#~_%eo1sbEF+5{1l| zIk}}}8&4$c=FWI11#)Mi_-~BvD{`IrZ8?Ir++X&X)V6BWeu98b(tH)>Xm&?O{t~## zHswYO3i(c5A|{hyE2h!8_IyE`@`cW9kIscvbPD#;DJNEQyyE!Du}SVNh&r2T4kAfm z`^sFl(7J_|WP7$q>_Vj6jAVzps&`>1r!w=v1qskPg$a6a$;uWhR#)Xm|Np zIAf2+;EuA)6}e4%xk%!(;A-PoNw~13`JR=%-QD>D;_CcMTXPa3O3}HLHM_7GlYLhY zuUAXCn8+ZzZCN+RM<`e-vFS@WnidmDPbo83CR2RRZdggn{}bbhqtvQA>G^L_*QPwJ z%N6p}b4lJ-2#$0yCQ&vS4M6*-k-E$!tfI+$ze5_T?~WcSj^MGItPA$V?UZ$o`G zoaXelcQEG2!0=&wqq>P#uy&YOWI4Vnk7Y*=vn=I%wgAFiTNV{D(0j7*FIKlVCv&$1 zQ9LkcIS$Gd)Ob^s#PR1+kc9No7S6)5vq&wxJjL3o(4$O=Ru<{J9<2O$4M}QmL%Y4a)%(fw=p5N0yh@Eva20WM#xf+d~Q?QE(p(RT#>^JLTVgvBwy6o z-O=9Kj;!vM`IqW6WJ%vIE9eCktwKF4tf-)F3p#svB*WoYHs64iJ&kaNvax=4;0&HU zU1<3e2otdNT?AlkV=x>)nyHzulfyRVrfuzoe3zsLX|;Z`ZFIHX_CtH{>IdF;ve|LS z-i46OYW(t(^*af2lg^kqsimb=J&{WX&&^}ii0QJsw}+Nsp|mu2sl#v;r}1o_zeGs+ zVfa!`vAGn22ay6giu1F)N>#~Kd0DcmEU5}dWhdn*TjX>%Kl`x5F|rlc@hn|(I@{8v zoPTJmcq8wd{Uv14% zE8bD&sEtxcZJ{iF87`~y3fKWm0ox=L1*CJR$CP>GrKlZPH}#^l5nl|9V%LuRDeR7> zh?dL&?IzF_aG#Exo!Ix?jXVFF?Qm2jlU*e}nz{*j^{6!wcbYi3zQ@r9KR^BMS_sX9 zh#qJ~4u52R6I$DWRwM1l3J_^(U`|_c<>?Z@6w*1ocfLg0)+XAHfu5}I82sem;Bw0~ z&C^DFb5L161sUzyzAPL1ESo=|XR?s{UR+sF;`=7(ryTC(T$!c^6dS>XOO>ABw{mcP z+)o=p*@L#^gx6s8S*GgqZDJd?6L?M?oM#c-3gQ==!F@o>-j#LUfk)@cG8sAaRx31P zPiAjrncVUe-l4OnHt1BFVC>yo#=Xgw+zyQI?bHblY`0EaUC84R(MX1Pp1b$m@>1d{ z7mM$7K?||W$%9*FBP8ZU0^1W7?7Mz&LM&iFuvth`v;$1B(u9gUl(;hn3blu08)|OG z)gy*rGjekgnT1~p-OOcMG#55O7tCWzKw~c+Od~cA8zu{`oaS0=!jiO<4D=3A@er}4 z*-qL9>Q>}-f5Gq+x5YN#G4_u79pZzoP{UWK^TE^&=Ln`28}0=mj$4U~TtVa;xdF(uFA(vs)3i@rQ&*q`0L zh87rvFFdiwV%G^jm6RJW5tmQ7te;u{k#{FARKh&r@RYNj3=7{E2=b)OV~s2>ElH!k zZ8!aH*w!sW(FfhLPf zt@+fP&kfuJ!}D5*ClVEkjJ_*Z0xeDSog$1`^7P8_iwV_4sumDxvB;L)jH`g99V^O9 z#}t-L_VOu(e&u;a&2yVTr_Ja3&gR9R7(?SgQ^8RQ+X;FcQoI~*L!BmESULN7!2r+jvQJTzTjFg}%XjfoSa&0#%AHcS8-gz2wn&}FM z{~XRP)AwC>d=uKF|A&ld;oE)DB08@Z#^vsy8uf^<5@}xH@x08dOd3(@ya8p_PIz`b zuIWUrAGmSMk?xsieWmj+Pkk(R!C%Nqk>N=hM!*XYAHvBP1JgGoaj}s|`H)WZ?Ex9* z^nHv=apD8`NbiuuZX*^n@Io1#SD^^qZo?Z%M!S~HPKq?joe7-kaBnWixczeN%R z`E61P(%lZJl2@m0X?3etw*NMey0OQg&p@g;_(5w9RgzbCPLNc=o5 zW(9DI`87odTB0OLNyD#6Bx|i?LBYgw(5gz@Km!eoS$-pcE9Ui^W@47lZze`2M*937 z%QQ{c$O?cc;PqR;BYv$AYlW;pAU4t;6tyfDWW_*WngPEz1{;_r4qutESitWKSY}Mv z#?TdJED#v(4=J7k0|BlX;3_byq$m30iRG57R3r(VrG&a9L*+zT+G+Xy9>}gYPxjXY z5=}8BMe$c0Kx==ZW&(e;2mSiP2!1vx7VrCcqVLhlkQ<4n{1u710cx?GVtG45)+mlG-Ug6Z+Y9i`=_z^IR#7w;7$q&q-(njnwrj3^UD zQ8(TjQ+*WgRrNq**9vitjVMF2v}Oi%o)CZ)GSEqiyXp7CYnK?NKcw!uAR5&LQC$!X z*%ITu0aXVHRf%(iT_~h$g>-i}v?jUyIYn=qxvd%}6?VnBN0U29eG#jGooZ z>^f!u?vL?9iRC_=pv4EnJBeOr6CrjaQdp9K-!mpVf=d5E(gC;>j@%`U8klY{fj+;* z8mZ=`#k^J`&Aph8`~6YLh$_E}njDo9SsZ(e#^BQ)GR$bg?~V5gm2(S_3C{sR)aC#2 z-fDkX=mKa8`$7N}@By~~6T8Pp0Ow2Nz42a@fff7}hqOx!LZ%vjA%{Uo)Ir1xffCtK z?p$^^0m({)5B7nRa2gdx_yQ6ke*gi)LL3SpVD{aGh{Z$pWo3tYsc0qY*$(wV#4=_S z@3nm5gMvljbCQ75sYJ+w1o#+H9ymN0n=~K91JsTR6e(HTaalaoS2DP}?x#bC-DA))H@RG$I z_<(s5#dvz*1l-8)LHaHni8p2LLJCt9rXY^bW*}H;n1NBu41*h;1O-NMbVsu>!o84& zKM03kd1D3PuTW?qgT)NaWw46Dn!s0gY*;;P%HgZ~_T$VwdHRTMApC%u2>^V>%Gndi z!;dKj{qR%EgJ1vLU5~CAwf)&UKX=8)PpLgCKYG(+H|~2TcC)fby!4mfeCs!#>3i#r zrzSiZZ(08AUC%sy-lwO|dbRWC?Y)&}U-7LsKDWYu$A}&E-@In)sxRNuQr!RGlRcm!7^t}4ry7-{-qxXlW};40eqwUf#H3r5UD zpZh|lFAB0LxKfsH6ecw37_M4}syYU6N`)Zgr*YNeY6=lLU1s$dl8A7U_F*bWjO67; zVitpu*r;Z&vKZlY3EZNN(`g3v44N3!$%;f+z(;uvfPojQ#N5G{8DuC!N${wH<2T?? z636eiX#yFliB!m;-~pLPAq;DR0B|fa0O6v@6|RCu9ULhc|KOtt;=MuXqW@A9)nvdlSyYoD$AtM1 ziy{z&1}lDy2b789yzA+f|Mo+XcFYGRGzMQlIJ^1 zlYq~GJ&{5eRUqu~xVF6nJW=2Q9Esn%<4X8}G_JjzdqE-vvjZE%3|KKyXZLnp1?RdZ zr7*MB&WAJtl5)f-*p0FgUIm+pI?<=^j>?hDGHtU=1B=Nb3QH;eUM-i_+okouu&Q$0 zfN?CcfG6seyD@9HsbNGR1?FdhCc8RE)o7wgS4T>Djf@Qm*SrohLJkE|z_EVQHINd1 z;?GSikRvq47AqjQcyE(i>DxOBtjO{0!7NprLh2iC5k^MagbeQR-a$Ub}x0Ewvm^a zMFVtx4t_WiPkw$W&L^Dl?E=oK!w>yAC-G9>xhu6I-eFrDdLl&9og-CYBj-iQcg(<^EW@dp~?7e`sNLPEv$IE&iC=>ZkrJM*z%Xh9KL7a_5S#EFR#D*nuVjc z&&uEa>yJM8(72OUeC*OOuYK>DuWbA33kUZ6>?8E~SBz(uFW;X!{VNxq@~5vq@Vimd z9^3TN%nPmWeE-j%&irxrSDzbw<<(z3`I(P==$gkGF8f;hU%yi~eT>okVDKW==X&Eq z@~a>`SB`{=Yrci+HlEVwt-R}ohWGqAuz2nbTQ>iB*T$c|%`KQWeM5I4&&Mx{8!pLT z!iS`ApoGsLT^Z&ljEeA?Ee}&Vj z67EiY_JA8}nVT=n>*!d5g97R+2f3V_QDmC8$AL$soBIEy{~ik%V#J|DedV<|W)j|o z56ow}g}BxnCVWeWG4)AXh=uqb*h*>voR4oEt)xY=U)_THQv5x$WkUE(&x=QS;amEC z5sxJKTaa?c%;J3WNHPHC;WEILH;flx$C5X>7GYPB&n57uj=0t;z1LVoIlo_5o6SN% z_j*1EF$Q!hZFdjk)Fw1dXt(+|1sln*0sl5G{>_Cne(|Ta!?AfRpE0hoZrSVHF5AIO zXMdV86&a4^^H9R?x_R5ZyG+l;$mb2|#VFx{-c(j^HR|z6j#9fOVNbQmx$p!2_?{Jh zSr#1BD^lLn#y8mkl{V%48?lSaThRnrwWzlk{5MMtZfQ4OtFVTfv6YX_c4>WiUW)F* zAY36_@y$xO65AXMTurfJC + + + + System.Globalization.CultureInfo + + System.Globalization.CultureInfo + + + + + 16 + + + 16 + + + + + + + + LCID + + + Name + + + DisplayName + + + + + + + + diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/formats/Mygciview.Format.ps1xml b/.github/actions/Build-PSModule/tests/srcTestRepo/src/formats/Mygciview.Format.ps1xml new file mode 100644 index 00000000..4c972c2c --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/formats/Mygciview.Format.ps1xml @@ -0,0 +1,65 @@ + + + + + mygciview + + System.IO.DirectoryInfo + System.IO.FileInfo + + + PSParentPath + + + + + + 7 + Left + + + + 26 + Right + + + + 26 + Right + + + + 14 + Right + + + + Left + + + + + + + + ModeWithoutHardLink + + + LastWriteTime + + + CreationTime + + + Length + + + Name + + + + + + + + diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/private/Get-InternalPSModule.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/private/Get-InternalPSModule.ps1 new file mode 100644 index 00000000..89f053cb --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/private/Get-InternalPSModule.ps1 @@ -0,0 +1,18 @@ +function Get-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/private/Set-InternalPSModule.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/private/Set-InternalPSModule.ps1 new file mode 100644 index 00000000..cf870ba6 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/private/Set-InternalPSModule.ps1 @@ -0,0 +1,22 @@ +function Set-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 new file mode 100644 index 00000000..eae698a5 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 @@ -0,0 +1,22 @@ +#Requires -Modules Store +#Requires -Modules @{ ModuleName = 'PSSemVer'; RequiredVersion = '1.1.5' } +#Requires -Modules @{ ModuleName = 'DynamicParams'; ModuleVersion = '1.1.8' } + +function Get-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 new file mode 100644 index 00000000..d4e6e266 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 @@ -0,0 +1,37 @@ +#Requires -Modules @{ModuleName='PSSemVer'; ModuleVersion='1.0'} + +function New-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + + .NOTES + Testing if a module can have a [Markdown based link](https://example.com). + !"#¤%&/()=?`´^¨*'-_+§½{[]}<>|@£$€¥¢:;.," + \[This is a test\] + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [Alias('New-PSModuleTestAlias1')] + [Alias('New-PSModuleTestAlias2')] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +New-Alias New-PSModuleTestAlias3 New-PSModuleTest +New-Alias -Name New-PSModuleTestAlias4 -Value New-PSModuleTest + + +Set-Alias New-PSModuleTestAlias5 New-PSModuleTest diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/PSModule/PSModule.md b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/PSModule/PSModule.md new file mode 100644 index 00000000..79741cf4 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/PSModule/PSModule.md @@ -0,0 +1 @@ +# This is PSModule diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 new file mode 100644 index 00000000..a87ac117 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 @@ -0,0 +1,22 @@ +function Set-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/SomethingElse.md b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/SomethingElse.md new file mode 100644 index 00000000..d9f7e9ee --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/SomethingElse.md @@ -0,0 +1 @@ +# This is SomethingElse diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/Test-PSModuleTest.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/Test-PSModuleTest.ps1 new file mode 100644 index 00000000..26be2b9b --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/functions/public/Test-PSModuleTest.ps1 @@ -0,0 +1,18 @@ +function Test-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/header.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/header.ps1 new file mode 100644 index 00000000..cc1fde9a --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/header.ps1 @@ -0,0 +1,3 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidLongLines', '', Justification = 'Contains long links.')] +[CmdletBinding()] +param() diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/init/initializer.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/init/initializer.ps1 new file mode 100644 index 00000000..28396fb0 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/init/initializer.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------------' +Write-Verbose '--- THIS IS AN INITIALIZER ---' +Write-Verbose '-------------------------------' diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/modules/OtherPSModule.psm1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/modules/OtherPSModule.psm1 new file mode 100644 index 00000000..5d6af8ea --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/modules/OtherPSModule.psm1 @@ -0,0 +1,19 @@ +function Get-OtherPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .DESCRIPTION + A longer description of the function. + + .EXAMPLE + Get-OtherPSModule -Name 'World' + #> + [CmdletBinding()] + param( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/scripts/loader.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/scripts/loader.ps1 new file mode 100644 index 00000000..973735ad --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/scripts/loader.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------' +Write-Verbose '--- THIS IS A LOADER ---' +Write-Verbose '-------------------------' diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/types/DirectoryInfo.Types.ps1xml b/.github/actions/Build-PSModule/tests/srcTestRepo/src/types/DirectoryInfo.Types.ps1xml new file mode 100644 index 00000000..aef538b2 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/types/DirectoryInfo.Types.ps1xml @@ -0,0 +1,21 @@ + + + + System.IO.FileInfo + + + Status + Success + + + + + System.IO.DirectoryInfo + + + Status + Success + + + + diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/types/FileInfo.Types.ps1xml b/.github/actions/Build-PSModule/tests/srcTestRepo/src/types/FileInfo.Types.ps1xml new file mode 100644 index 00000000..4cfaf6b8 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/types/FileInfo.Types.ps1xml @@ -0,0 +1,14 @@ + + + + System.IO.FileInfo + + + Age + + ((Get-Date) - ($this.CreationTime)).Days + + + + + diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/variables/private/PrivateVariables.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/variables/private/PrivateVariables.ps1 new file mode 100644 index 00000000..f1fc2c3b --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/variables/private/PrivateVariables.ps1 @@ -0,0 +1,47 @@ +$script:HabitablePlanets = @( + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + }, + @{ + Name = 'Mars' + Mass = 0.642 + Diameter = 6792 + DayLength = 24.7 + }, + @{ + Name = 'Proxima Centauri b' + Mass = 1.17 + Diameter = 11449 + DayLength = 5.15 + }, + @{ + Name = 'Kepler-442b' + Mass = 2.34 + Diameter = 11349 + DayLength = 5.7 + }, + @{ + Name = 'Kepler-452b' + Mass = 5.0 + Diameter = 17340 + DayLength = 20.0 + } +) + +$script:InhabitedPlanets = @( + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + }, + @{ + Name = 'Mars' + Mass = 0.642 + Diameter = 6792 + DayLength = 24.7 + } +) diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/variables/public/Moons.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/variables/public/Moons.ps1 new file mode 100644 index 00000000..dd0f33ca --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/variables/public/Moons.ps1 @@ -0,0 +1,6 @@ +$script:Moons = @( + @{ + Planet = 'Earth' + Name = 'Moon' + } +) diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/variables/public/Planets.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/variables/public/Planets.ps1 new file mode 100644 index 00000000..5927bc51 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/variables/public/Planets.ps1 @@ -0,0 +1,20 @@ +$script:Planets = @( + @{ + Name = 'Mercury' + Mass = 0.330 + Diameter = 4879 + DayLength = 4222.6 + }, + @{ + Name = 'Venus' + Mass = 4.87 + Diameter = 12104 + DayLength = 2802.0 + }, + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + } +) diff --git a/.github/actions/Build-PSModule/tests/srcTestRepo/src/variables/public/SolarSystems.ps1 b/.github/actions/Build-PSModule/tests/srcTestRepo/src/variables/public/SolarSystems.ps1 new file mode 100644 index 00000000..acbcedfd --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcTestRepo/src/variables/public/SolarSystems.ps1 @@ -0,0 +1,17 @@ +$script:SolarSystems = @( + @{ + Name = 'Solar System' + Planets = $script:Planets + Moons = $script:Moons + }, + @{ + Name = 'Alpha Centauri' + Planets = @() + Moons = @() + }, + @{ + Name = 'Sirius' + Planets = @() + Moons = @() + } +) diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/assemblies/LsonLib.dll b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/assemblies/LsonLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..36618070d5c9f5131ec66720aa0565c13e86d23f GIT binary patch literal 43520 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 + + + + System.Globalization.CultureInfo + + System.Globalization.CultureInfo + + + + + 16 + + + 16 + + + + + + + + LCID + + + Name + + + DisplayName + + + + + + + + diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/formats/Mygciview.Format.ps1xml b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/formats/Mygciview.Format.ps1xml new file mode 100644 index 00000000..4c972c2c --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/formats/Mygciview.Format.ps1xml @@ -0,0 +1,65 @@ + + + + + mygciview + + System.IO.DirectoryInfo + System.IO.FileInfo + + + PSParentPath + + + + + + 7 + Left + + + + 26 + Right + + + + 26 + Right + + + + 14 + Right + + + + Left + + + + + + + + ModeWithoutHardLink + + + LastWriteTime + + + CreationTime + + + Length + + + Name + + + + + + + + diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Get-InternalPSModule.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Get-InternalPSModule.ps1 new file mode 100644 index 00000000..89f053cb --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Get-InternalPSModule.ps1 @@ -0,0 +1,18 @@ +function Get-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Set-InternalPSModule.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Set-InternalPSModule.ps1 new file mode 100644 index 00000000..cf870ba6 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Set-InternalPSModule.ps1 @@ -0,0 +1,22 @@ +function Set-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 new file mode 100644 index 00000000..f544230d --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 @@ -0,0 +1,22 @@ +#Requires -Modules Store +#Requires -Modules @{ ModuleName = 'PSSemVer'; ModuleVersion = '1.0.0' } +#Requires -Modules @{ ModuleName = 'DynamicParams'; ModuleVersion = '1.1.8' } + +function Get-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 new file mode 100644 index 00000000..d4e6e266 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 @@ -0,0 +1,37 @@ +#Requires -Modules @{ModuleName='PSSemVer'; ModuleVersion='1.0'} + +function New-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + + .NOTES + Testing if a module can have a [Markdown based link](https://example.com). + !"#¤%&/()=?`´^¨*'-_+§½{[]}<>|@£$€¥¢:;.," + \[This is a test\] + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [Alias('New-PSModuleTestAlias1')] + [Alias('New-PSModuleTestAlias2')] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +New-Alias New-PSModuleTestAlias3 New-PSModuleTest +New-Alias -Name New-PSModuleTestAlias4 -Value New-PSModuleTest + + +Set-Alias New-PSModuleTestAlias5 New-PSModuleTest diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/PSModule.md b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/PSModule.md new file mode 100644 index 00000000..79741cf4 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/PSModule.md @@ -0,0 +1 @@ +# This is PSModule diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 new file mode 100644 index 00000000..a87ac117 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 @@ -0,0 +1,22 @@ +function Set-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/SomethingElse.md b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/SomethingElse.md new file mode 100644 index 00000000..d9f7e9ee --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/SomethingElse.md @@ -0,0 +1 @@ +# This is SomethingElse diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/Test-PSModuleTest.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/Test-PSModuleTest.ps1 new file mode 100644 index 00000000..26be2b9b --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/functions/public/Test-PSModuleTest.ps1 @@ -0,0 +1,18 @@ +function Test-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/header.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/header.ps1 new file mode 100644 index 00000000..cc1fde9a --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/header.ps1 @@ -0,0 +1,3 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidLongLines', '', Justification = 'Contains long links.')] +[CmdletBinding()] +param() diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/init/initializer.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/init/initializer.ps1 new file mode 100644 index 00000000..f4121d25 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/init/initializer.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------------' -Verbose +Write-Verbose '--- THIS IS AN INITIALIZER ---' -Verbose +Write-Verbose '-------------------------------' -Verbose diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/manifest.psd1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/manifest.psd1 new file mode 100644 index 00000000..9466cb8e --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/manifest.psd1 @@ -0,0 +1,6 @@ +@{ + ModuleVersion = '0.0.0' + RootModule = 'PSModuleTest.psm1' + Copyright = 'Test' + Description = 'This is a test module.' +} diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/modules/OtherPSModule.psm1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/modules/OtherPSModule.psm1 new file mode 100644 index 00000000..9e4353ba --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/modules/OtherPSModule.psm1 @@ -0,0 +1,19 @@ +Function Get-OtherPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .DESCRIPTION + A longer description of the function. + + .EXAMPLE + Get-OtherPSModule -Name 'World' + #> + [CmdletBinding()] + param( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/scripts/loader.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/scripts/loader.ps1 new file mode 100644 index 00000000..973735ad --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/scripts/loader.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------' +Write-Verbose '--- THIS IS A LOADER ---' +Write-Verbose '-------------------------' diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/types/DirectoryInfo.Types.ps1xml b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/types/DirectoryInfo.Types.ps1xml new file mode 100644 index 00000000..aef538b2 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/types/DirectoryInfo.Types.ps1xml @@ -0,0 +1,21 @@ + + + + System.IO.FileInfo + + + Status + Success + + + + + System.IO.DirectoryInfo + + + Status + Success + + + + diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/types/FileInfo.Types.ps1xml b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/types/FileInfo.Types.ps1xml new file mode 100644 index 00000000..4cfaf6b8 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/types/FileInfo.Types.ps1xml @@ -0,0 +1,14 @@ + + + + System.IO.FileInfo + + + Age + + ((Get-Date) - ($this.CreationTime)).Days + + + + + diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/private/PrivateVariables.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/private/PrivateVariables.ps1 new file mode 100644 index 00000000..f1fc2c3b --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/private/PrivateVariables.ps1 @@ -0,0 +1,47 @@ +$script:HabitablePlanets = @( + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + }, + @{ + Name = 'Mars' + Mass = 0.642 + Diameter = 6792 + DayLength = 24.7 + }, + @{ + Name = 'Proxima Centauri b' + Mass = 1.17 + Diameter = 11449 + DayLength = 5.15 + }, + @{ + Name = 'Kepler-442b' + Mass = 2.34 + Diameter = 11349 + DayLength = 5.7 + }, + @{ + Name = 'Kepler-452b' + Mass = 5.0 + Diameter = 17340 + DayLength = 20.0 + } +) + +$script:InhabitedPlanets = @( + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + }, + @{ + Name = 'Mars' + Mass = 0.642 + Diameter = 6792 + DayLength = 24.7 + } +) diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Moons.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Moons.ps1 new file mode 100644 index 00000000..dd0f33ca --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Moons.ps1 @@ -0,0 +1,6 @@ +$script:Moons = @( + @{ + Planet = 'Earth' + Name = 'Moon' + } +) diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Planets.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Planets.ps1 new file mode 100644 index 00000000..5927bc51 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Planets.ps1 @@ -0,0 +1,20 @@ +$script:Planets = @( + @{ + Name = 'Mercury' + Mass = 0.330 + Diameter = 4879 + DayLength = 4222.6 + }, + @{ + Name = 'Venus' + Mass = 4.87 + Diameter = 12104 + DayLength = 2802.0 + }, + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + } +) diff --git a/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/public/SolarSystems.ps1 b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/public/SolarSystems.ps1 new file mode 100644 index 00000000..acbcedfd --- /dev/null +++ b/.github/actions/Build-PSModule/tests/srcWithManifestTestRepo/src/variables/public/SolarSystems.ps1 @@ -0,0 +1,17 @@ +$script:SolarSystems = @( + @{ + Name = 'Solar System' + Planets = $script:Planets + Moons = $script:Moons + }, + @{ + Name = 'Alpha Centauri' + Planets = @() + Moons = @() + }, + @{ + Name = 'Sirius' + Planets = @() + Moons = @() + } +) diff --git a/.github/actions/Build-PSModule/tests/tools/1-build.ps1 b/.github/actions/Build-PSModule/tests/tools/1-build.ps1 new file mode 100644 index 00000000..e762395b --- /dev/null +++ b/.github/actions/Build-PSModule/tests/tools/1-build.ps1 @@ -0,0 +1 @@ +"1 - Build script executed." diff --git a/.github/actions/Build-PSModule/tests/tools/2-build.ps1 b/.github/actions/Build-PSModule/tests/tools/2-build.ps1 new file mode 100644 index 00000000..d2575a02 --- /dev/null +++ b/.github/actions/Build-PSModule/tests/tools/2-build.ps1 @@ -0,0 +1 @@ +"2 - Build script executed." diff --git a/.github/actions/Document-PSModule/action.yml b/.github/actions/Document-PSModule/action.yml new file mode 100644 index 00000000..27ab7fc6 --- /dev/null +++ b/.github/actions/Document-PSModule/action.yml @@ -0,0 +1,32 @@ +name: Document-PSModule +description: Build documentation for a PowerShell module. +author: PSModule + +inputs: + Name: + description: Name of the module to process. + required: false + ShowSummaryOnSuccess: + description: Show GitHub Step Summary even when all commands succeed. + required: false + default: 'false' + WorkingDirectory: + description: The working directory where the script will run from. + required: false + default: '.' + +runs: + using: composite + steps: + - name: Install-PSModuleHelpers + uses: ./_wf/.github/actions/Install-PSModuleHelpers + + - name: Document-PSModule + shell: pwsh + env: + DOCUMENT_PSMODULE_INPUT_Name: ${{ inputs.Name }} + DOCUMENT_PSMODULE_INPUT_ShowSummaryOnSuccess: ${{ inputs.ShowSummaryOnSuccess }} + working-directory: ${{ inputs.WorkingDirectory }} + run: | + # Build-PSModuleDocumentation + ${{ github.action_path }}/src/main.ps1 diff --git a/.github/actions/Document-PSModule/src/helpers/Build-PSModuleDocumentation.ps1 b/.github/actions/Document-PSModule/src/helpers/Build-PSModuleDocumentation.ps1 new file mode 100644 index 00000000..5b8ab206 --- /dev/null +++ b/.github/actions/Document-PSModule/src/helpers/Build-PSModuleDocumentation.ps1 @@ -0,0 +1,282 @@ +function Build-PSModuleDocumentation { + <# + .SYNOPSIS + Builds a module. + + .DESCRIPTION + Builds a module. + #> + [CmdletBinding()] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', Scope = 'Function', + Justification = 'Want to just write to the console, not the pipeline.' + )] + param( + # Name of the module. + [Parameter(Mandatory)] + [string] $ModuleName, + + # Path to the folder where the modules are located. + [Parameter(Mandatory)] + [string] $ModuleSourceFolderPath, + + # Path to the folder where the built modules are outputted. + [Parameter(Mandatory)] + [string] $ModulesOutputFolderPath, + + # Path to the folder where the documentation is outputted. + [Parameter(Mandatory)] + [string] $DocsOutputFolderPath, + + # Show GitHub Step Summary even when all commands succeed. + [Parameter()] + [bool] $ShowSummaryOnSuccess = $false + ) + + Write-Host "::group::Documenting module [$ModuleName]" + [pscustomobject]@{ + ModuleName = $ModuleName + ModuleSourceFolderPath = $ModuleSourceFolderPath + ModulesOutputFolderPath = $ModulesOutputFolderPath + DocsOutputFolderPath = $DocsOutputFolderPath + } | Format-List | Out-String + + if (-not (Test-Path -Path $ModuleSourceFolderPath)) { + Write-Error "Source folder not found at [$ModuleSourceFolderPath]" + exit 1 + } + $moduleSourceFolder = Get-Item -Path $ModuleSourceFolderPath + $moduleOutputFolder = New-Item -Path $ModulesOutputFolderPath -Name $ModuleName -ItemType Directory -Force + $docsOutputFolder = New-Item -Path $DocsOutputFolderPath -ItemType Directory -Force + + Write-Host '::group::Build docs - Generate markdown help - Raw' + Install-PSModule -Path $ModuleOutputFolder + $moduleInfo = Import-Module -Name $ModuleName -PassThru -Verbose:$false -Force + + # Get all exported commands from the module + $commands = $moduleInfo.ExportedCommands.Values | Where-Object { $_.CommandType -ne 'Alias' } + + Write-Host "::group::Build docs - Generating markdown help files for $($commands.Count) commands in [$docsOutputFolder]" + $commandResults = [System.Collections.Generic.List[PSObject]]::new() + foreach ($command in $commands) { + try { + Write-Host "$($command.Name)" -NoNewline + $params = @{ + CommandInfo = $command + OutputFolder = $docsOutputFolder + Encoding = 'utf8' + ProgressAction = 'SilentlyContinue' + ErrorAction = 'Stop' + Force = $true + } + $null = New-MarkdownCommandHelp @params + Write-Host " - $($PSStyle.Foreground.Green)✓$($PSStyle.Reset)" + $commandResults.Add([PSCustomObject]@{ + CommandName = $command.Name + Status = 'Success' + Error = $null + ErrorString = $null + }) + } catch { + Write-Host " - $($PSStyle.Foreground.Red)✗$($PSStyle.Reset)" + $commandResults.Add([PSCustomObject]@{ + CommandName = $command.Name + Status = 'Failed' + Error = $_ + ErrorString = $_.ToString() + }) + Write-Warning "Failed to generate markdown help for $($command.Name): $_" + } + } + Write-Host '::endgroup::' + + $failedCommands = $commandResults | Where-Object { $_.Status -eq 'Failed' } + $successfulCommands = $commandResults | Where-Object { $_.Status -eq 'Success' } + $hasFailures = $failedCommands.Count -gt 0 + $shouldShowSummary = $hasFailures -or $ShowSummaryOnSuccess + + # Generate summary if ShowSummaryOnSuccess is enabled + if ($shouldShowSummary) { + $statusIcon = $hasFailures ? '❌' : '✅' + $statusText = $hasFailures ? 'Failed' : 'Succeeded' + Write-Host "::group::Build docs - Documentation generation summary $statusIcon" + + $successCount = $successfulCommands.Count + $failureCount = $failedCommands.Count + + $summaryContent = @" +# $statusIcon Documentation Build $($statusText.ToLower()) + +| Success | Failure | +|---------|---------| +| $successCount | $failureCount | + +"@ + + if ($failedCommands) { + $summaryContent += @" + +

Failed + +

+ +$(($failedCommands | ForEach-Object { "- ``$($_.CommandName)`` `n" }) -join '') + +

+ +
+ +"@ + } + + if ($successfulCommands) { + $summaryContent += @" + +
Succeeded + +

+ +$(($successfulCommands | ForEach-Object { "- ``$($_.CommandName)`` `n" }) -join '') + +

+ +
+ +"@ + } + + + $summaryContent | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Encoding utf8 -Append + Write-Host "$summaryContent" + Write-Host '::endgroup::' + } + + # Fail the task if there were any failures (independent of summary display) + if ($hasFailures) { + Write-Error "Documentation generation failed for $($failedCommands.Count) command(s). See above for details." + exit 1 + } + + Write-Host '::group::Build docs - Generated files' + Get-ChildItem -Path $docsOutputFolder -Recurse | Select-Object -ExpandProperty FullName + + Get-ChildItem -Path $docsOutputFolder -Recurse -Force -Include '*.md' | Sort-Object FullName | ForEach-Object { + $relPath = [System.IO.Path]::GetRelativePath($docsOutputFolder, $_.FullName) + Write-Host "::group:: - [$relPath]" + Show-FileContent -Path $_ + } + + Write-Host '::group::Build docs - Fix markdown code blocks' + Get-ChildItem -Path $docsOutputFolder -Recurse -Force -Include '*.md' | ForEach-Object { + $content = Get-Content -Path $_.FullName + $fixedOpening = $false + $newContent = @() + foreach ($line in $content) { + if ($line -match '^```$' -and -not $fixedOpening) { + $line = $line -replace '^```$', '```powershell' + $fixedOpening = $true + } elseif ($line -match '^```.+$') { + $fixedOpening = $true + } elseif ($line -match '^```$') { + $fixedOpening = $false + } + $newContent += $line + } + $newContent | Set-Content -Path $_.FullName + } + + Write-Host '::group::Build docs - Fix markdown escape characters' + Get-ChildItem -Path $docsOutputFolder -Recurse -Force -Include '*.md' | ForEach-Object { + $content = Get-Content -Path $_.FullName -Raw + $content = $content -replace '\\`', '`' + $content = $content -replace '\\\[', '[' + $content = $content -replace '\\\]', ']' + $content = $content -replace '\\\<', '<' + $content = $content -replace '\\\>', '>' + $content = $content -replace '\\\\', '\' + $content | Set-Content -Path $_.FullName + } + + Write-Host '::group::Build docs - Structure markdown files to match source files' + $PublicFunctionsFolder = Join-Path $ModuleSourceFolder.FullName 'functions\public' | Get-Item + Get-ChildItem -Path $docsOutputFolder -Recurse -Force -Include '*.md' | ForEach-Object { + $file = $_ + $relPath = [System.IO.Path]::GetRelativePath($docsOutputFolder, $file.FullName) + Write-Host " - $relPath" + Write-Host " Path: $file" + + # find the source code file that matches the markdown file + $scriptPath = Get-ChildItem -Path $PublicFunctionsFolder -Recurse -Force | Where-Object { $_.Name -eq ($file.BaseName + '.ps1') } + Write-Host " PS1 path: $scriptPath" + $docsFilePath = ($scriptPath.FullName).Replace($PublicFunctionsFolder.FullName, $docsOutputFolder).Replace('.ps1', '.md') + Write-Host " MD path: $docsFilePath" + $docsFolderPath = Split-Path -Path $docsFilePath -Parent + $null = New-Item -Path $docsFolderPath -ItemType Directory -Force + Move-Item -Path $file.FullName -Destination $docsFilePath -Force + } + + Write-Host '::group::Build docs - Fix frontmatter title' + Get-ChildItem -Path $docsOutputFolder -Recurse -Force -Include '*.md' | ForEach-Object { + $content = Get-Content -Path $_.FullName -Raw + # Replace 'title:' with 'ms.title:' in frontmatter only (between --- markers) + $content = $content -replace '(?s)^(---.*?)title:(.*?---)', '$1ms.title:$2' + $content | Set-Content -Path $_.FullName + } + + Write-Host '::group::Build docs - Move markdown files from public functions folder to docs output folder' + # Enumerate the public markdown once and reuse it (no second tree walk). + $publicMarkdownFiles = @(Get-ChildItem -Path $PublicFunctionsFolder -Recurse -Force -File -Include '*.md') + + # Folders that provide an explicit index page. Detected case-insensitively because the runner + # filesystem is case-sensitive. Two index pages that differ only by case (index.md and + # Index.md) are ambiguous, so fail fast instead of silently overwriting one. + $explicitIndexFolders = [System.Collections.Generic.HashSet[string]]::new() + $indexGroups = $publicMarkdownFiles | Where-Object { $_.Name -ieq 'index.md' } | Group-Object { $_.Directory.FullName } + foreach ($group in $indexGroups) { + if ($group.Count -gt 1) { + $names = ($group.Group.Name | Sort-Object) -join ', ' + throw "Ambiguous section index in '$($group.Name)': multiple index pages ($names). Keep only one index.md." + } + [void]$explicitIndexFolders.Add($group.Name) + } + + foreach ($file in $publicMarkdownFiles) { + $relPath = [System.IO.Path]::GetRelativePath($PublicFunctionsFolder.FullName, $file.FullName) + Write-Host " - $relPath" + Write-Host " Path: $file" + + $docsFilePath = ($file.FullName).Replace($PublicFunctionsFolder.FullName, $docsOutputFolder) + + # A group's overview page becomes the section landing page (index.md) so the navigation + # shows it when the group is selected, instead of a page nested under the group. Authors + # can either name it after the folder (e.g. Auth/Auth.md) or provide Auth/index.md directly. + $parentFolder = Split-Path -Path $file.FullName -Parent + $parentFolderName = Split-Path -Path $parentFolder -Leaf + if ($file.Name -ieq 'index.md') { + # Normalize any casing (Index.md/INDEX.md) to index.md so it is treated as the + # section index on case-sensitive filesystems. + $docsFilePath = Join-Path -Path (Split-Path -Path $docsFilePath -Parent) -ChildPath 'index.md' + Write-Host ' Section index page detected - publishing as index.md' + } elseif ($file.BaseName -eq $parentFolderName) { + if ($explicitIndexFolders.Contains($parentFolder)) { + Write-Warning "Ignoring group overview '$relPath' as the section index; folder already has an explicit index.md." + } else { + $docsFilePath = Join-Path -Path (Split-Path -Path $docsFilePath -Parent) -ChildPath 'index.md' + Write-Host ' Group overview page detected - publishing as section index (index.md)' + } + } + + Write-Host " MD path: $docsFilePath" + $docsFolderPath = Split-Path -Path $docsFilePath -Parent + $null = New-Item -Path $docsFolderPath -ItemType Directory -Force + Move-Item -Path $file.FullName -Destination $docsFilePath -Force + } + Write-Host '::endgroup::' + + Write-Host '────────────────────────────────────────────────────────────────────────────────' + Get-ChildItem -Path $docsOutputFolder -Recurse -Force -Include '*.md' | Sort-Object FullName | ForEach-Object { + $relPath = [System.IO.Path]::GetRelativePath($docsOutputFolder, $_.FullName) + Write-Host "::group:: - [$relPath]" + Show-FileContent -Path $_ + } +} diff --git a/.github/actions/Document-PSModule/src/main.ps1 b/.github/actions/Document-PSModule/src/main.ps1 new file mode 100644 index 00000000..d9a1d877 --- /dev/null +++ b/.github/actions/Document-PSModule/src/main.ps1 @@ -0,0 +1,56 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', + Justification = 'Want to just write to the console, not the pipeline.' +)] +[CmdletBinding()] +param( + [string]$Name = $env:DOCUMENT_PSMODULE_INPUT_Name, + [bool]$ShowSummaryOnSuccess = $env:DOCUMENT_PSMODULE_INPUT_ShowSummaryOnSuccess -eq 'true' +) + +$PSStyle.OutputRendering = 'Ansi' + +'Microsoft.PowerShell.PlatyPS' | ForEach-Object { + Write-Output "Installing module: $_" + $retryCount = 5 + $retryDelay = 10 + for ($i = 0; $i -lt $retryCount; $i++) { + try { + Install-PSResource -Name $_ -WarningAction SilentlyContinue -TrustRepository -Repository PSGallery + break + } catch { + Write-Warning "Installation of $($psResourceParams.Name) failed with error: $_" + if ($i -eq $retryCount - 1) { + throw + } + Write-Warning "Retrying in $retryDelay seconds..." + Start-Sleep -Seconds $retryDelay + } + } + Import-Module -Name $_ +} + +$path = (Join-Path -Path $PSScriptRoot -ChildPath 'helpers') | Get-Item | Resolve-Path -Relative +Write-Host "::group::Loading helper scripts from [$path]" +Get-ChildItem -Path $path -Filter '*.ps1' -Recurse | Resolve-Path -Relative | ForEach-Object { + Write-Host "$_" + . $_ +} + +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' + +$params = @{ + ModuleName = [string]::IsNullOrEmpty($Name) ? $env:GITHUB_REPOSITORY_NAME : $Name + ModuleSourceFolderPath = $moduleSourceFolderPath + ModulesOutputFolderPath = $modulesOutputFolderPath + DocsOutputFolderPath = $docsOutputFolderPath + ShowSummaryOnSuccess = $ShowSummaryOnSuccess +} + +[pscustomobject]$params | Format-List | Out-String + +Build-PSModuleDocumentation @params diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/PSModuleTest.psd1 b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/PSModuleTest.psd1 new file mode 100644 index 00000000..e09d34e2 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/PSModuleTest.psd1 @@ -0,0 +1,75 @@ +@{ + RootModule = 'PSModuleTest.psm1' + ModuleVersion = '999.0.0' + CompatiblePSEditions = @( + 'Core' + 'Desktop' + ) + GUID = '20b37221-db1c-43db-9cca-f22b33123548' + Author = 'PSModule' + CompanyName = 'PSModule' + Copyright = '(c) 2024 PSModule. All rights reserved.' + Description = 'Process a module from source code to published module.' + PowerShellVersion = '5.1' + ProcessorArchitecture = 'None' + RequiredModules = @( + @{ + ModuleVersion = '1.1.4' + ModuleName = 'PSSemVer' + } + 'Utilities' + ) + RequiredAssemblies = 'assemblies/LsonLib.dll' + ScriptsToProcess = 'scripts/loader.ps1' + TypesToProcess = @( + 'types/DirectoryInfo.Types.ps1xml' + 'types/FileInfo.Types.ps1xml' + ) + FormatsToProcess = @( + 'formats/CultureInfo.Format.ps1xml' + 'formats/Mygciview.Format.ps1xml' + ) + NestedModules = @( + 'modules/OtherPSModule.psm1' + ) + FunctionsToExport = @( + 'Get-PSModuleTest' + 'New-PSModuleTest' + 'Set-PSModuleTest' + 'Test-PSModuleTest' + ) + CmdletsToExport = @() + VariablesToExport = @() + AliasesToExport = '*' + ModuleList = @( + 'modules/OtherPSModule.psm1' + ) + FileList = @( + 'PSModuleTest.psd1' + 'PSModuleTest.psm1' + 'assemblies/LsonLib.dll' + 'data/Config.psd1' + 'data/Settings.psd1' + 'formats/CultureInfo.Format.ps1xml' + 'formats/Mygciview.Format.ps1xml' + 'modules/OtherPSModule.psm1' + 'scripts/loader.ps1' + 'types/DirectoryInfo.Types.ps1xml' + 'types/FileInfo.Types.ps1xml' + ) + PrivateData = @{ + PSData = @{ + Tags = @( + 'workflow' + 'powershell' + 'powershell-module' + 'PSEdition_Desktop' + 'PSEdition_Core' + ) + LicenseUri = 'https://github.com/PSModule/Process-PSModule/blob/main/LICENSE' + ProjectUri = 'https://github.com/PSModule/Process-PSModule' + IconUri = 'https://raw.githubusercontent.com/PSModule/Process-PSModule/main/icon/icon.png' + } + } +} + diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1 b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1 new file mode 100644 index 00000000..3652a488 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1 @@ -0,0 +1,400 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidLongLines', '', Justification = 'Contains long links.')] +[CmdletBinding()] +param() + +$scriptName = $MyInvocation.MyCommand.Name +Write-Verbose "[$scriptName] Importing module" + +#region - Data import +Write-Verbose "[$scriptName] - [data] - Processing folder" +$dataFolder = (Join-Path $PSScriptRoot 'data') +Write-Verbose "[$scriptName] - [data] - [$dataFolder]" +Get-ChildItem -Path "$dataFolder" -Recurse -Force -Include '*.psd1' -ErrorAction SilentlyContinue | ForEach-Object { + Write-Verbose "[$scriptName] - [data] - [$($_.Name)] - Importing" + New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force + Write-Verbose "[$scriptName] - [data] - [$($_.Name)] - Done" +} + +Write-Verbose "[$scriptName] - [data] - Done" +#endregion - Data import + +#region - From /init +Write-Verbose "[$scriptName] - [/init] - Processing folder" + +#region - From /init/initializer.ps1 +Write-Verbose "[$scriptName] - [/init/initializer.ps1] - Importing" + +Write-Verbose '-------------------------------' +Write-Verbose '--- THIS IS AN INITIALIZER ---' +Write-Verbose '-------------------------------' + +Write-Verbose "[$scriptName] - [/init/initializer.ps1] - Done" +#endregion - From /init/initializer.ps1 + +Write-Verbose "[$scriptName] - [/init] - Done" +#endregion - From /init + +#region - From /classes +Write-Verbose "[$scriptName] - [/classes] - Processing folder" + +#region - From /classes/Book.ps1 +Write-Verbose "[$scriptName] - [/classes/Book.ps1] - Importing" + +class Book { + # Class properties + [string] $Title + [string] $Author + [string] $Synopsis + [string] $Publisher + [datetime] $PublishDate + [int] $PageCount + [string[]] $Tags + # Default constructor + Book() { $this.Init(@{}) } + # Convenience constructor from hashtable + Book([hashtable]$Properties) { $this.Init($Properties) } + # Common constructor for title and author + Book([string]$Title, [string]$Author) { + $this.Init(@{Title = $Title; Author = $Author }) + } + # Shared initializer method + [void] Init([hashtable]$Properties) { + foreach ($Property in $Properties.Keys) { + $this.$Property = $Properties.$Property + } + } + # Method to calculate reading time as 2 minutes per page + [timespan] GetReadingTime() { + if ($this.PageCount -le 0) { + throw 'Unable to determine reading time from page count.' + } + $Minutes = $this.PageCount * 2 + return [timespan]::new(0, $Minutes, 0) + } + # Method to calculate how long ago a book was published + [timespan] GetPublishedAge() { + if ( + $null -eq $this.PublishDate -or + $this.PublishDate -eq [datetime]::MinValue + ) { throw 'PublishDate not defined' } + + return (Get-Date) - $this.PublishDate + } + # Method to return a string representation of the book + [string] ToString() { + return "$($this.Title) by $($this.Author) ($($this.PublishDate.Year))" + } +} + +Write-Verbose "[$scriptName] - [/classes/Book.ps1] - Done" +#endregion - From /classes/Book.ps1 +#region - From /classes/BookList.ps1 +Write-Verbose "[$scriptName] - [/classes/BookList.ps1] - Importing" + +class BookList { + # Static property to hold the list of books + static [System.Collections.Generic.List[Book]] $Books + # Static method to initialize the list of books. Called in the other + # static methods to avoid needing to explicit initialize the value. + static [void] Initialize() { [BookList]::Initialize($false) } + static [bool] Initialize([bool]$force) { + if ([BookList]::Books.Count -gt 0 -and -not $force) { + return $false + } + + [BookList]::Books = [System.Collections.Generic.List[Book]]::new() + + return $true + } + # Ensure a book is valid for the list. + static [void] Validate([book]$Book) { + $Prefix = @( + 'Book validation failed: Book must be defined with the Title,' + 'Author, and PublishDate properties, but' + ) -join ' ' + if ($null -eq $Book) { throw "$Prefix was null" } + if ([string]::IsNullOrEmpty($Book.Title)) { + throw "$Prefix Title wasn't defined" + } + if ([string]::IsNullOrEmpty($Book.Author)) { + throw "$Prefix Author wasn't defined" + } + if ([datetime]::MinValue -eq $Book.PublishDate) { + throw "$Prefix PublishDate wasn't defined" + } + } + # Static methods to manage the list of books. + # Add a book if it's not already in the list. + static [void] Add([Book]$Book) { + [BookList]::Initialize() + [BookList]::Validate($Book) + if ([BookList]::Books.Contains($Book)) { + throw "Book '$Book' already in list" + } + + $FindPredicate = { + param([Book]$b) + + $b.Title -eq $Book.Title -and + $b.Author -eq $Book.Author -and + $b.PublishDate -eq $Book.PublishDate + }.GetNewClosure() + if ([BookList]::Books.Find($FindPredicate)) { + throw "Book '$Book' already in list" + } + + [BookList]::Books.Add($Book) + } + # Clear the list of books. + static [void] Clear() { + [BookList]::Initialize() + [BookList]::Books.Clear() + } + # Find a specific book using a filtering scriptblock. + static [Book] Find([scriptblock]$Predicate) { + [BookList]::Initialize() + return [BookList]::Books.Find($Predicate) + } + # Find every book matching the filtering scriptblock. + static [Book[]] FindAll([scriptblock]$Predicate) { + [BookList]::Initialize() + return [BookList]::Books.FindAll($Predicate) + } + # Remove a specific book. + static [void] Remove([Book]$Book) { + [BookList]::Initialize() + [BookList]::Books.Remove($Book) + } + # Remove a book by property value. + static [void] RemoveBy([string]$Property, [string]$Value) { + [BookList]::Initialize() + $Index = [BookList]::Books.FindIndex({ + param($b) + $b.$Property -eq $Value + }.GetNewClosure()) + if ($Index -ge 0) { + [BookList]::Books.RemoveAt($Index) + } + } +} + +Write-Verbose "[$scriptName] - [/classes/BookList.ps1] - Done" +#endregion - From /classes/BookList.ps1 + +Write-Verbose "[$scriptName] - [/classes] - Done" +#endregion - From /classes + +#region - From /private +Write-Verbose "[$scriptName] - [/private] - Processing folder" + +#region - From /private/Get-InternalPSModule.ps1 +Write-Verbose "[$scriptName] - [/private/Get-InternalPSModule.ps1] - Importing" + +function Get-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Verbose "[$scriptName] - [/private/Get-InternalPSModule.ps1] - Done" +#endregion - From /private/Get-InternalPSModule.ps1 +#region - From /private/Set-InternalPSModule.ps1 +Write-Verbose "[$scriptName] - [/private/Set-InternalPSModule.ps1] - Importing" + +function Set-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Verbose "[$scriptName] - [/private/Set-InternalPSModule.ps1] - Done" +#endregion - From /private/Set-InternalPSModule.ps1 + +Write-Verbose "[$scriptName] - [/private] - Done" +#endregion - From /private + +#region - From /public +Write-Verbose "[$scriptName] - [/public] - Processing folder" + +#region - From /public/Get-PSModuleTest.ps1 +Write-Verbose "[$scriptName] - [/public/Get-PSModuleTest.ps1] - Importing" + +#Requires -Modules Utilities + +function Get-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .DESCRIPTION + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Verbose "[$scriptName] - [/public/Get-PSModuleTest.ps1] - Done" +#endregion - From /public/Get-PSModuleTest.ps1 +#region - From /public/New-PSModuleTest.ps1 +Write-Verbose "[$scriptName] - [/public/New-PSModuleTest.ps1] - Importing" + +#Requires -Modules @{ModuleName='PSSemVer'; ModuleVersion='1.1.4'} + +function New-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .DESCRIPTION + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Verbose "[$scriptName] - [/public/New-PSModuleTest.ps1] - Done" +#endregion - From /public/New-PSModuleTest.ps1 +#region - From /public/Set-PSModuleTest.ps1 +Write-Verbose "[$scriptName] - [/public/Set-PSModuleTest.ps1] - Importing" + +function Set-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .DESCRIPTION + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + + .NOTES + Controls: + - :q : Quit + - :q! : Quit without saving + - :wq : Save and quit + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Verbose "[$scriptName] - [/public/Set-PSModuleTest.ps1] - Done" +#endregion - From /public/Set-PSModuleTest.ps1 +#region - From /public/Test-PSModuleTest.ps1 +Write-Verbose "[$scriptName] - [/public/Test-PSModuleTest.ps1] - Importing" + +function Test-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .DESCRIPTION + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Verbose "[$scriptName] - [/public/Test-PSModuleTest.ps1] - Done" +#endregion - From /public/Test-PSModuleTest.ps1 + +Write-Verbose "[$scriptName] - [/public] - Done" +#endregion - From /public + +#region - From /finally.ps1 +Write-Verbose "[$scriptName] - [/finally.ps1] - Importing" + +Write-Verbose '------------------------------' +Write-Verbose '--- THIS IS A LAST LOADER ---' +Write-Verbose '------------------------------' +Write-Verbose "[$scriptName] - [/finally.ps1] - Done" +#endregion - From /finally.ps1 + +$exports = @{ + Cmdlet = '' + Alias = '*' + Variable = '' + Function = @( + 'Get-PSModuleTest' + 'New-PSModuleTest' + 'Set-PSModuleTest' + 'Test-PSModuleTest' + ) +} +Export-ModuleMember @exports + diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/assemblies/LsonLib.dll b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/assemblies/LsonLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..36618070d5c9f5131ec66720aa0565c13e86d23f GIT binary patch literal 43520 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 + + + + System.Globalization.CultureInfo + + System.Globalization.CultureInfo + + + + + 16 + + + 16 + + + + + + + + LCID + + + Name + + + DisplayName + + + + + + + + diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/formats/Mygciview.Format.ps1xml b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/formats/Mygciview.Format.ps1xml new file mode 100644 index 00000000..4c972c2c --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/formats/Mygciview.Format.ps1xml @@ -0,0 +1,65 @@ + + + + + mygciview + + System.IO.DirectoryInfo + System.IO.FileInfo + + + PSParentPath + + + + + + 7 + Left + + + + 26 + Right + + + + 26 + Right + + + + 14 + Right + + + + Left + + + + + + + + ModeWithoutHardLink + + + LastWriteTime + + + CreationTime + + + Length + + + Name + + + + + + + + diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1 b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1 new file mode 100644 index 00000000..9e4353ba --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1 @@ -0,0 +1,19 @@ +Function Get-OtherPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .DESCRIPTION + A longer description of the function. + + .EXAMPLE + Get-OtherPSModule -Name 'World' + #> + [CmdletBinding()] + param( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1 new file mode 100644 index 00000000..973735ad --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------' +Write-Verbose '--- THIS IS A LOADER ---' +Write-Verbose '-------------------------' diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/types/DirectoryInfo.Types.ps1xml b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/types/DirectoryInfo.Types.ps1xml new file mode 100644 index 00000000..aef538b2 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/types/DirectoryInfo.Types.ps1xml @@ -0,0 +1,21 @@ + + + + System.IO.FileInfo + + + Status + Success + + + + + System.IO.DirectoryInfo + + + Status + Success + + + + diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/types/FileInfo.Types.ps1xml b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/types/FileInfo.Types.ps1xml new file mode 100644 index 00000000..4cfaf6b8 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/outputs/module/PSModuleTest/types/FileInfo.Types.ps1xml @@ -0,0 +1,14 @@ + + + + System.IO.FileInfo + + + Age + + ((Get-Date) - ($this.CreationTime)).Days + + + + + diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/assemblies/LsonLib.dll b/.github/actions/Document-PSModule/tests/srcTestRepo/src/assemblies/LsonLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..36618070d5c9f5131ec66720aa0565c13e86d23f GIT binary patch literal 43520 zcmeIb3w&HvwLiYjIrDxcGm|ELl4+Zkp_7F41!*a@Z(8VsJ}7-jm?qOUG|7aSq|g_n z3Mf#tDDnfvOHmL}^^c zi+?hD)t2^Rs=JWiT*!8&TC-hU`JU9qT&mF9m1^%w&0DrI)tPV0HAbVMI?ejr`9zBi zi>^05bb&4HFpWutjV7W`A;+h3A3lJ43fEy=M3s^@mEN48$v|TeA^(@-4YcdRE18u4 zm+l(nEPQ$n5G~`xVWKP85Cc92MUXe+TSOxVlpQA{MHFxq2Y@eh;f+1HOM8GH+7FPz z#chS&?oW#7!p1_e(27ja?JyGDQMcoAeP*G%8Vk9OJP27=B4q>mtRN1UMKs4jbmFrI zRDyLg$xAcZiTchX3hHwE_TWRvw~^!AlT9W~ML9HxlUWR*XF|UGFxLfVv}^EZT!R%n_#|JS7w&Gd~XZaOOP;BR!t0ldk|Z zyYnXl8ShJ&=`<1=E39`)P;d$geAVgAkV1s&5D{wl+LILt<7jmh((+ZvpeM@sdrVOrv+%Hbl8d?;KdkL7w*`4H$+b<_y?>f@%lGYPEt0;qR$ zzPXcOI79vkK;B4?@=~#zKxXlS>_> zS%Ap$i5RhmMW4al&-I%zbYWo8OI6G_LXD8GHq}_=s|_|*_-dn#Kto53>Z3-+s1Ez< z=aa9tVRECQuUVsN=TAkwQ-`@()vOU_wGC1ct_TN9!xwy%iDyoMHCWM_HKHnXkXDK& z!t1Cf8l0Ye`|Y=3%p`pETqufuj#FmppbAGD{i0^ZsDX}VX8bz~hy)t$pTPbx9lT*l z?$3T&oI2FqB56;t2`$Y86LfS4+;W6%*kqHRI>84H3qEP(lFTiE;gElco6Rw%d-!$m zE@ND^Z!db$_|&)>zfP1%s;yXCTao@VYJF;4nNjWB^s6X~WGJ9~T*Xi2lWE5txotmy zPSBHe;>Zy4B|ULZ1S6K?L;WZuphqYgtR2%h9z(JAkCv=$Up{Snp zW_FrsconBERxFdggfBe_Ov3)!hQ@@ywrNtxUpwunsXPW9lJv*@^&vA|qv}ob*Up~g z_1CVO2;wXg?{E_b;&2r+jgielB4*)tjuLS%`pZY(K$|cexJ?)$Xj7rWpzic!(V@PM zbl3aDk(7h!@l%ujG%7?gm-!0A>?+aVajR78D(CnLL(AU`g z{VC}(6^GGl$tDl&LOU=ZY`+U-wsIWfQLl#pEQoPaRpx_JxVth7RGv><5{A!C@{1YS z+N|72cO4xR*5;>5-H@+lO^9k>+bUgkAxAw**hQ|aSI)=9_>(ys~)!r z8X^hr(IIfR5pi@BYOyO7Ph%mq>ysW#LZ>4g_Z&5lY(}yr5}5V|8f{xnkAB@bW;)J& z?tAw_-aDue=q(-x&2KGfUKVd0i99CWO>@pXrX+S(NP6-3lH$H(Fq0rFe;x$ZtVv^{ zX--bf3Za6DYQaq4`)F=y~X2DS{>o_xj?c5?mN`3Std)GG|Col^c%l0(N(p%er>D#N~v=4pbRdHJ8kXX6dPK0aI;9L<9>XYSMo0r1rPlWYEH*4`q zt#kcZC&Ff$n~k`oX2Wh7iif6s4xO6$XPMx?Nl(PU>FcmY=2g;_j$53F85-SYD0M%g z?z9c)n0_PTL^zkZKw10GJ`py@>?fI>YU~Iy)MH1D|F8EMB9ipk2|0ak&~9p&cOsUY zKPV4gFjmAXrv2p~>+Q^-%uh_g!9x)%SQ)RZ|8E(J|5R6u$KyPiUGsm9D<Nz127?s9@aR{^O8MtA%C6n=F{bUNHZbx8HWmV}Jx@<^%2sa-49{N!sUX{jn zo-a%pe=z-RPU%V1pRC5zS*_Q-!?6m)qaN119iYK;pRD>k36H(*bw6QvO6%T8?anA3 zUikqdhW$>{wxI!BsFvl~*|d)71~ADJGNpVFLob zY&%hA)d_GP%nqzECKcBB0;g-Rz=}3+JNow9gZ7ax8H1n1^crUuEQrMw{Nzk@Is8Nv zYhF8eKjN9*+dQ9*E;~BmOpg5hpRALxF*b_MRr!8-l1_T#UOY?t0C!9r3piWS>n7G9 z-6ZL06T?Wi*c)QvF=i&@uUQjDdjgpo-A~>S%6mZeh?2*8SAT!SF@?53VBnU;K*LA% zVlIlsoNGiR!?kB7BZ;tD%tbIL!p@+uz2%Sn1(rX7`vThOX2QmV=ERzBMfdoU73hfy z*(<{q0-;G*Q``H_?4>8N?`#rws%Z%GAj?b-NA=}3p(lgm$*Njj9ePsj+wy)e?{G(B z6vXn@Og0%DC#YIv*9S~lg=dT^y)nz>a0y*r{1CXf4%#bd6`V;=KhvSaeVgXZ9EnQ!x0z&x1jm^{98EFQcqBlb9p zc`%uqhsk4(Ux%Q->w{)>9-BKQ0^VQ5{*~%W6k?tz+Xqjf410cDH>Qh=3n51Bo}z>G z?y1cOJB*;M&d(Zz4}8Yv!^Oo#4j;HtKR$3N;RE{&&}T%64;L5DcKE=%`tcd5`G95s zpHU?~TwFZI;RB2Hij?= zTc!3y&dHR$Eb{>PsQ}59=#qi1nTBxBJ`U=vx{_j=tk;eKFWXU&!mPucBdn z2NK!(j<@v{l5%}j8S7grwDpy-%KCoX(bwzfTNM!h)mkDYm{VwZ0sK`{}D_Sl@v}w!RZ=eTAf4 zUscBXmI`fsCHAnsYXY`E_#J&q;b#&RzGxHd;JP4EF~3?(z8r_pc9m!KV%ybhu&S{s zVfAo2pXKH$wa|7$#w8q&<6gj&EwzkSUamNExmltq3=dMbnZF1;(o0|;ho(QDO`zz{ z$C5agVOi=Ow`sqmR$F<>*lb6{5wwv>PKH@2mMe`{m$W4;^d*ONj^M$s+LRa~?3-VQCWZ>UuqjMg3x4!KRs{_!C6 zY~uE4$M9E&n?Hv_kiQYy#T^Z9$mO}wl1wt>O|ZtV-_5EH+tm&=Cvv+|BM`Skw$9cS9#ac|8Ue#G?1`)=-?hTma-g*(lc{w}l>vrE66K`7uZvv5X2ovX2G>y;)} zVI6eDdgr|;FKj|OeF0KRY0Au_At9?)zi`s*U0ezmISo9v2x(dim`)#t{biivF^^XB zDAaxKv@YOoT>!0vvv`hrctfM%_f`SJL)#Mbkd8lR(vgh8OBI~E&<4E_f@F-9oxS1V zoaer=$4c4UQ=@Y2aSme4CwiP`?Mkk3ys=!yEhi>ljwz6_do{11(9eJL7 z&Zck)lt>JJQ!#c5)9Vl(%2fGe(1w-5eigHPYIHsQWY|~l_c>A9wp)-=rci48$`eP^S3Ps6()>Xdh25x$@J$xv+B+p@@01U0MENKM zJOoE6BAN4WL`u=iHftJ-9~{a`V|fv32>8++xbwC+NB7aZe!GHgycoG@G%J${xp@WE zvvTRIkcTdYQqzv3f0*@O#QJB>;iv}vaXN|BSL$>^k~}y^G8vU$n^*h6l*aTQ!V5>w z(IK$nh`1-?Q_t8X`ChsNVHJ;(gWC^BPQ-q^Tn)?HL1pEkWmd*axRRWRJHoA9p0$H( zg~H915TuHnz3gtKUujp_7u3YRgH^~Q!Po9ByIDSI7RPs<3oA>fUc${^;98l4TLCr? z_f6c#Q*I;8@!Yl6<%OHQew9VsO;DvYC;z>)I0+ykEfrZN!!BiO=(4o{w^vqxB9|9+Aww2* z80d1InRT8HS36VeXg^^60E10UK9+qtM+by(b)@+XwA~+&jsGYGd11!uw^3{7V-yl5 zY&prj19z;hh$H#AxDb5#n2-ktCZP-N8yb_DZC2smAWAPAKLHY}@JK1+8p-&TlabkF z6%LoMF01hS5_X|gc)oJueaAKv)LFC<(nQ2(=b2eO`}Tik{&&#vr??Y>#>s7%T%&NsuQbikFabfr_S^du+U$BwTh@o`U^<7p1XxWaT-dX6i-(3M{8N^f$~ zeLQ~ByP~#!|VZ$6A=iSFl_Alq%M>P-1!Oq;jyJzKFQT<)6S$Ldcg~V$! z)<=(1gKCkF!GZkxs45zCi(S?=%mZPB_5T-p2y+ZL$=B9ooQ%#MkA78gM(y(oofuGyL^~`A1G8ABngxfKtwikj%1C9lmPawoqv01++Ap+sv_C@)64sW7NA{1chV0 zr`9~a2w{WrfS)NIFwU{wF>4-QIu?&+n+FUr@EvnmTkby=55yy-2Lj4q@5}MDso#C2 zzX~25;!iF=#G^Hh7kiZ)K^IFu)fhww;blIC(YO|V&YqP*^}dTHVQLbLm-`nTH4!_p zB{G&D!RsR0The|^M{otKyt&H)(dLIxSJi8m{){%?jT|+XoK%`i8t{zG9mHJ+CTi|tBd4!McOeYzk}z})5ZAoC9=s7Ccpmh^6>5(2 zd^gq28CGC|n}yfmL29q-IyW2c zSM@-}-`GSAxT@$KW5>4PJJNzcuZyeFkC*Xr?cq9m;jTRA-K@$JJGt`E zx$N_Cs^SHiiv5jLg^j<>+$>oahe3l0Do&SSR#A@};%A6!>Y0PT1j*YAu6c>eWX|O> z1m*r^vKHVn-s|jF4^rZIX{Q2bzcTcZDl3~`Rok$vL_4H^8;g%X{XW)r!b#>%tN{28 zt+iVch0=FxdzIlWZ2YEwFAav??BA%VpD)tSAiuuCl)LOb)T}|kSHq_NSctj$oYUz) zqOv9x+8N-xg!R<#_;@TdDBc(x@cf9CXMsS%nJQJFa^#(mUVB*l{Knf5h{2*)ZxF&T zPbGbp+Nd||cYjb7Tm$LffN3-n^^a@tjn@djDdYEG`@n0t@M5Wctd#%CkrV7gJ6KKB z4;KP4JBz=_jIH2sA?0MLL%VoU`61N7m&?b+J^2rF((AME5)lH_`vVV<>w&1#tRTXp zY^dQEPew7X1%Oro#ka$gKJ2LYCa8Cbi)hkLIbH_)S=0wz5l`@bp@C_s_z~R3Rp&p- zSO~^kY^fuhwV}pFI~kpv@>{acQM0x&Vd0FXZ1y-`XXYJKWv7sj3xye<0td&jm7@0ei?{ch=u>her zLSwi8VcA5h?7o(#B3ECVVk4VnQ99X(cvC5k_q8k_*1}AByxXrg5P<^;)i-r zGlb`{HI-&{C4MDBNjNo#EqnF7U~x_n6wQpcJZrQHro2J5rA0Ae;ot?HA=K{#T%>y+ z0~$|Nc=-EY+%H(*@O$0T?*f=RxfEYp|65}K9W%7i%tYu(znT6Edg6%;hiv^WatLN) zInILdU=jiWVKV`95Z4d;=cAMP2NKw*9O@|(%)~NhG+%>cb?7&EpdfRIXoB@!9mv#} z8HcY0@>hj-<5|gL)(AmO=r>$TljD@@<$Thb>&VF#{_%#;ZuGmyto@r*$efOH&d67D z(aBt7?&O3-$D6s6%h9iIt{r+BJNMAF!%j0Z zbMa-!x0+(eZXAuw+PCoC^*Y}$>H85#50$>RFzY{|{lFt>$u?DTf&tbh-in!LD1R_% zKAC6P>0vZ&MafUr!zYxVus-k;Ecwg)geOkemM3o6u*!_ejLFPy{tVFOzcOex0QNFC z3IJaUfhDZZ{NOz^5MXzof;7B`v*0~{0G%d4X1&mvJ2SYK&Lr$cXcPzHI?Y?ThPjLL z;D$DHUzq*k@QbVPCC#K#X&A2!`kgZRr*$ zGyO{bPD7eqi&XZ}AvH`Q=OL8jky`STN!_bzaN@+f8l1EFK?1Gi&vG~iUjc>EMYbbI z=eiGOOxR{yM|BC0Vd)w*hFzuH3@(*6IwPEYPR&6)w%0ggPK|9IlBKcD{$YkP$!a-Y z!(*GhQBK*&*bbm6?y)_Y=~cv@isS^J%%yW7M~!VR$Hc@DyQa~T;eU126VOyH;AnXo z?&(d47`rhO@zCIc8k?e;BNP{u^j|CbGnLYx#g_Eve5F6XN@D$4z-|VjKc=lR{b3PX z|7l3V7#ssj`g8f9`f~y6KOJ|aKQ=^Ie=ZRHIU)LUK}r90qCXcZ{aI{Df6iC>^KLim z&jNNc5dHDuwM_prm|ofcOe6>B&*g*a&jqaiOx%_JSj@8iTp;>$LiFc?lK$&Oe=bz| zv)GdUoUiof2Qt>51?*-Z`lncbnzQokIR-`rfB2bY+myzp#>q{SC&C!~D?1&40Zb}m zFT;2IaUYpPdSy?cy=!xkDfYpn3$Y>}d)`X=~nGd3}^f|bYB&bKDk?|7lV{qNXIIg9*&|cAzaZGW9(IoFtxjy(p zTXn~B4xf!d&gaQ^tnZUiAAMQiX?{+(c(+EA^i3@2eDo=AYY0Cc<72o|;3z+*AC>eG zfsYBzhrE}e?s9>rN&YL|^#LEvuXr5aq4_S|WBBmh9Zrvp^u^DiiNgO&lK&YW=N}F- z42Btg7#u=0v*K3NYLHqJrF6Q`*9yGS!;}wrS?ALPo+3Hlid+}-Vcuqml^#xqeOp2E z9pr>)VuX2KB&7=lzUJZ5B3kXEyG2&e&zv6#F#M?Gd^)@ot$tn7hoYQLM!0m2Nc=^J z(+>ikLsy1)zoi#2L??N^7WUD#LixPV92FRlwtPFzwRTmC6y$S%@b6`DpBuD?7f2P? z8uJA+kiS26t&s(05n~Ss7SPzw1&cD4s-(L@*BUuI%p$e{3wxPM5)ph4us!~3jZS#e za56?$(i%ue0qYR#69L9*=vu+{2N@ed|03Am!ip!YdG!&&wg8)t9q(sE z>&u|ad`i*tQq~17jJ-g8Xi-DOc<+4p>?>pe!<37a&S=<`v9W@s>21L-5NtAq3@*Ez znDTV|oDpNEOW7GT-0=C{Z&U_W_g!9*1l$u~xG=)-gF%Lq@RJ{_`?8hEK#8&jIll`t z{9uq_wz9@mIzmbr?g=o=R*t}AQtPdSFOLe31$;49iJW^P;{z7;R!l(p$NsT_)9Blt zDS*H5Gu$4TA^GzF{~S0AaFOTiz(jh%T!QpR%;kVXE6xKP;bm^?;$s1yMq3Ozi>myEXQa zIAe!2c2&hNV9#sp615vDAu&aPo0$Z#wy4-UoY_?Zp|0b)SS!220 zRn*RtDcz#5Kx_1FP(H0Omgl1jIbhPmbYFn6O9i`%w)yV|kS+T_z91Cf?XE;9I9OvaNqZe^O0bH)rm-JY%nS~pUpm;l zU^TtwU}pzwC?#{}je#FktO^dL84k8CIE=P9SX*#7UEyF`gCpo(2iq1LNrxP4S8x=) z;b2z`KtINg)-v~C)BO04t`F608-q6@0%M-#*EEY>F z?`u{?=u~PF?4Z#Y91840UG_|%E;Ny@&{(E<D0wR%2&cjld3S><+6rG?@+ycF=es zFbh~EFJ&O%&5CnEQ)!CE)>qCnPNOv%>$aAMPNN=;J!P#Aolg4%J7}1dt-!t|*u%y_ z{CLqc8w+kmM43j1R9Ub+l6IASC)gD#QT{mC8=CIatE<=@n&DuNM_rh4kN>JtnbBqT zhGyE726;Xln&n`N1Gk1|JJ_S~TSIf`u+oKIjouNO%MHipVehNaTSM~{LJ#9q{!Gl1 z5#D0Oc)u?&GdQ1`1XFQo0j<(yd(4@^1$3!kSJ56sqO)kfE-RRy3!P>2^cKu7h0dm* z=(3TXuZI>pWg|TYLrds4Qg(&J)+O|N#ZzN%IoO9mdDASe%2EGNXem9RvEO=r5n4u7 zv$^ab@yJ;&uYQSsZ!|`K6u8sl`(fhNuA{vg zW4o-Qq4T-k!^GaRfzk>Ku=i}Bg&Je;*+3gK#@@4mc4&;f=e@L7W9&UGbhpOXds^s_ z!ic@6h5n>5_MR-gr7`xNRyr3?1FQ>sPaAb>jJ+pE`viL`SV*Mti(+()(Hc3P#e-+IP{FQUB)L!562chKDqRvYf5LxLS7juTz9cOmO?ka)az zQ)H3Cc*GTG-`NV|QQSi##hnfkN2zUelg2pmT}t-~rh04#J>g)thIUe533K5dn;hOn zQv_2zwwsn~jC*W1wP}odY&YG_4?23DzMLKr?E0Z|qSL~c)0dWU8CzlqR*MG(V@sSF z?xVoDT*kBL-0&Wnr7+A7=Y-!+Yc%#y#q#hKbcKVh4_`^QI9N7(75zXk)uIp3YYuj6 z=!2A6&JwsqTf} z<9_%E-K{b1ha2cMjj`o#q**Ju9$Vt#@J)2BgWcr4nLh7eUivs4a)7Wo4?+bsDexNYe?3(bc^oGVBs@NCaPczPwdMNvN_%`Zsu-n3)qWunbclgtE z$icoCzMbB1um{6;P~B>q%Xh+`p>s9%P{pC}owUWlei8mG-QZwPgzuue9qhN^&(SX( z?D_EL=_LnyC44uHJl~e^R`?4v#lft|J#?X9%GUo%eH!C_xR3U0j4l5qI=F_p93-~< zmudf6g|X$oN^fb5$HN2EwvNlL3Vhw)j9(4CMKI+(-=H5j*sY-l={3RFdt#Aq(yH}b zPkGNnbgjnNdmf@sXpFt*A$mkGwK6_HhjkgxG6yKKL2=<(=G)XP*j0$1Rgv$|D#30H zyq*{y`7UkIn3)_N`5x`k^*DZhpY~~trGKA3t1*`TeY#)QJ8X`L{E!X_rabwF^qj`n zf-V`I966L7x>&S@1D>L}P51$JBXhtUO+gHbj0&3ol^Jt_pl7I63k--5}VF zw7Ozid2GyoW@3nR!9DmA{PoJRfg6_4pY5gd+3(<>d5ct z0>N&iz45ll)6}N1|EdW3pP@dDooaPNo~55TSRwKUT9hSxcogG#h}r~u%J@EZf?uH9 zHFiln4eYZUnQ{-lS;J-D6YQzr3s|YXKtEBK@e!OlEtQ=bZwB^=F8gt0d*lVGX=N^I zo_>L91yj;rpc%T1r5~X~8e{24=-f>u=|^a*#(oA}j?mQ_drq)B1yhk*v8*DrpfKfW-RYzBn?Vdl;Eo|-Y0y+ z;+!#IhC8J6T0f_+^_wVtNpcQJ&i^cY)vCnP{j)IzS;J>V|Npss*5OFph9-7%RGRH( zr`f_PjrZVX^aiy?I7h+$wl(P%qp}ib!m+z(NZQnCH@B?xPPU@dQ?E*IJ`&_wZuouZ zY0~|oty`{2vn-qcKhmPvk&-4#&(8!{lh0tkXfR*0dyr}Vk@WFfq%^rpY;sp{a82Cy zKR&mAL{E2Jw?uauTRN~tV1OmvH2>VRTdRL0eSEtOEZyS~pOnbsPP@JFAJNBM*KM&{ z@dTxh^7j8SS(EcILM>V(49K_Ch2ycMG*hPxqL`ed_l$1bz0=WtN zV0416$9{hd*Uh*>xUR!>J>I{>aNUe6gzGw7*W;K#4A;%LLb$HObv>lTaNUe6gzGw7 z*Fz@nzs3Q*I8)E*(SUfL0$7P17KXD0E)uw0;97xMf$e}puu5Ud?E?1*d;rj(pG!Ju z%!rPrIG{npj9+0^A8qh#S4B(Xlaam;>zL8TQp{>2sWCc-CSsRiF-;TtI_ff8@a}7I zAP3kRV|Yt=E8w$ua&8CBXK1@nZlK%zX}V41wt>%c)B*l)BIhpCXY|ldAghN~`Kyc$ zV(C}Q&hQUK!>gs%9wS&W&Det@X}nu7Bie#pg8!(P47kca8E-*ePwYYIuLJu8e$3b< zG`oammzI8)dBnKhxY1K*-faBVGr_zM@N~0H__v`g`^+nZ@(SU(SJHbWeS@TLkn}B* zzD3fz1YRMs_6oc~;4K0lK-=;D$Dq&`tjCdK;Lpr3{I=xR5$}9(ju&4)WZT{?Hosr2 zaX&a$p_H|{T`YFB?6BM}wI0;g+w9ryx!T}e^gTvX#burc#d^2P4$JNIo#2(8+v&$a z=1^DhF{B@l-UfJ&{|kWJYq!&*@fv;H$C?m&v*>)ea22B2w0g6djEju z)6syinD=UwE(83n=X~V+$ zWA}LviX9G$|2$=U-t!nr|26z3;5rYW*yj)QdV;x46K=~i&srbznF9Dw#dP1xLirct zPo4{X_lX^D7I>e*Pg6Gwy5eq*-LC=+*rv*MQnmjL>JWt<>zvwf}Hv@0_ z_86z*i6LnI(5UstP42Y-{=MK2VEn%VSV{i{SVeCE4kZKc3PzF-uuf>wLQ^j^O%z5x z*8iZKA^Ec;f1c!DDfw3m{FuO-1>Pa>E`eVb_<+Fg3H+hJM+H7EaGb&X8w7R={ENyl zIsb10M_VuW8xg}^0Zh`tNF&}g{seF=Jr9_nKLbuCGunvniZh%m@EplsNde@nmz-9C zTd4s#Ma1hy+DUEER(d};zhB^|1zN_n^r6^Tf!`JQJA_he3VX&%^LnuS{vIxk|_@eJUB9GyyEX0 z#r$WT^lQKiPvUf+!2JRbNd94gvucG#V4uMK0uKm0ERa%6vtQr=frkasXwFXwoF(u= zf%^p>5O`Q1jS)(Lvjko!aKFF<0uKwMu|g?umcR=I?iYAK;9-GOCzJxeK!<3QG1?f1 zAMlxE%rO=k=NapbON|d0pD-RYUNhb@=9xM3Ci717^X3oD|1f`LK5IU2zG=Q~Myz4h zNmjiz)tYZDwJxyQt)12t)(zGtt*=@STd!MQ&qc}vsOM?VA3QN{ zvv<4q)86lSf8%}L`?B|KZva1kFx)rJH_JEQceZbtFX!v^UFLhAZ=dfb-zR-{`kwIp z*;nbW@sIVN;&1d%_BZ>_^!qUX`te4Q$5jyXUj(BmirJ87!UV=t5_4}AM%56^z15V$ zb5pP9eOQ&%g%~~%XLwD;Re=8zxdw1^^utch5$k^;y;W#BBex*^)8Kxda7Yz%>dAmV!8sKZyDRwf2RJ>@0LtG3n)E09#+FHc#p=Su+iXMu z@*4QtOXN3B2aMwV4zw~57ifraCSZ;69>7t?Y`|J$E?V$3eoZC_ZqoptLj(!ZAMu^g zAofz;1DF71f{qxc0KQ~o0ADj20ADvw1$@Jp2*?L;67&}2Cb5h=h1+dr07GU2V8lEX zFlJ5!tTZPBCd{eukZMp?(NIuU(Qr`0XFyp+CxNnxQlPA&F`yhm<3Txu(x4nd6F@nH z>Onb#8bLXPnm{>(CV{e=P6K5%HG{I6rh~GYW`MGqW`eSsW`VMr=74fIe(7xn-m(;F zH(i4@+f8&U_7M-$s}wQ5V%%$f#eC5GuK7*tKdl$6A)cRkzwZ0C?}xr$_@485`go

62(tSI^{0G^4vc*P3I!kY>Fm(SqKt)(a=mIl1ktvmL#; zbF=LQpo`|UixSzwc3^Jyz_xDdW)_pn@+Y&1)21l4xb@eed8$h~(*4UPo;EOVGV)kU z+#JPEA4rCyY%`YR+j={4GigzAX?7_N>Tl!5w6xITV!mr}`$p<4w&n{RNEA2H%I(FT zTxa9F?OoZ<_EsA$S-#kKR<0{oK+)!0Ps`liLLt}Hvn1P<-JEM%wWW~Dwk>LdVjV3l z?Op9X?b!||Q*$1KRpX*k=8WTzx%**;R=$z%(mVA7a%RqKoZZ$&v%9-h9kPhgt1_U>HCw+nW!ZOazg zvt2!Ndpml1b>^}{8;6cXo4fLb++1`#Ey#8NYBzN$*{Jjd^TPIX*=dkK{K)p?XkKn( z@8-?9!kj|>5^2!N9?oWm70QCbXUv?~(gJ_cMHrfm=N8(xG0s7*y(3qU!H0~t**)-z zjlC#3tGC^SDN$^+62$=Vr6TZM-Ck@jBcEL?<~lcaY+u#hU=ofJD44{(()Zl;n>z@!d4bc!b~&8u=|h8U#~_%eo1sbEF+5{1l| zIk}}}8&4$c=FWI11#)Mi_-~BvD{`IrZ8?Ir++X&X)V6BWeu98b(tH)>Xm&?O{t~## zHswYO3i(c5A|{hyE2h!8_IyE`@`cW9kIscvbPD#;DJNEQyyE!Du}SVNh&r2T4kAfm z`^sFl(7J_|WP7$q>_Vj6jAVzps&`>1r!w=v1qskPg$a6a$;uWhR#)Xm|Np zIAf2+;EuA)6}e4%xk%!(;A-PoNw~13`JR=%-QD>D;_CcMTXPa3O3}HLHM_7GlYLhY zuUAXCn8+ZzZCN+RM<`e-vFS@WnidmDPbo83CR2RRZdggn{}bbhqtvQA>G^L_*QPwJ z%N6p}b4lJ-2#$0yCQ&vS4M6*-k-E$!tfI+$ze5_T?~WcSj^MGItPA$V?UZ$o`G zoaXelcQEG2!0=&wqq>P#uy&YOWI4Vnk7Y*=vn=I%wgAFiTNV{D(0j7*FIKlVCv&$1 zQ9LkcIS$Gd)Ob^s#PR1+kc9No7S6)5vq&wxJjL3o(4$O=Ru<{J9<2O$4M}QmL%Y4a)%(fw=p5N0yh@Eva20WM#xf+d~Q?QE(p(RT#>^JLTVgvBwy6o z-O=9Kj;!vM`IqW6WJ%vIE9eCktwKF4tf-)F3p#svB*WoYHs64iJ&kaNvax=4;0&HU zU1<3e2otdNT?AlkV=x>)nyHzulfyRVrfuzoe3zsLX|;Z`ZFIHX_CtH{>IdF;ve|LS z-i46OYW(t(^*af2lg^kqsimb=J&{WX&&^}ii0QJsw}+Nsp|mu2sl#v;r}1o_zeGs+ zVfa!`vAGn22ay6giu1F)N>#~Kd0DcmEU5}dWhdn*TjX>%Kl`x5F|rlc@hn|(I@{8v zoPTJmcq8wd{Uv14% zE8bD&sEtxcZJ{iF87`~y3fKWm0ox=L1*CJR$CP>GrKlZPH}#^l5nl|9V%LuRDeR7> zh?dL&?IzF_aG#Exo!Ix?jXVFF?Qm2jlU*e}nz{*j^{6!wcbYi3zQ@r9KR^BMS_sX9 zh#qJ~4u52R6I$DWRwM1l3J_^(U`|_c<>?Z@6w*1ocfLg0)+XAHfu5}I82sem;Bw0~ z&C^DFb5L161sUzyzAPL1ESo=|XR?s{UR+sF;`=7(ryTC(T$!c^6dS>XOO>ABw{mcP z+)o=p*@L#^gx6s8S*GgqZDJd?6L?M?oM#c-3gQ==!F@o>-j#LUfk)@cG8sAaRx31P zPiAjrncVUe-l4OnHt1BFVC>yo#=Xgw+zyQI?bHblY`0EaUC84R(MX1Pp1b$m@>1d{ z7mM$7K?||W$%9*FBP8ZU0^1W7?7Mz&LM&iFuvth`v;$1B(u9gUl(;hn3blu08)|OG z)gy*rGjekgnT1~p-OOcMG#55O7tCWzKw~c+Od~cA8zu{`oaS0=!jiO<4D=3A@er}4 z*-qL9>Q>}-f5Gq+x5YN#G4_u79pZzoP{UWK^TE^&=Ln`28}0=mj$4U~TtVa;xdF(uFA(vs)3i@rQ&*q`0L zh87rvFFdiwV%G^jm6RJW5tmQ7te;u{k#{FARKh&r@RYNj3=7{E2=b)OV~s2>ElH!k zZ8!aH*w!sW(FfhLPf zt@+fP&kfuJ!}D5*ClVEkjJ_*Z0xeDSog$1`^7P8_iwV_4sumDxvB;L)jH`g99V^O9 z#}t-L_VOu(e&u;a&2yVTr_Ja3&gR9R7(?SgQ^8RQ+X;FcQoI~*L!BmESULN7!2r+jvQJTzTjFg}%XjfoSa&0#%AHcS8-gz2wn&}FM z{~XRP)AwC>d=uKF|A&ld;oE)DB08@Z#^vsy8uf^<5@}xH@x08dOd3(@ya8p_PIz`b zuIWUrAGmSMk?xsieWmj+Pkk(R!C%Nqk>N=hM!*XYAHvBP1JgGoaj}s|`H)WZ?Ex9* z^nHv=apD8`NbiuuZX*^n@Io1#SD^^qZo?Z%M!S~HPKq?joe7-kaBnWixczeN%R z`E61P(%lZJl2@m0X?3etw*NMey0OQg&p@g;_(5w9RgzbCPLNc=o5 zW(9DI`87odTB0OLNyD#6Bx|i?LBYgw(5gz@Km!eoS$-pcE9Ui^W@47lZze`2M*937 z%QQ{c$O?cc;PqR;BYv$AYlW;pAU4t;6tyfDWW_*WngPEz1{;_r4qutESitWKSY}Mv z#?TdJED#v(4=J7k0|BlX;3_byq$m30iRG57R3r(VrG&a9L*+zT+G+Xy9>}gYPxjXY z5=}8BMe$c0Kx==ZW&(e;2mSiP2!1vx7VrCcqVLhlkQ<4n{1u710cx?GVtG45)+mlG-Ug6Z+Y9i`=_z^IR#7w;7$q&q-(njnwrj3^UD zQ8(TjQ+*WgRrNq**9vitjVMF2v}Oi%o)CZ)GSEqiyXp7CYnK?NKcw!uAR5&LQC$!X z*%ITu0aXVHRf%(iT_~h$g>-i}v?jUyIYn=qxvd%}6?VnBN0U29eG#jGooZ z>^f!u?vL?9iRC_=pv4EnJBeOr6CrjaQdp9K-!mpVf=d5E(gC;>j@%`U8klY{fj+;* z8mZ=`#k^J`&Aph8`~6YLh$_E}njDo9SsZ(e#^BQ)GR$bg?~V5gm2(S_3C{sR)aC#2 z-fDkX=mKa8`$7N}@By~~6T8Pp0Ow2Nz42a@fff7}hqOx!LZ%vjA%{Uo)Ir1xffCtK z?p$^^0m({)5B7nRa2gdx_yQ6ke*gi)LL3SpVD{aGh{Z$pWo3tYsc0qY*$(wV#4=_S z@3nm5gMvljbCQ75sYJ+w1o#+H9ymN0n=~K91JsTR6e(HTaalaoS2DP}?x#bC-DA))H@RG$I z_<(s5#dvz*1l-8)LHaHni8p2LLJCt9rXY^bW*}H;n1NBu41*h;1O-NMbVsu>!o84& zKM03kd1D3PuTW?qgT)NaWw46Dn!s0gY*;;P%HgZ~_T$VwdHRTMApC%u2>^V>%Gndi z!;dKj{qR%EgJ1vLU5~CAwf)&UKX=8)PpLgCKYG(+H|~2TcC)fby!4mfeCs!#>3i#r zrzSiZZ(08AUC%sy-lwO|dbRWC?Y)&}U-7LsKDWYu$A}&E-@In)sxRNuQr!RGlRcm!7^t}4ry7-{-qxXlW};40eqwUf#H3r5UD zpZh|lFAB0LxKfsH6ecw37_M4}syYU6N`)Zgr*YNeY6=lLU1s$dl8A7U_F*bWjO67; zVitpu*r;Z&vKZlY3EZNN(`g3v44N3!$%;f+z(;uvfPojQ#N5G{8DuC!N${wH<2T?? z636eiX#yFliB!m;-~pLPAq;DR0B|fa0O6v@6|RCu9ULhc|KOtt;=MuXqW@A9)nvdlSyYoD$AtM1 ziy{z&1}lDy2b789yzA+f|Mo+XcFYGRGzMQlIJ^1 zlYq~GJ&{5eRUqu~xVF6nJW=2Q9Esn%<4X8}G_JjzdqE-vvjZE%3|KKyXZLnp1?RdZ zr7*MB&WAJtl5)f-*p0FgUIm+pI?<=^j>?hDGHtU=1B=Nb3QH;eUM-i_+okouu&Q$0 zfN?CcfG6seyD@9HsbNGR1?FdhCc8RE)o7wgS4T>Djf@Qm*SrohLJkE|z_EVQHINd1 z;?GSikRvq47AqjQcyE(i>DxOBtjO{0!7NprLh2iC5k^MagbeQR-a$Ub}x0Ewvm^a zMFVtx4t_WiPkw$W&L^Dl?E=oK!w>yAC-G9>xhu6I-eFrDdLl&9og-CYBj-iQcg(<^EW@dp~?7e`sNLPEv$IE&iC=>ZkrJM*z%Xh9KL7a_5S#EFR#D*nuVjc z&&uEa>yJM8(72OUeC*OOuYK>DuWbA33kUZ6>?8E~SBz(uFW;X!{VNxq@~5vq@Vimd z9^3TN%nPmWeE-j%&irxrSDzbw<<(z3`I(P==$gkGF8f;hU%yi~eT>okVDKW==X&Eq z@~a>`SB`{=Yrci+HlEVwt-R}ohWGqAuz2nbTQ>iB*T$c|%`KQWeM5I4&&Mx{8!pLT z!iS`ApoGsLT^Z&ljEeA?Ee}&Vj z67EiY_JA8}nVT=n>*!d5g97R+2f3V_QDmC8$AL$soBIEy{~ik%V#J|DedV<|W)j|o z56ow}g}BxnCVWeWG4)AXh=uqb*h*>voR4oEt)xY=U)_THQv5x$WkUE(&x=QS;amEC z5sxJKTaa?c%;J3WNHPHC;WEILH;flx$C5X>7GYPB&n57uj=0t;z1LVoIlo_5o6SN% z_j*1EF$Q!hZFdjk)Fw1dXt(+|1sln*0sl5G{>_Cne(|Ta!?AfRpE0hoZrSVHF5AIO zXMdV86&a4^^H9R?x_R5ZyG+l;$mb2|#VFx{-c(j^HR|z6j#9fOVNbQmx$p!2_?{Jh zSr#1BD^lLn#y8mkl{V%48?lSaThRnrwWzlk{5MMtZfQ4OtFVTfv6YX_c4>WiUW)F* zAY36_@y$xO65AXMTurfJC + + + + System.Globalization.CultureInfo + + System.Globalization.CultureInfo + + + + + 16 + + + 16 + + + + + + + + LCID + + + Name + + + DisplayName + + + + + + + + diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/formats/Mygciview.Format.ps1xml b/.github/actions/Document-PSModule/tests/srcTestRepo/src/formats/Mygciview.Format.ps1xml new file mode 100644 index 00000000..4c972c2c --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/formats/Mygciview.Format.ps1xml @@ -0,0 +1,65 @@ + + + + + mygciview + + System.IO.DirectoryInfo + System.IO.FileInfo + + + PSParentPath + + + + + + 7 + Left + + + + 26 + Right + + + + 26 + Right + + + + 14 + Right + + + + Left + + + + + + + + ModeWithoutHardLink + + + LastWriteTime + + + CreationTime + + + Length + + + Name + + + + + + + + diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/private/Get-InternalPSModule.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/private/Get-InternalPSModule.ps1 new file mode 100644 index 00000000..89f053cb --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/private/Get-InternalPSModule.ps1 @@ -0,0 +1,18 @@ +function Get-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/private/Set-InternalPSModule.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/private/Set-InternalPSModule.ps1 new file mode 100644 index 00000000..cf870ba6 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/private/Set-InternalPSModule.ps1 @@ -0,0 +1,22 @@ +function Set-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 new file mode 100644 index 00000000..be5afc0d --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 @@ -0,0 +1,22 @@ +#Requires -Modules Store +#Requires -Modules @{ ModuleName = 'PSSemVer'; RequiredVersion = '1.1.4' } +#Requires -Modules @{ ModuleName = 'DynamicParams'; ModuleVersion = '1.1.8' } + +function Get-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 new file mode 100644 index 00000000..5fa16bc3 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 @@ -0,0 +1,37 @@ +#Requires -Modules @{ModuleName='PSSemVer'; ModuleVersion='1.1.4'} + +function New-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + + .NOTES + Testing if a module can have a [Markdown based link](https://example.com). + !"#¤%&/()=?`´^¨*'-_+§½{[]}<>|@£$€¥¢:;.," + \[This is a test\] + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [Alias('New-PSModuleTestAlias1')] + [Alias('New-PSModuleTestAlias2')] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +New-Alias New-PSModuleTestAlias3 New-PSModuleTest +New-Alias -Name New-PSModuleTestAlias4 -Value New-PSModuleTest + + +Set-Alias New-PSModuleTestAlias5 New-PSModuleTest diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/PSModule/PSModule.md b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/PSModule/PSModule.md new file mode 100644 index 00000000..79741cf4 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/PSModule/PSModule.md @@ -0,0 +1 @@ +# This is PSModule diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 new file mode 100644 index 00000000..db379c16 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 @@ -0,0 +1,28 @@ +function Set-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + + .NOTES + Controls: + - :q : Quit + - :q! : Quit without saving + - :wq : Save and quit + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/index.md b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/index.md new file mode 100644 index 00000000..d9f7e9ee --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/index.md @@ -0,0 +1 @@ +# This is SomethingElse diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/Test-PSModuleTest.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/Test-PSModuleTest.ps1 new file mode 100644 index 00000000..26be2b9b --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/Test-PSModuleTest.ps1 @@ -0,0 +1,18 @@ +function Test-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/Widgets/Index.md b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/Widgets/Index.md new file mode 100644 index 00000000..f3eaf5b9 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/functions/public/Widgets/Index.md @@ -0,0 +1,4 @@ +# Widgets + +This is the section overview for the Widgets group, authored as `Index.md` to verify +case-insensitive detection and normalization to `index.md`. diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/header.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/header.ps1 new file mode 100644 index 00000000..cc1fde9a --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/header.ps1 @@ -0,0 +1,3 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidLongLines', '', Justification = 'Contains long links.')] +[CmdletBinding()] +param() diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/init/initializer.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/init/initializer.ps1 new file mode 100644 index 00000000..28396fb0 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/init/initializer.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------------' +Write-Verbose '--- THIS IS AN INITIALIZER ---' +Write-Verbose '-------------------------------' diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/modules/OtherPSModule.psm1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/modules/OtherPSModule.psm1 new file mode 100644 index 00000000..5d6af8ea --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/modules/OtherPSModule.psm1 @@ -0,0 +1,19 @@ +function Get-OtherPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .DESCRIPTION + A longer description of the function. + + .EXAMPLE + Get-OtherPSModule -Name 'World' + #> + [CmdletBinding()] + param( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/scripts/loader.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/scripts/loader.ps1 new file mode 100644 index 00000000..973735ad --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/scripts/loader.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------' +Write-Verbose '--- THIS IS A LOADER ---' +Write-Verbose '-------------------------' diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/types/DirectoryInfo.Types.ps1xml b/.github/actions/Document-PSModule/tests/srcTestRepo/src/types/DirectoryInfo.Types.ps1xml new file mode 100644 index 00000000..aef538b2 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/types/DirectoryInfo.Types.ps1xml @@ -0,0 +1,21 @@ + + + + System.IO.FileInfo + + + Status + Success + + + + + System.IO.DirectoryInfo + + + Status + Success + + + + diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/types/FileInfo.Types.ps1xml b/.github/actions/Document-PSModule/tests/srcTestRepo/src/types/FileInfo.Types.ps1xml new file mode 100644 index 00000000..4cfaf6b8 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/types/FileInfo.Types.ps1xml @@ -0,0 +1,14 @@ + + + + System.IO.FileInfo + + + Age + + ((Get-Date) - ($this.CreationTime)).Days + + + + + diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/variables/private/PrivateVariables.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/variables/private/PrivateVariables.ps1 new file mode 100644 index 00000000..f1fc2c3b --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/variables/private/PrivateVariables.ps1 @@ -0,0 +1,47 @@ +$script:HabitablePlanets = @( + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + }, + @{ + Name = 'Mars' + Mass = 0.642 + Diameter = 6792 + DayLength = 24.7 + }, + @{ + Name = 'Proxima Centauri b' + Mass = 1.17 + Diameter = 11449 + DayLength = 5.15 + }, + @{ + Name = 'Kepler-442b' + Mass = 2.34 + Diameter = 11349 + DayLength = 5.7 + }, + @{ + Name = 'Kepler-452b' + Mass = 5.0 + Diameter = 17340 + DayLength = 20.0 + } +) + +$script:InhabitedPlanets = @( + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + }, + @{ + Name = 'Mars' + Mass = 0.642 + Diameter = 6792 + DayLength = 24.7 + } +) diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/variables/public/Moons.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/variables/public/Moons.ps1 new file mode 100644 index 00000000..dd0f33ca --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/variables/public/Moons.ps1 @@ -0,0 +1,6 @@ +$script:Moons = @( + @{ + Planet = 'Earth' + Name = 'Moon' + } +) diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/variables/public/Planets.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/variables/public/Planets.ps1 new file mode 100644 index 00000000..5927bc51 --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/variables/public/Planets.ps1 @@ -0,0 +1,20 @@ +$script:Planets = @( + @{ + Name = 'Mercury' + Mass = 0.330 + Diameter = 4879 + DayLength = 4222.6 + }, + @{ + Name = 'Venus' + Mass = 4.87 + Diameter = 12104 + DayLength = 2802.0 + }, + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + } +) diff --git a/.github/actions/Document-PSModule/tests/srcTestRepo/src/variables/public/SolarSystems.ps1 b/.github/actions/Document-PSModule/tests/srcTestRepo/src/variables/public/SolarSystems.ps1 new file mode 100644 index 00000000..acbcedfd --- /dev/null +++ b/.github/actions/Document-PSModule/tests/srcTestRepo/src/variables/public/SolarSystems.ps1 @@ -0,0 +1,17 @@ +$script:SolarSystems = @( + @{ + Name = 'Solar System' + Planets = $script:Planets + Moons = $script:Moons + }, + @{ + Name = 'Alpha Centauri' + Planets = @() + Moons = @() + }, + @{ + Name = 'Sirius' + Planets = @() + Moons = @() + } +) diff --git a/.github/actions/Get-PSModuleSettings/action.yml b/.github/actions/Get-PSModuleSettings/action.yml new file mode 100644 index 00000000..86a49b3a --- /dev/null +++ b/.github/actions/Get-PSModuleSettings/action.yml @@ -0,0 +1,73 @@ +name: Get-PSModuleSettings +description: Get settings for a PowerShell module workflow +author: PSModule +branding: + icon: settings + color: blue + +inputs: + Name: + description: Name of the module. + required: false + SettingsPath: + description: Path to the settings file (json, yaml/yml, or psd1) + required: false + Debug: + description: Enable debug output. + required: false + default: 'false' + Verbose: + description: Enable verbose output. + required: false + default: 'false' + Version: + description: Specifies the version of the GitHub module to be installed. Accepts an exact version or a NuGet version range (for example '[1.2.0, 2.0.0)'). + required: false + Prerelease: + description: Allow prerelease versions if available. + required: false + default: 'false' + WorkingDirectory: + description: The working directory where the script will run from. + required: false + default: ${{ github.workspace }} + ImportantFilePatterns: + description: | + Newline-separated list of regex patterns that identify important files. + Changes matching these patterns trigger build, test, and publish stages. + When set, fully replaces the defaults. + required: false + default: | + ^src/ + ^README\.md$ + +outputs: + Settings: + description: The complete settings object as JSON, including test suites + value: ${{ fromJson(steps.Get-PSModuleSettings.outputs.result).Settings }} + +runs: + using: composite + steps: + - name: Get-PSModuleSettings + uses: PSModule/GitHub-Script@8083ec1f733f00357ee4d0db0c6056686e483bc0 # v1.9.0 + id: Get-PSModuleSettings + env: + PSMODULE_GET_SETTINGS_INPUT_Name: ${{ inputs.Name }} + PSMODULE_GET_SETTINGS_INPUT_SettingsPath: ${{ inputs.SettingsPath }} + PSMODULE_GET_SETTINGS_INPUT_Debug: ${{ inputs.Debug }} + PSMODULE_GET_SETTINGS_INPUT_Verbose: ${{ inputs.Verbose }} + PSMODULE_GET_SETTINGS_INPUT_Version: ${{ inputs.Version }} + PSMODULE_GET_SETTINGS_INPUT_Prerelease: ${{ inputs.Prerelease }} + PSMODULE_GET_SETTINGS_INPUT_WorkingDirectory: ${{ inputs.WorkingDirectory }} + PSMODULE_GET_SETTINGS_INPUT_ImportantFilePatterns: ${{ inputs.ImportantFilePatterns }} + with: + Name: Get-PSModuleSettings + ShowInfo: false + ShowOutput: true + Debug: ${{ inputs.Debug }} + Prerelease: ${{ inputs.Prerelease }} + Verbose: ${{ inputs.Verbose }} + Version: ${{ inputs.Version }} + WorkingDirectory: ${{ inputs.WorkingDirectory }} + Script: ${{ github.action_path }}/src/main.ps1 diff --git a/.github/actions/Get-PSModuleSettings/src/Settings.schema.json b/.github/actions/Get-PSModuleSettings/src/Settings.schema.json new file mode 100644 index 00000000..1e0f4bcd --- /dev/null +++ b/.github/actions/Get-PSModuleSettings/src/Settings.schema.json @@ -0,0 +1,447 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/PSModule/Get-PSModuleSettings/refs/heads/main/scripts/Settings.schema.json", + "title": "PSModule Settings", + "description": "Configuration schema for PSModule GitHub Action settings", + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "The name of the module" + }, + "ImportantFilePatterns": { + "type": "array", + "description": "Regex patterns that identify important files. Changes matching these patterns trigger build, test, and publish stages. Defaults to ['^src/', '^README\\.md$'] when not configured.", + "items": { + "type": "string", + "minLength": 1 + } + }, + "Test": { + "type": "object", + "description": "Test configuration settings", + "properties": { + "Skip": { + "type": "boolean", + "description": "Skip all tests" + }, + "Linux": { + "$ref": "#/definitions/osConfig", + "description": "Linux-specific test configuration" + }, + "MacOS": { + "$ref": "#/definitions/osConfig", + "description": "macOS-specific test configuration" + }, + "Windows": { + "$ref": "#/definitions/osConfig", + "description": "Windows-specific test configuration" + }, + "SourceCode": { + "$ref": "#/definitions/testCategory", + "description": "Source code test configuration" + }, + "PSModule": { + "$ref": "#/definitions/testCategory", + "description": "PSModule test configuration" + }, + "Module": { + "$ref": "#/definitions/testCategory", + "description": "Module test configuration" + }, + "TestResults": { + "type": "object", + "properties": { + "Skip": { + "type": "boolean", + "description": "Skip test results collection" + } + } + }, + "CodeCoverage": { + "type": "object", + "description": "Code coverage configuration", + "properties": { + "Skip": { + "type": "boolean", + "description": "Skip code coverage collection" + }, + "PercentTarget": { + "type": "number", + "minimum": 0, + "maximum": 100, + "description": "Target code coverage percentage" + }, + "StepSummaryMode": { + "type": "string", + "description": "Mode for displaying step summary" + } + } + } + } + }, + "Build": { + "type": "object", + "description": "Build configuration settings", + "properties": { + "Skip": { + "type": "boolean", + "description": "Skip all build steps" + }, + "Module": { + "type": "object", + "properties": { + "Skip": { + "type": "boolean", + "description": "Skip module build" + } + } + }, + "Docs": { + "type": "object", + "description": "Documentation build configuration", + "properties": { + "Skip": { + "type": "boolean", + "description": "Skip documentation build" + }, + "ShowSummaryOnSuccess": { + "type": "boolean", + "description": "Show summary on successful build" + } + } + }, + "Site": { + "type": "object", + "properties": { + "Skip": { + "type": "boolean", + "description": "Skip site build" + } + } + } + } + }, + "Publish": { + "type": "object", + "description": "Publish configuration settings", + "properties": { + "Module": { + "type": "object", + "description": "Module publish configuration", + "properties": { + "Skip": { + "type": "boolean", + "description": "Skip module publish" + }, + "AutoCleanup": { + "type": "boolean", + "description": "When enabled (default: true), automatically cleans up old prerelease tags when merging to main or when a PR is abandoned" + }, + "AutoPatching": { + "type": "boolean", + "description": "Automatically apply patches" + }, + "IncrementalPrerelease": { + "type": "boolean", + "description": "Use incremental prerelease versioning" + }, + "DatePrereleaseFormat": { + "type": "string", + "description": "Date format for prerelease versions" + }, + "VersionPrefix": { + "type": "string", + "description": "Prefix for version tags" + }, + "MajorLabels": { + "type": "string", + "description": "Comma-separated labels that trigger major version bump" + }, + "MinorLabels": { + "type": "string", + "description": "Comma-separated labels that trigger minor version bump" + }, + "PatchLabels": { + "type": "string", + "description": "Comma-separated labels that trigger patch version bump" + }, + "IgnoreLabels": { + "type": "string", + "description": "Comma-separated labels that prevent release" + }, + "PrereleaseLabels": { + "type": "string", + "description": "Comma-separated labels that trigger a prerelease" + }, + "UsePRTitleAsReleaseName": { + "type": "boolean", + "description": "Use pull request title as the GitHub release name" + }, + "UsePRBodyAsReleaseNotes": { + "type": "boolean", + "description": "Use pull request body as the release notes content" + }, + "UsePRTitleAsNotesHeading": { + "type": "boolean", + "description": "Add pull request title as H1 heading in release notes" + }, + "ReleaseType": { + "type": "string", + "enum": [ + "Release", + "Prerelease", + "None" + ], + "description": "The type of release to create: Release (stable), Prerelease, or None." + } + } + } + } + }, + "Linter": { + "type": "object", + "description": "Linter configuration settings", + "properties": { + "Skip": { + "type": "boolean", + "description": "Skip linting" + }, + "ShowSummaryOnSuccess": { + "type": "boolean", + "description": "Show summary on successful linting" + }, + "env": { + "type": "object", + "description": "Environment variables for linter", + "additionalProperties": { + "type": "boolean" + } + } + } + }, + "TestSuites": { + "type": "object", + "description": "Test suite configurations", + "properties": { + "SourceCode": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/testSuite" + } + } + ] + }, + "PSModule": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/testSuite" + } + } + ] + }, + "Module": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/moduleTestSuite" + } + } + ] + } + } + }, + "SettingsPath": { + "type": "string", + "description": "Path to the settings file" + }, + "Debug": { + "type": "string", + "enum": [ + "true", + "false" + ], + "description": "Enable debug mode" + }, + "Verbose": { + "type": "string", + "enum": [ + "true", + "false" + ], + "description": "Enable verbose mode" + }, + "Version": { + "type": "string", + "description": "Module version" + }, + "Prerelease": { + "type": "string", + "enum": [ + "true", + "false" + ], + "description": "Indicates if this is a prerelease" + }, + "WorkingDirectory": { + "type": "string", + "description": "Working directory path" + }, + "HasImportantChanges": { + "type": "boolean", + "description": "Indicates if important files have changed in the PR (src/**, examples/**, README.md, .github/workflows/Process-PSModule.yml)" + }, + "Run": { + "type": "object", + "description": "Runtime execution flags", + "properties": { + "LintRepository": { + "type": "boolean", + "description": "Run repository linting" + }, + "BuildModule": { + "type": "boolean", + "description": "Build the module" + }, + "TestSourceCode": { + "type": "boolean", + "description": "Test source code" + }, + "LintSourceCode": { + "type": "boolean", + "description": "Lint source code" + }, + "TestModule": { + "type": "boolean", + "description": "Test the module" + }, + "BeforeAllModuleLocal": { + "type": "boolean", + "description": "Run before all module local tests" + }, + "TestModuleLocal": { + "type": "boolean", + "description": "Test module locally" + }, + "AfterAllModuleLocal": { + "type": "boolean", + "description": "Run after all module local tests" + }, + "GetTestResults": { + "type": "boolean", + "description": "Collect test results" + }, + "GetCodeCoverage": { + "type": "boolean", + "description": "Collect code coverage" + }, + "PublishModule": { + "type": "boolean", + "description": "Publish the module" + }, + "BuildDocs": { + "type": "boolean", + "description": "Build documentation" + }, + "BuildSite": { + "type": "boolean", + "description": "Build the site" + }, + "PublishSite": { + "type": "boolean", + "description": "Publish the site" + } + } + } + }, + "definitions": { + "osConfig": { + "type": "object", + "properties": { + "Skip": { + "type": "boolean", + "description": "Skip tests for this OS" + } + } + }, + "testCategory": { + "type": "object", + "properties": { + "Skip": { + "type": "boolean", + "description": "Skip this test category" + }, + "Linux": { + "$ref": "#/definitions/osConfig", + "description": "Linux-specific configuration" + }, + "MacOS": { + "$ref": "#/definitions/osConfig", + "description": "macOS-specific configuration" + }, + "Windows": { + "$ref": "#/definitions/osConfig", + "description": "Windows-specific configuration" + } + } + }, + "testSuite": { + "type": "object", + "properties": { + "RunsOn": { + "type": "string", + "description": "GitHub Actions runner to use" + }, + "OSName": { + "type": "string", + "description": "Operating system name" + } + }, + "required": [ + "RunsOn", + "OSName" + ] + }, + "moduleTestSuite": { + "type": "object", + "properties": { + "RunsOn": { + "type": "string", + "description": "GitHub Actions runner to use" + }, + "OSName": { + "type": "string", + "description": "Operating system name" + }, + "TestPath": { + "type": "string", + "description": "Relative path to the test file" + }, + "TestName": { + "type": "string", + "description": "Name of the test" + } + }, + "required": [ + "RunsOn", + "OSName", + "TestPath", + "TestName" + ] + } + } +} diff --git a/.github/actions/Get-PSModuleSettings/src/main.ps1 b/.github/actions/Get-PSModuleSettings/src/main.ps1 new file mode 100644 index 00000000..83ad38ae --- /dev/null +++ b/.github/actions/Get-PSModuleSettings/src/main.ps1 @@ -0,0 +1,636 @@ +'powershell-yaml', 'Hashtable' | Install-PSResource -Repository PSGallery -TrustRepository + +$name = $env:PSMODULE_GET_SETTINGS_INPUT_Name +$settingsPath = $env:PSMODULE_GET_SETTINGS_INPUT_SettingsPath +$debug = $env:PSMODULE_GET_SETTINGS_INPUT_Debug +$verbose = $env:PSMODULE_GET_SETTINGS_INPUT_Verbose +$version = $env:PSMODULE_GET_SETTINGS_INPUT_Version +$prerelease = $env:PSMODULE_GET_SETTINGS_INPUT_Prerelease +$workingDirectory = $env:PSMODULE_GET_SETTINGS_INPUT_WorkingDirectory +$importantFilePatternsInput = $env:PSMODULE_GET_SETTINGS_INPUT_ImportantFilePatterns + +LogGroup 'Inputs' { + [pscustomobject]@{ + PWD = (Get-Location).Path + Name = $name + SettingsPath = $settingsPath + } | Format-List | Out-String +} + +if (![string]::IsNullOrEmpty($settingsPath) -and (Test-Path -Path $settingsPath)) { + LogGroup 'Import settings' { + $settingsFile = Get-Item -Path $settingsPath + $relativeSettingsPath = $settingsFile | Resolve-Path -Relative + Write-Host "Importing settings from [$relativeSettingsPath]" + $content = $settingsFile | Get-Content -Raw + switch -Regex ($settingsFile.Extension) { + '.json' { + $settings = $content | ConvertFrom-Json + Write-Host ($settings | ConvertTo-Json -Depth 5 | Out-String) + } + '.yaml|.yml' { + $settings = $content | ConvertFrom-Yaml + Write-Host ($settings | ConvertTo-Yaml | Out-String) + } + '.psd1' { + $settings = $content | ConvertFrom-Hashtable + Write-Host ($settings | ConvertTo-Hashtable | Format-Hashtable | Out-String) + } + default { + throw "Unsupported settings file format: [$settingsPath]. Supported formats are json, yaml/yml and psd1." + } + } + } + + LogGroup 'Validate settings against schema' { + $schemaPath = Join-Path $PSScriptRoot 'Settings.schema.json' + if (Test-Path -Path $schemaPath) { + Write-Host 'Validating settings against schema...' + $schema = Get-Content $schemaPath -Raw + + # Convert settings to JSON for validation + $settingsJson = $settings | ConvertTo-Json -Depth 10 + + try { + $isValid = Test-Json -Json $settingsJson -Schema $schema -ErrorAction Stop + if ($isValid) { + Write-Host '✓ Settings conform to schema' + } else { + throw 'Settings do not conform to the schema' + } + } catch { + Write-Error "Schema validation failed: $_" + Write-Error 'Your settings file does not match the expected schema structure.' + throw + } + } else { + Write-Warning "Schema file not found at [$schemaPath]. Skipping validation." + } + } +} else { + Write-Host 'No settings file present.' + $settings = @{} +} + +LogGroup 'Name' { + [pscustomobject]@{ + InputName = $name + SettingsName = $settings.Name + RepositoryName = $env:GITHUB_REPOSITORY_NAME + } | Format-List | Out-String + + if (![string]::IsNullOrEmpty($name)) { + Write-Host "Using name from input parameter: [$name]" + } elseif (![string]::IsNullOrEmpty($settings.Name)) { + $name = $settings.Name + Write-Host "Using name from settings file: [$name]" + } else { + $name = $env:GITHUB_REPOSITORY_NAME + Write-Host "Using repository name: [$name]" + } +} + +LogGroup 'ImportantFilePatterns' { + $defaultImportantFilePatterns = @('^src/', '^README\.md$') + if ($null -ne $settings.ImportantFilePatterns) { + $importantFilePatterns = @($settings.ImportantFilePatterns) + Write-Host "Using ImportantFilePatterns from settings file: [$($importantFilePatterns -join ', ')]" + } elseif (-not [string]::IsNullOrWhiteSpace($importantFilePatternsInput)) { + $importantFilePatterns = @($importantFilePatternsInput -split "`n" | ForEach-Object { $_.Trim() } | Where-Object { $_ }) + Write-Host "Using ImportantFilePatterns from action input: [$($importantFilePatterns -join ', ')]" + } else { + $importantFilePatterns = $defaultImportantFilePatterns + Write-Host "Using default ImportantFilePatterns: [$($importantFilePatterns -join ', ')]" + } + + # Validate that all patterns are valid regular expressions + foreach ($pattern in $importantFilePatterns) { + try { + [void][regex]::new($pattern) + } catch { + throw "Invalid regex in ImportantFilePatterns: '$pattern'. $_" + } + } +} + +$settings = [pscustomobject]@{ + Name = $name + ImportantFilePatterns = $importantFilePatterns + Test = [pscustomobject]@{ + Skip = $settings.Test.Skip ?? $false + Linux = [pscustomobject]@{ + Skip = $settings.Test.Linux.Skip ?? $false + } + MacOS = [pscustomobject]@{ + Skip = $settings.Test.MacOS.Skip ?? $false + } + Windows = [pscustomobject]@{ + Skip = $settings.Test.Windows.Skip ?? $false + } + SourceCode = [pscustomobject]@{ + Skip = $settings.Test.SourceCode.Skip ?? $false + Linux = [pscustomobject]@{ + Skip = $settings.Test.SourceCode.Linux.Skip ?? $false + } + MacOS = [pscustomobject]@{ + Skip = $settings.Test.SourceCode.MacOS.Skip ?? $false + } + Windows = [pscustomobject]@{ + Skip = $settings.Test.SourceCode.Windows.Skip ?? $false + } + } + PSModule = [pscustomobject]@{ + Skip = $settings.Test.PSModule.Skip ?? $false + Linux = [pscustomobject]@{ + Skip = $settings.Test.PSModule.Linux.Skip ?? $false + } + MacOS = [pscustomobject]@{ + Skip = $settings.Test.PSModule.MacOS.Skip ?? $false + } + Windows = [pscustomobject]@{ + Skip = $settings.Test.PSModule.Windows.Skip ?? $false + } + } + Module = [pscustomobject]@{ + Skip = $settings.Test.Module.Skip ?? $false + Linux = [pscustomobject]@{ + Skip = $settings.Test.Module.Linux.Skip ?? $false + } + MacOS = [pscustomobject]@{ + Skip = $settings.Test.Module.MacOS.Skip ?? $false + } + Windows = [pscustomobject]@{ + Skip = $settings.Test.Module.Windows.Skip ?? $false + } + } + TestResults = [pscustomobject]@{ + Skip = $settings.Test.TestResults.Skip ?? $false + } + CodeCoverage = [pscustomobject]@{ + Skip = $settings.Test.CodeCoverage.Skip ?? $false + PercentTarget = $settings.Test.CodeCoverage.PercentTarget ?? 0 + StepSummaryMode = $settings.Test.CodeCoverage.StepSummaryMode ?? 'Missed, Files' + } + } + Build = [pscustomobject]@{ + Skip = $settings.Build.Skip ?? $false + Module = [pscustomobject]@{ + Skip = $settings.Build.Module.Skip ?? $false + } + Docs = [pscustomobject]@{ + Skip = $settings.Build.Docs.Skip ?? $false + ShowSummaryOnSuccess = $settings.Build.Docs.ShowSummaryOnSuccess ?? $false + } + Site = [pscustomobject]@{ + Skip = $settings.Build.Site.Skip ?? $false + } + } + Publish = [pscustomobject]@{ + Module = [pscustomobject]@{ + Skip = $settings.Publish.Module.Skip ?? $false + AutoCleanup = $settings.Publish.Module.AutoCleanup ?? $true + AutoPatching = $settings.Publish.Module.AutoPatching ?? $true + IncrementalPrerelease = $settings.Publish.Module.IncrementalPrerelease ?? $true + DatePrereleaseFormat = $settings.Publish.Module.DatePrereleaseFormat ?? '' + VersionPrefix = $settings.Publish.Module.VersionPrefix ?? 'v' + MajorLabels = $settings.Publish.Module.MajorLabels ?? 'major, breaking' + MinorLabels = $settings.Publish.Module.MinorLabels ?? 'minor, feature' + PatchLabels = $settings.Publish.Module.PatchLabels ?? 'patch, fix' + IgnoreLabels = $settings.Publish.Module.IgnoreLabels ?? 'NoRelease' + PrereleaseLabels = $settings.Publish.Module.PrereleaseLabels ?? 'prerelease' + UsePRTitleAsReleaseName = $settings.Publish.Module.UsePRTitleAsReleaseName ?? $false + UsePRBodyAsReleaseNotes = $settings.Publish.Module.UsePRBodyAsReleaseNotes ?? $true + UsePRTitleAsNotesHeading = $settings.Publish.Module.UsePRTitleAsNotesHeading ?? $true + } + } + Linter = [pscustomobject]@{ + Skip = $settings.Linter.Skip ?? $false + ShowSummaryOnSuccess = $settings.Linter.ShowSummaryOnSuccess ?? $false + env = $settings.Linter.env ?? @{} + } +} + +# Add input properties to settings +$settings | Add-Member -MemberType NoteProperty -Name SettingsPath -Value $settingsPath +$settings | Add-Member -MemberType NoteProperty -Name Debug -Value $debug +$settings | Add-Member -MemberType NoteProperty -Name Verbose -Value $verbose +$settings | Add-Member -MemberType NoteProperty -Name Version -Value $version +$settings | Add-Member -MemberType NoteProperty -Name Prerelease -Value $prerelease +$settings | Add-Member -MemberType NoteProperty -Name WorkingDirectory -Value $workingDirectory + +# Calculate job run conditions +LogGroup 'Calculate Job Run Conditions:' { + $eventData = Get-GitHubEventData -ErrorAction Stop + + LogGroup 'GitHub Event Data' { + $eventData | ConvertTo-Json -Depth 10 | Out-String + } + + $pullRequestAction = $eventData.Action + $pullRequest = $eventData.PullRequest + $pullRequestIsMerged = $pullRequest.Merged + $targetBranch = $pullRequest.Base.Ref + $defaultBranch = $eventData.Repository.default_branch + $isTargetDefaultBranch = $targetBranch -eq $defaultBranch + + Write-Host 'GitHub event inputs:' + [pscustomobject]@{ + GITHUB_EVENT_NAME = $env:GITHUB_EVENT_NAME + GITHUB_EVENT_ACTION = $pullRequestAction + GITHUB_EVENT_PULL_REQUEST_MERGED = $pullRequestIsMerged + TargetBranch = $targetBranch + DefaultBranch = $defaultBranch + IsTargetDefaultBranch = $isTargetDefaultBranch + } | Format-List | Out-String + + $isPR = $env:GITHUB_EVENT_NAME -eq 'pull_request' + $isOpenOrUpdatedPR = $isPR -and $pullRequestAction -in @('opened', 'reopened', 'synchronize', 'labeled', 'unlabeled') + $isAbandonedPR = $isPR -and $pullRequestAction -eq 'closed' -and $pullRequestIsMerged -ne $true + $isMergedPR = $isPR -and $pullRequestAction -eq 'closed' -and $pullRequestIsMerged -eq $true + $isNotAbandonedPR = -not $isAbandonedPR + + # Check if a prerelease label exists on the PR + $prereleaseLabels = $settings.Publish.Module.PrereleaseLabels -split ',' | ForEach-Object { $_.Trim() } + $prLabels = @($pullRequest.labels.name) + $hasPrereleaseLabel = ($prLabels | Where-Object { $prereleaseLabels -contains $_ }).Count -gt 0 + $isOpenOrLabeledPR = $isPR -and $pullRequestAction -in @('opened', 'reopened', 'synchronize', 'labeled') + + # Check if important files have changed in the PR + # Important files are determined by the configured ImportantFilePatterns setting + $hasImportantChanges = $false + if ($isPR -and $pullRequest.Number) { + LogGroup 'Check for Important File Changes' { + $owner = $env:GITHUB_REPOSITORY_OWNER + $repo = $env:GITHUB_REPOSITORY_NAME + $prNumber = $pullRequest.Number + + Write-Host "Fetching changed files for PR #$prNumber..." + $changedFiles = Invoke-GitHubAPI -ApiEndpoint "/repos/$owner/$repo/pulls/$prNumber/files" -Method GET | + Select-Object -ExpandProperty Response | + Select-Object -ExpandProperty filename + + Write-Host "Changed files ($($changedFiles.Count)):" + $changedFiles | ForEach-Object { Write-Host " - $_" } + + # Use configured important file patterns + $importantPatterns = $settings.ImportantFilePatterns + + # Check if any changed file matches an important pattern + foreach ($file in $changedFiles) { + foreach ($pattern in $importantPatterns) { + if ($file -match $pattern) { + $hasImportantChanges = $true + Write-Host "Important file changed: [$file] (matches pattern: $pattern)" + break + } + } + if ($hasImportantChanges) { break } + } + + if ($hasImportantChanges) { + Write-Host '✓ Important files have changed - build/test stages will run' + } else { + Write-Host '✗ No important files changed - build/test stages will be skipped' + + # Add a comment to open PRs explaining why build/test is skipped (best-effort, may fail if permissions not granted) + if ($isOpenOrUpdatedPR) { + $patternRows = ($importantPatterns | ForEach-Object { + $escapedPattern = $_.Replace('|', '\|') + $backtickMatches = [regex]::Matches($escapedPattern, '`+') + $maxRun = 0 + foreach ($m in $backtickMatches) { + if ($m.Value.Length -gt $maxRun) { $maxRun = $m.Value.Length } + } + $codeDelimiter = '`' * ($maxRun + 1) + "| ${codeDelimiter}${escapedPattern}${codeDelimiter} | Matches files where path matches this pattern |" + }) -join "`n" + $commentBody = @" +### No Significant Changes Detected + +This PR does not contain changes to files that would trigger a new release: + +| Pattern | Description | +| :--- | :---------- | +$patternRows + +**Build, test, and publish stages will be skipped** for this PR. + +If you believe this is incorrect, please verify that your changes are in the correct locations. +"@ + try { + Write-Host 'Adding comment to PR about skipped stages...' + $apiParams = @{ + Method = 'POST' + ApiEndpoint = "/repos/$owner/$repo/issues/$prNumber/comments" + Body = @{ body = $commentBody } | ConvertTo-Json + } + $null = Invoke-GitHubAPI @apiParams + Write-Host '✓ Comment added successfully' + } catch { + Write-Warning "Could not add PR comment (may need 'issues: write' permission): $_" + } + } + } + } + } else { + # Not a PR event or no PR number - consider as having important changes (e.g., workflow_dispatch, schedule) + $hasImportantChanges = $true + Write-Host 'Not a PR event or missing PR number - treating as having important changes' + } + + # Prerelease requires both: prerelease label AND important file changes + # No point creating a prerelease if only non-module files changed + $shouldPrerelease = $isOpenOrLabeledPR -and $hasPrereleaseLabel -and $hasImportantChanges + + # Determine ReleaseType - what type of release to create + # Values: 'Release', 'Prerelease', 'None' + # Release only happens when important files changed (actual module code/docs) + # Merged PRs without important changes should only trigger cleanup, not a new release + $releaseType = if ($isMergedPR -and $isTargetDefaultBranch -and $hasImportantChanges) { + 'Release' + } elseif ($shouldPrerelease) { + 'Prerelease' + } else { + 'None' + } + + [pscustomobject]@{ + isPR = $isPR + isOpenOrUpdatedPR = $isOpenOrUpdatedPR + isOpenOrLabeledPR = $isOpenOrLabeledPR + isAbandonedPR = $isAbandonedPR + isMergedPR = $isMergedPR + isNotAbandonedPR = $isNotAbandonedPR + isTargetDefaultBranch = $isTargetDefaultBranch + hasPrereleaseLabel = $hasPrereleaseLabel + shouldPrerelease = $shouldPrerelease + ReleaseType = $releaseType + HasImportantChanges = $hasImportantChanges + } | Format-List | Out-String +} + +# Get-TestSuites +if ($settings.Test.Skip) { + Write-Host 'Skipping all tests.' + $sourceCodeTestSuites = $null + $psModuleTestSuites = $null + $moduleTestSuites = $null + + # Add TestSuites to settings + $settings | Add-Member -MemberType NoteProperty -Name TestSuites -Value ([pscustomobject]@{ + SourceCode = $null + PSModule = $null + Module = $null + }) +} else { + + # Define test configurations as an array of hashtables. + $linux = [PSCustomObject]@{ RunsOn = 'ubuntu-latest'; OSName = 'Linux' } + $macOS = [PSCustomObject]@{ RunsOn = 'macos-latest'; OSName = 'macOS' } + $windows = [PSCustomObject]@{ RunsOn = 'windows-latest'; OSName = 'Windows' } + + LogGroup 'Source Code Test Suites:' { + $sourceCodeTestSuites = if ($settings.Test.SourceCode.Skip) { + Write-Host 'Skipping all source code tests.' + $null + } else { + $result = @() + if (-not $settings.Test.Linux.Skip -and -not $settings.Test.SourceCode.Linux.Skip) { $result += $linux } + if (-not $settings.Test.MacOS.Skip -and -not $settings.Test.SourceCode.MacOS.Skip) { $result += $macOS } + if (-not $settings.Test.Windows.Skip -and -not $settings.Test.SourceCode.Windows.Skip) { $result += $windows } + if ($result.Count -gt 0) { $result } else { $null } + } + $sourceCodeTestSuites | Format-Table -AutoSize | Out-String + } + + LogGroup 'PSModule Test Suites:' { + $psModuleTestSuites = if ($settings.Test.PSModule.Skip) { + Write-Host 'Skipping all PSModule tests.' + $null + } else { + $result = @() + if (-not $settings.Test.Linux.Skip -and -not $settings.Test.PSModule.Linux.Skip) { $result += $linux } + if (-not $settings.Test.MacOS.Skip -and -not $settings.Test.PSModule.MacOS.Skip) { $result += $macOS } + if (-not $settings.Test.Windows.Skip -and -not $settings.Test.PSModule.Windows.Skip) { $result += $windows } + if ($result.Count -gt 0) { $result } else { $null } + } + $psModuleTestSuites | Format-Table -AutoSize | Out-String + } + + LogGroup 'Module Local Test Suites:' { + $moduleTestSuites = if ($settings.Test.Module.Skip) { + Write-Host 'Skipping all module tests.' + $null + } else { + # Locate the tests directory. + $testsPath = Resolve-Path 'tests' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Path + if (-not $testsPath) { + Write-Warning 'No tests found' + return $null + } + Write-Host "Tests found at [$testsPath]" + + function Get-TestItemsFromFolder { + <# + .SYNOPSIS + Retrieves test items from a specified folder. + + .DESCRIPTION + This function searches for test-related files in the specified folder. + It looks for configuration files (*.Configuration.ps1), container files (*.Container.ps1), + and test files (*.Tests.ps1) in that order of precedence. + + .PARAMETER FolderPath + The path to the folder to search for test items. + + .OUTPUTS + System.IO.FileInfo[] + Returns an array of test-related files found in the folder. + #> + param ([string]$FolderPath) + + $configFiles = Get-ChildItem -Path $FolderPath -File -Filter '*.Configuration.ps1' + if ($configFiles.Count -eq 1) { + return @($configFiles) + } elseif ($configFiles.Count -gt 1) { + throw "Multiple configuration files found in [$FolderPath]. Please separate configurations into different folders." + } + + $containerFiles = Get-ChildItem -Path $FolderPath -File -Filter '*.Container.ps1' + if ($containerFiles.Count -ge 1) { + return $containerFiles + } + + $testFiles = Get-ChildItem -Path $FolderPath -File -Filter '*.Tests.ps1' + return $testFiles + } + + function Find-TestDirectory { + <# + .SYNOPSIS + Finds test directories recursively. + + .DESCRIPTION + This function recursively searches for all directories starting from the specified path. + It returns a flat array of all directory paths found. + + .PARAMETER Path + The root path to start searching for directories. + + .OUTPUTS + System.String[] + Returns an array of directory paths. + #> + param ([string]$Path) + + $directories = @() + $childDirs = Get-ChildItem -Path $Path -Directory + + foreach ($dir in $childDirs) { + $directories += $dir.FullName + $directories += Find-TestDirectory -Path $dir.FullName + } + + return $directories + } + + $allTestFolders = @($testsPath) + (Find-TestDirectory -Path $testsPath) + + foreach ($folder in $allTestFolders) { + $testItems = Get-TestItemsFromFolder -FolderPath $folder + foreach ($item in $testItems) { + if (-not $settings.Test.Linux.Skip -and -not $settings.Test.Module.Linux.Skip) { + [pscustomobject]@{ + RunsOn = $linux.RunsOn + OSName = $linux.OSName + TestPath = Resolve-Path -Path $item.FullName -Relative + TestName = ($item.BaseName).Split('.')[0] + } + } + if (-not $settings.Test.MacOS.Skip -and -not $settings.Test.Module.MacOS.Skip) { + [pscustomobject]@{ + RunsOn = $macOS.RunsOn + OSName = $macOS.OSName + TestPath = Resolve-Path -Path $item.FullName -Relative + TestName = ($item.BaseName).Split('.')[0] + } + } + if (-not $settings.Test.Windows.Skip -and -not $settings.Test.Module.Windows.Skip) { + [pscustomobject]@{ + RunsOn = $windows.RunsOn + OSName = $windows.OSName + TestPath = Resolve-Path -Path $item.FullName -Relative + TestName = ($item.BaseName).Split('.')[0] + } + } + } + } + } + $moduleTestSuites | Format-Table -AutoSize | Out-String + } + + # Add TestSuites to settings + $settings | Add-Member -MemberType NoteProperty -Name TestSuites -Value ([pscustomobject]@{ + SourceCode = $sourceCodeTestSuites + PSModule = $psModuleTestSuites + Module = $moduleTestSuites + }) +} + +# Calculate job-specific conditions and add to settings +LogGroup 'Calculate Job Run Conditions:' { + # Calculate if prereleases should be cleaned up: + # True if (Release, merged PR to default branch, or Abandoned PR) AND user has AutoCleanup enabled (defaults to true) + # Even if no important files changed, we still want to cleanup prereleases when merging to default branch + $isReleaseOrMergedOrAbandoned = ( + ($releaseType -eq 'Release') -or + ($isMergedPR -and $isTargetDefaultBranch) -or + $isAbandonedPR + ) + $shouldAutoCleanup = $isReleaseOrMergedOrAbandoned -and ($settings.Publish.Module.AutoCleanup -eq $true) + + # Update Publish.Module with computed release values + $settings.Publish.Module | Add-Member -MemberType NoteProperty -Name ReleaseType -Value $releaseType -Force + $settings.Publish.Module.AutoCleanup = $shouldAutoCleanup + + # For open PRs, we only want to run build/test stages if important files changed. + # For merged PRs, workflow_dispatch, schedule - $hasImportantChanges is already true. + # Note: $shouldPrerelease already requires $hasImportantChanges, so no separate check needed. + $shouldRunBuildTest = $isNotAbandonedPR -and $hasImportantChanges + + # Check if setup/teardown scripts exist in the repository + $hasBeforeAllScript = Test-Path -Path 'tests/BeforeAll.ps1' + $hasAfterAllScript = Test-Path -Path 'tests/AfterAll.ps1' + Write-Host "Setup/teardown script detection:" + Write-Host " tests/BeforeAll.ps1 exists: $hasBeforeAllScript" + Write-Host " tests/AfterAll.ps1 exists: $hasAfterAllScript" + + # Create Run object with all job-specific conditions + $run = [pscustomobject]@{ + LintRepository = $isOpenOrUpdatedPR -and (-not $settings.Linter.Skip) + BuildModule = $shouldRunBuildTest -and (-not $settings.Build.Module.Skip) + TestSourceCode = $shouldRunBuildTest -and ($null -ne $settings.TestSuites.SourceCode) + LintSourceCode = $shouldRunBuildTest -and ($null -ne $settings.TestSuites.SourceCode) + TestModule = $shouldRunBuildTest -and ($null -ne $settings.TestSuites.PSModule) + BeforeAllModuleLocal = $shouldRunBuildTest -and ($null -ne $settings.TestSuites.Module) -and $hasBeforeAllScript + TestModuleLocal = $shouldRunBuildTest -and ($null -ne $settings.TestSuites.Module) + AfterAllModuleLocal = $shouldRunBuildTest -and ($null -ne $settings.TestSuites.Module) -and $hasAfterAllScript + GetTestResults = $shouldRunBuildTest -and (-not $settings.Test.TestResults.Skip) -and ( + ($null -ne $settings.TestSuites.SourceCode) -or ($null -ne $settings.TestSuites.PSModule) -or ($null -ne $settings.TestSuites.Module) + ) + GetCodeCoverage = $shouldRunBuildTest -and (-not $settings.Test.CodeCoverage.Skip) -and ( + ($null -ne $settings.TestSuites.PSModule) -or ($null -ne $settings.TestSuites.Module) + ) + PublishModule = ($releaseType -ne 'None') -or $shouldAutoCleanup + BuildDocs = $shouldRunBuildTest -and (-not $settings.Build.Docs.Skip) + BuildSite = $shouldRunBuildTest -and (-not $settings.Build.Site.Skip) + PublishSite = $isMergedPR -and $isTargetDefaultBranch -and $hasImportantChanges + } + $settings | Add-Member -MemberType NoteProperty -Name Run -Value $run + $settings | Add-Member -MemberType NoteProperty -Name HasImportantChanges -Value $hasImportantChanges + + Write-Host 'Job Run Conditions:' + $run | Format-List | Out-String +} + +LogGroup 'Final settings' { + switch -Regex ($settingsFile.Extension) { + '.yaml|.yml' { + Write-Host ($settings | ConvertTo-Yaml | Out-String) + } + '.psd1' { + Write-Host ($settings | ConvertTo-Hashtable | Format-Hashtable | Out-String) + } + default { + Write-Host ($settings | ConvertTo-Json -Depth 5 | Out-String) + } + } + Set-GitHubOutput -Name Settings -Value ($settings | ConvertTo-Json -Depth 10) +} + +LogGroup 'Validate output settings against schema' { + $schemaPath = Join-Path $PSScriptRoot 'Settings.schema.json' + if (Test-Path -Path $schemaPath) { + Write-Host 'Validating output settings against schema...' + $schema = Get-Content $schemaPath -Raw + + # Convert output settings to JSON for validation + $outputJson = $settings | ConvertTo-Json -Depth 10 + + try { + $isValid = Test-Json -Json $outputJson -Schema $schema -ErrorAction Stop + if ($isValid) { + Write-Host '✓ Output settings conform to schema' + } else { + throw 'Output settings do not conform to the schema' + } + } catch { + Write-Error "Output schema validation failed: $_" + Write-Error 'The generated settings object does not match the expected schema structure.' + Write-Error 'This indicates a bug in the action. Please report this issue.' + throw + } + } else { + Write-Warning "Schema file not found at [$schemaPath]. Skipping output validation." + } +} diff --git a/.github/actions/Get-PSModuleSettings/tests/Environment.Tests.ps1 b/.github/actions/Get-PSModuleSettings/tests/Environment.Tests.ps1 new file mode 100644 index 00000000..b7876784 --- /dev/null +++ b/.github/actions/Get-PSModuleSettings/tests/Environment.Tests.ps1 @@ -0,0 +1,15 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '6.0.0'; MaximumVersion = '6.*' } + +BeforeAll { + # Minimal test file for validation purposes +} + +Describe 'Environment' { + It 'Should have PowerShell available' { + $PSVersionTable.PSVersion | Should -Not -BeNullOrEmpty + } + + It 'Should have expected OS platform' { + $PSVersionTable.Platform | Should -BeIn @('Win32NT', 'Unix') + } +} diff --git a/.github/actions/Get-PSModuleSettings/tests/PSModuleTest.Tests.ps1 b/.github/actions/Get-PSModuleSettings/tests/PSModuleTest.Tests.ps1 new file mode 100644 index 00000000..63f2897e --- /dev/null +++ b/.github/actions/Get-PSModuleSettings/tests/PSModuleTest.Tests.ps1 @@ -0,0 +1,15 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '6.0.0'; MaximumVersion = '6.*' } + +BeforeAll { + # Minimal test file for validation purposes +} + +Describe 'PSModuleTest' { + It 'Should pass basic test' { + $true | Should -Be $true + } + + It 'Should have test context available' { + $PSScriptRoot | Should -Not -BeNullOrEmpty + } +} diff --git a/.github/actions/Get-PSModuleSettings/tests/scenarios/invalid-percent-target/PSModule.yml b/.github/actions/Get-PSModuleSettings/tests/scenarios/invalid-percent-target/PSModule.yml new file mode 100644 index 00000000..e60825a5 --- /dev/null +++ b/.github/actions/Get-PSModuleSettings/tests/scenarios/invalid-percent-target/PSModule.yml @@ -0,0 +1,23 @@ +Name: PSModuleTest +Test: + SourceCode: + Skip: true + PSModule: + Linux: + Skip: true + Module: + Skip: false + CodeCoverage: + PercentTarget: 101 +Publish: + Module: + AutoCleanup: false +Linter: + env: + VALIDATE_BIOME_FORMAT: false + VALIDATE_BIOME_LINT: false + VALIDATE_GITHUB_ACTIONS_ZIZMOR: false + VALIDATE_JSCPD: false + VALIDATE_JSON_PRETTIER: false + VALIDATE_MARKDOWN_PRETTIER: false + VALIDATE_YAML_PRETTIER: false diff --git a/.github/actions/Get-PSModuleSettings/tests/scenarios/valid/PSModule.yml b/.github/actions/Get-PSModuleSettings/tests/scenarios/valid/PSModule.yml new file mode 100644 index 00000000..4ecb9116 --- /dev/null +++ b/.github/actions/Get-PSModuleSettings/tests/scenarios/valid/PSModule.yml @@ -0,0 +1,23 @@ +Name: PSModuleTest +Test: + SourceCode: + Skip: true + PSModule: + Linux: + Skip: true + Module: + Skip: false + CodeCoverage: + PercentTarget: 1 +Publish: + Module: + AutoCleanup: false +Linter: + env: + VALIDATE_BIOME_FORMAT: false + VALIDATE_BIOME_LINT: false + VALIDATE_GITHUB_ACTIONS_ZIZMOR: false + VALIDATE_JSCPD: false + VALIDATE_JSON_PRETTIER: false + VALIDATE_MARKDOWN_PRETTIER: false + VALIDATE_YAML_PRETTIER: false diff --git a/.github/actions/Get-PesterCodeCoverage/action.yml b/.github/actions/Get-PesterCodeCoverage/action.yml new file mode 100644 index 00000000..ee1fc33b --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/action.yml @@ -0,0 +1,54 @@ +name: Get-PesterCodeCoverage +description: A GitHub Action that is used to gather Code Coverage for the PSModule process. +author: PSModule +branding: + icon: upload-cloud + color: white + +inputs: + Debug: + description: Enable debug output. + required: false + default: 'false' + Verbose: + description: Enable verbose output. + required: false + default: 'false' + Version: + description: Specifies the version of the GitHub module to be installed. Accepts an exact version or a NuGet version range (for example '[1.2.0, 2.0.0)'). + required: false + Prerelease: + description: Allow prerelease versions if available. + required: false + default: 'false' + WorkingDirectory: + description: The working directory where the script will run from. + required: false + default: '.' + StepSummary_Mode: + description: | + Controls which sections to show in the GitHub step summary. + Use 'Full' for all sections, 'None' to disable, or a comma-separated list of 'Missed, Executed, Files'. + required: false + default: Missed, Files + CodeCoveragePercentTarget: + description: The target for code coverage. + required: false + +runs: + using: composite + steps: + - name: Get-PesterCodeCoverage + uses: PSModule/GitHub-Script@8083ec1f733f00357ee4d0db0c6056686e483bc0 # v1.9.0 + env: + PSMODULE_GET_PESTERCODECOVERAGE_INPUT_StepSummary_Mode: ${{ inputs.StepSummary_Mode }} + PSMODULE_GET_PESTERCODECOVERAGE_INPUT_CodeCoveragePercentTarget: ${{ inputs.CodeCoveragePercentTarget }} + with: + Name: Get-PesterCodeCoverage + Debug: ${{ inputs.Debug }} + Prerelease: ${{ inputs.Prerelease }} + Verbose: ${{ inputs.Verbose }} + Version: ${{ inputs.Version }} + WorkingDirectory: ${{ inputs.WorkingDirectory }} + ShowInfo: false + Script: ${{ github.action_path }}/src/main.ps1 diff --git a/.github/actions/Get-PesterCodeCoverage/src/Get-PesterCodeCoverage.Helpers.psm1 b/.github/actions/Get-PesterCodeCoverage/src/Get-PesterCodeCoverage.Helpers.psm1 new file mode 100644 index 00000000..045f4b2c --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/src/Get-PesterCodeCoverage.Helpers.psm1 @@ -0,0 +1,68 @@ +function Normalize-IndentationExceptFirst { + <# + .SYNOPSIS + Normalizes the indentation of a multi-line string, except for the first line. + + .DESCRIPTION + This function takes a multi-line string and normalizes the indentation of all lines except the first one. + It removes the minimum leading whitespace from all subsequent lines. + + .PARAMETER Code + The multi-line string to normalize. + + .OUTPUTS + Returns the normalized multi-line string. + s#> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseApprovedVerbs', '', Scope = 'Function', Justification = 'Function isn''t exported.')] + [OutputType([string])] + [CmdletBinding()] + param( + [Parameter(Mandatory)] + [string]$Code + ) + + # Split the code into lines + $lines = $Code -split "`r?`n" + + # If there's 0 or 1 line, there's nothing special to do + if ($lines.Count -le 1) { + return $Code + } + + # The first line stays as-is; we skip it for indentation measurement + $firstLine = $lines[0] + $subsequentLines = $lines[1..($lines.Count - 1)] + + # Find the minimum leading indentation among the *subsequent* lines + $minIndent = ($subsequentLines | Where-Object { $_ -match '\S' } | ForEach-Object { + # If the line starts with whitespace, capture how many characters + if ($_ -match '^(\s+)') { + $matches[1].Length + } else { + 0 + } + } | Measure-Object -Minimum).Minimum + + # Remove that leading indentation from each subsequent line + for ($i = 0; $i -lt $subsequentLines.Count; $i++) { + $line = $subsequentLines[$i] + + # Only attempt to remove indentation if we actually have some whitespace + if ($line -match '^(\s+)(.*)$') { + # $matches[1] = leading whitespace; $matches[2] = the rest + $leading = $matches[1] + $rest = $matches[2] + + # If we have enough whitespace to remove $minIndent worth, do it + if ($leading.Length -ge $minIndent) { + $leading = $leading.Substring($minIndent) + } + # Recombine + $subsequentLines[$i] = $leading + $rest + } + } + + $newLine = [Environment]::NewLine + # Reconstruct the final code: first line + adjusted subsequent lines + return ($firstLine + $newLine + ($subsequentLines -join $newLine)) +} diff --git a/.github/actions/Get-PesterCodeCoverage/src/main.ps1 b/.github/actions/Get-PesterCodeCoverage/src/main.ps1 new file mode 100644 index 00000000..dc3fc9d6 --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/src/main.ps1 @@ -0,0 +1,317 @@ +#Requires -Modules GitHub + +[CmdletBinding()] +param() + +LogGroup 'Init - Setup prerequisites' { + 'Markdown' | ForEach-Object { + $name = $_ + Write-Output "Installing module: $name" + $retryCount = 5 + $retryDelay = 10 + for ($i = 0; $i -lt $retryCount; $i++) { + try { + Install-PSResource -Name $name -WarningAction SilentlyContinue -TrustRepository -Repository PSGallery + break + } catch { + Write-Warning "Installation of $name failed with error: $_" + if ($i -eq $retryCount - 1) { + throw + } + Write-Warning "Retrying in $retryDelay seconds..." + Start-Sleep -Seconds $retryDelay + } + } + Import-Module -Name $name + } + Import-Module "$PSScriptRoot/Get-PesterCodeCoverage.Helpers.psm1" +} + +$owner = $env:GITHUB_REPOSITORY_OWNER +$repo = $env:GITHUB_REPOSITORY_NAME +$runId = $env:GITHUB_RUN_ID + +$files = Get-GitHubArtifact -Owner $owner -Repository $repo -WorkflowRunID $runId -Name '*-CodeCoverage' | + Save-GitHubArtifact -Path 'CodeCoverage' -Force -Expand -PassThru | Get-ChildItem -Recurse -Filter *.json | Sort-Object Name -Unique + +LogGroup 'List files' { + $files.Name | Out-String +} + +# Accumulators for coverage items across all files +$allMissed = @() +$allExecuted = @() +$allFiles = @() +$allTargets = @() + +foreach ($file in $files) { + $groupName = $file.BaseName.Replace('-CodeCoverage-Report', '') + LogGroup " - $groupName" { + Write-Verbose "Processing file: $($file.FullName)" + + # Convert each JSON file into an object + $jsonContent = Get-Content -Path $file.FullName -Raw | ConvertFrom-Json + + [pscustomobject]@{ + Coverage = "$([Math]::Round($jsonContent.CoveragePercent, 2))%" + Target = "$([Math]::Round($jsonContent.CoveragePercentTarget, 2))%" + Analyzed = "$($jsonContent.CommandsAnalyzedCount) commands" + Executed = "$($jsonContent.CommandsExecutedCount) commands" + Missed = "$($jsonContent.CommandsMissedCount) commands" + Files = "$($jsonContent.FilesAnalyzedCount) files" + } | Format-Table -AutoSize | Out-String + + # --- Normalize file paths in CommandsMissed, CommandsExecuted, and FilesAnalyzed --- + # 1. Normalize every "File" property in CommandsMissed + foreach ($missed in $jsonContent.CommandsMissed) { + if ($missed.File) { + $missed.File = ($missed.File -Split '999.0.0')[-1].Replace('\', '/').TrimStart('/').TrimEnd('/') + } + } + + # 2. Normalize every "File" property in CommandsExecuted + foreach ($exec in $jsonContent.CommandsExecuted) { + if ($exec.File) { + $exec.File = ($exec.File -Split '999.0.0')[-1].Replace('\', '/').TrimStart('/').TrimEnd('/') + } + } + + # 3. Normalize the file paths in FilesAnalyzed + $normalizedFiles = @() + $jsonContent.FilesAnalyzed = $jsonContent.FilesAnalyzed | Sort-Object -Unique + foreach ($fa in $jsonContent.FilesAnalyzed) { + $normalizedFiles += ($fa -Split '999.0.0')[-1].Replace('\', '/').TrimStart('/').TrimEnd('/') + } + $jsonContent.FilesAnalyzed = $normalizedFiles + + # Now accumulate coverage items + $allMissed += $jsonContent.CommandsMissed + $allExecuted += $jsonContent.CommandsExecuted + $allFiles += $jsonContent.FilesAnalyzed + $allTargets += $jsonContent.CoveragePercentTarget + } +} + +# -- Remove duplicates from each set -- +$finalExecuted = $allExecuted | + Sort-Object -Property File, Line, Command, StartColumn, EndColumn, Class, Function -Unique + +$finalFiles = $allFiles | Sort-Object -Unique + +# -- Remove from missed any command that shows up in executed -- +$executedKeys = $finalExecuted | ForEach-Object { + '{0}|{1}|{2}|{3}|{4}|{5}|{6}' -f $_.File, $_.Line, $_.Command, $_.StartColumn, $_.EndColumn, $_.Class, $_.Function +} +$finalMissed = $allMissed | + Sort-Object -Property File, Line, Command, StartColumn, EndColumn, Class, Function -Unique | + Where-Object { + $key = '{0}|{1}|{2}|{3}|{4}|{5}|{6}' -f $_.File, $_.Line, $_.Command, $_.StartColumn, $_.EndColumn, $_.Class, $_.Function + $executedKeys -notcontains $key + } + +# -- Compute the new coverage percentages -- +$missedCount = $finalMissed.Count +$executedCount = $finalExecuted.Count +$totalAnalyzed = $missedCount + $executedCount + +if ($totalAnalyzed -gt 0) { + $coveragePercent = [Math]::Round(($executedCount / $totalAnalyzed) * 100, 2) +} else { + $coveragePercent = 0 +} + +$CodeCoveragePercentTarget = $env:PSMODULE_GET_PESTERCODECOVERAGE_INPUT_CodeCoveragePercentTarget +if ($CodeCoveragePercentTarget) { + $coveragePercentTarget = $CodeCoveragePercentTarget +} else { + $coveragePercentTarget = $allTargets | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum + if (-not $coveragePercentTarget) { + $coveragePercentTarget = 0 + } +} + +# -- Build final coverage object -- +$codeCoverage = [PSCustomObject]@{ + CommandsMissed = $finalMissed + CommandsExecuted = $finalExecuted + FilesAnalyzed = $finalFiles + CoveragePercent = $coveragePercent + CoveragePercentTarget = $coveragePercentTarget + CoverageReport = '' + CommandsAnalyzedCount = [Int64]$totalAnalyzed + CommandsExecutedCount = [Int64]$executedCount + CommandsMissedCount = [Int64]$missedCount + FilesAnalyzedCount = [Int64]$finalFiles.Count +} + +# Print stats: +$stats = [pscustomobject]@{ + Coverage = "$([Math]::Round($codeCoverage.CoveragePercent, 2))%" + Target = "$([Math]::Round($codeCoverage.CoveragePercentTarget, 2))%" + Analyzed = "$($codeCoverage.CommandsAnalyzedCount) commands" + Executed = "$($codeCoverage.CommandsExecutedCount) commands" + Missed = "$($codeCoverage.CommandsMissedCount) commands" + Files = "$($codeCoverage.FilesAnalyzedCount) files" +} + +$success = $coveragePercent -ge $coveragePercentTarget +$statusIcon = $success ? '✅' : '❌' +$stats | Format-Table -AutoSize | Out-String + +# Build HTML table for 'missed' commands +$tableheader = @' + + + + + + + + + + + + + +'@ + +$tablefooter = @' + +
FileLineStartColumnEndColumnClassFunctionCommand
+ +'@ + +LogGroup 'Step Summary - Set table for missed commands' { + $missedForDisplay = $tableheader + + foreach ($item in $codeCoverage.CommandsMissed | Sort-Object -Property File, Line) { + $command = Normalize-IndentationExceptFirst -Code $item.Command + $missedForDisplay += @" + +$($item.File) +$($item.Line) +$($item.StartColumn) +$($item.EndColumn) +$($item.Class) +$($item.Function) + + +``````pwsh +$command +`````` + + + + +"@ + } + + $missedForDisplay += $tablefooter +} + +LogGroup 'Step Summary - Set table for executed commands' { + $executedForDisplay = $tableheader + + foreach ($item in $codeCoverage.CommandsExecuted | Sort-Object -Property File, Line) { + $command = Normalize-IndentationExceptFirst -Code $item.Command + $executedForDisplay += @" + +$($item.File) +$($item.Line) +$($item.StartColumn) +$($item.EndColumn) +$($item.Class) +$($item.Function) + + +``````pwsh +$command +`````` + + + + +"@ + } + + $executedForDisplay += $tablefooter +} + +LogGroup 'Step Summary - Set step summary' { + # Get the step summary mode from the environment variable + $stepSummaryMode = $env:PSMODULE_GET_PESTERCODECOVERAGE_INPUT_StepSummary_Mode + if ([string]::IsNullOrEmpty($stepSummaryMode)) { + $stepSummaryMode = 'Full' + } + + Write-Verbose "Step Summary Mode: $stepSummaryMode" + + # If mode is 'None', skip step summary generation completely + if ($stepSummaryMode -eq 'None') { + Write-Verbose 'Step summary is disabled' + return + } + + # Define which sections to include + $includeMissed = $false + $includeExecuted = $false + $includeFiles = $false + + if ($stepSummaryMode -eq 'Full') { + # Include all sections + $includeMissed = $true + $includeExecuted = $true + $includeFiles = $true + } else { + # Parse comma-separated list + $sections = $stepSummaryMode -split ',' | ForEach-Object { $_.Trim() } + + $includeMissed = $sections -contains 'Missed' + $includeExecuted = $sections -contains 'Executed' + $includeFiles = $sections -contains 'Files' + } + + # -- Output the markdown to GitHub step summary -- + $markdown = Heading 1 "$statusIcon Code Coverage Report" { + + Heading 2 'Summary' { + Table { + $stats + } + + if ($includeMissed) { + Details "Missed commands [$($codeCoverage.CommandsMissedCount)]" { + $missedForDisplay + } + } + + if ($includeExecuted) { + Details "Executed commands [$($codeCoverage.CommandsExecutedCount)]" { + $executedForDisplay + } + } + + if ($includeFiles) { + Details "Files analyzed [$($codeCoverage.FilesAnalyzedCount)]" { + Paragraph { + $codeCoverage.FilesAnalyzed | ForEach-Object { + Write-Output "- $_" + } + } + } + } + } + } + + Set-GitHubStepSummary -Summary $markdown +} + + +# Throw an error if coverage is below target +if ($coveragePercent -lt $coveragePercentTarget) { + Write-GitHubError "Coverage is below target! Found $coveragePercent%, target is $coveragePercentTarget%." + exit 1 +} + +Write-GitHubNotice "Coverage is above target! Found $coveragePercent%, target is $coveragePercentTarget%." +exit 0 diff --git a/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-Windows-CodeCoverage/Environments-Windows-CodeCoverage-Report.json b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-Windows-CodeCoverage/Environments-Windows-CodeCoverage-Report.json new file mode 100644 index 00000000..3ebe7e70 --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-Windows-CodeCoverage/Environments-Windows-CodeCoverage-Report.json @@ -0,0 +1 @@ +{"CommandsMissed":[{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\modules\\OtherPSModule.psm1","Line":18,"StartLine":18,"EndLine":18,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-OtherPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":5,"StartLine":5,"EndLine":5,"StartColumn":13,"EndColumn":74,"Class":"","Function":"","Command":"$baseName = [System.IO.Path]::GetFileNameWithoutExtension($PSCommandPath)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":6,"StartLine":6,"EndLine":6,"StartColumn":24,"EndColumn":80,"Class":"","Function":"","Command":"$script:PSModuleInfo = Test-ModuleManifest -Path \"$PSScriptRoot\\$baseName.psd1\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":1,"EndColumn":21,"Class":"","Function":"","Command":"$script:PSModuleInfo","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":24,"EndColumn":35,"Class":"","Function":"","Command":"Format-List","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":38,"EndColumn":56,"Class":"","Function":"","Command":"Out-String -Stream","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":59,"EndColumn":92,"Class":"","Function":"","Command":"ForEach-Object { Write-Debug $_ }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":76,"EndColumn":90,"Class":"","Function":"","Command":"Write-Debug $_","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":8,"StartLine":8,"EndLine":8,"StartColumn":15,"EndColumn":40,"Class":"","Function":"","Command":"$scriptName = $script:PSModuleInfo.Name","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":9,"StartLine":9,"EndLine":9,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - Importing module\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":11,"StartLine":11,"EndLine":11,"StartColumn":1,"EndColumn":57,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":12,"StartLine":12,"EndLine":12,"StartColumn":15,"EndColumn":47,"Class":"","Function":"","Command":"$dataFolder = (Join-Path $PSScriptRoot 'data')","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":12,"StartLine":12,"EndLine":12,"StartColumn":16,"EndColumn":46,"Class":"","Function":"","Command":"Join-Path $PSScriptRoot 'data'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":13,"StartLine":13,"EndLine":13,"StartColumn":1,"EndColumn":53,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$dataFolder]\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":14,"StartLine":14,"EndLine":14,"StartColumn":1,"EndColumn":98,"Class":"","Function":"","Command":"Get-ChildItem -Path \"$dataFolder\" -Recurse -Force -Include '*.psd1' -ErrorAction SilentlyContinue","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":14,"StartLine":14,"EndLine":18,"StartColumn":101,"EndColumn":2,"Class":"","Function":"","Command":"ForEach-Object {\n Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Importing\"\n New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force\n Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Done\"\n}","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":15,"StartLine":15,"EndLine":15,"StartColumn":5,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":15,"StartLine":15,"EndLine":15,"StartColumn":46,"EndColumn":57,"Class":"","Function":"","Command":"$_.BaseName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":16,"StartLine":16,"EndLine":16,"StartColumn":5,"EndColumn":95,"Class":"","Function":"","Command":"New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":16,"StartLine":16,"EndLine":16,"StartColumn":44,"EndColumn":87,"Class":"","Function":"","Command":"Import-PowerShellDataFile -Path $_.FullName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":17,"StartLine":17,"EndLine":17,"StartColumn":5,"EndColumn":67,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":17,"StartLine":17,"EndLine":17,"StartColumn":46,"EndColumn":57,"Class":"","Function":"","Command":"$_.BaseName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":19,"StartLine":19,"EndLine":19,"StartColumn":1,"EndColumn":44,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":22,"StartLine":22,"EndLine":22,"StartColumn":1,"EndColumn":57,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":24,"StartLine":24,"EndLine":24,"StartColumn":1,"EndColumn":65,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - [initializer] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":25,"StartLine":25,"EndLine":25,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '-------------------------------'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":26,"StartLine":26,"EndLine":26,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS AN INITIALIZER ---'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":27,"StartLine":27,"EndLine":27,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '-------------------------------'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":28,"StartLine":28,"EndLine":28,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - [initializer] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":30,"StartLine":30,"EndLine":30,"StartColumn":1,"EndColumn":44,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":33,"StartLine":33,"EndLine":33,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":35,"StartLine":35,"EndLine":35,"StartColumn":1,"EndColumn":81,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - [SecretWriter] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":42,"StartLine":42,"EndLine":42,"StartColumn":23,"EndColumn":29,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Alias = $alias","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":43,"StartLine":43,"EndLine":43,"StartColumn":22,"EndColumn":27,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Name = $name","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":44,"StartLine":44,"EndLine":44,"StartColumn":24,"EndColumn":31,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Secret = $secret","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":48,"StartLine":48,"EndLine":48,"StartColumn":16,"EndColumn":27,"Class":"SecretWriter","Function":"GetAlias","Command":"return $this.Alias","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":51,"StartLine":51,"EndLine":51,"StartColumn":1,"EndColumn":76,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - [SecretWriter] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":53,"StartLine":53,"EndLine":53,"StartColumn":1,"EndColumn":59,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":56,"StartLine":56,"EndLine":56,"StartColumn":1,"EndColumn":71,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":58,"StartLine":58,"EndLine":58,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - [Book] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":69,"StartLine":69,"EndLine":69,"StartColumn":14,"EndColumn":29,"Class":"Book","Function":"Book","Command":"$this.Init(@{})","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":71,"StartLine":71,"EndLine":71,"StartColumn":36,"EndColumn":59,"Class":"Book","Function":"Book","Command":"$this.Init($Properties)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":9,"EndColumn":57,"Class":"Book","Function":"Book","Command":"$this.Init(@{Title = $Title; Author = $Author })","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":30,"EndColumn":36,"Class":"Book","Function":"Book","Command":"Title = $Title","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":47,"EndColumn":54,"Class":"Book","Function":"Book","Command":"Author = $Author","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":78,"StartLine":78,"EndLine":78,"StartColumn":31,"EndColumn":47,"Class":"Book","Function":"Init","Command":"$Properties.Keys","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":79,"StartLine":79,"EndLine":79,"StartColumn":31,"EndColumn":52,"Class":"Book","Function":"Init","Command":"$this.$Property = $Properties.$Property","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":84,"StartLine":84,"EndLine":84,"StartColumn":13,"EndColumn":34,"Class":"Book","Function":"GetReadingTime","Command":"if ($this.PageCount -le 0) {\n throw 'Unable to determine reading time from page count.'\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":85,"StartLine":85,"EndLine":85,"StartColumn":19,"EndColumn":70,"Class":"Book","Function":"GetReadingTime","Command":"throw 'Unable to determine reading time from page count.'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":87,"StartLine":87,"EndLine":87,"StartColumn":20,"EndColumn":39,"Class":"Book","Function":"GetReadingTime","Command":"$Minutes = $this.PageCount * 2","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":88,"StartLine":88,"EndLine":88,"StartColumn":16,"EndColumn":47,"Class":"Book","Function":"GetReadingTime","Command":"return [timespan]::new(0, $Minutes, 0)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":93,"StartLine":93,"EndLine":94,"StartColumn":13,"EndColumn":55,"Class":"Book","Function":"GetPublishedAge","Command":"if (\n $null -eq $this.PublishDate -or\n $this.PublishDate -eq [datetime]::MinValue\n ) { throw 'PublishDate not defined' }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":95,"StartLine":95,"EndLine":95,"StartColumn":19,"EndColumn":44,"Class":"Book","Function":"GetPublishedAge","Command":"throw 'PublishDate not defined'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":97,"StartLine":97,"EndLine":97,"StartColumn":16,"EndColumn":46,"Class":"Book","Function":"GetPublishedAge","Command":"return (Get-Date) - $this.PublishDate","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":97,"StartLine":97,"EndLine":97,"StartColumn":17,"EndColumn":25,"Class":"Book","Function":"GetPublishedAge","Command":"Get-Date","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":16,"EndColumn":79,"Class":"Book","Function":"ToString","Command":"return \"$($this.Title) by $($this.Author) ($($this.PublishDate.Year))\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":19,"EndColumn":30,"Class":"Book","Function":"ToString","Command":"$this.Title","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":37,"EndColumn":49,"Class":"Book","Function":"ToString","Command":"$this.Author","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":54,"EndColumn":76,"Class":"Book","Function":"ToString","Command":"$this.PublishDate.Year","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":110,"StartLine":110,"EndLine":110,"StartColumn":34,"EndColumn":64,"Class":"BookList","Function":"Initialize","Command":"[BookList]::Initialize($false)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":112,"StartLine":112,"EndLine":112,"StartColumn":13,"EndColumn":59,"Class":"BookList","Function":"Initialize","Command":"if ([BookList]::Books.Count -gt 0 -and -not $force) {\n return $false\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":113,"StartLine":113,"EndLine":113,"StartColumn":20,"EndColumn":26,"Class":"BookList","Function":"Initialize","Command":"return $false","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":116,"StartLine":116,"EndLine":116,"StartColumn":29,"EndColumn":75,"Class":"BookList","Function":"Initialize","Command":"[BookList]::Books = [System.Collections.Generic.List[Book]]::new()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":118,"StartLine":118,"EndLine":118,"StartColumn":16,"EndColumn":21,"Class":"BookList","Function":"Initialize","Command":"return $true","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":122,"StartLine":122,"EndLine":125,"StartColumn":19,"EndColumn":20,"Class":"BookList","Function":"Validate","Command":"$Prefix = @(\n 'Book validation failed: Book must be defined with the Title,'\n 'Author, and PublishDate properties, but'\n ) -join ' '","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":123,"StartLine":123,"EndLine":123,"StartColumn":13,"EndColumn":75,"Class":"BookList","Function":"Validate","Command":"'Book validation failed: Book must be defined with the Title,'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":124,"StartLine":124,"EndLine":124,"StartColumn":13,"EndColumn":54,"Class":"BookList","Function":"Validate","Command":"'Author, and PublishDate properties, but'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":126,"StartLine":126,"EndLine":126,"StartColumn":13,"EndColumn":28,"Class":"BookList","Function":"Validate","Command":"if ($null -eq $Book) { throw \"$Prefix was null\" }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":126,"StartLine":126,"EndLine":126,"StartColumn":38,"EndColumn":56,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix was null\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":127,"StartLine":127,"EndLine":127,"StartColumn":13,"EndColumn":49,"Class":"BookList","Function":"Validate","Command":"if ([string]::IsNullOrEmpty($Book.Title)) {\n throw \"$Prefix Title wasn't defined\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":128,"StartLine":128,"EndLine":128,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix Title wasn't defined\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":130,"StartLine":130,"EndLine":130,"StartColumn":13,"EndColumn":50,"Class":"BookList","Function":"Validate","Command":"if ([string]::IsNullOrEmpty($Book.Author)) {\n throw \"$Prefix Author wasn't defined\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":131,"StartLine":131,"EndLine":131,"StartColumn":19,"EndColumn":50,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix Author wasn't defined\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":133,"StartLine":133,"EndLine":133,"StartColumn":13,"EndColumn":55,"Class":"BookList","Function":"Validate","Command":"if ([datetime]::MinValue -eq $Book.PublishDate) {\n throw \"$Prefix PublishDate wasn't defined\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":134,"StartLine":134,"EndLine":134,"StartColumn":19,"EndColumn":55,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix PublishDate wasn't defined\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":140,"StartLine":140,"EndLine":140,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Add","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":141,"StartLine":141,"EndLine":141,"StartColumn":9,"EndColumn":36,"Class":"BookList","Function":"Add","Command":"[BookList]::Validate($Book)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":142,"StartLine":142,"EndLine":142,"StartColumn":13,"EndColumn":46,"Class":"BookList","Function":"Add","Command":"if ([BookList]::Books.Contains($Book)) {\n throw \"Book '$Book' already in list\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":143,"StartLine":143,"EndLine":143,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"throw \"Book '$Book' already in list\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":146,"StartLine":146,"EndLine":152,"StartColumn":26,"EndColumn":26,"Class":"BookList","Function":"Add","Command":"$FindPredicate = {\n param([Book]$b)\n\n $b.Title -eq $Book.Title -and\n $b.Author -eq $Book.Author -and\n $b.PublishDate -eq $Book.PublishDate\n }.GetNewClosure()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":149,"StartLine":149,"EndLine":151,"StartColumn":13,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"$b.Title -eq $Book.Title -and\n $b.Author -eq $Book.Author -and\n $b.PublishDate -eq $Book.PublishDate","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":153,"StartLine":153,"EndLine":153,"StartColumn":13,"EndColumn":51,"Class":"BookList","Function":"Add","Command":"if ([BookList]::Books.Find($FindPredicate)) {\n throw \"Book '$Book' already in list\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":154,"StartLine":154,"EndLine":154,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"throw \"Book '$Book' already in list\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":157,"StartLine":157,"EndLine":157,"StartColumn":9,"EndColumn":37,"Class":"BookList","Function":"Add","Command":"[BookList]::Books.Add($Book)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":161,"StartLine":161,"EndLine":161,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Clear","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":162,"StartLine":162,"EndLine":162,"StartColumn":9,"EndColumn":34,"Class":"BookList","Function":"Clear","Command":"[BookList]::Books.Clear()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":166,"StartLine":166,"EndLine":166,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Find","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":167,"StartLine":167,"EndLine":167,"StartColumn":16,"EndColumn":50,"Class":"BookList","Function":"Find","Command":"return [BookList]::Books.Find($Predicate)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":171,"StartLine":171,"EndLine":171,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"FindAll","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":172,"StartLine":172,"EndLine":172,"StartColumn":16,"EndColumn":53,"Class":"BookList","Function":"FindAll","Command":"return [BookList]::Books.FindAll($Predicate)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":176,"StartLine":176,"EndLine":176,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Remove","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":177,"StartLine":177,"EndLine":177,"StartColumn":9,"EndColumn":40,"Class":"BookList","Function":"Remove","Command":"[BookList]::Books.Remove($Book)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":181,"StartLine":181,"EndLine":181,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"RemoveBy","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":182,"StartLine":182,"EndLine":185,"StartColumn":18,"EndColumn":31,"Class":"BookList","Function":"RemoveBy","Command":"$Index = [BookList]::Books.FindIndex({\n param($b)\n $b.$Property -eq $Value\n }.GetNewClosure())","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":184,"StartLine":184,"EndLine":184,"StartColumn":17,"EndColumn":40,"Class":"BookList","Function":"RemoveBy","Command":"$b.$Property -eq $Value","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":186,"StartLine":186,"EndLine":186,"StartColumn":13,"EndColumn":25,"Class":"BookList","Function":"RemoveBy","Command":"if ($Index -ge 0) {\n [BookList]::Books.RemoveAt($Index)\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":187,"StartLine":187,"EndLine":187,"StartColumn":13,"EndColumn":47,"Class":"BookList","Function":"RemoveBy","Command":"[BookList]::Books.RemoveAt($Index)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":206,"StartLine":206,"EndLine":206,"StartColumn":1,"EndColumn":67,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - [Book] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":208,"StartLine":208,"EndLine":208,"StartColumn":1,"EndColumn":58,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":211,"StartLine":211,"EndLine":211,"StartColumn":1,"EndColumn":74,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":213,"StartLine":213,"EndLine":213,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Get-InternalPSModule] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":230,"StartLine":230,"EndLine":230,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-InternalPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":232,"StartLine":232,"EndLine":232,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Get-InternalPSModule] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":235,"StartLine":235,"EndLine":235,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Set-InternalPSModule] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":256,"StartLine":256,"EndLine":256,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Set-InternalPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":258,"StartLine":258,"EndLine":258,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Set-InternalPSModule] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":260,"StartLine":260,"EndLine":260,"StartColumn":1,"EndColumn":61,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":263,"StartLine":263,"EndLine":263,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":265,"StartLine":265,"EndLine":265,"StartColumn":1,"EndColumn":80,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [completers] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":266,"StartLine":266,"EndLine":273,"StartColumn":1,"EndColumn":2,"Class":"","Function":"","Command":"Register-ArgumentCompleter -CommandName New-PSModuleTest -ParameterName Name -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters\n\n 'Alice', 'Bob', 'Charlie' | Where-Object { $_ -like \"$wordToComplete*\" } | ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }\n}","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":268,"StartLine":268,"EndLine":268,"StartColumn":13,"EndColumn":93,"Class":"","Function":"","Command":"$null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":5,"EndColumn":30,"Class":"","Function":"","Command":"'Alice', 'Bob', 'Charlie'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":33,"EndColumn":77,"Class":"","Function":"","Command":"Where-Object { $_ -like \"$wordToComplete*\" }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":48,"EndColumn":75,"Class":"","Function":"","Command":"$_ -like \"$wordToComplete*\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":272,"StartColumn":80,"EndColumn":6,"Class":"","Function":"","Command":"ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":271,"StartLine":271,"EndLine":271,"StartColumn":9,"EndColumn":91,"Class":"","Function":"","Command":"[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":274,"StartLine":274,"EndLine":274,"StartColumn":1,"EndColumn":75,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [completers] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":277,"StartLine":277,"EndLine":277,"StartColumn":1,"EndColumn":87,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [Test-PSModuleTest] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":294,"StartLine":294,"EndLine":294,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Test-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":296,"StartLine":296,"EndLine":296,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [Test-PSModuleTest] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":299,"StartLine":299,"EndLine":299,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":301,"StartLine":301,"EndLine":301,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [Get-PSModuleTest] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":323,"StartLine":323,"EndLine":323,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":325,"StartLine":325,"EndLine":325,"StartColumn":1,"EndColumn":94,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [Get-PSModuleTest] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":328,"StartLine":328,"EndLine":328,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [New-PSModuleTest] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":358,"StartLine":358,"EndLine":358,"StartColumn":5,"EndColumn":33,"Class":"","Function":"New-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":361,"StartLine":361,"EndLine":361,"StartColumn":1,"EndColumn":50,"Class":"","Function":"","Command":"New-Alias New-PSModuleTestAlias3 New-PSModuleTest","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":362,"StartLine":362,"EndLine":362,"StartColumn":1,"EndColumn":63,"Class":"","Function":"","Command":"New-Alias -Name New-PSModuleTestAlias4 -Value New-PSModuleTest","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":365,"StartLine":365,"EndLine":365,"StartColumn":1,"EndColumn":50,"Class":"","Function":"","Command":"Set-Alias New-PSModuleTestAlias5 New-PSModuleTest","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":366,"StartLine":366,"EndLine":366,"StartColumn":1,"EndColumn":94,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [New-PSModuleTest] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":368,"StartLine":368,"EndLine":368,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":371,"StartLine":371,"EndLine":371,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":373,"StartLine":373,"EndLine":373,"StartColumn":1,"EndColumn":104,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - [Set-PSModuleTest] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":394,"StartLine":394,"EndLine":394,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Set-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":396,"StartLine":396,"EndLine":396,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - [Set-PSModuleTest] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":398,"StartLine":398,"EndLine":398,"StartColumn":1,"EndColumn":78,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":400,"StartLine":400,"EndLine":400,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":403,"StartLine":403,"EndLine":403,"StartColumn":1,"EndColumn":74,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":405,"StartLine":405,"EndLine":405,"StartColumn":1,"EndColumn":87,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - [PrivateVariables] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":406,"StartLine":406,"EndLine":437,"StartColumn":28,"EndColumn":2,"Class":"","Function":"","Command":"$script:HabitablePlanets = @(\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n },\n @{\n Name = 'Proxima Centauri b'\n Mass = 1.17\n Diameter = 11449\n DayLength = 5.15\n },\n @{\n Name = 'Kepler-442b'\n Mass = 2.34\n Diameter = 11349\n DayLength = 5.7\n },\n @{\n Name = 'Kepler-452b'\n Mass = 5.0\n Diameter = 17340\n DayLength = 20.0\n }\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":407,"StartLine":407,"EndLine":436,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n },\n @{\n Name = 'Proxima Centauri b'\n Mass = 1.17\n Diameter = 11449\n DayLength = 5.15\n },\n @{\n Name = 'Kepler-442b'\n Mass = 2.34\n Diameter = 11349\n DayLength = 5.7\n },\n @{\n Name = 'Kepler-452b'\n Mass = 5.0\n Diameter = 17340\n DayLength = 20.0\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":408,"StartLine":408,"EndLine":408,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":409,"StartLine":409,"EndLine":409,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":410,"StartLine":410,"EndLine":410,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":411,"StartLine":411,"EndLine":411,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":414,"StartLine":414,"EndLine":414,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Mars'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":415,"StartLine":415,"EndLine":415,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.642","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":416,"StartLine":416,"EndLine":416,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 6792","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":417,"StartLine":417,"EndLine":417,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.7","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":420,"StartLine":420,"EndLine":420,"StartColumn":21,"EndColumn":41,"Class":"","Function":"","Command":"Name = 'Proxima Centauri b'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":421,"StartLine":421,"EndLine":421,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 1.17","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":422,"StartLine":422,"EndLine":422,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 11449","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":423,"StartLine":423,"EndLine":423,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 5.15","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":426,"StartLine":426,"EndLine":426,"StartColumn":21,"EndColumn":34,"Class":"","Function":"","Command":"Name = 'Kepler-442b'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":427,"StartLine":427,"EndLine":427,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 2.34","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":428,"StartLine":428,"EndLine":428,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 11349","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":429,"StartLine":429,"EndLine":429,"StartColumn":21,"EndColumn":24,"Class":"","Function":"","Command":"DayLength = 5.7","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":432,"StartLine":432,"EndLine":432,"StartColumn":21,"EndColumn":34,"Class":"","Function":"","Command":"Name = 'Kepler-452b'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":433,"StartLine":433,"EndLine":433,"StartColumn":21,"EndColumn":24,"Class":"","Function":"","Command":"Mass = 5.0","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":434,"StartLine":434,"EndLine":434,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 17340","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":435,"StartLine":435,"EndLine":435,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 20.0","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":439,"StartLine":439,"EndLine":452,"StartColumn":28,"EndColumn":2,"Class":"","Function":"","Command":"$script:InhabitedPlanets = @(\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n }\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":440,"StartLine":440,"EndLine":451,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":441,"StartLine":441,"EndLine":441,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":442,"StartLine":442,"EndLine":442,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":443,"StartLine":443,"EndLine":443,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":444,"StartLine":444,"EndLine":444,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":447,"StartLine":447,"EndLine":447,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Mars'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":448,"StartLine":448,"EndLine":448,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.642","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":449,"StartLine":449,"EndLine":449,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 6792","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":450,"StartLine":450,"EndLine":450,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.7","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":453,"StartLine":453,"EndLine":453,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - [PrivateVariables] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":455,"StartLine":455,"EndLine":455,"StartColumn":1,"EndColumn":61,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":458,"StartLine":458,"EndLine":458,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":460,"StartLine":460,"EndLine":460,"StartColumn":1,"EndColumn":75,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Moons] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":461,"StartLine":461,"EndLine":466,"StartColumn":17,"EndColumn":2,"Class":"","Function":"","Command":"$script:Moons = @(\n @{\n Planet = 'Earth'\n Name = 'Moon'\n }\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":462,"StartLine":462,"EndLine":465,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Planet = 'Earth'\n Name = 'Moon'\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":463,"StartLine":463,"EndLine":463,"StartColumn":18,"EndColumn":25,"Class":"","Function":"","Command":"Planet = 'Earth'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":464,"StartLine":464,"EndLine":464,"StartColumn":18,"EndColumn":24,"Class":"","Function":"","Command":"Name = 'Moon'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":467,"StartLine":467,"EndLine":467,"StartColumn":1,"EndColumn":70,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Moons] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":470,"StartLine":470,"EndLine":470,"StartColumn":1,"EndColumn":77,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Planets] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":471,"StartLine":471,"EndLine":490,"StartColumn":19,"EndColumn":2,"Class":"","Function":"","Command":"$script:Planets = @(\n @{\n Name = 'Mercury'\n Mass = 0.330\n Diameter = 4879\n DayLength = 4222.6\n },\n @{\n Name = 'Venus'\n Mass = 4.87\n Diameter = 12104\n DayLength = 2802.0\n },\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n }\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":472,"StartLine":472,"EndLine":489,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Mercury'\n Mass = 0.330\n Diameter = 4879\n DayLength = 4222.6\n },\n @{\n Name = 'Venus'\n Mass = 4.87\n Diameter = 12104\n DayLength = 2802.0\n },\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":473,"StartLine":473,"EndLine":473,"StartColumn":21,"EndColumn":30,"Class":"","Function":"","Command":"Name = 'Mercury'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":474,"StartLine":474,"EndLine":474,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.330","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":475,"StartLine":475,"EndLine":475,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 4879","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":476,"StartLine":476,"EndLine":476,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"DayLength = 4222.6","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":479,"StartLine":479,"EndLine":479,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Venus'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":480,"StartLine":480,"EndLine":480,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 4.87","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":481,"StartLine":481,"EndLine":481,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12104","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":482,"StartLine":482,"EndLine":482,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"DayLength = 2802.0","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":485,"StartLine":485,"EndLine":485,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":486,"StartLine":486,"EndLine":486,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":487,"StartLine":487,"EndLine":487,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":488,"StartLine":488,"EndLine":488,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":491,"StartLine":491,"EndLine":491,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Planets] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":494,"StartLine":494,"EndLine":494,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [SolarSystems] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":495,"StartLine":495,"EndLine":511,"StartColumn":24,"EndColumn":2,"Class":"","Function":"","Command":"$script:SolarSystems = @(\n @{\n Name = 'Solar System'\n Planets = $script:Planets\n Moons = $script:Moons\n },\n @{\n Name = 'Alpha Centauri'\n Planets = @()\n Moons = @()\n },\n @{\n Name = 'Sirius'\n Planets = @()\n Moons = @()\n }\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":496,"StartLine":496,"EndLine":510,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Solar System'\n Planets = $script:Planets\n Moons = $script:Moons\n },\n @{\n Name = 'Alpha Centauri'\n Planets = @()\n Moons = @()\n },\n @{\n Name = 'Sirius'\n Planets = @()\n Moons = @()\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":497,"StartLine":497,"EndLine":497,"StartColumn":19,"EndColumn":33,"Class":"","Function":"","Command":"Name = 'Solar System'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":498,"StartLine":498,"EndLine":498,"StartColumn":19,"EndColumn":34,"Class":"","Function":"","Command":"Planets = $script:Planets","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":499,"StartLine":499,"EndLine":499,"StartColumn":19,"EndColumn":32,"Class":"","Function":"","Command":"Moons = $script:Moons","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":502,"StartLine":502,"EndLine":502,"StartColumn":19,"EndColumn":35,"Class":"","Function":"","Command":"Name = 'Alpha Centauri'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":503,"StartLine":503,"EndLine":503,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Planets = @()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":504,"StartLine":504,"EndLine":504,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Moons = @()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":507,"StartLine":507,"EndLine":507,"StartColumn":19,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Sirius'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":508,"StartLine":508,"EndLine":508,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Planets = @()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":509,"StartLine":509,"EndLine":509,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Moons = @()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":512,"StartLine":512,"EndLine":512,"StartColumn":1,"EndColumn":77,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [SolarSystems] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":514,"StartLine":514,"EndLine":514,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":517,"StartLine":517,"EndLine":517,"StartColumn":1,"EndColumn":52,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [finally] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":518,"StartLine":518,"EndLine":518,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '------------------------------'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":519,"StartLine":519,"EndLine":519,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS A LAST LOADER ---'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":520,"StartLine":520,"EndLine":520,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '------------------------------'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":521,"StartLine":521,"EndLine":521,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [finally] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":525,"StartLine":525,"EndLine":527,"StartColumn":26,"EndColumn":2,"Class":"","Function":"","Command":"$TypeAcceleratorsClass = [psobject].Assembly.GetType(\n 'System.Management.Automation.TypeAccelerators'\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":530,"StartLine":530,"EndLine":530,"StartColumn":29,"EndColumn":56,"Class":"","Function":"","Command":"$ExistingTypeAccelerators = $TypeAcceleratorsClass::Get","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":532,"StartLine":532,"EndLine":535,"StartColumn":20,"EndColumn":2,"Class":"","Function":"","Command":"$ExportableEnums = @(\n [Binding]\n [Genre]\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":533,"StartLine":533,"EndLine":533,"StartColumn":5,"EndColumn":14,"Class":"","Function":"","Command":"[Binding]","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":534,"StartLine":534,"EndLine":534,"StartColumn":5,"EndColumn":12,"Class":"","Function":"","Command":"[Genre]","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":1,"EndColumn":17,"Class":"","Function":"","Command":"$ExportableEnums","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":20,"EndColumn":87,"Class":"","Function":"","Command":"Foreach-Object { Write-Verbose \"Exporting enum '$($_.FullName)'.\" }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":37,"EndColumn":85,"Class":"","Function":"","Command":"Write-Verbose \"Exporting enum '$($_.FullName)'.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":70,"EndColumn":81,"Class":"","Function":"","Command":"$_.FullName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":537,"StartLine":537,"EndLine":537,"StartColumn":19,"EndColumn":35,"Class":"","Function":"","Command":"$ExportableEnums","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":538,"StartLine":538,"EndLine":538,"StartColumn":9,"EndColumn":58,"Class":"","Function":"","Command":"if ($Type.FullName -in $ExistingTypeAccelerators.Keys) {\n Write-Verbose \"Enum already exists [$($Type.FullName)]. Skipping.\"\n } else {\n Write-Verbose \"Importing enum '$Type'.\"\n $TypeAcceleratorsClass::Add($Type.FullName, $Type)\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":539,"StartLine":539,"EndLine":539,"StartColumn":9,"EndColumn":75,"Class":"","Function":"","Command":"Write-Verbose \"Enum already exists [$($Type.FullName)]. Skipping.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":539,"StartLine":539,"EndLine":539,"StartColumn":47,"EndColumn":61,"Class":"","Function":"","Command":"$Type.FullName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":541,"StartLine":541,"EndLine":541,"StartColumn":9,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose \"Importing enum '$Type'.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":542,"StartLine":542,"EndLine":542,"StartColumn":9,"EndColumn":59,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Add($Type.FullName, $Type)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":545,"StartLine":545,"EndLine":548,"StartColumn":22,"EndColumn":2,"Class":"","Function":"","Command":"$ExportableClasses = @(\n [Book]\n [BookList]\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":546,"StartLine":546,"EndLine":546,"StartColumn":5,"EndColumn":11,"Class":"","Function":"","Command":"[Book]","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":547,"StartLine":547,"EndLine":547,"StartColumn":5,"EndColumn":15,"Class":"","Function":"","Command":"[BookList]","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":1,"EndColumn":19,"Class":"","Function":"","Command":"$ExportableClasses","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":22,"EndColumn":90,"Class":"","Function":"","Command":"Foreach-Object { Write-Verbose \"Exporting class '$($_.FullName)'.\" }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":39,"EndColumn":88,"Class":"","Function":"","Command":"Write-Verbose \"Exporting class '$($_.FullName)'.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":73,"EndColumn":84,"Class":"","Function":"","Command":"$_.FullName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":550,"StartLine":550,"EndLine":550,"StartColumn":19,"EndColumn":37,"Class":"","Function":"","Command":"$ExportableClasses","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":551,"StartLine":551,"EndLine":551,"StartColumn":9,"EndColumn":58,"Class":"","Function":"","Command":"if ($Type.FullName -in $ExistingTypeAccelerators.Keys) {\n Write-Verbose \"Class already exists [$($Type.FullName)]. Skipping.\"\n } else {\n Write-Verbose \"Importing class '$Type'.\"\n $TypeAcceleratorsClass::Add($Type.FullName, $Type)\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":552,"StartLine":552,"EndLine":552,"StartColumn":9,"EndColumn":76,"Class":"","Function":"","Command":"Write-Verbose \"Class already exists [$($Type.FullName)]. Skipping.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":552,"StartLine":552,"EndLine":552,"StartColumn":48,"EndColumn":62,"Class":"","Function":"","Command":"$Type.FullName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":554,"StartLine":554,"EndLine":554,"StartColumn":9,"EndColumn":49,"Class":"","Function":"","Command":"Write-Verbose \"Importing class '$Type'.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":555,"StartLine":555,"EndLine":555,"StartColumn":9,"EndColumn":59,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Add($Type.FullName, $Type)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":560,"StartLine":560,"EndLine":564,"StartColumn":55,"EndColumn":18,"Class":"","Function":"","Command":"$MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = {\n foreach ($Type in ($ExportableEnums + $ExportableClasses)) {\n $TypeAcceleratorsClass::Remove($Type.FullName)\n }\n}.GetNewClosure()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":561,"StartLine":561,"EndLine":561,"StartColumn":23,"EndColumn":62,"Class":"","Function":"","Command":"($ExportableEnums + $ExportableClasses)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":561,"StartLine":561,"EndLine":561,"StartColumn":24,"EndColumn":61,"Class":"","Function":"","Command":"$ExportableEnums + $ExportableClasses","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":562,"StartLine":562,"EndLine":562,"StartColumn":9,"EndColumn":55,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Remove($Type.FullName)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":567,"StartLine":567,"EndLine":581,"StartColumn":12,"EndColumn":2,"Class":"","Function":"","Command":"$exports = @{\n Alias = '*'\n Cmdlet = ''\n Function = @(\n 'Get-PSModuleTest'\n 'New-PSModuleTest'\n 'Set-PSModuleTest'\n 'Test-PSModuleTest'\n )\n Variable = @(\n 'Moons'\n 'Planets'\n 'SolarSystems'\n )\n}","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":568,"StartLine":568,"EndLine":568,"StartColumn":16,"EndColumn":19,"Class":"","Function":"","Command":"Alias = '*'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":569,"StartLine":569,"EndLine":569,"StartColumn":16,"EndColumn":18,"Class":"","Function":"","Command":"Cmdlet = ''","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":570,"StartLine":570,"EndLine":575,"StartColumn":16,"EndColumn":6,"Class":"","Function":"","Command":"Function = @(\n 'Get-PSModuleTest'\n 'New-PSModuleTest'\n 'Set-PSModuleTest'\n 'Test-PSModuleTest'\n )","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":571,"StartLine":571,"EndLine":571,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'Get-PSModuleTest'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":572,"StartLine":572,"EndLine":572,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'New-PSModuleTest'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":573,"StartLine":573,"EndLine":573,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'Set-PSModuleTest'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":574,"StartLine":574,"EndLine":574,"StartColumn":9,"EndColumn":28,"Class":"","Function":"","Command":"'Test-PSModuleTest'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":576,"StartLine":576,"EndLine":580,"StartColumn":16,"EndColumn":6,"Class":"","Function":"","Command":"Variable = @(\n 'Moons'\n 'Planets'\n 'SolarSystems'\n )","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":577,"StartLine":577,"EndLine":577,"StartColumn":9,"EndColumn":16,"Class":"","Function":"","Command":"'Moons'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":578,"StartLine":578,"EndLine":578,"StartColumn":9,"EndColumn":18,"Class":"","Function":"","Command":"'Planets'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":579,"StartLine":579,"EndLine":579,"StartColumn":9,"EndColumn":23,"Class":"","Function":"","Command":"'SolarSystems'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":582,"StartLine":582,"EndLine":582,"StartColumn":1,"EndColumn":29,"Class":"","Function":"","Command":"Export-ModuleMember @exports","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\scripts\\loader.ps1","Line":1,"StartLine":1,"EndLine":1,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '-------------------------'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\scripts\\loader.ps1","Line":2,"StartLine":2,"EndLine":2,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS A LOADER ---'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\scripts\\loader.ps1","Line":3,"StartLine":3,"EndLine":3,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '-------------------------'","HitCount":0}],"CommandsExecuted":[],"FilesAnalyzed":["D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\modules\\OtherPSModule.psm1","D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\scripts\\loader.ps1"],"CoveragePercent":0.0,"CoveragePercentTarget":0.0,"CoverageReport":"Covered 0% / 0%. 263 analyzed Commands in 3 Files.\n Missed commands:\n \r\n\u001b[32;1mFile \u001b[0m\u001b[32;1m Class \u001b[0m\u001b[32;1m Function \u001b[0m\u001b[32;1m Line\u001b[0m\u001b[32;1m Command\u001b[0m\r\n\u001b[32;1m---- \u001b[0m \u001b[32;1m----- \u001b[0m \u001b[32;1m-------- \u001b[0m \u001b[32;1m----\u001b[0m \u001b[32;1m-------\u001b[0m\r\nmodules\\OtherPSModule.psm1 Get-OtherPSModule 18 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 5 $baseName = [System.IO.Path]::GetFileNameWithoutExten…\r\nPSModuleTest.psm1 6 $script:PSModuleInfo = Test-ModuleManifest -Path \"$PS…\r\nPSModuleTest.psm1 7 $script:PSModuleInfo\r\nPSModuleTest.psm1 7 Format-List\r\nPSModuleTest.psm1 7 Out-String -Stream\r\nPSModuleTest.psm1 7 ForEach-Object { Write-Debug $_ }\r\nPSModuleTest.psm1 7 Write-Debug $_\r\nPSModuleTest.psm1 8 $scriptName = $script:PSModuleInfo.Name\r\nPSModuleTest.psm1 9 Write-Debug \"[$scriptName] - Importing module\"\r\nPSModuleTest.psm1 11 Write-Debug \"[$scriptName] - [data] - Processing fold…\r\nPSModuleTest.psm1 12 $dataFolder = (Join-Path $PSScriptRoot 'data')\r\nPSModuleTest.psm1 12 Join-Path $PSScriptRoot 'data'\r\nPSModuleTest.psm1 13 Write-Debug \"[$scriptName] - [data] - [$dataFolder]\"\r\nPSModuleTest.psm1 14 Get-ChildItem -Path \"$dataFolder\" -Recurse -Force -In…\r\nPSModuleTest.psm1 14 ForEach-Object {…\r\nPSModuleTest.psm1 15 Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)…\r\nPSModuleTest.psm1 15 $_.BaseName\r\nPSModuleTest.psm1 16 New-Variable -Name $_.BaseName -Value (Import-PowerSh…\r\nPSModuleTest.psm1 16 Import-PowerShellDataFile -Path $_.FullName\r\nPSModuleTest.psm1 17 Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)…\r\nPSModuleTest.psm1 17 $_.BaseName\r\nPSModuleTest.psm1 19 Write-Debug \"[$scriptName] - [data] - Done\"\r\nPSModuleTest.psm1 22 Write-Debug \"[$scriptName] - [init] - Processing fold…\r\nPSModuleTest.psm1 24 Write-Debug \"[$scriptName] - [init] - [initializer] -…\r\nPSModuleTest.psm1 25 Write-Verbose '-------------------------------'\r\nPSModuleTest.psm1 26 Write-Verbose '--- THIS IS AN INITIALIZER ---'\r\nPSModuleTest.psm1 27 Write-Verbose '-------------------------------'\r\nPSModuleTest.psm1 28 Write-Debug \"[$scriptName] - [init] - [initializer] -…\r\nPSModuleTest.psm1 30 Write-Debug \"[$scriptName] - [init] - Done\"\r\nPSModuleTest.psm1 33 Write-Debug \"[$scriptName] - [classes] - [private] - …\r\nPSModuleTest.psm1 35 Write-Debug \"[$scriptName] - [classes] - [private] - …\r\nPSModuleTest.psm1 SecretWriter SecretWriter 42 $this.Alias = $alias\r\nPSModuleTest.psm1 SecretWriter SecretWriter 43 $this.Name = $name\r\nPSModuleTest.psm1 SecretWriter SecretWriter 44 $this.Secret = $secret\r\nPSModuleTest.psm1 SecretWriter GetAlias 48 return $this.Alias\r\nPSModuleTest.psm1 51 Write-Debug \"[$scriptName] - [classes] - [private] - …\r\nPSModuleTest.psm1 53 Write-Debug \"[$scriptName] - [classes] - [private] - …\r\nPSModuleTest.psm1 56 Write-Debug \"[$scriptName] - [classes] - [public] - P…\r\nPSModuleTest.psm1 58 Write-Debug \"[$scriptName] - [classes] - [public] - […\r\nPSModuleTest.psm1 Book Book 69 $this.Init(@{})\r\nPSModuleTest.psm1 Book Book 71 $this.Init($Properties)\r\nPSModuleTest.psm1 Book Book 74 $this.Init(@{Title = $Title; Author = $Author })\r\nPSModuleTest.psm1 Book Book 74 Title = $Title\r\nPSModuleTest.psm1 Book Book 74 Author = $Author\r\nPSModuleTest.psm1 Book Init 78 $Properties.Keys\r\nPSModuleTest.psm1 Book Init 79 $this.$Property = $Properties.$Property\r\nPSModuleTest.psm1 Book GetReadingTime 84 if ($this.PageCount -le 0) {…\r\nPSModuleTest.psm1 Book GetReadingTime 85 throw 'Unable to determine reading time from page cou…\r\nPSModuleTest.psm1 Book GetReadingTime 87 $Minutes = $this.PageCount * 2\r\nPSModuleTest.psm1 Book GetReadingTime 88 return [timespan]::new(0, $Minutes, 0)\r\nPSModuleTest.psm1 Book GetPublishedAge 93 if (…\r\nPSModuleTest.psm1 Book GetPublishedAge 95 throw 'PublishDate not defined'\r\nPSModuleTest.psm1 Book GetPublishedAge 97 return (Get-Date) - $this.PublishDate\r\nPSModuleTest.psm1 Book GetPublishedAge 97 Get-Date\r\nPSModuleTest.psm1 Book ToString 101 return \"$($this.Title) by $($this.Author) ($($this.Pu…\r\nPSModuleTest.psm1 Book ToString 101 $this.Title\r\nPSModuleTest.psm1 Book ToString 101 $this.Author\r\nPSModuleTest.psm1 Book ToString 101 $this.PublishDate.Year\r\nPSModuleTest.psm1 BookList Initialize 110 [BookList]::Initialize($false)\r\nPSModuleTest.psm1 BookList Initialize 112 if ([BookList]::Books.Count -gt 0 -and -not $force) {…\r\nPSModuleTest.psm1 BookList Initialize 113 return $false\r\nPSModuleTest.psm1 BookList Initialize 116 [BookList]::Books = [System.Collections.Generic.List[…\r\nPSModuleTest.psm1 BookList Initialize 118 return $true\r\nPSModuleTest.psm1 BookList Validate 122 $Prefix = @(…\r\nPSModuleTest.psm1 BookList Validate 123 'Book validation failed: Book must be defined with th…\r\nPSModuleTest.psm1 BookList Validate 124 'Author, and PublishDate properties, but'\r\nPSModuleTest.psm1 BookList Validate 126 if ($null -eq $Book) { throw \"$Prefix was null\" }\r\nPSModuleTest.psm1 BookList Validate 126 throw \"$Prefix was null\"\r\nPSModuleTest.psm1 BookList Validate 127 if ([string]::IsNullOrEmpty($Book.Title)) {…\r\nPSModuleTest.psm1 BookList Validate 128 throw \"$Prefix Title wasn't defined\"\r\nPSModuleTest.psm1 BookList Validate 130 if ([string]::IsNullOrEmpty($Book.Author)) {…\r\nPSModuleTest.psm1 BookList Validate 131 throw \"$Prefix Author wasn't defined\"\r\nPSModuleTest.psm1 BookList Validate 133 if ([datetime]::MinValue -eq $Book.PublishDate) {…\r\nPSModuleTest.psm1 BookList Validate 134 throw \"$Prefix PublishDate wasn't defined\"\r\nPSModuleTest.psm1 BookList Add 140 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList Add 141 [BookList]::Validate($Book)\r\nPSModuleTest.psm1 BookList Add 142 if ([BookList]::Books.Contains($Book)) {…\r\nPSModuleTest.psm1 BookList Add 143 throw \"Book '$Book' already in list\"\r\nPSModuleTest.psm1 BookList Add 146 $FindPredicate = {…\r\nPSModuleTest.psm1 BookList Add 149 $b.Title -eq $Book.Title -and…\r\nPSModuleTest.psm1 BookList Add 153 if ([BookList]::Books.Find($FindPredicate)) {…\r\nPSModuleTest.psm1 BookList Add 154 throw \"Book '$Book' already in list\"\r\nPSModuleTest.psm1 BookList Add 157 [BookList]::Books.Add($Book)\r\nPSModuleTest.psm1 BookList Clear 161 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList Clear 162 [BookList]::Books.Clear()\r\nPSModuleTest.psm1 BookList Find 166 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList Find 167 return [BookList]::Books.Find($Predicate)\r\nPSModuleTest.psm1 BookList FindAll 171 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList FindAll 172 return [BookList]::Books.FindAll($Predicate)\r\nPSModuleTest.psm1 BookList Remove 176 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList Remove 177 [BookList]::Books.Remove($Book)\r\nPSModuleTest.psm1 BookList RemoveBy 181 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList RemoveBy 182 $Index = [BookList]::Books.FindIndex({…\r\nPSModuleTest.psm1 BookList RemoveBy 184 $b.$Property -eq $Value\r\nPSModuleTest.psm1 BookList RemoveBy 186 if ($Index -ge 0) {…\r\nPSModuleTest.psm1 BookList RemoveBy 187 [BookList]::Books.RemoveAt($Index)\r\nPSModuleTest.psm1 206 Write-Debug \"[$scriptName] - [classes] - [public] - […\r\nPSModuleTest.psm1 208 Write-Debug \"[$scriptName] - [classes] - [public] - D…\r\nPSModuleTest.psm1 211 Write-Debug \"[$scriptName] - [functions] - [private] …\r\nPSModuleTest.psm1 213 Write-Debug \"[$scriptName] - [functions] - [private] …\r\nPSModuleTest.psm1 Get-InternalPSModule 230 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 232 Write-Debug \"[$scriptName] - [functions] - [private] …\r\nPSModuleTest.psm1 235 Write-Debug \"[$scriptName] - [functions] - [private] …\r\nPSModuleTest.psm1 Set-InternalPSModule 256 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 258 Write-Debug \"[$scriptName] - [functions] - [private] …\r\nPSModuleTest.psm1 260 Write-Debug \"[$scriptName] - [functions] - [private] …\r\nPSModuleTest.psm1 263 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 265 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 266 Register-ArgumentCompleter -CommandName New-PSModuleT…\r\nPSModuleTest.psm1 268 $null = $commandName, $parameterName, $wordToComplete…\r\nPSModuleTest.psm1 270 'Alice', 'Bob', 'Charlie'\r\nPSModuleTest.psm1 270 Where-Object { $_ -like \"$wordToComplete*\" }\r\nPSModuleTest.psm1 270 $_ -like \"$wordToComplete*\"\r\nPSModuleTest.psm1 270 ForEach-Object {…\r\nPSModuleTest.psm1 271 [System.Management.Automation.CompletionResult]::new(…\r\nPSModuleTest.psm1 274 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 277 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 Test-PSModuleTest 294 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 296 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 299 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 301 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 Get-PSModuleTest 323 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 325 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 328 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 New-PSModuleTest 358 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 361 New-Alias New-PSModuleTestAlias3 New-PSModuleTest\r\nPSModuleTest.psm1 362 New-Alias -Name New-PSModuleTestAlias4 -Value New-PSM…\r\nPSModuleTest.psm1 365 Set-Alias New-PSModuleTestAlias5 New-PSModuleTest\r\nPSModuleTest.psm1 366 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 368 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 371 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 373 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 Set-PSModuleTest 394 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 396 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 398 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 400 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 403 Write-Debug \"[$scriptName] - [variables] - [private] …\r\nPSModuleTest.psm1 405 Write-Debug \"[$scriptName] - [variables] - [private] …\r\nPSModuleTest.psm1 406 $script:HabitablePlanets = @(…\r\nPSModuleTest.psm1 407 @{…\r\nPSModuleTest.psm1 408 Name = 'Earth'\r\nPSModuleTest.psm1 409 Mass = 5.97\r\nPSModuleTest.psm1 410 Diameter = 12756\r\nPSModuleTest.psm1 411 DayLength = 24.0\r\nPSModuleTest.psm1 414 Name = 'Mars'\r\nPSModuleTest.psm1 415 Mass = 0.642\r\nPSModuleTest.psm1 416 Diameter = 6792\r\nPSModuleTest.psm1 417 DayLength = 24.7\r\nPSModuleTest.psm1 420 Name = 'Proxima Centauri b'\r\nPSModuleTest.psm1 421 Mass = 1.17\r\nPSModuleTest.psm1 422 Diameter = 11449\r\nPSModuleTest.psm1 423 DayLength = 5.15\r\nPSModuleTest.psm1 426 Name = 'Kepler-442b'\r\nPSModuleTest.psm1 427 Mass = 2.34\r\nPSModuleTest.psm1 428 Diameter = 11349\r\nPSModuleTest.psm1 429 DayLength = 5.7\r\nPSModuleTest.psm1 432 Name = 'Kepler-452b'\r\nPSModuleTest.psm1 433 Mass = 5.0\r\nPSModuleTest.psm1 434 Diameter = 17340\r\nPSModuleTest.psm1 435 DayLength = 20.0\r\nPSModuleTest.psm1 439 $script:InhabitedPlanets = @(…\r\nPSModuleTest.psm1 440 @{…\r\nPSModuleTest.psm1 441 Name = 'Earth'\r\nPSModuleTest.psm1 442 Mass = 5.97\r\nPSModuleTest.psm1 443 Diameter = 12756\r\nPSModuleTest.psm1 444 DayLength = 24.0\r\nPSModuleTest.psm1 447 Name = 'Mars'\r\nPSModuleTest.psm1 448 Mass = 0.642\r\nPSModuleTest.psm1 449 Diameter = 6792\r\nPSModuleTest.psm1 450 DayLength = 24.7\r\nPSModuleTest.psm1 453 Write-Debug \"[$scriptName] - [variables] - [private] …\r\nPSModuleTest.psm1 455 Write-Debug \"[$scriptName] - [variables] - [private] …\r\nPSModuleTest.psm1 458 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 460 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 461 $script:Moons = @(…\r\nPSModuleTest.psm1 462 @{…\r\nPSModuleTest.psm1 463 Planet = 'Earth'\r\nPSModuleTest.psm1 464 Name = 'Moon'\r\nPSModuleTest.psm1 467 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 470 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 471 $script:Planets = @(…\r\nPSModuleTest.psm1 472 @{…\r\nPSModuleTest.psm1 473 Name = 'Mercury'\r\nPSModuleTest.psm1 474 Mass = 0.330\r\nPSModuleTest.psm1 475 Diameter = 4879\r\nPSModuleTest.psm1 476 DayLength = 4222.6\r\nPSModuleTest.psm1 479 Name = 'Venus'\r\nPSModuleTest.psm1 480 Mass = 4.87\r\nPSModuleTest.psm1 481 Diameter = 12104\r\nPSModuleTest.psm1 482 DayLength = 2802.0\r\nPSModuleTest.psm1 485 Name = 'Earth'\r\nPSModuleTest.psm1 486 Mass = 5.97\r\nPSModuleTest.psm1 487 Diameter = 12756\r\nPSModuleTest.psm1 488 DayLength = 24.0\r\nPSModuleTest.psm1 491 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 494 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 495 $script:SolarSystems = @(…\r\nPSModuleTest.psm1 496 @{…\r\nPSModuleTest.psm1 497 Name = 'Solar System'\r\nPSModuleTest.psm1 498 Planets = $script:Planets\r\nPSModuleTest.psm1 499 Moons = $script:Moons\r\nPSModuleTest.psm1 502 Name = 'Alpha Centauri'\r\nPSModuleTest.psm1 503 Planets = @()\r\nPSModuleTest.psm1 504 Moons = @()\r\nPSModuleTest.psm1 507 Name = 'Sirius'\r\nPSModuleTest.psm1 508 Planets = @()\r\nPSModuleTest.psm1 509 Moons = @()\r\nPSModuleTest.psm1 512 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 514 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 517 Write-Debug \"[$scriptName] - [finally] - Importing\"\r\nPSModuleTest.psm1 518 Write-Verbose '------------------------------'\r\nPSModuleTest.psm1 519 Write-Verbose '--- THIS IS A LAST LOADER ---'\r\nPSModuleTest.psm1 520 Write-Verbose '------------------------------'\r\nPSModuleTest.psm1 521 Write-Debug \"[$scriptName] - [finally] - Done\"\r\nPSModuleTest.psm1 525 $TypeAcceleratorsClass = [psobject].Assembly.GetType(…\r\nPSModuleTest.psm1 530 $ExistingTypeAccelerators = $TypeAcceleratorsClass::G…\r\nPSModuleTest.psm1 532 $ExportableEnums = @(…\r\nPSModuleTest.psm1 533 [Binding]\r\nPSModuleTest.psm1 534 [Genre]\r\nPSModuleTest.psm1 536 $ExportableEnums\r\nPSModuleTest.psm1 536 Foreach-Object { Write-Verbose \"Exporting enum '$($_.…\r\nPSModuleTest.psm1 536 Write-Verbose \"Exporting enum '$($_.FullName)'.\"\r\nPSModuleTest.psm1 536 $_.FullName\r\nPSModuleTest.psm1 537 $ExportableEnums\r\nPSModuleTest.psm1 538 if ($Type.FullName -in $ExistingTypeAccelerators.Keys…\r\nPSModuleTest.psm1 539 Write-Verbose \"Enum already exists [$($Type.FullName)…\r\nPSModuleTest.psm1 539 $Type.FullName\r\nPSModuleTest.psm1 541 Write-Verbose \"Importing enum '$Type'.\"\r\nPSModuleTest.psm1 542 $TypeAcceleratorsClass::Add($Type.FullName, $Type)\r\nPSModuleTest.psm1 545 $ExportableClasses = @(…\r\nPSModuleTest.psm1 546 [Book]\r\nPSModuleTest.psm1 547 [BookList]\r\nPSModuleTest.psm1 549 $ExportableClasses\r\nPSModuleTest.psm1 549 Foreach-Object { Write-Verbose \"Exporting class '$($_…\r\nPSModuleTest.psm1 549 Write-Verbose \"Exporting class '$($_.FullName)'.\"\r\nPSModuleTest.psm1 549 $_.FullName\r\nPSModuleTest.psm1 550 $ExportableClasses\r\nPSModuleTest.psm1 551 if ($Type.FullName -in $ExistingTypeAccelerators.Keys…\r\nPSModuleTest.psm1 552 Write-Verbose \"Class already exists [$($Type.FullName…\r\nPSModuleTest.psm1 552 $Type.FullName\r\nPSModuleTest.psm1 554 Write-Verbose \"Importing class '$Type'.\"\r\nPSModuleTest.psm1 555 $TypeAcceleratorsClass::Add($Type.FullName, $Type)\r\nPSModuleTest.psm1 560 $MyInvocation.MyCommand.ScriptBlock.Module.OnRemove =…\r\nPSModuleTest.psm1 561 ($ExportableEnums + $ExportableClasses)\r\nPSModuleTest.psm1 561 $ExportableEnums + $ExportableClasses\r\nPSModuleTest.psm1 562 $TypeAcceleratorsClass::Remove($Type.FullName)\r\nPSModuleTest.psm1 567 $exports = @{…\r\nPSModuleTest.psm1 568 Alias = '*'\r\nPSModuleTest.psm1 569 Cmdlet = ''\r\nPSModuleTest.psm1 570 Function = @(…\r\nPSModuleTest.psm1 571 'Get-PSModuleTest'\r\nPSModuleTest.psm1 572 'New-PSModuleTest'\r\nPSModuleTest.psm1 573 'Set-PSModuleTest'\r\nPSModuleTest.psm1 574 'Test-PSModuleTest'\r\nPSModuleTest.psm1 576 Variable = @(…\r\nPSModuleTest.psm1 577 'Moons'\r\nPSModuleTest.psm1 578 'Planets'\r\nPSModuleTest.psm1 579 'SolarSystems'\r\nPSModuleTest.psm1 582 Export-ModuleMember @exports\r\nscripts\\loader.ps1 1 Write-Verbose '-------------------------'\r\nscripts\\loader.ps1 2 Write-Verbose '--- THIS IS A LOADER ---'\r\nscripts\\loader.ps1 3 Write-Verbose '-------------------------'\r\n\r\n\n","CommandsAnalyzedCount":263,"CommandsExecutedCount":0,"CommandsMissedCount":263,"FilesAnalyzedCount":3} diff --git a/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-Windows-CodeCoverage/Environments-Windows-CodeCoverage-Report.xml b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-Windows-CodeCoverage/Environments-Windows-CodeCoverage-Report.xml new file mode 100644 index 00000000..d27c6d45 --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-Windows-CodeCoverage/Environments-Windows-CodeCoverage-Report.xml @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-macOS-CodeCoverage/Environments-macOS-CodeCoverage-Report.json b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-macOS-CodeCoverage/Environments-macOS-CodeCoverage-Report.json new file mode 100644 index 00000000..b1c688de --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-macOS-CodeCoverage/Environments-macOS-CodeCoverage-Report.json @@ -0,0 +1 @@ +{"CommandsMissed":[{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1","Line":18,"StartLine":18,"EndLine":18,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-OtherPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":5,"StartLine":5,"EndLine":5,"StartColumn":13,"EndColumn":74,"Class":"","Function":"","Command":"$baseName = [System.IO.Path]::GetFileNameWithoutExtension($PSCommandPath)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":6,"StartLine":6,"EndLine":6,"StartColumn":24,"EndColumn":80,"Class":"","Function":"","Command":"$script:PSModuleInfo = Test-ModuleManifest -Path \"$PSScriptRoot\\$baseName.psd1\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":1,"EndColumn":21,"Class":"","Function":"","Command":"$script:PSModuleInfo","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":24,"EndColumn":35,"Class":"","Function":"","Command":"Format-List","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":38,"EndColumn":56,"Class":"","Function":"","Command":"Out-String -Stream","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":59,"EndColumn":92,"Class":"","Function":"","Command":"ForEach-Object { Write-Debug $_ }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":76,"EndColumn":90,"Class":"","Function":"","Command":"Write-Debug $_","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":8,"StartLine":8,"EndLine":8,"StartColumn":15,"EndColumn":40,"Class":"","Function":"","Command":"$scriptName = $script:PSModuleInfo.Name","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":9,"StartLine":9,"EndLine":9,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - Importing module\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":11,"StartLine":11,"EndLine":11,"StartColumn":1,"EndColumn":57,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":12,"StartLine":12,"EndLine":12,"StartColumn":15,"EndColumn":47,"Class":"","Function":"","Command":"$dataFolder = (Join-Path $PSScriptRoot 'data')","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":12,"StartLine":12,"EndLine":12,"StartColumn":16,"EndColumn":46,"Class":"","Function":"","Command":"Join-Path $PSScriptRoot 'data'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":13,"StartLine":13,"EndLine":13,"StartColumn":1,"EndColumn":53,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$dataFolder]\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":14,"StartLine":14,"EndLine":14,"StartColumn":1,"EndColumn":98,"Class":"","Function":"","Command":"Get-ChildItem -Path \"$dataFolder\" -Recurse -Force -Include '*.psd1' -ErrorAction SilentlyContinue","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":14,"StartLine":14,"EndLine":18,"StartColumn":101,"EndColumn":2,"Class":"","Function":"","Command":"ForEach-Object {\n Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Importing\"\n New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force\n Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Done\"\n}","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":15,"StartLine":15,"EndLine":15,"StartColumn":5,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":15,"StartLine":15,"EndLine":15,"StartColumn":46,"EndColumn":57,"Class":"","Function":"","Command":"$_.BaseName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":16,"StartLine":16,"EndLine":16,"StartColumn":5,"EndColumn":95,"Class":"","Function":"","Command":"New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":16,"StartLine":16,"EndLine":16,"StartColumn":44,"EndColumn":87,"Class":"","Function":"","Command":"Import-PowerShellDataFile -Path $_.FullName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":17,"StartLine":17,"EndLine":17,"StartColumn":5,"EndColumn":67,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":17,"StartLine":17,"EndLine":17,"StartColumn":46,"EndColumn":57,"Class":"","Function":"","Command":"$_.BaseName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":19,"StartLine":19,"EndLine":19,"StartColumn":1,"EndColumn":44,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":22,"StartLine":22,"EndLine":22,"StartColumn":1,"EndColumn":57,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":24,"StartLine":24,"EndLine":24,"StartColumn":1,"EndColumn":65,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - [initializer] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":25,"StartLine":25,"EndLine":25,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '-------------------------------'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":26,"StartLine":26,"EndLine":26,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS AN INITIALIZER ---'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":27,"StartLine":27,"EndLine":27,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '-------------------------------'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":28,"StartLine":28,"EndLine":28,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - [initializer] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":30,"StartLine":30,"EndLine":30,"StartColumn":1,"EndColumn":44,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":33,"StartLine":33,"EndLine":33,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":35,"StartLine":35,"EndLine":35,"StartColumn":1,"EndColumn":81,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - [SecretWriter] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":42,"StartLine":42,"EndLine":42,"StartColumn":23,"EndColumn":29,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Alias = $alias","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":43,"StartLine":43,"EndLine":43,"StartColumn":22,"EndColumn":27,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Name = $name","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":44,"StartLine":44,"EndLine":44,"StartColumn":24,"EndColumn":31,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Secret = $secret","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":48,"StartLine":48,"EndLine":48,"StartColumn":16,"EndColumn":27,"Class":"SecretWriter","Function":"GetAlias","Command":"return $this.Alias","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":51,"StartLine":51,"EndLine":51,"StartColumn":1,"EndColumn":76,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - [SecretWriter] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":53,"StartLine":53,"EndLine":53,"StartColumn":1,"EndColumn":59,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":56,"StartLine":56,"EndLine":56,"StartColumn":1,"EndColumn":71,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":58,"StartLine":58,"EndLine":58,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - [Book] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":69,"StartLine":69,"EndLine":69,"StartColumn":14,"EndColumn":29,"Class":"Book","Function":"Book","Command":"$this.Init(@{})","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":71,"StartLine":71,"EndLine":71,"StartColumn":36,"EndColumn":59,"Class":"Book","Function":"Book","Command":"$this.Init($Properties)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":9,"EndColumn":57,"Class":"Book","Function":"Book","Command":"$this.Init(@{Title = $Title; Author = $Author })","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":30,"EndColumn":36,"Class":"Book","Function":"Book","Command":"Title = $Title","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":47,"EndColumn":54,"Class":"Book","Function":"Book","Command":"Author = $Author","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":78,"StartLine":78,"EndLine":78,"StartColumn":31,"EndColumn":47,"Class":"Book","Function":"Init","Command":"$Properties.Keys","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":79,"StartLine":79,"EndLine":79,"StartColumn":31,"EndColumn":52,"Class":"Book","Function":"Init","Command":"$this.$Property = $Properties.$Property","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":84,"StartLine":84,"EndLine":84,"StartColumn":13,"EndColumn":34,"Class":"Book","Function":"GetReadingTime","Command":"if ($this.PageCount -le 0) {\n throw 'Unable to determine reading time from page count.'\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":85,"StartLine":85,"EndLine":85,"StartColumn":19,"EndColumn":70,"Class":"Book","Function":"GetReadingTime","Command":"throw 'Unable to determine reading time from page count.'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":87,"StartLine":87,"EndLine":87,"StartColumn":20,"EndColumn":39,"Class":"Book","Function":"GetReadingTime","Command":"$Minutes = $this.PageCount * 2","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":88,"StartLine":88,"EndLine":88,"StartColumn":16,"EndColumn":47,"Class":"Book","Function":"GetReadingTime","Command":"return [timespan]::new(0, $Minutes, 0)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":93,"StartLine":93,"EndLine":94,"StartColumn":13,"EndColumn":55,"Class":"Book","Function":"GetPublishedAge","Command":"if (\n $null -eq $this.PublishDate -or\n $this.PublishDate -eq [datetime]::MinValue\n ) { throw 'PublishDate not defined' }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":95,"StartLine":95,"EndLine":95,"StartColumn":19,"EndColumn":44,"Class":"Book","Function":"GetPublishedAge","Command":"throw 'PublishDate not defined'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":97,"StartLine":97,"EndLine":97,"StartColumn":16,"EndColumn":46,"Class":"Book","Function":"GetPublishedAge","Command":"return (Get-Date) - $this.PublishDate","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":97,"StartLine":97,"EndLine":97,"StartColumn":17,"EndColumn":25,"Class":"Book","Function":"GetPublishedAge","Command":"Get-Date","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":16,"EndColumn":79,"Class":"Book","Function":"ToString","Command":"return \"$($this.Title) by $($this.Author) ($($this.PublishDate.Year))\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":19,"EndColumn":30,"Class":"Book","Function":"ToString","Command":"$this.Title","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":37,"EndColumn":49,"Class":"Book","Function":"ToString","Command":"$this.Author","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":54,"EndColumn":76,"Class":"Book","Function":"ToString","Command":"$this.PublishDate.Year","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":110,"StartLine":110,"EndLine":110,"StartColumn":34,"EndColumn":64,"Class":"BookList","Function":"Initialize","Command":"[BookList]::Initialize($false)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":112,"StartLine":112,"EndLine":112,"StartColumn":13,"EndColumn":59,"Class":"BookList","Function":"Initialize","Command":"if ([BookList]::Books.Count -gt 0 -and -not $force) {\n return $false\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":113,"StartLine":113,"EndLine":113,"StartColumn":20,"EndColumn":26,"Class":"BookList","Function":"Initialize","Command":"return $false","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":116,"StartLine":116,"EndLine":116,"StartColumn":29,"EndColumn":75,"Class":"BookList","Function":"Initialize","Command":"[BookList]::Books = [System.Collections.Generic.List[Book]]::new()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":118,"StartLine":118,"EndLine":118,"StartColumn":16,"EndColumn":21,"Class":"BookList","Function":"Initialize","Command":"return $true","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":122,"StartLine":122,"EndLine":125,"StartColumn":19,"EndColumn":20,"Class":"BookList","Function":"Validate","Command":"$Prefix = @(\n 'Book validation failed: Book must be defined with the Title,'\n 'Author, and PublishDate properties, but'\n ) -join ' '","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":123,"StartLine":123,"EndLine":123,"StartColumn":13,"EndColumn":75,"Class":"BookList","Function":"Validate","Command":"'Book validation failed: Book must be defined with the Title,'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":124,"StartLine":124,"EndLine":124,"StartColumn":13,"EndColumn":54,"Class":"BookList","Function":"Validate","Command":"'Author, and PublishDate properties, but'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":126,"StartLine":126,"EndLine":126,"StartColumn":13,"EndColumn":28,"Class":"BookList","Function":"Validate","Command":"if ($null -eq $Book) { throw \"$Prefix was null\" }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":126,"StartLine":126,"EndLine":126,"StartColumn":38,"EndColumn":56,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix was null\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":127,"StartLine":127,"EndLine":127,"StartColumn":13,"EndColumn":49,"Class":"BookList","Function":"Validate","Command":"if ([string]::IsNullOrEmpty($Book.Title)) {\n throw \"$Prefix Title wasn't defined\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":128,"StartLine":128,"EndLine":128,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix Title wasn't defined\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":130,"StartLine":130,"EndLine":130,"StartColumn":13,"EndColumn":50,"Class":"BookList","Function":"Validate","Command":"if ([string]::IsNullOrEmpty($Book.Author)) {\n throw \"$Prefix Author wasn't defined\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":131,"StartLine":131,"EndLine":131,"StartColumn":19,"EndColumn":50,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix Author wasn't defined\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":133,"StartLine":133,"EndLine":133,"StartColumn":13,"EndColumn":55,"Class":"BookList","Function":"Validate","Command":"if ([datetime]::MinValue -eq $Book.PublishDate) {\n throw \"$Prefix PublishDate wasn't defined\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":134,"StartLine":134,"EndLine":134,"StartColumn":19,"EndColumn":55,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix PublishDate wasn't defined\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":140,"StartLine":140,"EndLine":140,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Add","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":141,"StartLine":141,"EndLine":141,"StartColumn":9,"EndColumn":36,"Class":"BookList","Function":"Add","Command":"[BookList]::Validate($Book)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":142,"StartLine":142,"EndLine":142,"StartColumn":13,"EndColumn":46,"Class":"BookList","Function":"Add","Command":"if ([BookList]::Books.Contains($Book)) {\n throw \"Book '$Book' already in list\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":143,"StartLine":143,"EndLine":143,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"throw \"Book '$Book' already in list\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":146,"StartLine":146,"EndLine":152,"StartColumn":26,"EndColumn":26,"Class":"BookList","Function":"Add","Command":"$FindPredicate = {\n param([Book]$b)\n\n $b.Title -eq $Book.Title -and\n $b.Author -eq $Book.Author -and\n $b.PublishDate -eq $Book.PublishDate\n }.GetNewClosure()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":149,"StartLine":149,"EndLine":151,"StartColumn":13,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"$b.Title -eq $Book.Title -and\n $b.Author -eq $Book.Author -and\n $b.PublishDate -eq $Book.PublishDate","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":153,"StartLine":153,"EndLine":153,"StartColumn":13,"EndColumn":51,"Class":"BookList","Function":"Add","Command":"if ([BookList]::Books.Find($FindPredicate)) {\n throw \"Book '$Book' already in list\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":154,"StartLine":154,"EndLine":154,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"throw \"Book '$Book' already in list\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":157,"StartLine":157,"EndLine":157,"StartColumn":9,"EndColumn":37,"Class":"BookList","Function":"Add","Command":"[BookList]::Books.Add($Book)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":161,"StartLine":161,"EndLine":161,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Clear","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":162,"StartLine":162,"EndLine":162,"StartColumn":9,"EndColumn":34,"Class":"BookList","Function":"Clear","Command":"[BookList]::Books.Clear()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":166,"StartLine":166,"EndLine":166,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Find","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":167,"StartLine":167,"EndLine":167,"StartColumn":16,"EndColumn":50,"Class":"BookList","Function":"Find","Command":"return [BookList]::Books.Find($Predicate)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":171,"StartLine":171,"EndLine":171,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"FindAll","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":172,"StartLine":172,"EndLine":172,"StartColumn":16,"EndColumn":53,"Class":"BookList","Function":"FindAll","Command":"return [BookList]::Books.FindAll($Predicate)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":176,"StartLine":176,"EndLine":176,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Remove","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":177,"StartLine":177,"EndLine":177,"StartColumn":9,"EndColumn":40,"Class":"BookList","Function":"Remove","Command":"[BookList]::Books.Remove($Book)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":181,"StartLine":181,"EndLine":181,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"RemoveBy","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":182,"StartLine":182,"EndLine":185,"StartColumn":18,"EndColumn":31,"Class":"BookList","Function":"RemoveBy","Command":"$Index = [BookList]::Books.FindIndex({\n param($b)\n $b.$Property -eq $Value\n }.GetNewClosure())","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":184,"StartLine":184,"EndLine":184,"StartColumn":17,"EndColumn":40,"Class":"BookList","Function":"RemoveBy","Command":"$b.$Property -eq $Value","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":186,"StartLine":186,"EndLine":186,"StartColumn":13,"EndColumn":25,"Class":"BookList","Function":"RemoveBy","Command":"if ($Index -ge 0) {\n [BookList]::Books.RemoveAt($Index)\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":187,"StartLine":187,"EndLine":187,"StartColumn":13,"EndColumn":47,"Class":"BookList","Function":"RemoveBy","Command":"[BookList]::Books.RemoveAt($Index)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":206,"StartLine":206,"EndLine":206,"StartColumn":1,"EndColumn":67,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - [Book] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":208,"StartLine":208,"EndLine":208,"StartColumn":1,"EndColumn":58,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":211,"StartLine":211,"EndLine":211,"StartColumn":1,"EndColumn":74,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":213,"StartLine":213,"EndLine":213,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Get-InternalPSModule] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":230,"StartLine":230,"EndLine":230,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-InternalPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":232,"StartLine":232,"EndLine":232,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Get-InternalPSModule] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":235,"StartLine":235,"EndLine":235,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Set-InternalPSModule] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":256,"StartLine":256,"EndLine":256,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Set-InternalPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":258,"StartLine":258,"EndLine":258,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Set-InternalPSModule] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":260,"StartLine":260,"EndLine":260,"StartColumn":1,"EndColumn":61,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":263,"StartLine":263,"EndLine":263,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":265,"StartLine":265,"EndLine":265,"StartColumn":1,"EndColumn":80,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [completers] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":266,"StartLine":266,"EndLine":273,"StartColumn":1,"EndColumn":2,"Class":"","Function":"","Command":"Register-ArgumentCompleter -CommandName New-PSModuleTest -ParameterName Name -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters\n\n 'Alice', 'Bob', 'Charlie' | Where-Object { $_ -like \"$wordToComplete*\" } | ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }\n}","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":268,"StartLine":268,"EndLine":268,"StartColumn":13,"EndColumn":93,"Class":"","Function":"","Command":"$null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":5,"EndColumn":30,"Class":"","Function":"","Command":"'Alice', 'Bob', 'Charlie'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":33,"EndColumn":77,"Class":"","Function":"","Command":"Where-Object { $_ -like \"$wordToComplete*\" }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":48,"EndColumn":75,"Class":"","Function":"","Command":"$_ -like \"$wordToComplete*\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":272,"StartColumn":80,"EndColumn":6,"Class":"","Function":"","Command":"ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":271,"StartLine":271,"EndLine":271,"StartColumn":9,"EndColumn":91,"Class":"","Function":"","Command":"[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":274,"StartLine":274,"EndLine":274,"StartColumn":1,"EndColumn":75,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [completers] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":277,"StartLine":277,"EndLine":277,"StartColumn":1,"EndColumn":87,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [Test-PSModuleTest] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":294,"StartLine":294,"EndLine":294,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Test-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":296,"StartLine":296,"EndLine":296,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [Test-PSModuleTest] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":299,"StartLine":299,"EndLine":299,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":301,"StartLine":301,"EndLine":301,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [Get-PSModuleTest] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":323,"StartLine":323,"EndLine":323,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":325,"StartLine":325,"EndLine":325,"StartColumn":1,"EndColumn":94,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [Get-PSModuleTest] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":328,"StartLine":328,"EndLine":328,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [New-PSModuleTest] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":358,"StartLine":358,"EndLine":358,"StartColumn":5,"EndColumn":33,"Class":"","Function":"New-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":361,"StartLine":361,"EndLine":361,"StartColumn":1,"EndColumn":50,"Class":"","Function":"","Command":"New-Alias New-PSModuleTestAlias3 New-PSModuleTest","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":362,"StartLine":362,"EndLine":362,"StartColumn":1,"EndColumn":63,"Class":"","Function":"","Command":"New-Alias -Name New-PSModuleTestAlias4 -Value New-PSModuleTest","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":365,"StartLine":365,"EndLine":365,"StartColumn":1,"EndColumn":50,"Class":"","Function":"","Command":"Set-Alias New-PSModuleTestAlias5 New-PSModuleTest","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":366,"StartLine":366,"EndLine":366,"StartColumn":1,"EndColumn":94,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [New-PSModuleTest] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":368,"StartLine":368,"EndLine":368,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":371,"StartLine":371,"EndLine":371,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":373,"StartLine":373,"EndLine":373,"StartColumn":1,"EndColumn":104,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - [Set-PSModuleTest] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":394,"StartLine":394,"EndLine":394,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Set-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":396,"StartLine":396,"EndLine":396,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - [Set-PSModuleTest] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":398,"StartLine":398,"EndLine":398,"StartColumn":1,"EndColumn":78,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":400,"StartLine":400,"EndLine":400,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":403,"StartLine":403,"EndLine":403,"StartColumn":1,"EndColumn":74,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":405,"StartLine":405,"EndLine":405,"StartColumn":1,"EndColumn":87,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - [PrivateVariables] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":406,"StartLine":406,"EndLine":437,"StartColumn":28,"EndColumn":2,"Class":"","Function":"","Command":"$script:HabitablePlanets = @(\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n },\n @{\n Name = 'Proxima Centauri b'\n Mass = 1.17\n Diameter = 11449\n DayLength = 5.15\n },\n @{\n Name = 'Kepler-442b'\n Mass = 2.34\n Diameter = 11349\n DayLength = 5.7\n },\n @{\n Name = 'Kepler-452b'\n Mass = 5.0\n Diameter = 17340\n DayLength = 20.0\n }\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":407,"StartLine":407,"EndLine":436,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n },\n @{\n Name = 'Proxima Centauri b'\n Mass = 1.17\n Diameter = 11449\n DayLength = 5.15\n },\n @{\n Name = 'Kepler-442b'\n Mass = 2.34\n Diameter = 11349\n DayLength = 5.7\n },\n @{\n Name = 'Kepler-452b'\n Mass = 5.0\n Diameter = 17340\n DayLength = 20.0\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":408,"StartLine":408,"EndLine":408,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":409,"StartLine":409,"EndLine":409,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":410,"StartLine":410,"EndLine":410,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":411,"StartLine":411,"EndLine":411,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":414,"StartLine":414,"EndLine":414,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Mars'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":415,"StartLine":415,"EndLine":415,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.642","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":416,"StartLine":416,"EndLine":416,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 6792","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":417,"StartLine":417,"EndLine":417,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.7","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":420,"StartLine":420,"EndLine":420,"StartColumn":21,"EndColumn":41,"Class":"","Function":"","Command":"Name = 'Proxima Centauri b'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":421,"StartLine":421,"EndLine":421,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 1.17","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":422,"StartLine":422,"EndLine":422,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 11449","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":423,"StartLine":423,"EndLine":423,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 5.15","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":426,"StartLine":426,"EndLine":426,"StartColumn":21,"EndColumn":34,"Class":"","Function":"","Command":"Name = 'Kepler-442b'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":427,"StartLine":427,"EndLine":427,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 2.34","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":428,"StartLine":428,"EndLine":428,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 11349","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":429,"StartLine":429,"EndLine":429,"StartColumn":21,"EndColumn":24,"Class":"","Function":"","Command":"DayLength = 5.7","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":432,"StartLine":432,"EndLine":432,"StartColumn":21,"EndColumn":34,"Class":"","Function":"","Command":"Name = 'Kepler-452b'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":433,"StartLine":433,"EndLine":433,"StartColumn":21,"EndColumn":24,"Class":"","Function":"","Command":"Mass = 5.0","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":434,"StartLine":434,"EndLine":434,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 17340","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":435,"StartLine":435,"EndLine":435,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 20.0","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":439,"StartLine":439,"EndLine":452,"StartColumn":28,"EndColumn":2,"Class":"","Function":"","Command":"$script:InhabitedPlanets = @(\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n }\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":440,"StartLine":440,"EndLine":451,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":441,"StartLine":441,"EndLine":441,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":442,"StartLine":442,"EndLine":442,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":443,"StartLine":443,"EndLine":443,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":444,"StartLine":444,"EndLine":444,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":447,"StartLine":447,"EndLine":447,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Mars'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":448,"StartLine":448,"EndLine":448,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.642","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":449,"StartLine":449,"EndLine":449,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 6792","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":450,"StartLine":450,"EndLine":450,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.7","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":453,"StartLine":453,"EndLine":453,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - [PrivateVariables] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":455,"StartLine":455,"EndLine":455,"StartColumn":1,"EndColumn":61,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":458,"StartLine":458,"EndLine":458,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":460,"StartLine":460,"EndLine":460,"StartColumn":1,"EndColumn":75,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Moons] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":461,"StartLine":461,"EndLine":466,"StartColumn":17,"EndColumn":2,"Class":"","Function":"","Command":"$script:Moons = @(\n @{\n Planet = 'Earth'\n Name = 'Moon'\n }\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":462,"StartLine":462,"EndLine":465,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Planet = 'Earth'\n Name = 'Moon'\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":463,"StartLine":463,"EndLine":463,"StartColumn":18,"EndColumn":25,"Class":"","Function":"","Command":"Planet = 'Earth'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":464,"StartLine":464,"EndLine":464,"StartColumn":18,"EndColumn":24,"Class":"","Function":"","Command":"Name = 'Moon'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":467,"StartLine":467,"EndLine":467,"StartColumn":1,"EndColumn":70,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Moons] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":470,"StartLine":470,"EndLine":470,"StartColumn":1,"EndColumn":77,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Planets] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":471,"StartLine":471,"EndLine":490,"StartColumn":19,"EndColumn":2,"Class":"","Function":"","Command":"$script:Planets = @(\n @{\n Name = 'Mercury'\n Mass = 0.330\n Diameter = 4879\n DayLength = 4222.6\n },\n @{\n Name = 'Venus'\n Mass = 4.87\n Diameter = 12104\n DayLength = 2802.0\n },\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n }\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":472,"StartLine":472,"EndLine":489,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Mercury'\n Mass = 0.330\n Diameter = 4879\n DayLength = 4222.6\n },\n @{\n Name = 'Venus'\n Mass = 4.87\n Diameter = 12104\n DayLength = 2802.0\n },\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":473,"StartLine":473,"EndLine":473,"StartColumn":21,"EndColumn":30,"Class":"","Function":"","Command":"Name = 'Mercury'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":474,"StartLine":474,"EndLine":474,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.330","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":475,"StartLine":475,"EndLine":475,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 4879","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":476,"StartLine":476,"EndLine":476,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"DayLength = 4222.6","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":479,"StartLine":479,"EndLine":479,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Venus'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":480,"StartLine":480,"EndLine":480,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 4.87","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":481,"StartLine":481,"EndLine":481,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12104","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":482,"StartLine":482,"EndLine":482,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"DayLength = 2802.0","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":485,"StartLine":485,"EndLine":485,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":486,"StartLine":486,"EndLine":486,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":487,"StartLine":487,"EndLine":487,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":488,"StartLine":488,"EndLine":488,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":491,"StartLine":491,"EndLine":491,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Planets] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":494,"StartLine":494,"EndLine":494,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [SolarSystems] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":495,"StartLine":495,"EndLine":511,"StartColumn":24,"EndColumn":2,"Class":"","Function":"","Command":"$script:SolarSystems = @(\n @{\n Name = 'Solar System'\n Planets = $script:Planets\n Moons = $script:Moons\n },\n @{\n Name = 'Alpha Centauri'\n Planets = @()\n Moons = @()\n },\n @{\n Name = 'Sirius'\n Planets = @()\n Moons = @()\n }\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":496,"StartLine":496,"EndLine":510,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Solar System'\n Planets = $script:Planets\n Moons = $script:Moons\n },\n @{\n Name = 'Alpha Centauri'\n Planets = @()\n Moons = @()\n },\n @{\n Name = 'Sirius'\n Planets = @()\n Moons = @()\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":497,"StartLine":497,"EndLine":497,"StartColumn":19,"EndColumn":33,"Class":"","Function":"","Command":"Name = 'Solar System'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":498,"StartLine":498,"EndLine":498,"StartColumn":19,"EndColumn":34,"Class":"","Function":"","Command":"Planets = $script:Planets","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":499,"StartLine":499,"EndLine":499,"StartColumn":19,"EndColumn":32,"Class":"","Function":"","Command":"Moons = $script:Moons","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":502,"StartLine":502,"EndLine":502,"StartColumn":19,"EndColumn":35,"Class":"","Function":"","Command":"Name = 'Alpha Centauri'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":503,"StartLine":503,"EndLine":503,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Planets = @()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":504,"StartLine":504,"EndLine":504,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Moons = @()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":507,"StartLine":507,"EndLine":507,"StartColumn":19,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Sirius'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":508,"StartLine":508,"EndLine":508,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Planets = @()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":509,"StartLine":509,"EndLine":509,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Moons = @()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":512,"StartLine":512,"EndLine":512,"StartColumn":1,"EndColumn":77,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [SolarSystems] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":514,"StartLine":514,"EndLine":514,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":517,"StartLine":517,"EndLine":517,"StartColumn":1,"EndColumn":52,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [finally] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":518,"StartLine":518,"EndLine":518,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '------------------------------'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":519,"StartLine":519,"EndLine":519,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS A LAST LOADER ---'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":520,"StartLine":520,"EndLine":520,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '------------------------------'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":521,"StartLine":521,"EndLine":521,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [finally] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":525,"StartLine":525,"EndLine":527,"StartColumn":26,"EndColumn":2,"Class":"","Function":"","Command":"$TypeAcceleratorsClass = [psobject].Assembly.GetType(\n 'System.Management.Automation.TypeAccelerators'\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":530,"StartLine":530,"EndLine":530,"StartColumn":29,"EndColumn":56,"Class":"","Function":"","Command":"$ExistingTypeAccelerators = $TypeAcceleratorsClass::Get","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":532,"StartLine":532,"EndLine":535,"StartColumn":20,"EndColumn":2,"Class":"","Function":"","Command":"$ExportableEnums = @(\n [Binding]\n [Genre]\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":533,"StartLine":533,"EndLine":533,"StartColumn":5,"EndColumn":14,"Class":"","Function":"","Command":"[Binding]","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":534,"StartLine":534,"EndLine":534,"StartColumn":5,"EndColumn":12,"Class":"","Function":"","Command":"[Genre]","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":1,"EndColumn":17,"Class":"","Function":"","Command":"$ExportableEnums","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":20,"EndColumn":87,"Class":"","Function":"","Command":"Foreach-Object { Write-Verbose \"Exporting enum '$($_.FullName)'.\" }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":37,"EndColumn":85,"Class":"","Function":"","Command":"Write-Verbose \"Exporting enum '$($_.FullName)'.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":70,"EndColumn":81,"Class":"","Function":"","Command":"$_.FullName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":537,"StartLine":537,"EndLine":537,"StartColumn":19,"EndColumn":35,"Class":"","Function":"","Command":"$ExportableEnums","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":538,"StartLine":538,"EndLine":538,"StartColumn":9,"EndColumn":58,"Class":"","Function":"","Command":"if ($Type.FullName -in $ExistingTypeAccelerators.Keys) {\n Write-Verbose \"Enum already exists [$($Type.FullName)]. Skipping.\"\n } else {\n Write-Verbose \"Importing enum '$Type'.\"\n $TypeAcceleratorsClass::Add($Type.FullName, $Type)\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":539,"StartLine":539,"EndLine":539,"StartColumn":9,"EndColumn":75,"Class":"","Function":"","Command":"Write-Verbose \"Enum already exists [$($Type.FullName)]. Skipping.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":539,"StartLine":539,"EndLine":539,"StartColumn":47,"EndColumn":61,"Class":"","Function":"","Command":"$Type.FullName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":541,"StartLine":541,"EndLine":541,"StartColumn":9,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose \"Importing enum '$Type'.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":542,"StartLine":542,"EndLine":542,"StartColumn":9,"EndColumn":59,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Add($Type.FullName, $Type)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":545,"StartLine":545,"EndLine":548,"StartColumn":22,"EndColumn":2,"Class":"","Function":"","Command":"$ExportableClasses = @(\n [Book]\n [BookList]\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":546,"StartLine":546,"EndLine":546,"StartColumn":5,"EndColumn":11,"Class":"","Function":"","Command":"[Book]","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":547,"StartLine":547,"EndLine":547,"StartColumn":5,"EndColumn":15,"Class":"","Function":"","Command":"[BookList]","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":1,"EndColumn":19,"Class":"","Function":"","Command":"$ExportableClasses","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":22,"EndColumn":90,"Class":"","Function":"","Command":"Foreach-Object { Write-Verbose \"Exporting class '$($_.FullName)'.\" }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":39,"EndColumn":88,"Class":"","Function":"","Command":"Write-Verbose \"Exporting class '$($_.FullName)'.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":73,"EndColumn":84,"Class":"","Function":"","Command":"$_.FullName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":550,"StartLine":550,"EndLine":550,"StartColumn":19,"EndColumn":37,"Class":"","Function":"","Command":"$ExportableClasses","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":551,"StartLine":551,"EndLine":551,"StartColumn":9,"EndColumn":58,"Class":"","Function":"","Command":"if ($Type.FullName -in $ExistingTypeAccelerators.Keys) {\n Write-Verbose \"Class already exists [$($Type.FullName)]. Skipping.\"\n } else {\n Write-Verbose \"Importing class '$Type'.\"\n $TypeAcceleratorsClass::Add($Type.FullName, $Type)\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":552,"StartLine":552,"EndLine":552,"StartColumn":9,"EndColumn":76,"Class":"","Function":"","Command":"Write-Verbose \"Class already exists [$($Type.FullName)]. Skipping.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":552,"StartLine":552,"EndLine":552,"StartColumn":48,"EndColumn":62,"Class":"","Function":"","Command":"$Type.FullName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":554,"StartLine":554,"EndLine":554,"StartColumn":9,"EndColumn":49,"Class":"","Function":"","Command":"Write-Verbose \"Importing class '$Type'.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":555,"StartLine":555,"EndLine":555,"StartColumn":9,"EndColumn":59,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Add($Type.FullName, $Type)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":560,"StartLine":560,"EndLine":564,"StartColumn":55,"EndColumn":18,"Class":"","Function":"","Command":"$MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = {\n foreach ($Type in ($ExportableEnums + $ExportableClasses)) {\n $TypeAcceleratorsClass::Remove($Type.FullName)\n }\n}.GetNewClosure()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":561,"StartLine":561,"EndLine":561,"StartColumn":23,"EndColumn":62,"Class":"","Function":"","Command":"($ExportableEnums + $ExportableClasses)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":561,"StartLine":561,"EndLine":561,"StartColumn":24,"EndColumn":61,"Class":"","Function":"","Command":"$ExportableEnums + $ExportableClasses","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":562,"StartLine":562,"EndLine":562,"StartColumn":9,"EndColumn":55,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Remove($Type.FullName)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":567,"StartLine":567,"EndLine":581,"StartColumn":12,"EndColumn":2,"Class":"","Function":"","Command":"$exports = @{\n Alias = '*'\n Cmdlet = ''\n Function = @(\n 'Get-PSModuleTest'\n 'New-PSModuleTest'\n 'Set-PSModuleTest'\n 'Test-PSModuleTest'\n )\n Variable = @(\n 'Moons'\n 'Planets'\n 'SolarSystems'\n )\n}","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":568,"StartLine":568,"EndLine":568,"StartColumn":16,"EndColumn":19,"Class":"","Function":"","Command":"Alias = '*'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":569,"StartLine":569,"EndLine":569,"StartColumn":16,"EndColumn":18,"Class":"","Function":"","Command":"Cmdlet = ''","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":570,"StartLine":570,"EndLine":575,"StartColumn":16,"EndColumn":6,"Class":"","Function":"","Command":"Function = @(\n 'Get-PSModuleTest'\n 'New-PSModuleTest'\n 'Set-PSModuleTest'\n 'Test-PSModuleTest'\n )","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":571,"StartLine":571,"EndLine":571,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'Get-PSModuleTest'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":572,"StartLine":572,"EndLine":572,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'New-PSModuleTest'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":573,"StartLine":573,"EndLine":573,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'Set-PSModuleTest'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":574,"StartLine":574,"EndLine":574,"StartColumn":9,"EndColumn":28,"Class":"","Function":"","Command":"'Test-PSModuleTest'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":576,"StartLine":576,"EndLine":580,"StartColumn":16,"EndColumn":6,"Class":"","Function":"","Command":"Variable = @(\n 'Moons'\n 'Planets'\n 'SolarSystems'\n )","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":577,"StartLine":577,"EndLine":577,"StartColumn":9,"EndColumn":16,"Class":"","Function":"","Command":"'Moons'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":578,"StartLine":578,"EndLine":578,"StartColumn":9,"EndColumn":18,"Class":"","Function":"","Command":"'Planets'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":579,"StartLine":579,"EndLine":579,"StartColumn":9,"EndColumn":23,"Class":"","Function":"","Command":"'SolarSystems'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":582,"StartLine":582,"EndLine":582,"StartColumn":1,"EndColumn":29,"Class":"","Function":"","Command":"Export-ModuleMember @exports","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1","Line":1,"StartLine":1,"EndLine":1,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '-------------------------'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1","Line":2,"StartLine":2,"EndLine":2,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS A LOADER ---'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1","Line":3,"StartLine":3,"EndLine":3,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '-------------------------'","HitCount":0}],"CommandsExecuted":[],"FilesAnalyzed":["/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1","/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1"],"CoveragePercent":0.0,"CoveragePercentTarget":0.0,"CoverageReport":"Covered 0% / 0%. 263 analyzed Commands in 3 Files.\n Missed commands:\n \n\u001b[32;1mFile \u001b[0m\u001b[32;1m Class \u001b[0m\u001b[32;1m Function \u001b[0m\u001b[32;1m Line\u001b[0m\u001b[32;1m Command\u001b[0m\n\u001b[32;1m---- \u001b[0m \u001b[32;1m----- \u001b[0m \u001b[32;1m-------- \u001b[0m \u001b[32;1m----\u001b[0m \u001b[32;1m-------\u001b[0m\nmodules/OtherPSModule.psm1 Get-OtherPSModule 18 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 5 $baseName = [System.IO.Path]::GetFileNameWithoutExten…\nPSModuleTest.psm1 6 $script:PSModuleInfo = Test-ModuleManifest -Path \"$PS…\nPSModuleTest.psm1 7 $script:PSModuleInfo\nPSModuleTest.psm1 7 Format-List\nPSModuleTest.psm1 7 Out-String -Stream\nPSModuleTest.psm1 7 ForEach-Object { Write-Debug $_ }\nPSModuleTest.psm1 7 Write-Debug $_\nPSModuleTest.psm1 8 $scriptName = $script:PSModuleInfo.Name\nPSModuleTest.psm1 9 Write-Debug \"[$scriptName] - Importing module\"\nPSModuleTest.psm1 11 Write-Debug \"[$scriptName] - [data] - Processing fold…\nPSModuleTest.psm1 12 $dataFolder = (Join-Path $PSScriptRoot 'data')\nPSModuleTest.psm1 12 Join-Path $PSScriptRoot 'data'\nPSModuleTest.psm1 13 Write-Debug \"[$scriptName] - [data] - [$dataFolder]\"\nPSModuleTest.psm1 14 Get-ChildItem -Path \"$dataFolder\" -Recurse -Force -In…\nPSModuleTest.psm1 14 ForEach-Object {…\nPSModuleTest.psm1 15 Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)…\nPSModuleTest.psm1 15 $_.BaseName\nPSModuleTest.psm1 16 New-Variable -Name $_.BaseName -Value (Import-PowerSh…\nPSModuleTest.psm1 16 Import-PowerShellDataFile -Path $_.FullName\nPSModuleTest.psm1 17 Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)…\nPSModuleTest.psm1 17 $_.BaseName\nPSModuleTest.psm1 19 Write-Debug \"[$scriptName] - [data] - Done\"\nPSModuleTest.psm1 22 Write-Debug \"[$scriptName] - [init] - Processing fold…\nPSModuleTest.psm1 24 Write-Debug \"[$scriptName] - [init] - [initializer] -…\nPSModuleTest.psm1 25 Write-Verbose '-------------------------------'\nPSModuleTest.psm1 26 Write-Verbose '--- THIS IS AN INITIALIZER ---'\nPSModuleTest.psm1 27 Write-Verbose '-------------------------------'\nPSModuleTest.psm1 28 Write-Debug \"[$scriptName] - [init] - [initializer] -…\nPSModuleTest.psm1 30 Write-Debug \"[$scriptName] - [init] - Done\"\nPSModuleTest.psm1 33 Write-Debug \"[$scriptName] - [classes] - [private] - …\nPSModuleTest.psm1 35 Write-Debug \"[$scriptName] - [classes] - [private] - …\nPSModuleTest.psm1 SecretWriter SecretWriter 42 $this.Alias = $alias\nPSModuleTest.psm1 SecretWriter SecretWriter 43 $this.Name = $name\nPSModuleTest.psm1 SecretWriter SecretWriter 44 $this.Secret = $secret\nPSModuleTest.psm1 SecretWriter GetAlias 48 return $this.Alias\nPSModuleTest.psm1 51 Write-Debug \"[$scriptName] - [classes] - [private] - …\nPSModuleTest.psm1 53 Write-Debug \"[$scriptName] - [classes] - [private] - …\nPSModuleTest.psm1 56 Write-Debug \"[$scriptName] - [classes] - [public] - P…\nPSModuleTest.psm1 58 Write-Debug \"[$scriptName] - [classes] - [public] - […\nPSModuleTest.psm1 Book Book 69 $this.Init(@{})\nPSModuleTest.psm1 Book Book 71 $this.Init($Properties)\nPSModuleTest.psm1 Book Book 74 $this.Init(@{Title = $Title; Author = $Author })\nPSModuleTest.psm1 Book Book 74 Title = $Title\nPSModuleTest.psm1 Book Book 74 Author = $Author\nPSModuleTest.psm1 Book Init 78 $Properties.Keys\nPSModuleTest.psm1 Book Init 79 $this.$Property = $Properties.$Property\nPSModuleTest.psm1 Book GetReadingTime 84 if ($this.PageCount -le 0) {…\nPSModuleTest.psm1 Book GetReadingTime 85 throw 'Unable to determine reading time from page cou…\nPSModuleTest.psm1 Book GetReadingTime 87 $Minutes = $this.PageCount * 2\nPSModuleTest.psm1 Book GetReadingTime 88 return [timespan]::new(0, $Minutes, 0)\nPSModuleTest.psm1 Book GetPublishedAge 93 if (…\nPSModuleTest.psm1 Book GetPublishedAge 95 throw 'PublishDate not defined'\nPSModuleTest.psm1 Book GetPublishedAge 97 return (Get-Date) - $this.PublishDate\nPSModuleTest.psm1 Book GetPublishedAge 97 Get-Date\nPSModuleTest.psm1 Book ToString 101 return \"$($this.Title) by $($this.Author) ($($this.Pu…\nPSModuleTest.psm1 Book ToString 101 $this.Title\nPSModuleTest.psm1 Book ToString 101 $this.Author\nPSModuleTest.psm1 Book ToString 101 $this.PublishDate.Year\nPSModuleTest.psm1 BookList Initialize 110 [BookList]::Initialize($false)\nPSModuleTest.psm1 BookList Initialize 112 if ([BookList]::Books.Count -gt 0 -and -not $force) {…\nPSModuleTest.psm1 BookList Initialize 113 return $false\nPSModuleTest.psm1 BookList Initialize 116 [BookList]::Books = [System.Collections.Generic.List[…\nPSModuleTest.psm1 BookList Initialize 118 return $true\nPSModuleTest.psm1 BookList Validate 122 $Prefix = @(…\nPSModuleTest.psm1 BookList Validate 123 'Book validation failed: Book must be defined with th…\nPSModuleTest.psm1 BookList Validate 124 'Author, and PublishDate properties, but'\nPSModuleTest.psm1 BookList Validate 126 if ($null -eq $Book) { throw \"$Prefix was null\" }\nPSModuleTest.psm1 BookList Validate 126 throw \"$Prefix was null\"\nPSModuleTest.psm1 BookList Validate 127 if ([string]::IsNullOrEmpty($Book.Title)) {…\nPSModuleTest.psm1 BookList Validate 128 throw \"$Prefix Title wasn't defined\"\nPSModuleTest.psm1 BookList Validate 130 if ([string]::IsNullOrEmpty($Book.Author)) {…\nPSModuleTest.psm1 BookList Validate 131 throw \"$Prefix Author wasn't defined\"\nPSModuleTest.psm1 BookList Validate 133 if ([datetime]::MinValue -eq $Book.PublishDate) {…\nPSModuleTest.psm1 BookList Validate 134 throw \"$Prefix PublishDate wasn't defined\"\nPSModuleTest.psm1 BookList Add 140 [BookList]::Initialize()\nPSModuleTest.psm1 BookList Add 141 [BookList]::Validate($Book)\nPSModuleTest.psm1 BookList Add 142 if ([BookList]::Books.Contains($Book)) {…\nPSModuleTest.psm1 BookList Add 143 throw \"Book '$Book' already in list\"\nPSModuleTest.psm1 BookList Add 146 $FindPredicate = {…\nPSModuleTest.psm1 BookList Add 149 $b.Title -eq $Book.Title -and…\nPSModuleTest.psm1 BookList Add 153 if ([BookList]::Books.Find($FindPredicate)) {…\nPSModuleTest.psm1 BookList Add 154 throw \"Book '$Book' already in list\"\nPSModuleTest.psm1 BookList Add 157 [BookList]::Books.Add($Book)\nPSModuleTest.psm1 BookList Clear 161 [BookList]::Initialize()\nPSModuleTest.psm1 BookList Clear 162 [BookList]::Books.Clear()\nPSModuleTest.psm1 BookList Find 166 [BookList]::Initialize()\nPSModuleTest.psm1 BookList Find 167 return [BookList]::Books.Find($Predicate)\nPSModuleTest.psm1 BookList FindAll 171 [BookList]::Initialize()\nPSModuleTest.psm1 BookList FindAll 172 return [BookList]::Books.FindAll($Predicate)\nPSModuleTest.psm1 BookList Remove 176 [BookList]::Initialize()\nPSModuleTest.psm1 BookList Remove 177 [BookList]::Books.Remove($Book)\nPSModuleTest.psm1 BookList RemoveBy 181 [BookList]::Initialize()\nPSModuleTest.psm1 BookList RemoveBy 182 $Index = [BookList]::Books.FindIndex({…\nPSModuleTest.psm1 BookList RemoveBy 184 $b.$Property -eq $Value\nPSModuleTest.psm1 BookList RemoveBy 186 if ($Index -ge 0) {…\nPSModuleTest.psm1 BookList RemoveBy 187 [BookList]::Books.RemoveAt($Index)\nPSModuleTest.psm1 206 Write-Debug \"[$scriptName] - [classes] - [public] - […\nPSModuleTest.psm1 208 Write-Debug \"[$scriptName] - [classes] - [public] - D…\nPSModuleTest.psm1 211 Write-Debug \"[$scriptName] - [functions] - [private] …\nPSModuleTest.psm1 213 Write-Debug \"[$scriptName] - [functions] - [private] …\nPSModuleTest.psm1 Get-InternalPSModule 230 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 232 Write-Debug \"[$scriptName] - [functions] - [private] …\nPSModuleTest.psm1 235 Write-Debug \"[$scriptName] - [functions] - [private] …\nPSModuleTest.psm1 Set-InternalPSModule 256 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 258 Write-Debug \"[$scriptName] - [functions] - [private] …\nPSModuleTest.psm1 260 Write-Debug \"[$scriptName] - [functions] - [private] …\nPSModuleTest.psm1 263 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 265 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 266 Register-ArgumentCompleter -CommandName New-PSModuleT…\nPSModuleTest.psm1 268 $null = $commandName, $parameterName, $wordToComplete…\nPSModuleTest.psm1 270 'Alice', 'Bob', 'Charlie'\nPSModuleTest.psm1 270 Where-Object { $_ -like \"$wordToComplete*\" }\nPSModuleTest.psm1 270 $_ -like \"$wordToComplete*\"\nPSModuleTest.psm1 270 ForEach-Object {…\nPSModuleTest.psm1 271 [System.Management.Automation.CompletionResult]::new(…\nPSModuleTest.psm1 274 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 277 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 Test-PSModuleTest 294 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 296 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 299 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 301 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 Get-PSModuleTest 323 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 325 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 328 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 New-PSModuleTest 358 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 361 New-Alias New-PSModuleTestAlias3 New-PSModuleTest\nPSModuleTest.psm1 362 New-Alias -Name New-PSModuleTestAlias4 -Value New-PSM…\nPSModuleTest.psm1 365 Set-Alias New-PSModuleTestAlias5 New-PSModuleTest\nPSModuleTest.psm1 366 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 368 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 371 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 373 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 Set-PSModuleTest 394 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 396 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 398 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 400 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 403 Write-Debug \"[$scriptName] - [variables] - [private] …\nPSModuleTest.psm1 405 Write-Debug \"[$scriptName] - [variables] - [private] …\nPSModuleTest.psm1 406 $script:HabitablePlanets = @(…\nPSModuleTest.psm1 407 @{…\nPSModuleTest.psm1 408 Name = 'Earth'\nPSModuleTest.psm1 409 Mass = 5.97\nPSModuleTest.psm1 410 Diameter = 12756\nPSModuleTest.psm1 411 DayLength = 24.0\nPSModuleTest.psm1 414 Name = 'Mars'\nPSModuleTest.psm1 415 Mass = 0.642\nPSModuleTest.psm1 416 Diameter = 6792\nPSModuleTest.psm1 417 DayLength = 24.7\nPSModuleTest.psm1 420 Name = 'Proxima Centauri b'\nPSModuleTest.psm1 421 Mass = 1.17\nPSModuleTest.psm1 422 Diameter = 11449\nPSModuleTest.psm1 423 DayLength = 5.15\nPSModuleTest.psm1 426 Name = 'Kepler-442b'\nPSModuleTest.psm1 427 Mass = 2.34\nPSModuleTest.psm1 428 Diameter = 11349\nPSModuleTest.psm1 429 DayLength = 5.7\nPSModuleTest.psm1 432 Name = 'Kepler-452b'\nPSModuleTest.psm1 433 Mass = 5.0\nPSModuleTest.psm1 434 Diameter = 17340\nPSModuleTest.psm1 435 DayLength = 20.0\nPSModuleTest.psm1 439 $script:InhabitedPlanets = @(…\nPSModuleTest.psm1 440 @{…\nPSModuleTest.psm1 441 Name = 'Earth'\nPSModuleTest.psm1 442 Mass = 5.97\nPSModuleTest.psm1 443 Diameter = 12756\nPSModuleTest.psm1 444 DayLength = 24.0\nPSModuleTest.psm1 447 Name = 'Mars'\nPSModuleTest.psm1 448 Mass = 0.642\nPSModuleTest.psm1 449 Diameter = 6792\nPSModuleTest.psm1 450 DayLength = 24.7\nPSModuleTest.psm1 453 Write-Debug \"[$scriptName] - [variables] - [private] …\nPSModuleTest.psm1 455 Write-Debug \"[$scriptName] - [variables] - [private] …\nPSModuleTest.psm1 458 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 460 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 461 $script:Moons = @(…\nPSModuleTest.psm1 462 @{…\nPSModuleTest.psm1 463 Planet = 'Earth'\nPSModuleTest.psm1 464 Name = 'Moon'\nPSModuleTest.psm1 467 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 470 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 471 $script:Planets = @(…\nPSModuleTest.psm1 472 @{…\nPSModuleTest.psm1 473 Name = 'Mercury'\nPSModuleTest.psm1 474 Mass = 0.330\nPSModuleTest.psm1 475 Diameter = 4879\nPSModuleTest.psm1 476 DayLength = 4222.6\nPSModuleTest.psm1 479 Name = 'Venus'\nPSModuleTest.psm1 480 Mass = 4.87\nPSModuleTest.psm1 481 Diameter = 12104\nPSModuleTest.psm1 482 DayLength = 2802.0\nPSModuleTest.psm1 485 Name = 'Earth'\nPSModuleTest.psm1 486 Mass = 5.97\nPSModuleTest.psm1 487 Diameter = 12756\nPSModuleTest.psm1 488 DayLength = 24.0\nPSModuleTest.psm1 491 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 494 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 495 $script:SolarSystems = @(…\nPSModuleTest.psm1 496 @{…\nPSModuleTest.psm1 497 Name = 'Solar System'\nPSModuleTest.psm1 498 Planets = $script:Planets\nPSModuleTest.psm1 499 Moons = $script:Moons\nPSModuleTest.psm1 502 Name = 'Alpha Centauri'\nPSModuleTest.psm1 503 Planets = @()\nPSModuleTest.psm1 504 Moons = @()\nPSModuleTest.psm1 507 Name = 'Sirius'\nPSModuleTest.psm1 508 Planets = @()\nPSModuleTest.psm1 509 Moons = @()\nPSModuleTest.psm1 512 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 514 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 517 Write-Debug \"[$scriptName] - [finally] - Importing\"\nPSModuleTest.psm1 518 Write-Verbose '------------------------------'\nPSModuleTest.psm1 519 Write-Verbose '--- THIS IS A LAST LOADER ---'\nPSModuleTest.psm1 520 Write-Verbose '------------------------------'\nPSModuleTest.psm1 521 Write-Debug \"[$scriptName] - [finally] - Done\"\nPSModuleTest.psm1 525 $TypeAcceleratorsClass = [psobject].Assembly.GetType(…\nPSModuleTest.psm1 530 $ExistingTypeAccelerators = $TypeAcceleratorsClass::G…\nPSModuleTest.psm1 532 $ExportableEnums = @(…\nPSModuleTest.psm1 533 [Binding]\nPSModuleTest.psm1 534 [Genre]\nPSModuleTest.psm1 536 $ExportableEnums\nPSModuleTest.psm1 536 Foreach-Object { Write-Verbose \"Exporting enum '$($_.…\nPSModuleTest.psm1 536 Write-Verbose \"Exporting enum '$($_.FullName)'.\"\nPSModuleTest.psm1 536 $_.FullName\nPSModuleTest.psm1 537 $ExportableEnums\nPSModuleTest.psm1 538 if ($Type.FullName -in $ExistingTypeAccelerators.Keys…\nPSModuleTest.psm1 539 Write-Verbose \"Enum already exists [$($Type.FullName)…\nPSModuleTest.psm1 539 $Type.FullName\nPSModuleTest.psm1 541 Write-Verbose \"Importing enum '$Type'.\"\nPSModuleTest.psm1 542 $TypeAcceleratorsClass::Add($Type.FullName, $Type)\nPSModuleTest.psm1 545 $ExportableClasses = @(…\nPSModuleTest.psm1 546 [Book]\nPSModuleTest.psm1 547 [BookList]\nPSModuleTest.psm1 549 $ExportableClasses\nPSModuleTest.psm1 549 Foreach-Object { Write-Verbose \"Exporting class '$($_…\nPSModuleTest.psm1 549 Write-Verbose \"Exporting class '$($_.FullName)'.\"\nPSModuleTest.psm1 549 $_.FullName\nPSModuleTest.psm1 550 $ExportableClasses\nPSModuleTest.psm1 551 if ($Type.FullName -in $ExistingTypeAccelerators.Keys…\nPSModuleTest.psm1 552 Write-Verbose \"Class already exists [$($Type.FullName…\nPSModuleTest.psm1 552 $Type.FullName\nPSModuleTest.psm1 554 Write-Verbose \"Importing class '$Type'.\"\nPSModuleTest.psm1 555 $TypeAcceleratorsClass::Add($Type.FullName, $Type)\nPSModuleTest.psm1 560 $MyInvocation.MyCommand.ScriptBlock.Module.OnRemove =…\nPSModuleTest.psm1 561 ($ExportableEnums + $ExportableClasses)\nPSModuleTest.psm1 561 $ExportableEnums + $ExportableClasses\nPSModuleTest.psm1 562 $TypeAcceleratorsClass::Remove($Type.FullName)\nPSModuleTest.psm1 567 $exports = @{…\nPSModuleTest.psm1 568 Alias = '*'\nPSModuleTest.psm1 569 Cmdlet = ''\nPSModuleTest.psm1 570 Function = @(…\nPSModuleTest.psm1 571 'Get-PSModuleTest'\nPSModuleTest.psm1 572 'New-PSModuleTest'\nPSModuleTest.psm1 573 'Set-PSModuleTest'\nPSModuleTest.psm1 574 'Test-PSModuleTest'\nPSModuleTest.psm1 576 Variable = @(…\nPSModuleTest.psm1 577 'Moons'\nPSModuleTest.psm1 578 'Planets'\nPSModuleTest.psm1 579 'SolarSystems'\nPSModuleTest.psm1 582 Export-ModuleMember @exports\nscripts/loader.ps1 1 Write-Verbose '-------------------------'\nscripts/loader.ps1 2 Write-Verbose '--- THIS IS A LOADER ---'\nscripts/loader.ps1 3 Write-Verbose '-------------------------'\n\n\n","CommandsAnalyzedCount":263,"CommandsExecutedCount":0,"CommandsMissedCount":263,"FilesAnalyzedCount":3} diff --git a/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-macOS-CodeCoverage/Environments-macOS-CodeCoverage-Report.xml b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-macOS-CodeCoverage/Environments-macOS-CodeCoverage-Report.xml new file mode 100644 index 00000000..7a511348 --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Environments-macOS-CodeCoverage/Environments-macOS-CodeCoverage-Report.xml @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-Windows-CodeCoverage/Module-Windows-CodeCoverage-Report.json b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-Windows-CodeCoverage/Module-Windows-CodeCoverage-Report.json new file mode 100644 index 00000000..1f42c344 --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-Windows-CodeCoverage/Module-Windows-CodeCoverage-Report.json @@ -0,0 +1 @@ +{"CommandsMissed":[{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\modules\\OtherPSModule.psm1","Line":18,"StartLine":18,"EndLine":18,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-OtherPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":42,"StartLine":42,"EndLine":42,"StartColumn":23,"EndColumn":29,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Alias = $alias","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":43,"StartLine":43,"EndLine":43,"StartColumn":22,"EndColumn":27,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Name = $name","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":44,"StartLine":44,"EndLine":44,"StartColumn":24,"EndColumn":31,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Secret = $secret","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":48,"StartLine":48,"EndLine":48,"StartColumn":16,"EndColumn":27,"Class":"SecretWriter","Function":"GetAlias","Command":"return $this.Alias","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":69,"StartLine":69,"EndLine":69,"StartColumn":14,"EndColumn":29,"Class":"Book","Function":"Book","Command":"$this.Init(@{})","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":71,"StartLine":71,"EndLine":71,"StartColumn":36,"EndColumn":59,"Class":"Book","Function":"Book","Command":"$this.Init($Properties)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":9,"EndColumn":57,"Class":"Book","Function":"Book","Command":"$this.Init(@{Title = $Title; Author = $Author })","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":30,"EndColumn":36,"Class":"Book","Function":"Book","Command":"Title = $Title","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":47,"EndColumn":54,"Class":"Book","Function":"Book","Command":"Author = $Author","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":78,"StartLine":78,"EndLine":78,"StartColumn":31,"EndColumn":47,"Class":"Book","Function":"Init","Command":"$Properties.Keys","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":79,"StartLine":79,"EndLine":79,"StartColumn":31,"EndColumn":52,"Class":"Book","Function":"Init","Command":"$this.$Property = $Properties.$Property","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":84,"StartLine":84,"EndLine":84,"StartColumn":13,"EndColumn":34,"Class":"Book","Function":"GetReadingTime","Command":"if ($this.PageCount -le 0) {\n throw 'Unable to determine reading time from page count.'\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":85,"StartLine":85,"EndLine":85,"StartColumn":19,"EndColumn":70,"Class":"Book","Function":"GetReadingTime","Command":"throw 'Unable to determine reading time from page count.'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":87,"StartLine":87,"EndLine":87,"StartColumn":20,"EndColumn":39,"Class":"Book","Function":"GetReadingTime","Command":"$Minutes = $this.PageCount * 2","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":88,"StartLine":88,"EndLine":88,"StartColumn":16,"EndColumn":47,"Class":"Book","Function":"GetReadingTime","Command":"return [timespan]::new(0, $Minutes, 0)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":93,"StartLine":93,"EndLine":94,"StartColumn":13,"EndColumn":55,"Class":"Book","Function":"GetPublishedAge","Command":"if (\n $null -eq $this.PublishDate -or\n $this.PublishDate -eq [datetime]::MinValue\n ) { throw 'PublishDate not defined' }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":95,"StartLine":95,"EndLine":95,"StartColumn":19,"EndColumn":44,"Class":"Book","Function":"GetPublishedAge","Command":"throw 'PublishDate not defined'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":97,"StartLine":97,"EndLine":97,"StartColumn":16,"EndColumn":46,"Class":"Book","Function":"GetPublishedAge","Command":"return (Get-Date) - $this.PublishDate","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":97,"StartLine":97,"EndLine":97,"StartColumn":17,"EndColumn":25,"Class":"Book","Function":"GetPublishedAge","Command":"Get-Date","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":16,"EndColumn":79,"Class":"Book","Function":"ToString","Command":"return \"$($this.Title) by $($this.Author) ($($this.PublishDate.Year))\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":19,"EndColumn":30,"Class":"Book","Function":"ToString","Command":"$this.Title","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":37,"EndColumn":49,"Class":"Book","Function":"ToString","Command":"$this.Author","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":54,"EndColumn":76,"Class":"Book","Function":"ToString","Command":"$this.PublishDate.Year","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":110,"StartLine":110,"EndLine":110,"StartColumn":34,"EndColumn":64,"Class":"BookList","Function":"Initialize","Command":"[BookList]::Initialize($false)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":112,"StartLine":112,"EndLine":112,"StartColumn":13,"EndColumn":59,"Class":"BookList","Function":"Initialize","Command":"if ([BookList]::Books.Count -gt 0 -and -not $force) {\n return $false\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":113,"StartLine":113,"EndLine":113,"StartColumn":20,"EndColumn":26,"Class":"BookList","Function":"Initialize","Command":"return $false","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":116,"StartLine":116,"EndLine":116,"StartColumn":29,"EndColumn":75,"Class":"BookList","Function":"Initialize","Command":"[BookList]::Books = [System.Collections.Generic.List[Book]]::new()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":118,"StartLine":118,"EndLine":118,"StartColumn":16,"EndColumn":21,"Class":"BookList","Function":"Initialize","Command":"return $true","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":122,"StartLine":122,"EndLine":125,"StartColumn":19,"EndColumn":20,"Class":"BookList","Function":"Validate","Command":"$Prefix = @(\n 'Book validation failed: Book must be defined with the Title,'\n 'Author, and PublishDate properties, but'\n ) -join ' '","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":123,"StartLine":123,"EndLine":123,"StartColumn":13,"EndColumn":75,"Class":"BookList","Function":"Validate","Command":"'Book validation failed: Book must be defined with the Title,'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":124,"StartLine":124,"EndLine":124,"StartColumn":13,"EndColumn":54,"Class":"BookList","Function":"Validate","Command":"'Author, and PublishDate properties, but'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":126,"StartLine":126,"EndLine":126,"StartColumn":13,"EndColumn":28,"Class":"BookList","Function":"Validate","Command":"if ($null -eq $Book) { throw \"$Prefix was null\" }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":126,"StartLine":126,"EndLine":126,"StartColumn":38,"EndColumn":56,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix was null\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":127,"StartLine":127,"EndLine":127,"StartColumn":13,"EndColumn":49,"Class":"BookList","Function":"Validate","Command":"if ([string]::IsNullOrEmpty($Book.Title)) {\n throw \"$Prefix Title wasn't defined\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":128,"StartLine":128,"EndLine":128,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix Title wasn't defined\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":130,"StartLine":130,"EndLine":130,"StartColumn":13,"EndColumn":50,"Class":"BookList","Function":"Validate","Command":"if ([string]::IsNullOrEmpty($Book.Author)) {\n throw \"$Prefix Author wasn't defined\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":131,"StartLine":131,"EndLine":131,"StartColumn":19,"EndColumn":50,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix Author wasn't defined\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":133,"StartLine":133,"EndLine":133,"StartColumn":13,"EndColumn":55,"Class":"BookList","Function":"Validate","Command":"if ([datetime]::MinValue -eq $Book.PublishDate) {\n throw \"$Prefix PublishDate wasn't defined\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":134,"StartLine":134,"EndLine":134,"StartColumn":19,"EndColumn":55,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix PublishDate wasn't defined\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":140,"StartLine":140,"EndLine":140,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Add","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":141,"StartLine":141,"EndLine":141,"StartColumn":9,"EndColumn":36,"Class":"BookList","Function":"Add","Command":"[BookList]::Validate($Book)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":142,"StartLine":142,"EndLine":142,"StartColumn":13,"EndColumn":46,"Class":"BookList","Function":"Add","Command":"if ([BookList]::Books.Contains($Book)) {\n throw \"Book '$Book' already in list\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":143,"StartLine":143,"EndLine":143,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"throw \"Book '$Book' already in list\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":146,"StartLine":146,"EndLine":152,"StartColumn":26,"EndColumn":26,"Class":"BookList","Function":"Add","Command":"$FindPredicate = {\n param([Book]$b)\n\n $b.Title -eq $Book.Title -and\n $b.Author -eq $Book.Author -and\n $b.PublishDate -eq $Book.PublishDate\n }.GetNewClosure()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":149,"StartLine":149,"EndLine":151,"StartColumn":13,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"$b.Title -eq $Book.Title -and\n $b.Author -eq $Book.Author -and\n $b.PublishDate -eq $Book.PublishDate","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":153,"StartLine":153,"EndLine":153,"StartColumn":13,"EndColumn":51,"Class":"BookList","Function":"Add","Command":"if ([BookList]::Books.Find($FindPredicate)) {\n throw \"Book '$Book' already in list\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":154,"StartLine":154,"EndLine":154,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"throw \"Book '$Book' already in list\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":157,"StartLine":157,"EndLine":157,"StartColumn":9,"EndColumn":37,"Class":"BookList","Function":"Add","Command":"[BookList]::Books.Add($Book)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":161,"StartLine":161,"EndLine":161,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Clear","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":162,"StartLine":162,"EndLine":162,"StartColumn":9,"EndColumn":34,"Class":"BookList","Function":"Clear","Command":"[BookList]::Books.Clear()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":166,"StartLine":166,"EndLine":166,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Find","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":167,"StartLine":167,"EndLine":167,"StartColumn":16,"EndColumn":50,"Class":"BookList","Function":"Find","Command":"return [BookList]::Books.Find($Predicate)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":171,"StartLine":171,"EndLine":171,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"FindAll","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":172,"StartLine":172,"EndLine":172,"StartColumn":16,"EndColumn":53,"Class":"BookList","Function":"FindAll","Command":"return [BookList]::Books.FindAll($Predicate)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":176,"StartLine":176,"EndLine":176,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Remove","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":177,"StartLine":177,"EndLine":177,"StartColumn":9,"EndColumn":40,"Class":"BookList","Function":"Remove","Command":"[BookList]::Books.Remove($Book)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":181,"StartLine":181,"EndLine":181,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"RemoveBy","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":182,"StartLine":182,"EndLine":185,"StartColumn":18,"EndColumn":31,"Class":"BookList","Function":"RemoveBy","Command":"$Index = [BookList]::Books.FindIndex({\n param($b)\n $b.$Property -eq $Value\n }.GetNewClosure())","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":184,"StartLine":184,"EndLine":184,"StartColumn":17,"EndColumn":40,"Class":"BookList","Function":"RemoveBy","Command":"$b.$Property -eq $Value","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":186,"StartLine":186,"EndLine":186,"StartColumn":13,"EndColumn":25,"Class":"BookList","Function":"RemoveBy","Command":"if ($Index -ge 0) {\n [BookList]::Books.RemoveAt($Index)\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":187,"StartLine":187,"EndLine":187,"StartColumn":13,"EndColumn":47,"Class":"BookList","Function":"RemoveBy","Command":"[BookList]::Books.RemoveAt($Index)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":230,"StartLine":230,"EndLine":230,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-InternalPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":256,"StartLine":256,"EndLine":256,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Set-InternalPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":268,"StartLine":268,"EndLine":268,"StartColumn":13,"EndColumn":93,"Class":"","Function":"","Command":"$null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":5,"EndColumn":30,"Class":"","Function":"","Command":"'Alice', 'Bob', 'Charlie'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":33,"EndColumn":77,"Class":"","Function":"","Command":"Where-Object { $_ -like \"$wordToComplete*\" }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":48,"EndColumn":75,"Class":"","Function":"","Command":"$_ -like \"$wordToComplete*\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":272,"StartColumn":80,"EndColumn":6,"Class":"","Function":"","Command":"ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":271,"StartLine":271,"EndLine":271,"StartColumn":9,"EndColumn":91,"Class":"","Function":"","Command":"[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":294,"StartLine":294,"EndLine":294,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Test-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":323,"StartLine":323,"EndLine":323,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":358,"StartLine":358,"EndLine":358,"StartColumn":5,"EndColumn":33,"Class":"","Function":"New-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":394,"StartLine":394,"EndLine":394,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Set-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":539,"StartLine":539,"EndLine":539,"StartColumn":9,"EndColumn":75,"Class":"","Function":"","Command":"Write-Verbose \"Enum already exists [$($Type.FullName)]. Skipping.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":539,"StartLine":539,"EndLine":539,"StartColumn":47,"EndColumn":61,"Class":"","Function":"","Command":"$Type.FullName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":552,"StartLine":552,"EndLine":552,"StartColumn":9,"EndColumn":76,"Class":"","Function":"","Command":"Write-Verbose \"Class already exists [$($Type.FullName)]. Skipping.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":552,"StartLine":552,"EndLine":552,"StartColumn":48,"EndColumn":62,"Class":"","Function":"","Command":"$Type.FullName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":560,"StartLine":560,"EndLine":564,"StartColumn":55,"EndColumn":18,"Class":"","Function":"","Command":"$MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = {\n foreach ($Type in ($ExportableEnums + $ExportableClasses)) {\n $TypeAcceleratorsClass::Remove($Type.FullName)\n }\n}.GetNewClosure()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":561,"StartLine":561,"EndLine":561,"StartColumn":23,"EndColumn":62,"Class":"","Function":"","Command":"($ExportableEnums + $ExportableClasses)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":561,"StartLine":561,"EndLine":561,"StartColumn":24,"EndColumn":61,"Class":"","Function":"","Command":"$ExportableEnums + $ExportableClasses","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":562,"StartLine":562,"EndLine":562,"StartColumn":9,"EndColumn":55,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Remove($Type.FullName)","HitCount":0}],"CommandsExecuted":[{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":5,"StartLine":5,"EndLine":5,"StartColumn":13,"EndColumn":74,"Class":"","Function":"","Command":"$baseName = [System.IO.Path]::GetFileNameWithoutExtension($PSCommandPath)","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":6,"StartLine":6,"EndLine":6,"StartColumn":24,"EndColumn":80,"Class":"","Function":"","Command":"$script:PSModuleInfo = Test-ModuleManifest -Path \"$PSScriptRoot\\$baseName.psd1\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":1,"EndColumn":21,"Class":"","Function":"","Command":"$script:PSModuleInfo","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":24,"EndColumn":35,"Class":"","Function":"","Command":"Format-List","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":38,"EndColumn":56,"Class":"","Function":"","Command":"Out-String -Stream","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":59,"EndColumn":92,"Class":"","Function":"","Command":"ForEach-Object { Write-Debug $_ }","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":76,"EndColumn":90,"Class":"","Function":"","Command":"Write-Debug $_","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":8,"StartLine":8,"EndLine":8,"StartColumn":15,"EndColumn":40,"Class":"","Function":"","Command":"$scriptName = $script:PSModuleInfo.Name","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":9,"StartLine":9,"EndLine":9,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - Importing module\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":11,"StartLine":11,"EndLine":11,"StartColumn":1,"EndColumn":57,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - Processing folder\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":12,"StartLine":12,"EndLine":12,"StartColumn":15,"EndColumn":47,"Class":"","Function":"","Command":"$dataFolder = (Join-Path $PSScriptRoot 'data')","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":12,"StartLine":12,"EndLine":12,"StartColumn":16,"EndColumn":46,"Class":"","Function":"","Command":"Join-Path $PSScriptRoot 'data'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":13,"StartLine":13,"EndLine":13,"StartColumn":1,"EndColumn":53,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$dataFolder]\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":14,"StartLine":14,"EndLine":14,"StartColumn":1,"EndColumn":98,"Class":"","Function":"","Command":"Get-ChildItem -Path \"$dataFolder\" -Recurse -Force -Include '*.psd1' -ErrorAction SilentlyContinue","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":14,"StartLine":14,"EndLine":18,"StartColumn":101,"EndColumn":2,"Class":"","Function":"","Command":"ForEach-Object {\n Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Importing\"\n New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force\n Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Done\"\n}","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":15,"StartLine":15,"EndLine":15,"StartColumn":5,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":15,"StartLine":15,"EndLine":15,"StartColumn":46,"EndColumn":57,"Class":"","Function":"","Command":"$_.BaseName","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":16,"StartLine":16,"EndLine":16,"StartColumn":5,"EndColumn":95,"Class":"","Function":"","Command":"New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":16,"StartLine":16,"EndLine":16,"StartColumn":44,"EndColumn":87,"Class":"","Function":"","Command":"Import-PowerShellDataFile -Path $_.FullName","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":17,"StartLine":17,"EndLine":17,"StartColumn":5,"EndColumn":67,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":17,"StartLine":17,"EndLine":17,"StartColumn":46,"EndColumn":57,"Class":"","Function":"","Command":"$_.BaseName","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":19,"StartLine":19,"EndLine":19,"StartColumn":1,"EndColumn":44,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":22,"StartLine":22,"EndLine":22,"StartColumn":1,"EndColumn":57,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - Processing folder\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":24,"StartLine":24,"EndLine":24,"StartColumn":1,"EndColumn":65,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - [initializer] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":25,"StartLine":25,"EndLine":25,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '-------------------------------'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":26,"StartLine":26,"EndLine":26,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS AN INITIALIZER ---'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":27,"StartLine":27,"EndLine":27,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '-------------------------------'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":28,"StartLine":28,"EndLine":28,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - [initializer] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":30,"StartLine":30,"EndLine":30,"StartColumn":1,"EndColumn":44,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":33,"StartLine":33,"EndLine":33,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - Processing folder\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":35,"StartLine":35,"EndLine":35,"StartColumn":1,"EndColumn":81,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - [SecretWriter] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":51,"StartLine":51,"EndLine":51,"StartColumn":1,"EndColumn":76,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - [SecretWriter] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":53,"StartLine":53,"EndLine":53,"StartColumn":1,"EndColumn":59,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":56,"StartLine":56,"EndLine":56,"StartColumn":1,"EndColumn":71,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - Processing folder\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":58,"StartLine":58,"EndLine":58,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - [Book] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":206,"StartLine":206,"EndLine":206,"StartColumn":1,"EndColumn":67,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - [Book] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":208,"StartLine":208,"EndLine":208,"StartColumn":1,"EndColumn":58,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":211,"StartLine":211,"EndLine":211,"StartColumn":1,"EndColumn":74,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - Processing folder\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":213,"StartLine":213,"EndLine":213,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Get-InternalPSModule] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":232,"StartLine":232,"EndLine":232,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Get-InternalPSModule] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":235,"StartLine":235,"EndLine":235,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Set-InternalPSModule] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":258,"StartLine":258,"EndLine":258,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Set-InternalPSModule] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":260,"StartLine":260,"EndLine":260,"StartColumn":1,"EndColumn":61,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":263,"StartLine":263,"EndLine":263,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - Processing folder\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":265,"StartLine":265,"EndLine":265,"StartColumn":1,"EndColumn":80,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [completers] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":266,"StartLine":266,"EndLine":273,"StartColumn":1,"EndColumn":2,"Class":"","Function":"","Command":"Register-ArgumentCompleter -CommandName New-PSModuleTest -ParameterName Name -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters\n\n 'Alice', 'Bob', 'Charlie' | Where-Object { $_ -like \"$wordToComplete*\" } | ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }\n}","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":274,"StartLine":274,"EndLine":274,"StartColumn":1,"EndColumn":75,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [completers] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":277,"StartLine":277,"EndLine":277,"StartColumn":1,"EndColumn":87,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [Test-PSModuleTest] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":296,"StartLine":296,"EndLine":296,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [Test-PSModuleTest] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":299,"StartLine":299,"EndLine":299,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - Processing folder\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":301,"StartLine":301,"EndLine":301,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [Get-PSModuleTest] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":325,"StartLine":325,"EndLine":325,"StartColumn":1,"EndColumn":94,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [Get-PSModuleTest] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":328,"StartLine":328,"EndLine":328,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [New-PSModuleTest] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":361,"StartLine":361,"EndLine":361,"StartColumn":1,"EndColumn":50,"Class":"","Function":"","Command":"New-Alias New-PSModuleTestAlias3 New-PSModuleTest","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":362,"StartLine":362,"EndLine":362,"StartColumn":1,"EndColumn":63,"Class":"","Function":"","Command":"New-Alias -Name New-PSModuleTestAlias4 -Value New-PSModuleTest","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":365,"StartLine":365,"EndLine":365,"StartColumn":1,"EndColumn":50,"Class":"","Function":"","Command":"Set-Alias New-PSModuleTestAlias5 New-PSModuleTest","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":366,"StartLine":366,"EndLine":366,"StartColumn":1,"EndColumn":94,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [New-PSModuleTest] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":368,"StartLine":368,"EndLine":368,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":371,"StartLine":371,"EndLine":371,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - Processing folder\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":373,"StartLine":373,"EndLine":373,"StartColumn":1,"EndColumn":104,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - [Set-PSModuleTest] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":396,"StartLine":396,"EndLine":396,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - [Set-PSModuleTest] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":398,"StartLine":398,"EndLine":398,"StartColumn":1,"EndColumn":78,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":400,"StartLine":400,"EndLine":400,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":403,"StartLine":403,"EndLine":403,"StartColumn":1,"EndColumn":74,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - Processing folder\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":405,"StartLine":405,"EndLine":405,"StartColumn":1,"EndColumn":87,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - [PrivateVariables] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":406,"StartLine":406,"EndLine":437,"StartColumn":28,"EndColumn":2,"Class":"","Function":"","Command":"$script:HabitablePlanets = @(\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n },\n @{\n Name = 'Proxima Centauri b'\n Mass = 1.17\n Diameter = 11449\n DayLength = 5.15\n },\n @{\n Name = 'Kepler-442b'\n Mass = 2.34\n Diameter = 11349\n DayLength = 5.7\n },\n @{\n Name = 'Kepler-452b'\n Mass = 5.0\n Diameter = 17340\n DayLength = 20.0\n }\n)","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":407,"StartLine":407,"EndLine":436,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n },\n @{\n Name = 'Proxima Centauri b'\n Mass = 1.17\n Diameter = 11449\n DayLength = 5.15\n },\n @{\n Name = 'Kepler-442b'\n Mass = 2.34\n Diameter = 11349\n DayLength = 5.7\n },\n @{\n Name = 'Kepler-452b'\n Mass = 5.0\n Diameter = 17340\n DayLength = 20.0\n }","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":408,"StartLine":408,"EndLine":408,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":409,"StartLine":409,"EndLine":409,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":410,"StartLine":410,"EndLine":410,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":411,"StartLine":411,"EndLine":411,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":414,"StartLine":414,"EndLine":414,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Mars'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":415,"StartLine":415,"EndLine":415,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.642","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":416,"StartLine":416,"EndLine":416,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 6792","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":417,"StartLine":417,"EndLine":417,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.7","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":420,"StartLine":420,"EndLine":420,"StartColumn":21,"EndColumn":41,"Class":"","Function":"","Command":"Name = 'Proxima Centauri b'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":421,"StartLine":421,"EndLine":421,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 1.17","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":422,"StartLine":422,"EndLine":422,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 11449","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":423,"StartLine":423,"EndLine":423,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 5.15","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":426,"StartLine":426,"EndLine":426,"StartColumn":21,"EndColumn":34,"Class":"","Function":"","Command":"Name = 'Kepler-442b'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":427,"StartLine":427,"EndLine":427,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 2.34","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":428,"StartLine":428,"EndLine":428,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 11349","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":429,"StartLine":429,"EndLine":429,"StartColumn":21,"EndColumn":24,"Class":"","Function":"","Command":"DayLength = 5.7","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":432,"StartLine":432,"EndLine":432,"StartColumn":21,"EndColumn":34,"Class":"","Function":"","Command":"Name = 'Kepler-452b'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":433,"StartLine":433,"EndLine":433,"StartColumn":21,"EndColumn":24,"Class":"","Function":"","Command":"Mass = 5.0","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":434,"StartLine":434,"EndLine":434,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 17340","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":435,"StartLine":435,"EndLine":435,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 20.0","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":439,"StartLine":439,"EndLine":452,"StartColumn":28,"EndColumn":2,"Class":"","Function":"","Command":"$script:InhabitedPlanets = @(\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n }\n)","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":440,"StartLine":440,"EndLine":451,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n }","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":441,"StartLine":441,"EndLine":441,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":442,"StartLine":442,"EndLine":442,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":443,"StartLine":443,"EndLine":443,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":444,"StartLine":444,"EndLine":444,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":447,"StartLine":447,"EndLine":447,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Mars'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":448,"StartLine":448,"EndLine":448,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.642","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":449,"StartLine":449,"EndLine":449,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 6792","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":450,"StartLine":450,"EndLine":450,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.7","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":453,"StartLine":453,"EndLine":453,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - [PrivateVariables] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":455,"StartLine":455,"EndLine":455,"StartColumn":1,"EndColumn":61,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":458,"StartLine":458,"EndLine":458,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - Processing folder\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":460,"StartLine":460,"EndLine":460,"StartColumn":1,"EndColumn":75,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Moons] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":461,"StartLine":461,"EndLine":466,"StartColumn":17,"EndColumn":2,"Class":"","Function":"","Command":"$script:Moons = @(\n @{\n Planet = 'Earth'\n Name = 'Moon'\n }\n)","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":462,"StartLine":462,"EndLine":465,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Planet = 'Earth'\n Name = 'Moon'\n }","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":463,"StartLine":463,"EndLine":463,"StartColumn":18,"EndColumn":25,"Class":"","Function":"","Command":"Planet = 'Earth'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":464,"StartLine":464,"EndLine":464,"StartColumn":18,"EndColumn":24,"Class":"","Function":"","Command":"Name = 'Moon'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":467,"StartLine":467,"EndLine":467,"StartColumn":1,"EndColumn":70,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Moons] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":470,"StartLine":470,"EndLine":470,"StartColumn":1,"EndColumn":77,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Planets] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":471,"StartLine":471,"EndLine":490,"StartColumn":19,"EndColumn":2,"Class":"","Function":"","Command":"$script:Planets = @(\n @{\n Name = 'Mercury'\n Mass = 0.330\n Diameter = 4879\n DayLength = 4222.6\n },\n @{\n Name = 'Venus'\n Mass = 4.87\n Diameter = 12104\n DayLength = 2802.0\n },\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n }\n)","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":472,"StartLine":472,"EndLine":489,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Mercury'\n Mass = 0.330\n Diameter = 4879\n DayLength = 4222.6\n },\n @{\n Name = 'Venus'\n Mass = 4.87\n Diameter = 12104\n DayLength = 2802.0\n },\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n }","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":473,"StartLine":473,"EndLine":473,"StartColumn":21,"EndColumn":30,"Class":"","Function":"","Command":"Name = 'Mercury'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":474,"StartLine":474,"EndLine":474,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.330","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":475,"StartLine":475,"EndLine":475,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 4879","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":476,"StartLine":476,"EndLine":476,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"DayLength = 4222.6","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":479,"StartLine":479,"EndLine":479,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Venus'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":480,"StartLine":480,"EndLine":480,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 4.87","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":481,"StartLine":481,"EndLine":481,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12104","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":482,"StartLine":482,"EndLine":482,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"DayLength = 2802.0","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":485,"StartLine":485,"EndLine":485,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":486,"StartLine":486,"EndLine":486,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":487,"StartLine":487,"EndLine":487,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":488,"StartLine":488,"EndLine":488,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":491,"StartLine":491,"EndLine":491,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Planets] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":494,"StartLine":494,"EndLine":494,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [SolarSystems] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":495,"StartLine":495,"EndLine":511,"StartColumn":24,"EndColumn":2,"Class":"","Function":"","Command":"$script:SolarSystems = @(\n @{\n Name = 'Solar System'\n Planets = $script:Planets\n Moons = $script:Moons\n },\n @{\n Name = 'Alpha Centauri'\n Planets = @()\n Moons = @()\n },\n @{\n Name = 'Sirius'\n Planets = @()\n Moons = @()\n }\n)","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":496,"StartLine":496,"EndLine":510,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Solar System'\n Planets = $script:Planets\n Moons = $script:Moons\n },\n @{\n Name = 'Alpha Centauri'\n Planets = @()\n Moons = @()\n },\n @{\n Name = 'Sirius'\n Planets = @()\n Moons = @()\n }","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":497,"StartLine":497,"EndLine":497,"StartColumn":19,"EndColumn":33,"Class":"","Function":"","Command":"Name = 'Solar System'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":498,"StartLine":498,"EndLine":498,"StartColumn":19,"EndColumn":34,"Class":"","Function":"","Command":"Planets = $script:Planets","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":499,"StartLine":499,"EndLine":499,"StartColumn":19,"EndColumn":32,"Class":"","Function":"","Command":"Moons = $script:Moons","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":502,"StartLine":502,"EndLine":502,"StartColumn":19,"EndColumn":35,"Class":"","Function":"","Command":"Name = 'Alpha Centauri'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":503,"StartLine":503,"EndLine":503,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Planets = @()","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":504,"StartLine":504,"EndLine":504,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Moons = @()","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":507,"StartLine":507,"EndLine":507,"StartColumn":19,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Sirius'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":508,"StartLine":508,"EndLine":508,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Planets = @()","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":509,"StartLine":509,"EndLine":509,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Moons = @()","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":512,"StartLine":512,"EndLine":512,"StartColumn":1,"EndColumn":77,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [SolarSystems] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":514,"StartLine":514,"EndLine":514,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":517,"StartLine":517,"EndLine":517,"StartColumn":1,"EndColumn":52,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [finally] - Importing\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":518,"StartLine":518,"EndLine":518,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '------------------------------'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":519,"StartLine":519,"EndLine":519,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS A LAST LOADER ---'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":520,"StartLine":520,"EndLine":520,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '------------------------------'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":521,"StartLine":521,"EndLine":521,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [finally] - Done\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":525,"StartLine":525,"EndLine":527,"StartColumn":26,"EndColumn":2,"Class":"","Function":"","Command":"$TypeAcceleratorsClass = [psobject].Assembly.GetType(\n 'System.Management.Automation.TypeAccelerators'\n)","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":530,"StartLine":530,"EndLine":530,"StartColumn":29,"EndColumn":56,"Class":"","Function":"","Command":"$ExistingTypeAccelerators = $TypeAcceleratorsClass::Get","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":532,"StartLine":532,"EndLine":535,"StartColumn":20,"EndColumn":2,"Class":"","Function":"","Command":"$ExportableEnums = @(\n [Binding]\n [Genre]\n)","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":533,"StartLine":533,"EndLine":533,"StartColumn":5,"EndColumn":14,"Class":"","Function":"","Command":"[Binding]","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":534,"StartLine":534,"EndLine":534,"StartColumn":5,"EndColumn":12,"Class":"","Function":"","Command":"[Genre]","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":1,"EndColumn":17,"Class":"","Function":"","Command":"$ExportableEnums","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":20,"EndColumn":87,"Class":"","Function":"","Command":"Foreach-Object { Write-Verbose \"Exporting enum '$($_.FullName)'.\" }","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":37,"EndColumn":85,"Class":"","Function":"","Command":"Write-Verbose \"Exporting enum '$($_.FullName)'.\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":70,"EndColumn":81,"Class":"","Function":"","Command":"$_.FullName","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":537,"StartLine":537,"EndLine":537,"StartColumn":19,"EndColumn":35,"Class":"","Function":"","Command":"$ExportableEnums","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":538,"StartLine":538,"EndLine":538,"StartColumn":9,"EndColumn":58,"Class":"","Function":"","Command":"if ($Type.FullName -in $ExistingTypeAccelerators.Keys) {\n Write-Verbose \"Enum already exists [$($Type.FullName)]. Skipping.\"\n } else {\n Write-Verbose \"Importing enum '$Type'.\"\n $TypeAcceleratorsClass::Add($Type.FullName, $Type)\n }","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":541,"StartLine":541,"EndLine":541,"StartColumn":9,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose \"Importing enum '$Type'.\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":542,"StartLine":542,"EndLine":542,"StartColumn":9,"EndColumn":59,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Add($Type.FullName, $Type)","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":545,"StartLine":545,"EndLine":548,"StartColumn":22,"EndColumn":2,"Class":"","Function":"","Command":"$ExportableClasses = @(\n [Book]\n [BookList]\n)","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":546,"StartLine":546,"EndLine":546,"StartColumn":5,"EndColumn":11,"Class":"","Function":"","Command":"[Book]","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":547,"StartLine":547,"EndLine":547,"StartColumn":5,"EndColumn":15,"Class":"","Function":"","Command":"[BookList]","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":1,"EndColumn":19,"Class":"","Function":"","Command":"$ExportableClasses","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":22,"EndColumn":90,"Class":"","Function":"","Command":"Foreach-Object { Write-Verbose \"Exporting class '$($_.FullName)'.\" }","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":39,"EndColumn":88,"Class":"","Function":"","Command":"Write-Verbose \"Exporting class '$($_.FullName)'.\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":73,"EndColumn":84,"Class":"","Function":"","Command":"$_.FullName","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":550,"StartLine":550,"EndLine":550,"StartColumn":19,"EndColumn":37,"Class":"","Function":"","Command":"$ExportableClasses","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":551,"StartLine":551,"EndLine":551,"StartColumn":9,"EndColumn":58,"Class":"","Function":"","Command":"if ($Type.FullName -in $ExistingTypeAccelerators.Keys) {\n Write-Verbose \"Class already exists [$($Type.FullName)]. Skipping.\"\n } else {\n Write-Verbose \"Importing class '$Type'.\"\n $TypeAcceleratorsClass::Add($Type.FullName, $Type)\n }","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":554,"StartLine":554,"EndLine":554,"StartColumn":9,"EndColumn":49,"Class":"","Function":"","Command":"Write-Verbose \"Importing class '$Type'.\"","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":555,"StartLine":555,"EndLine":555,"StartColumn":9,"EndColumn":59,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Add($Type.FullName, $Type)","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":567,"StartLine":567,"EndLine":581,"StartColumn":12,"EndColumn":2,"Class":"","Function":"","Command":"$exports = @{\n Alias = '*'\n Cmdlet = ''\n Function = @(\n 'Get-PSModuleTest'\n 'New-PSModuleTest'\n 'Set-PSModuleTest'\n 'Test-PSModuleTest'\n )\n Variable = @(\n 'Moons'\n 'Planets'\n 'SolarSystems'\n )\n}","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":568,"StartLine":568,"EndLine":568,"StartColumn":16,"EndColumn":19,"Class":"","Function":"","Command":"Alias = '*'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":569,"StartLine":569,"EndLine":569,"StartColumn":16,"EndColumn":18,"Class":"","Function":"","Command":"Cmdlet = ''","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":570,"StartLine":570,"EndLine":575,"StartColumn":16,"EndColumn":6,"Class":"","Function":"","Command":"Function = @(\n 'Get-PSModuleTest'\n 'New-PSModuleTest'\n 'Set-PSModuleTest'\n 'Test-PSModuleTest'\n )","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":571,"StartLine":571,"EndLine":571,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'Get-PSModuleTest'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":572,"StartLine":572,"EndLine":572,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'New-PSModuleTest'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":573,"StartLine":573,"EndLine":573,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'Set-PSModuleTest'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":574,"StartLine":574,"EndLine":574,"StartColumn":9,"EndColumn":28,"Class":"","Function":"","Command":"'Test-PSModuleTest'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":576,"StartLine":576,"EndLine":580,"StartColumn":16,"EndColumn":6,"Class":"","Function":"","Command":"Variable = @(\n 'Moons'\n 'Planets'\n 'SolarSystems'\n )","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":577,"StartLine":577,"EndLine":577,"StartColumn":9,"EndColumn":16,"Class":"","Function":"","Command":"'Moons'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":578,"StartLine":578,"EndLine":578,"StartColumn":9,"EndColumn":18,"Class":"","Function":"","Command":"'Planets'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":579,"StartLine":579,"EndLine":579,"StartColumn":9,"EndColumn":23,"Class":"","Function":"","Command":"'SolarSystems'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":582,"StartLine":582,"EndLine":582,"StartColumn":1,"EndColumn":29,"Class":"","Function":"","Command":"Export-ModuleMember @exports","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\scripts\\loader.ps1","Line":1,"StartLine":1,"EndLine":1,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '-------------------------'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\scripts\\loader.ps1","Line":2,"StartLine":2,"EndLine":2,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS A LOADER ---'","HitCount":1},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\scripts\\loader.ps1","Line":3,"StartLine":3,"EndLine":3,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '-------------------------'","HitCount":1}],"FilesAnalyzed":["D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\modules\\OtherPSModule.psm1","D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\scripts\\loader.ps1"],"CoveragePercent":68.8212927756654,"CoveragePercentTarget":0.0,"CoverageReport":"Covered 68.82% / 0%. 263 analyzed Commands in 3 Files.\n Missed commands:\n \r\n\u001b[32;1mFile \u001b[0m\u001b[32;1m Class \u001b[0m\u001b[32;1m Function \u001b[0m\u001b[32;1m Line\u001b[0m\u001b[32;1m Command\u001b[0m\r\n\u001b[32;1m---- \u001b[0m \u001b[32;1m----- \u001b[0m \u001b[32;1m-------- \u001b[0m \u001b[32;1m----\u001b[0m \u001b[32;1m-------\u001b[0m\r\nmodules\\OtherPSModule.psm1 Get-OtherPSModule 18 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 SecretWriter SecretWriter 42 $this.Alias = $alias\r\nPSModuleTest.psm1 SecretWriter SecretWriter 43 $this.Name = $name\r\nPSModuleTest.psm1 SecretWriter SecretWriter 44 $this.Secret = $secret\r\nPSModuleTest.psm1 SecretWriter GetAlias 48 return $this.Alias\r\nPSModuleTest.psm1 Book Book 69 $this.Init(@{})\r\nPSModuleTest.psm1 Book Book 71 $this.Init($Properties)\r\nPSModuleTest.psm1 Book Book 74 $this.Init(@{Title = $Title; Author = $Author })\r\nPSModuleTest.psm1 Book Book 74 Title = $Title\r\nPSModuleTest.psm1 Book Book 74 Author = $Author\r\nPSModuleTest.psm1 Book Init 78 $Properties.Keys\r\nPSModuleTest.psm1 Book Init 79 $this.$Property = $Properties.$Property\r\nPSModuleTest.psm1 Book GetReadingTime 84 if ($this.PageCount -le 0) {…\r\nPSModuleTest.psm1 Book GetReadingTime 85 throw 'Unable to determine reading time from page cou…\r\nPSModuleTest.psm1 Book GetReadingTime 87 $Minutes = $this.PageCount * 2\r\nPSModuleTest.psm1 Book GetReadingTime 88 return [timespan]::new(0, $Minutes, 0)\r\nPSModuleTest.psm1 Book GetPublishedAge 93 if (…\r\nPSModuleTest.psm1 Book GetPublishedAge 95 throw 'PublishDate not defined'\r\nPSModuleTest.psm1 Book GetPublishedAge 97 return (Get-Date) - $this.PublishDate\r\nPSModuleTest.psm1 Book GetPublishedAge 97 Get-Date\r\nPSModuleTest.psm1 Book ToString 101 return \"$($this.Title) by $($this.Author) ($($this.Pu…\r\nPSModuleTest.psm1 Book ToString 101 $this.Title\r\nPSModuleTest.psm1 Book ToString 101 $this.Author\r\nPSModuleTest.psm1 Book ToString 101 $this.PublishDate.Year\r\nPSModuleTest.psm1 BookList Initialize 110 [BookList]::Initialize($false)\r\nPSModuleTest.psm1 BookList Initialize 112 if ([BookList]::Books.Count -gt 0 -and -not $force) {…\r\nPSModuleTest.psm1 BookList Initialize 113 return $false\r\nPSModuleTest.psm1 BookList Initialize 116 [BookList]::Books = [System.Collections.Generic.List[…\r\nPSModuleTest.psm1 BookList Initialize 118 return $true\r\nPSModuleTest.psm1 BookList Validate 122 $Prefix = @(…\r\nPSModuleTest.psm1 BookList Validate 123 'Book validation failed: Book must be defined with th…\r\nPSModuleTest.psm1 BookList Validate 124 'Author, and PublishDate properties, but'\r\nPSModuleTest.psm1 BookList Validate 126 if ($null -eq $Book) { throw \"$Prefix was null\" }\r\nPSModuleTest.psm1 BookList Validate 126 throw \"$Prefix was null\"\r\nPSModuleTest.psm1 BookList Validate 127 if ([string]::IsNullOrEmpty($Book.Title)) {…\r\nPSModuleTest.psm1 BookList Validate 128 throw \"$Prefix Title wasn't defined\"\r\nPSModuleTest.psm1 BookList Validate 130 if ([string]::IsNullOrEmpty($Book.Author)) {…\r\nPSModuleTest.psm1 BookList Validate 131 throw \"$Prefix Author wasn't defined\"\r\nPSModuleTest.psm1 BookList Validate 133 if ([datetime]::MinValue -eq $Book.PublishDate) {…\r\nPSModuleTest.psm1 BookList Validate 134 throw \"$Prefix PublishDate wasn't defined\"\r\nPSModuleTest.psm1 BookList Add 140 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList Add 141 [BookList]::Validate($Book)\r\nPSModuleTest.psm1 BookList Add 142 if ([BookList]::Books.Contains($Book)) {…\r\nPSModuleTest.psm1 BookList Add 143 throw \"Book '$Book' already in list\"\r\nPSModuleTest.psm1 BookList Add 146 $FindPredicate = {…\r\nPSModuleTest.psm1 BookList Add 149 $b.Title -eq $Book.Title -and…\r\nPSModuleTest.psm1 BookList Add 153 if ([BookList]::Books.Find($FindPredicate)) {…\r\nPSModuleTest.psm1 BookList Add 154 throw \"Book '$Book' already in list\"\r\nPSModuleTest.psm1 BookList Add 157 [BookList]::Books.Add($Book)\r\nPSModuleTest.psm1 BookList Clear 161 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList Clear 162 [BookList]::Books.Clear()\r\nPSModuleTest.psm1 BookList Find 166 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList Find 167 return [BookList]::Books.Find($Predicate)\r\nPSModuleTest.psm1 BookList FindAll 171 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList FindAll 172 return [BookList]::Books.FindAll($Predicate)\r\nPSModuleTest.psm1 BookList Remove 176 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList Remove 177 [BookList]::Books.Remove($Book)\r\nPSModuleTest.psm1 BookList RemoveBy 181 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList RemoveBy 182 $Index = [BookList]::Books.FindIndex({…\r\nPSModuleTest.psm1 BookList RemoveBy 184 $b.$Property -eq $Value\r\nPSModuleTest.psm1 BookList RemoveBy 186 if ($Index -ge 0) {…\r\nPSModuleTest.psm1 BookList RemoveBy 187 [BookList]::Books.RemoveAt($Index)\r\nPSModuleTest.psm1 Get-InternalPSModule 230 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 Set-InternalPSModule 256 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 268 $null = $commandName, $parameterName, $wordToComplete…\r\nPSModuleTest.psm1 270 'Alice', 'Bob', 'Charlie'\r\nPSModuleTest.psm1 270 Where-Object { $_ -like \"$wordToComplete*\" }\r\nPSModuleTest.psm1 270 $_ -like \"$wordToComplete*\"\r\nPSModuleTest.psm1 270 ForEach-Object {…\r\nPSModuleTest.psm1 271 [System.Management.Automation.CompletionResult]::new(…\r\nPSModuleTest.psm1 Test-PSModuleTest 294 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 Get-PSModuleTest 323 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 New-PSModuleTest 358 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 Set-PSModuleTest 394 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 539 Write-Verbose \"Enum already exists [$($Type.FullName)…\r\nPSModuleTest.psm1 539 $Type.FullName\r\nPSModuleTest.psm1 552 Write-Verbose \"Class already exists [$($Type.FullName…\r\nPSModuleTest.psm1 552 $Type.FullName\r\nPSModuleTest.psm1 560 $MyInvocation.MyCommand.ScriptBlock.Module.OnRemove =…\r\nPSModuleTest.psm1 561 ($ExportableEnums + $ExportableClasses)\r\nPSModuleTest.psm1 561 $ExportableEnums + $ExportableClasses\r\nPSModuleTest.psm1 562 $TypeAcceleratorsClass::Remove($Type.FullName)\r\n\r\n\n","CommandsAnalyzedCount":263,"CommandsExecutedCount":181,"CommandsMissedCount":82,"FilesAnalyzedCount":3} diff --git a/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-Windows-CodeCoverage/Module-Windows-CodeCoverage-Report.xml b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-Windows-CodeCoverage/Module-Windows-CodeCoverage-Report.xml new file mode 100644 index 00000000..5fbc4764 --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-Windows-CodeCoverage/Module-Windows-CodeCoverage-Report.xml @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-macOS-CodeCoverage/Module-macOS-CodeCoverage-Report.json b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-macOS-CodeCoverage/Module-macOS-CodeCoverage-Report.json new file mode 100644 index 00000000..171bb1f9 --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-macOS-CodeCoverage/Module-macOS-CodeCoverage-Report.json @@ -0,0 +1 @@ +{"CommandsMissed":[{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1","Line":18,"StartLine":18,"EndLine":18,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-OtherPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":42,"StartLine":42,"EndLine":42,"StartColumn":23,"EndColumn":29,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Alias = $alias","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":43,"StartLine":43,"EndLine":43,"StartColumn":22,"EndColumn":27,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Name = $name","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":44,"StartLine":44,"EndLine":44,"StartColumn":24,"EndColumn":31,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Secret = $secret","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":48,"StartLine":48,"EndLine":48,"StartColumn":16,"EndColumn":27,"Class":"SecretWriter","Function":"GetAlias","Command":"return $this.Alias","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":69,"StartLine":69,"EndLine":69,"StartColumn":14,"EndColumn":29,"Class":"Book","Function":"Book","Command":"$this.Init(@{})","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":71,"StartLine":71,"EndLine":71,"StartColumn":36,"EndColumn":59,"Class":"Book","Function":"Book","Command":"$this.Init($Properties)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":9,"EndColumn":57,"Class":"Book","Function":"Book","Command":"$this.Init(@{Title = $Title; Author = $Author })","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":30,"EndColumn":36,"Class":"Book","Function":"Book","Command":"Title = $Title","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":47,"EndColumn":54,"Class":"Book","Function":"Book","Command":"Author = $Author","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":78,"StartLine":78,"EndLine":78,"StartColumn":31,"EndColumn":47,"Class":"Book","Function":"Init","Command":"$Properties.Keys","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":79,"StartLine":79,"EndLine":79,"StartColumn":31,"EndColumn":52,"Class":"Book","Function":"Init","Command":"$this.$Property = $Properties.$Property","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":84,"StartLine":84,"EndLine":84,"StartColumn":13,"EndColumn":34,"Class":"Book","Function":"GetReadingTime","Command":"if ($this.PageCount -le 0) {\n throw 'Unable to determine reading time from page count.'\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":85,"StartLine":85,"EndLine":85,"StartColumn":19,"EndColumn":70,"Class":"Book","Function":"GetReadingTime","Command":"throw 'Unable to determine reading time from page count.'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":87,"StartLine":87,"EndLine":87,"StartColumn":20,"EndColumn":39,"Class":"Book","Function":"GetReadingTime","Command":"$Minutes = $this.PageCount * 2","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":88,"StartLine":88,"EndLine":88,"StartColumn":16,"EndColumn":47,"Class":"Book","Function":"GetReadingTime","Command":"return [timespan]::new(0, $Minutes, 0)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":93,"StartLine":93,"EndLine":94,"StartColumn":13,"EndColumn":55,"Class":"Book","Function":"GetPublishedAge","Command":"if (\n $null -eq $this.PublishDate -or\n $this.PublishDate -eq [datetime]::MinValue\n ) { throw 'PublishDate not defined' }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":95,"StartLine":95,"EndLine":95,"StartColumn":19,"EndColumn":44,"Class":"Book","Function":"GetPublishedAge","Command":"throw 'PublishDate not defined'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":97,"StartLine":97,"EndLine":97,"StartColumn":16,"EndColumn":46,"Class":"Book","Function":"GetPublishedAge","Command":"return (Get-Date) - $this.PublishDate","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":97,"StartLine":97,"EndLine":97,"StartColumn":17,"EndColumn":25,"Class":"Book","Function":"GetPublishedAge","Command":"Get-Date","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":16,"EndColumn":79,"Class":"Book","Function":"ToString","Command":"return \"$($this.Title) by $($this.Author) ($($this.PublishDate.Year))\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":19,"EndColumn":30,"Class":"Book","Function":"ToString","Command":"$this.Title","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":37,"EndColumn":49,"Class":"Book","Function":"ToString","Command":"$this.Author","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":54,"EndColumn":76,"Class":"Book","Function":"ToString","Command":"$this.PublishDate.Year","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":110,"StartLine":110,"EndLine":110,"StartColumn":34,"EndColumn":64,"Class":"BookList","Function":"Initialize","Command":"[BookList]::Initialize($false)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":112,"StartLine":112,"EndLine":112,"StartColumn":13,"EndColumn":59,"Class":"BookList","Function":"Initialize","Command":"if ([BookList]::Books.Count -gt 0 -and -not $force) {\n return $false\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":113,"StartLine":113,"EndLine":113,"StartColumn":20,"EndColumn":26,"Class":"BookList","Function":"Initialize","Command":"return $false","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":116,"StartLine":116,"EndLine":116,"StartColumn":29,"EndColumn":75,"Class":"BookList","Function":"Initialize","Command":"[BookList]::Books = [System.Collections.Generic.List[Book]]::new()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":118,"StartLine":118,"EndLine":118,"StartColumn":16,"EndColumn":21,"Class":"BookList","Function":"Initialize","Command":"return $true","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":122,"StartLine":122,"EndLine":125,"StartColumn":19,"EndColumn":20,"Class":"BookList","Function":"Validate","Command":"$Prefix = @(\n 'Book validation failed: Book must be defined with the Title,'\n 'Author, and PublishDate properties, but'\n ) -join ' '","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":123,"StartLine":123,"EndLine":123,"StartColumn":13,"EndColumn":75,"Class":"BookList","Function":"Validate","Command":"'Book validation failed: Book must be defined with the Title,'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":124,"StartLine":124,"EndLine":124,"StartColumn":13,"EndColumn":54,"Class":"BookList","Function":"Validate","Command":"'Author, and PublishDate properties, but'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":126,"StartLine":126,"EndLine":126,"StartColumn":13,"EndColumn":28,"Class":"BookList","Function":"Validate","Command":"if ($null -eq $Book) { throw \"$Prefix was null\" }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":126,"StartLine":126,"EndLine":126,"StartColumn":38,"EndColumn":56,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix was null\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":127,"StartLine":127,"EndLine":127,"StartColumn":13,"EndColumn":49,"Class":"BookList","Function":"Validate","Command":"if ([string]::IsNullOrEmpty($Book.Title)) {\n throw \"$Prefix Title wasn't defined\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":128,"StartLine":128,"EndLine":128,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix Title wasn't defined\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":130,"StartLine":130,"EndLine":130,"StartColumn":13,"EndColumn":50,"Class":"BookList","Function":"Validate","Command":"if ([string]::IsNullOrEmpty($Book.Author)) {\n throw \"$Prefix Author wasn't defined\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":131,"StartLine":131,"EndLine":131,"StartColumn":19,"EndColumn":50,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix Author wasn't defined\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":133,"StartLine":133,"EndLine":133,"StartColumn":13,"EndColumn":55,"Class":"BookList","Function":"Validate","Command":"if ([datetime]::MinValue -eq $Book.PublishDate) {\n throw \"$Prefix PublishDate wasn't defined\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":134,"StartLine":134,"EndLine":134,"StartColumn":19,"EndColumn":55,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix PublishDate wasn't defined\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":140,"StartLine":140,"EndLine":140,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Add","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":141,"StartLine":141,"EndLine":141,"StartColumn":9,"EndColumn":36,"Class":"BookList","Function":"Add","Command":"[BookList]::Validate($Book)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":142,"StartLine":142,"EndLine":142,"StartColumn":13,"EndColumn":46,"Class":"BookList","Function":"Add","Command":"if ([BookList]::Books.Contains($Book)) {\n throw \"Book '$Book' already in list\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":143,"StartLine":143,"EndLine":143,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"throw \"Book '$Book' already in list\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":146,"StartLine":146,"EndLine":152,"StartColumn":26,"EndColumn":26,"Class":"BookList","Function":"Add","Command":"$FindPredicate = {\n param([Book]$b)\n\n $b.Title -eq $Book.Title -and\n $b.Author -eq $Book.Author -and\n $b.PublishDate -eq $Book.PublishDate\n }.GetNewClosure()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":149,"StartLine":149,"EndLine":151,"StartColumn":13,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"$b.Title -eq $Book.Title -and\n $b.Author -eq $Book.Author -and\n $b.PublishDate -eq $Book.PublishDate","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":153,"StartLine":153,"EndLine":153,"StartColumn":13,"EndColumn":51,"Class":"BookList","Function":"Add","Command":"if ([BookList]::Books.Find($FindPredicate)) {\n throw \"Book '$Book' already in list\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":154,"StartLine":154,"EndLine":154,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"throw \"Book '$Book' already in list\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":157,"StartLine":157,"EndLine":157,"StartColumn":9,"EndColumn":37,"Class":"BookList","Function":"Add","Command":"[BookList]::Books.Add($Book)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":161,"StartLine":161,"EndLine":161,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Clear","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":162,"StartLine":162,"EndLine":162,"StartColumn":9,"EndColumn":34,"Class":"BookList","Function":"Clear","Command":"[BookList]::Books.Clear()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":166,"StartLine":166,"EndLine":166,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Find","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":167,"StartLine":167,"EndLine":167,"StartColumn":16,"EndColumn":50,"Class":"BookList","Function":"Find","Command":"return [BookList]::Books.Find($Predicate)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":171,"StartLine":171,"EndLine":171,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"FindAll","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":172,"StartLine":172,"EndLine":172,"StartColumn":16,"EndColumn":53,"Class":"BookList","Function":"FindAll","Command":"return [BookList]::Books.FindAll($Predicate)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":176,"StartLine":176,"EndLine":176,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Remove","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":177,"StartLine":177,"EndLine":177,"StartColumn":9,"EndColumn":40,"Class":"BookList","Function":"Remove","Command":"[BookList]::Books.Remove($Book)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":181,"StartLine":181,"EndLine":181,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"RemoveBy","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":182,"StartLine":182,"EndLine":185,"StartColumn":18,"EndColumn":31,"Class":"BookList","Function":"RemoveBy","Command":"$Index = [BookList]::Books.FindIndex({\n param($b)\n $b.$Property -eq $Value\n }.GetNewClosure())","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":184,"StartLine":184,"EndLine":184,"StartColumn":17,"EndColumn":40,"Class":"BookList","Function":"RemoveBy","Command":"$b.$Property -eq $Value","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":186,"StartLine":186,"EndLine":186,"StartColumn":13,"EndColumn":25,"Class":"BookList","Function":"RemoveBy","Command":"if ($Index -ge 0) {\n [BookList]::Books.RemoveAt($Index)\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":187,"StartLine":187,"EndLine":187,"StartColumn":13,"EndColumn":47,"Class":"BookList","Function":"RemoveBy","Command":"[BookList]::Books.RemoveAt($Index)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":230,"StartLine":230,"EndLine":230,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-InternalPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":256,"StartLine":256,"EndLine":256,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Set-InternalPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":268,"StartLine":268,"EndLine":268,"StartColumn":13,"EndColumn":93,"Class":"","Function":"","Command":"$null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":5,"EndColumn":30,"Class":"","Function":"","Command":"'Alice', 'Bob', 'Charlie'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":33,"EndColumn":77,"Class":"","Function":"","Command":"Where-Object { $_ -like \"$wordToComplete*\" }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":48,"EndColumn":75,"Class":"","Function":"","Command":"$_ -like \"$wordToComplete*\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":272,"StartColumn":80,"EndColumn":6,"Class":"","Function":"","Command":"ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":271,"StartLine":271,"EndLine":271,"StartColumn":9,"EndColumn":91,"Class":"","Function":"","Command":"[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":294,"StartLine":294,"EndLine":294,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Test-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":323,"StartLine":323,"EndLine":323,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":358,"StartLine":358,"EndLine":358,"StartColumn":5,"EndColumn":33,"Class":"","Function":"New-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":394,"StartLine":394,"EndLine":394,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Set-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":539,"StartLine":539,"EndLine":539,"StartColumn":9,"EndColumn":75,"Class":"","Function":"","Command":"Write-Verbose \"Enum already exists [$($Type.FullName)]. Skipping.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":539,"StartLine":539,"EndLine":539,"StartColumn":47,"EndColumn":61,"Class":"","Function":"","Command":"$Type.FullName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":552,"StartLine":552,"EndLine":552,"StartColumn":9,"EndColumn":76,"Class":"","Function":"","Command":"Write-Verbose \"Class already exists [$($Type.FullName)]. Skipping.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":552,"StartLine":552,"EndLine":552,"StartColumn":48,"EndColumn":62,"Class":"","Function":"","Command":"$Type.FullName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":560,"StartLine":560,"EndLine":564,"StartColumn":55,"EndColumn":18,"Class":"","Function":"","Command":"$MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = {\n foreach ($Type in ($ExportableEnums + $ExportableClasses)) {\n $TypeAcceleratorsClass::Remove($Type.FullName)\n }\n}.GetNewClosure()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":561,"StartLine":561,"EndLine":561,"StartColumn":23,"EndColumn":62,"Class":"","Function":"","Command":"($ExportableEnums + $ExportableClasses)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":561,"StartLine":561,"EndLine":561,"StartColumn":24,"EndColumn":61,"Class":"","Function":"","Command":"$ExportableEnums + $ExportableClasses","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":562,"StartLine":562,"EndLine":562,"StartColumn":9,"EndColumn":55,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Remove($Type.FullName)","HitCount":0}],"CommandsExecuted":[{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":5,"StartLine":5,"EndLine":5,"StartColumn":13,"EndColumn":74,"Class":"","Function":"","Command":"$baseName = [System.IO.Path]::GetFileNameWithoutExtension($PSCommandPath)","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":6,"StartLine":6,"EndLine":6,"StartColumn":24,"EndColumn":80,"Class":"","Function":"","Command":"$script:PSModuleInfo = Test-ModuleManifest -Path \"$PSScriptRoot\\$baseName.psd1\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":1,"EndColumn":21,"Class":"","Function":"","Command":"$script:PSModuleInfo","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":24,"EndColumn":35,"Class":"","Function":"","Command":"Format-List","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":38,"EndColumn":56,"Class":"","Function":"","Command":"Out-String -Stream","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":59,"EndColumn":92,"Class":"","Function":"","Command":"ForEach-Object { Write-Debug $_ }","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":76,"EndColumn":90,"Class":"","Function":"","Command":"Write-Debug $_","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":8,"StartLine":8,"EndLine":8,"StartColumn":15,"EndColumn":40,"Class":"","Function":"","Command":"$scriptName = $script:PSModuleInfo.Name","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":9,"StartLine":9,"EndLine":9,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - Importing module\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":11,"StartLine":11,"EndLine":11,"StartColumn":1,"EndColumn":57,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - Processing folder\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":12,"StartLine":12,"EndLine":12,"StartColumn":15,"EndColumn":47,"Class":"","Function":"","Command":"$dataFolder = (Join-Path $PSScriptRoot 'data')","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":12,"StartLine":12,"EndLine":12,"StartColumn":16,"EndColumn":46,"Class":"","Function":"","Command":"Join-Path $PSScriptRoot 'data'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":13,"StartLine":13,"EndLine":13,"StartColumn":1,"EndColumn":53,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$dataFolder]\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":14,"StartLine":14,"EndLine":14,"StartColumn":1,"EndColumn":98,"Class":"","Function":"","Command":"Get-ChildItem -Path \"$dataFolder\" -Recurse -Force -Include '*.psd1' -ErrorAction SilentlyContinue","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":14,"StartLine":14,"EndLine":18,"StartColumn":101,"EndColumn":2,"Class":"","Function":"","Command":"ForEach-Object {\n Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Importing\"\n New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force\n Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Done\"\n}","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":15,"StartLine":15,"EndLine":15,"StartColumn":5,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":15,"StartLine":15,"EndLine":15,"StartColumn":46,"EndColumn":57,"Class":"","Function":"","Command":"$_.BaseName","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":16,"StartLine":16,"EndLine":16,"StartColumn":5,"EndColumn":95,"Class":"","Function":"","Command":"New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":16,"StartLine":16,"EndLine":16,"StartColumn":44,"EndColumn":87,"Class":"","Function":"","Command":"Import-PowerShellDataFile -Path $_.FullName","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":17,"StartLine":17,"EndLine":17,"StartColumn":5,"EndColumn":67,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":17,"StartLine":17,"EndLine":17,"StartColumn":46,"EndColumn":57,"Class":"","Function":"","Command":"$_.BaseName","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":19,"StartLine":19,"EndLine":19,"StartColumn":1,"EndColumn":44,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":22,"StartLine":22,"EndLine":22,"StartColumn":1,"EndColumn":57,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - Processing folder\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":24,"StartLine":24,"EndLine":24,"StartColumn":1,"EndColumn":65,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - [initializer] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":25,"StartLine":25,"EndLine":25,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '-------------------------------'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":26,"StartLine":26,"EndLine":26,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS AN INITIALIZER ---'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":27,"StartLine":27,"EndLine":27,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '-------------------------------'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":28,"StartLine":28,"EndLine":28,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - [initializer] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":30,"StartLine":30,"EndLine":30,"StartColumn":1,"EndColumn":44,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":33,"StartLine":33,"EndLine":33,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - Processing folder\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":35,"StartLine":35,"EndLine":35,"StartColumn":1,"EndColumn":81,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - [SecretWriter] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":51,"StartLine":51,"EndLine":51,"StartColumn":1,"EndColumn":76,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - [SecretWriter] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":53,"StartLine":53,"EndLine":53,"StartColumn":1,"EndColumn":59,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":56,"StartLine":56,"EndLine":56,"StartColumn":1,"EndColumn":71,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - Processing folder\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":58,"StartLine":58,"EndLine":58,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - [Book] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":206,"StartLine":206,"EndLine":206,"StartColumn":1,"EndColumn":67,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - [Book] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":208,"StartLine":208,"EndLine":208,"StartColumn":1,"EndColumn":58,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":211,"StartLine":211,"EndLine":211,"StartColumn":1,"EndColumn":74,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - Processing folder\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":213,"StartLine":213,"EndLine":213,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Get-InternalPSModule] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":232,"StartLine":232,"EndLine":232,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Get-InternalPSModule] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":235,"StartLine":235,"EndLine":235,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Set-InternalPSModule] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":258,"StartLine":258,"EndLine":258,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Set-InternalPSModule] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":260,"StartLine":260,"EndLine":260,"StartColumn":1,"EndColumn":61,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":263,"StartLine":263,"EndLine":263,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - Processing folder\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":265,"StartLine":265,"EndLine":265,"StartColumn":1,"EndColumn":80,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [completers] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":266,"StartLine":266,"EndLine":273,"StartColumn":1,"EndColumn":2,"Class":"","Function":"","Command":"Register-ArgumentCompleter -CommandName New-PSModuleTest -ParameterName Name -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters\n\n 'Alice', 'Bob', 'Charlie' | Where-Object { $_ -like \"$wordToComplete*\" } | ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }\n}","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":274,"StartLine":274,"EndLine":274,"StartColumn":1,"EndColumn":75,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [completers] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":277,"StartLine":277,"EndLine":277,"StartColumn":1,"EndColumn":87,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [Test-PSModuleTest] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":296,"StartLine":296,"EndLine":296,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [Test-PSModuleTest] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":299,"StartLine":299,"EndLine":299,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - Processing folder\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":301,"StartLine":301,"EndLine":301,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [Get-PSModuleTest] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":325,"StartLine":325,"EndLine":325,"StartColumn":1,"EndColumn":94,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [Get-PSModuleTest] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":328,"StartLine":328,"EndLine":328,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [New-PSModuleTest] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":361,"StartLine":361,"EndLine":361,"StartColumn":1,"EndColumn":50,"Class":"","Function":"","Command":"New-Alias New-PSModuleTestAlias3 New-PSModuleTest","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":362,"StartLine":362,"EndLine":362,"StartColumn":1,"EndColumn":63,"Class":"","Function":"","Command":"New-Alias -Name New-PSModuleTestAlias4 -Value New-PSModuleTest","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":365,"StartLine":365,"EndLine":365,"StartColumn":1,"EndColumn":50,"Class":"","Function":"","Command":"Set-Alias New-PSModuleTestAlias5 New-PSModuleTest","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":366,"StartLine":366,"EndLine":366,"StartColumn":1,"EndColumn":94,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [New-PSModuleTest] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":368,"StartLine":368,"EndLine":368,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":371,"StartLine":371,"EndLine":371,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - Processing folder\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":373,"StartLine":373,"EndLine":373,"StartColumn":1,"EndColumn":104,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - [Set-PSModuleTest] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":396,"StartLine":396,"EndLine":396,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - [Set-PSModuleTest] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":398,"StartLine":398,"EndLine":398,"StartColumn":1,"EndColumn":78,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":400,"StartLine":400,"EndLine":400,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":403,"StartLine":403,"EndLine":403,"StartColumn":1,"EndColumn":74,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - Processing folder\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":405,"StartLine":405,"EndLine":405,"StartColumn":1,"EndColumn":87,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - [PrivateVariables] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":406,"StartLine":406,"EndLine":437,"StartColumn":28,"EndColumn":2,"Class":"","Function":"","Command":"$script:HabitablePlanets = @(\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n },\n @{\n Name = 'Proxima Centauri b'\n Mass = 1.17\n Diameter = 11449\n DayLength = 5.15\n },\n @{\n Name = 'Kepler-442b'\n Mass = 2.34\n Diameter = 11349\n DayLength = 5.7\n },\n @{\n Name = 'Kepler-452b'\n Mass = 5.0\n Diameter = 17340\n DayLength = 20.0\n }\n)","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":407,"StartLine":407,"EndLine":436,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n },\n @{\n Name = 'Proxima Centauri b'\n Mass = 1.17\n Diameter = 11449\n DayLength = 5.15\n },\n @{\n Name = 'Kepler-442b'\n Mass = 2.34\n Diameter = 11349\n DayLength = 5.7\n },\n @{\n Name = 'Kepler-452b'\n Mass = 5.0\n Diameter = 17340\n DayLength = 20.0\n }","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":408,"StartLine":408,"EndLine":408,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":409,"StartLine":409,"EndLine":409,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":410,"StartLine":410,"EndLine":410,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":411,"StartLine":411,"EndLine":411,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":414,"StartLine":414,"EndLine":414,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Mars'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":415,"StartLine":415,"EndLine":415,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.642","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":416,"StartLine":416,"EndLine":416,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 6792","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":417,"StartLine":417,"EndLine":417,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.7","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":420,"StartLine":420,"EndLine":420,"StartColumn":21,"EndColumn":41,"Class":"","Function":"","Command":"Name = 'Proxima Centauri b'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":421,"StartLine":421,"EndLine":421,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 1.17","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":422,"StartLine":422,"EndLine":422,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 11449","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":423,"StartLine":423,"EndLine":423,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 5.15","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":426,"StartLine":426,"EndLine":426,"StartColumn":21,"EndColumn":34,"Class":"","Function":"","Command":"Name = 'Kepler-442b'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":427,"StartLine":427,"EndLine":427,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 2.34","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":428,"StartLine":428,"EndLine":428,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 11349","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":429,"StartLine":429,"EndLine":429,"StartColumn":21,"EndColumn":24,"Class":"","Function":"","Command":"DayLength = 5.7","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":432,"StartLine":432,"EndLine":432,"StartColumn":21,"EndColumn":34,"Class":"","Function":"","Command":"Name = 'Kepler-452b'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":433,"StartLine":433,"EndLine":433,"StartColumn":21,"EndColumn":24,"Class":"","Function":"","Command":"Mass = 5.0","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":434,"StartLine":434,"EndLine":434,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 17340","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":435,"StartLine":435,"EndLine":435,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 20.0","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":439,"StartLine":439,"EndLine":452,"StartColumn":28,"EndColumn":2,"Class":"","Function":"","Command":"$script:InhabitedPlanets = @(\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n }\n)","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":440,"StartLine":440,"EndLine":451,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n }","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":441,"StartLine":441,"EndLine":441,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":442,"StartLine":442,"EndLine":442,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":443,"StartLine":443,"EndLine":443,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":444,"StartLine":444,"EndLine":444,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":447,"StartLine":447,"EndLine":447,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Mars'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":448,"StartLine":448,"EndLine":448,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.642","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":449,"StartLine":449,"EndLine":449,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 6792","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":450,"StartLine":450,"EndLine":450,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.7","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":453,"StartLine":453,"EndLine":453,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - [PrivateVariables] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":455,"StartLine":455,"EndLine":455,"StartColumn":1,"EndColumn":61,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":458,"StartLine":458,"EndLine":458,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - Processing folder\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":460,"StartLine":460,"EndLine":460,"StartColumn":1,"EndColumn":75,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Moons] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":461,"StartLine":461,"EndLine":466,"StartColumn":17,"EndColumn":2,"Class":"","Function":"","Command":"$script:Moons = @(\n @{\n Planet = 'Earth'\n Name = 'Moon'\n }\n)","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":462,"StartLine":462,"EndLine":465,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Planet = 'Earth'\n Name = 'Moon'\n }","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":463,"StartLine":463,"EndLine":463,"StartColumn":18,"EndColumn":25,"Class":"","Function":"","Command":"Planet = 'Earth'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":464,"StartLine":464,"EndLine":464,"StartColumn":18,"EndColumn":24,"Class":"","Function":"","Command":"Name = 'Moon'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":467,"StartLine":467,"EndLine":467,"StartColumn":1,"EndColumn":70,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Moons] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":470,"StartLine":470,"EndLine":470,"StartColumn":1,"EndColumn":77,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Planets] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":471,"StartLine":471,"EndLine":490,"StartColumn":19,"EndColumn":2,"Class":"","Function":"","Command":"$script:Planets = @(\n @{\n Name = 'Mercury'\n Mass = 0.330\n Diameter = 4879\n DayLength = 4222.6\n },\n @{\n Name = 'Venus'\n Mass = 4.87\n Diameter = 12104\n DayLength = 2802.0\n },\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n }\n)","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":472,"StartLine":472,"EndLine":489,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Mercury'\n Mass = 0.330\n Diameter = 4879\n DayLength = 4222.6\n },\n @{\n Name = 'Venus'\n Mass = 4.87\n Diameter = 12104\n DayLength = 2802.0\n },\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n }","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":473,"StartLine":473,"EndLine":473,"StartColumn":21,"EndColumn":30,"Class":"","Function":"","Command":"Name = 'Mercury'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":474,"StartLine":474,"EndLine":474,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.330","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":475,"StartLine":475,"EndLine":475,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 4879","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":476,"StartLine":476,"EndLine":476,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"DayLength = 4222.6","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":479,"StartLine":479,"EndLine":479,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Venus'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":480,"StartLine":480,"EndLine":480,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 4.87","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":481,"StartLine":481,"EndLine":481,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12104","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":482,"StartLine":482,"EndLine":482,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"DayLength = 2802.0","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":485,"StartLine":485,"EndLine":485,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":486,"StartLine":486,"EndLine":486,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":487,"StartLine":487,"EndLine":487,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":488,"StartLine":488,"EndLine":488,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":491,"StartLine":491,"EndLine":491,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Planets] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":494,"StartLine":494,"EndLine":494,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [SolarSystems] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":495,"StartLine":495,"EndLine":511,"StartColumn":24,"EndColumn":2,"Class":"","Function":"","Command":"$script:SolarSystems = @(\n @{\n Name = 'Solar System'\n Planets = $script:Planets\n Moons = $script:Moons\n },\n @{\n Name = 'Alpha Centauri'\n Planets = @()\n Moons = @()\n },\n @{\n Name = 'Sirius'\n Planets = @()\n Moons = @()\n }\n)","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":496,"StartLine":496,"EndLine":510,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Solar System'\n Planets = $script:Planets\n Moons = $script:Moons\n },\n @{\n Name = 'Alpha Centauri'\n Planets = @()\n Moons = @()\n },\n @{\n Name = 'Sirius'\n Planets = @()\n Moons = @()\n }","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":497,"StartLine":497,"EndLine":497,"StartColumn":19,"EndColumn":33,"Class":"","Function":"","Command":"Name = 'Solar System'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":498,"StartLine":498,"EndLine":498,"StartColumn":19,"EndColumn":34,"Class":"","Function":"","Command":"Planets = $script:Planets","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":499,"StartLine":499,"EndLine":499,"StartColumn":19,"EndColumn":32,"Class":"","Function":"","Command":"Moons = $script:Moons","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":502,"StartLine":502,"EndLine":502,"StartColumn":19,"EndColumn":35,"Class":"","Function":"","Command":"Name = 'Alpha Centauri'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":503,"StartLine":503,"EndLine":503,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Planets = @()","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":504,"StartLine":504,"EndLine":504,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Moons = @()","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":507,"StartLine":507,"EndLine":507,"StartColumn":19,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Sirius'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":508,"StartLine":508,"EndLine":508,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Planets = @()","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":509,"StartLine":509,"EndLine":509,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Moons = @()","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":512,"StartLine":512,"EndLine":512,"StartColumn":1,"EndColumn":77,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [SolarSystems] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":514,"StartLine":514,"EndLine":514,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":517,"StartLine":517,"EndLine":517,"StartColumn":1,"EndColumn":52,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [finally] - Importing\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":518,"StartLine":518,"EndLine":518,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '------------------------------'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":519,"StartLine":519,"EndLine":519,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS A LAST LOADER ---'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":520,"StartLine":520,"EndLine":520,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '------------------------------'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":521,"StartLine":521,"EndLine":521,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [finally] - Done\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":525,"StartLine":525,"EndLine":527,"StartColumn":26,"EndColumn":2,"Class":"","Function":"","Command":"$TypeAcceleratorsClass = [psobject].Assembly.GetType(\n 'System.Management.Automation.TypeAccelerators'\n)","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":530,"StartLine":530,"EndLine":530,"StartColumn":29,"EndColumn":56,"Class":"","Function":"","Command":"$ExistingTypeAccelerators = $TypeAcceleratorsClass::Get","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":532,"StartLine":532,"EndLine":535,"StartColumn":20,"EndColumn":2,"Class":"","Function":"","Command":"$ExportableEnums = @(\n [Binding]\n [Genre]\n)","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":533,"StartLine":533,"EndLine":533,"StartColumn":5,"EndColumn":14,"Class":"","Function":"","Command":"[Binding]","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":534,"StartLine":534,"EndLine":534,"StartColumn":5,"EndColumn":12,"Class":"","Function":"","Command":"[Genre]","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":1,"EndColumn":17,"Class":"","Function":"","Command":"$ExportableEnums","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":20,"EndColumn":87,"Class":"","Function":"","Command":"Foreach-Object { Write-Verbose \"Exporting enum '$($_.FullName)'.\" }","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":37,"EndColumn":85,"Class":"","Function":"","Command":"Write-Verbose \"Exporting enum '$($_.FullName)'.\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":70,"EndColumn":81,"Class":"","Function":"","Command":"$_.FullName","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":537,"StartLine":537,"EndLine":537,"StartColumn":19,"EndColumn":35,"Class":"","Function":"","Command":"$ExportableEnums","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":538,"StartLine":538,"EndLine":538,"StartColumn":9,"EndColumn":58,"Class":"","Function":"","Command":"if ($Type.FullName -in $ExistingTypeAccelerators.Keys) {\n Write-Verbose \"Enum already exists [$($Type.FullName)]. Skipping.\"\n } else {\n Write-Verbose \"Importing enum '$Type'.\"\n $TypeAcceleratorsClass::Add($Type.FullName, $Type)\n }","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":541,"StartLine":541,"EndLine":541,"StartColumn":9,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose \"Importing enum '$Type'.\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":542,"StartLine":542,"EndLine":542,"StartColumn":9,"EndColumn":59,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Add($Type.FullName, $Type)","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":545,"StartLine":545,"EndLine":548,"StartColumn":22,"EndColumn":2,"Class":"","Function":"","Command":"$ExportableClasses = @(\n [Book]\n [BookList]\n)","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":546,"StartLine":546,"EndLine":546,"StartColumn":5,"EndColumn":11,"Class":"","Function":"","Command":"[Book]","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":547,"StartLine":547,"EndLine":547,"StartColumn":5,"EndColumn":15,"Class":"","Function":"","Command":"[BookList]","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":1,"EndColumn":19,"Class":"","Function":"","Command":"$ExportableClasses","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":22,"EndColumn":90,"Class":"","Function":"","Command":"Foreach-Object { Write-Verbose \"Exporting class '$($_.FullName)'.\" }","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":39,"EndColumn":88,"Class":"","Function":"","Command":"Write-Verbose \"Exporting class '$($_.FullName)'.\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":73,"EndColumn":84,"Class":"","Function":"","Command":"$_.FullName","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":550,"StartLine":550,"EndLine":550,"StartColumn":19,"EndColumn":37,"Class":"","Function":"","Command":"$ExportableClasses","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":551,"StartLine":551,"EndLine":551,"StartColumn":9,"EndColumn":58,"Class":"","Function":"","Command":"if ($Type.FullName -in $ExistingTypeAccelerators.Keys) {\n Write-Verbose \"Class already exists [$($Type.FullName)]. Skipping.\"\n } else {\n Write-Verbose \"Importing class '$Type'.\"\n $TypeAcceleratorsClass::Add($Type.FullName, $Type)\n }","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":554,"StartLine":554,"EndLine":554,"StartColumn":9,"EndColumn":49,"Class":"","Function":"","Command":"Write-Verbose \"Importing class '$Type'.\"","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":555,"StartLine":555,"EndLine":555,"StartColumn":9,"EndColumn":59,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Add($Type.FullName, $Type)","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":567,"StartLine":567,"EndLine":581,"StartColumn":12,"EndColumn":2,"Class":"","Function":"","Command":"$exports = @{\n Alias = '*'\n Cmdlet = ''\n Function = @(\n 'Get-PSModuleTest'\n 'New-PSModuleTest'\n 'Set-PSModuleTest'\n 'Test-PSModuleTest'\n )\n Variable = @(\n 'Moons'\n 'Planets'\n 'SolarSystems'\n )\n}","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":568,"StartLine":568,"EndLine":568,"StartColumn":16,"EndColumn":19,"Class":"","Function":"","Command":"Alias = '*'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":569,"StartLine":569,"EndLine":569,"StartColumn":16,"EndColumn":18,"Class":"","Function":"","Command":"Cmdlet = ''","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":570,"StartLine":570,"EndLine":575,"StartColumn":16,"EndColumn":6,"Class":"","Function":"","Command":"Function = @(\n 'Get-PSModuleTest'\n 'New-PSModuleTest'\n 'Set-PSModuleTest'\n 'Test-PSModuleTest'\n )","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":571,"StartLine":571,"EndLine":571,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'Get-PSModuleTest'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":572,"StartLine":572,"EndLine":572,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'New-PSModuleTest'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":573,"StartLine":573,"EndLine":573,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'Set-PSModuleTest'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":574,"StartLine":574,"EndLine":574,"StartColumn":9,"EndColumn":28,"Class":"","Function":"","Command":"'Test-PSModuleTest'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":576,"StartLine":576,"EndLine":580,"StartColumn":16,"EndColumn":6,"Class":"","Function":"","Command":"Variable = @(\n 'Moons'\n 'Planets'\n 'SolarSystems'\n )","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":577,"StartLine":577,"EndLine":577,"StartColumn":9,"EndColumn":16,"Class":"","Function":"","Command":"'Moons'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":578,"StartLine":578,"EndLine":578,"StartColumn":9,"EndColumn":18,"Class":"","Function":"","Command":"'Planets'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":579,"StartLine":579,"EndLine":579,"StartColumn":9,"EndColumn":23,"Class":"","Function":"","Command":"'SolarSystems'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":582,"StartLine":582,"EndLine":582,"StartColumn":1,"EndColumn":29,"Class":"","Function":"","Command":"Export-ModuleMember @exports","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1","Line":1,"StartLine":1,"EndLine":1,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '-------------------------'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1","Line":2,"StartLine":2,"EndLine":2,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS A LOADER ---'","HitCount":1},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1","Line":3,"StartLine":3,"EndLine":3,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '-------------------------'","HitCount":1}],"FilesAnalyzed":["/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1","/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1"],"CoveragePercent":68.8212927756654,"CoveragePercentTarget":0.0,"CoverageReport":"Covered 68.82% / 0%. 263 analyzed Commands in 3 Files.\n Missed commands:\n \n\u001b[32;1mFile \u001b[0m\u001b[32;1m Class \u001b[0m\u001b[32;1m Function \u001b[0m\u001b[32;1m Line\u001b[0m\u001b[32;1m Command\u001b[0m\n\u001b[32;1m---- \u001b[0m \u001b[32;1m----- \u001b[0m \u001b[32;1m-------- \u001b[0m \u001b[32;1m----\u001b[0m \u001b[32;1m-------\u001b[0m\nmodules/OtherPSModule.psm1 Get-OtherPSModule 18 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 SecretWriter SecretWriter 42 $this.Alias = $alias\nPSModuleTest.psm1 SecretWriter SecretWriter 43 $this.Name = $name\nPSModuleTest.psm1 SecretWriter SecretWriter 44 $this.Secret = $secret\nPSModuleTest.psm1 SecretWriter GetAlias 48 return $this.Alias\nPSModuleTest.psm1 Book Book 69 $this.Init(@{})\nPSModuleTest.psm1 Book Book 71 $this.Init($Properties)\nPSModuleTest.psm1 Book Book 74 $this.Init(@{Title = $Title; Author = $Author })\nPSModuleTest.psm1 Book Book 74 Title = $Title\nPSModuleTest.psm1 Book Book 74 Author = $Author\nPSModuleTest.psm1 Book Init 78 $Properties.Keys\nPSModuleTest.psm1 Book Init 79 $this.$Property = $Properties.$Property\nPSModuleTest.psm1 Book GetReadingTime 84 if ($this.PageCount -le 0) {…\nPSModuleTest.psm1 Book GetReadingTime 85 throw 'Unable to determine reading time from page cou…\nPSModuleTest.psm1 Book GetReadingTime 87 $Minutes = $this.PageCount * 2\nPSModuleTest.psm1 Book GetReadingTime 88 return [timespan]::new(0, $Minutes, 0)\nPSModuleTest.psm1 Book GetPublishedAge 93 if (…\nPSModuleTest.psm1 Book GetPublishedAge 95 throw 'PublishDate not defined'\nPSModuleTest.psm1 Book GetPublishedAge 97 return (Get-Date) - $this.PublishDate\nPSModuleTest.psm1 Book GetPublishedAge 97 Get-Date\nPSModuleTest.psm1 Book ToString 101 return \"$($this.Title) by $($this.Author) ($($this.Pu…\nPSModuleTest.psm1 Book ToString 101 $this.Title\nPSModuleTest.psm1 Book ToString 101 $this.Author\nPSModuleTest.psm1 Book ToString 101 $this.PublishDate.Year\nPSModuleTest.psm1 BookList Initialize 110 [BookList]::Initialize($false)\nPSModuleTest.psm1 BookList Initialize 112 if ([BookList]::Books.Count -gt 0 -and -not $force) {…\nPSModuleTest.psm1 BookList Initialize 113 return $false\nPSModuleTest.psm1 BookList Initialize 116 [BookList]::Books = [System.Collections.Generic.List[…\nPSModuleTest.psm1 BookList Initialize 118 return $true\nPSModuleTest.psm1 BookList Validate 122 $Prefix = @(…\nPSModuleTest.psm1 BookList Validate 123 'Book validation failed: Book must be defined with th…\nPSModuleTest.psm1 BookList Validate 124 'Author, and PublishDate properties, but'\nPSModuleTest.psm1 BookList Validate 126 if ($null -eq $Book) { throw \"$Prefix was null\" }\nPSModuleTest.psm1 BookList Validate 126 throw \"$Prefix was null\"\nPSModuleTest.psm1 BookList Validate 127 if ([string]::IsNullOrEmpty($Book.Title)) {…\nPSModuleTest.psm1 BookList Validate 128 throw \"$Prefix Title wasn't defined\"\nPSModuleTest.psm1 BookList Validate 130 if ([string]::IsNullOrEmpty($Book.Author)) {…\nPSModuleTest.psm1 BookList Validate 131 throw \"$Prefix Author wasn't defined\"\nPSModuleTest.psm1 BookList Validate 133 if ([datetime]::MinValue -eq $Book.PublishDate) {…\nPSModuleTest.psm1 BookList Validate 134 throw \"$Prefix PublishDate wasn't defined\"\nPSModuleTest.psm1 BookList Add 140 [BookList]::Initialize()\nPSModuleTest.psm1 BookList Add 141 [BookList]::Validate($Book)\nPSModuleTest.psm1 BookList Add 142 if ([BookList]::Books.Contains($Book)) {…\nPSModuleTest.psm1 BookList Add 143 throw \"Book '$Book' already in list\"\nPSModuleTest.psm1 BookList Add 146 $FindPredicate = {…\nPSModuleTest.psm1 BookList Add 149 $b.Title -eq $Book.Title -and…\nPSModuleTest.psm1 BookList Add 153 if ([BookList]::Books.Find($FindPredicate)) {…\nPSModuleTest.psm1 BookList Add 154 throw \"Book '$Book' already in list\"\nPSModuleTest.psm1 BookList Add 157 [BookList]::Books.Add($Book)\nPSModuleTest.psm1 BookList Clear 161 [BookList]::Initialize()\nPSModuleTest.psm1 BookList Clear 162 [BookList]::Books.Clear()\nPSModuleTest.psm1 BookList Find 166 [BookList]::Initialize()\nPSModuleTest.psm1 BookList Find 167 return [BookList]::Books.Find($Predicate)\nPSModuleTest.psm1 BookList FindAll 171 [BookList]::Initialize()\nPSModuleTest.psm1 BookList FindAll 172 return [BookList]::Books.FindAll($Predicate)\nPSModuleTest.psm1 BookList Remove 176 [BookList]::Initialize()\nPSModuleTest.psm1 BookList Remove 177 [BookList]::Books.Remove($Book)\nPSModuleTest.psm1 BookList RemoveBy 181 [BookList]::Initialize()\nPSModuleTest.psm1 BookList RemoveBy 182 $Index = [BookList]::Books.FindIndex({…\nPSModuleTest.psm1 BookList RemoveBy 184 $b.$Property -eq $Value\nPSModuleTest.psm1 BookList RemoveBy 186 if ($Index -ge 0) {…\nPSModuleTest.psm1 BookList RemoveBy 187 [BookList]::Books.RemoveAt($Index)\nPSModuleTest.psm1 Get-InternalPSModule 230 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 Set-InternalPSModule 256 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 268 $null = $commandName, $parameterName, $wordToComplete…\nPSModuleTest.psm1 270 'Alice', 'Bob', 'Charlie'\nPSModuleTest.psm1 270 Where-Object { $_ -like \"$wordToComplete*\" }\nPSModuleTest.psm1 270 $_ -like \"$wordToComplete*\"\nPSModuleTest.psm1 270 ForEach-Object {…\nPSModuleTest.psm1 271 [System.Management.Automation.CompletionResult]::new(…\nPSModuleTest.psm1 Test-PSModuleTest 294 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 Get-PSModuleTest 323 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 New-PSModuleTest 358 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 Set-PSModuleTest 394 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 539 Write-Verbose \"Enum already exists [$($Type.FullName)…\nPSModuleTest.psm1 539 $Type.FullName\nPSModuleTest.psm1 552 Write-Verbose \"Class already exists [$($Type.FullName…\nPSModuleTest.psm1 552 $Type.FullName\nPSModuleTest.psm1 560 $MyInvocation.MyCommand.ScriptBlock.Module.OnRemove =…\nPSModuleTest.psm1 561 ($ExportableEnums + $ExportableClasses)\nPSModuleTest.psm1 561 $ExportableEnums + $ExportableClasses\nPSModuleTest.psm1 562 $TypeAcceleratorsClass::Remove($Type.FullName)\n\n\n","CommandsAnalyzedCount":263,"CommandsExecutedCount":181,"CommandsMissedCount":82,"FilesAnalyzedCount":3} diff --git a/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-macOS-CodeCoverage/Module-macOS-CodeCoverage-Report.xml b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-macOS-CodeCoverage/Module-macOS-CodeCoverage-Report.xml new file mode 100644 index 00000000..bbd9570f --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/Module-macOS-CodeCoverage/Module-macOS-CodeCoverage-Report.xml @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-Windows-CodeCoverage/MyTests-Windows-CodeCoverage-Report.json b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-Windows-CodeCoverage/MyTests-Windows-CodeCoverage-Report.json new file mode 100644 index 00000000..3ebe7e70 --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-Windows-CodeCoverage/MyTests-Windows-CodeCoverage-Report.json @@ -0,0 +1 @@ +{"CommandsMissed":[{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\modules\\OtherPSModule.psm1","Line":18,"StartLine":18,"EndLine":18,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-OtherPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":5,"StartLine":5,"EndLine":5,"StartColumn":13,"EndColumn":74,"Class":"","Function":"","Command":"$baseName = [System.IO.Path]::GetFileNameWithoutExtension($PSCommandPath)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":6,"StartLine":6,"EndLine":6,"StartColumn":24,"EndColumn":80,"Class":"","Function":"","Command":"$script:PSModuleInfo = Test-ModuleManifest -Path \"$PSScriptRoot\\$baseName.psd1\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":1,"EndColumn":21,"Class":"","Function":"","Command":"$script:PSModuleInfo","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":24,"EndColumn":35,"Class":"","Function":"","Command":"Format-List","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":38,"EndColumn":56,"Class":"","Function":"","Command":"Out-String -Stream","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":59,"EndColumn":92,"Class":"","Function":"","Command":"ForEach-Object { Write-Debug $_ }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":76,"EndColumn":90,"Class":"","Function":"","Command":"Write-Debug $_","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":8,"StartLine":8,"EndLine":8,"StartColumn":15,"EndColumn":40,"Class":"","Function":"","Command":"$scriptName = $script:PSModuleInfo.Name","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":9,"StartLine":9,"EndLine":9,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - Importing module\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":11,"StartLine":11,"EndLine":11,"StartColumn":1,"EndColumn":57,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":12,"StartLine":12,"EndLine":12,"StartColumn":15,"EndColumn":47,"Class":"","Function":"","Command":"$dataFolder = (Join-Path $PSScriptRoot 'data')","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":12,"StartLine":12,"EndLine":12,"StartColumn":16,"EndColumn":46,"Class":"","Function":"","Command":"Join-Path $PSScriptRoot 'data'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":13,"StartLine":13,"EndLine":13,"StartColumn":1,"EndColumn":53,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$dataFolder]\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":14,"StartLine":14,"EndLine":14,"StartColumn":1,"EndColumn":98,"Class":"","Function":"","Command":"Get-ChildItem -Path \"$dataFolder\" -Recurse -Force -Include '*.psd1' -ErrorAction SilentlyContinue","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":14,"StartLine":14,"EndLine":18,"StartColumn":101,"EndColumn":2,"Class":"","Function":"","Command":"ForEach-Object {\n Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Importing\"\n New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force\n Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Done\"\n}","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":15,"StartLine":15,"EndLine":15,"StartColumn":5,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":15,"StartLine":15,"EndLine":15,"StartColumn":46,"EndColumn":57,"Class":"","Function":"","Command":"$_.BaseName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":16,"StartLine":16,"EndLine":16,"StartColumn":5,"EndColumn":95,"Class":"","Function":"","Command":"New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":16,"StartLine":16,"EndLine":16,"StartColumn":44,"EndColumn":87,"Class":"","Function":"","Command":"Import-PowerShellDataFile -Path $_.FullName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":17,"StartLine":17,"EndLine":17,"StartColumn":5,"EndColumn":67,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":17,"StartLine":17,"EndLine":17,"StartColumn":46,"EndColumn":57,"Class":"","Function":"","Command":"$_.BaseName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":19,"StartLine":19,"EndLine":19,"StartColumn":1,"EndColumn":44,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":22,"StartLine":22,"EndLine":22,"StartColumn":1,"EndColumn":57,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":24,"StartLine":24,"EndLine":24,"StartColumn":1,"EndColumn":65,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - [initializer] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":25,"StartLine":25,"EndLine":25,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '-------------------------------'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":26,"StartLine":26,"EndLine":26,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS AN INITIALIZER ---'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":27,"StartLine":27,"EndLine":27,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '-------------------------------'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":28,"StartLine":28,"EndLine":28,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - [initializer] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":30,"StartLine":30,"EndLine":30,"StartColumn":1,"EndColumn":44,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":33,"StartLine":33,"EndLine":33,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":35,"StartLine":35,"EndLine":35,"StartColumn":1,"EndColumn":81,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - [SecretWriter] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":42,"StartLine":42,"EndLine":42,"StartColumn":23,"EndColumn":29,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Alias = $alias","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":43,"StartLine":43,"EndLine":43,"StartColumn":22,"EndColumn":27,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Name = $name","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":44,"StartLine":44,"EndLine":44,"StartColumn":24,"EndColumn":31,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Secret = $secret","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":48,"StartLine":48,"EndLine":48,"StartColumn":16,"EndColumn":27,"Class":"SecretWriter","Function":"GetAlias","Command":"return $this.Alias","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":51,"StartLine":51,"EndLine":51,"StartColumn":1,"EndColumn":76,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - [SecretWriter] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":53,"StartLine":53,"EndLine":53,"StartColumn":1,"EndColumn":59,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":56,"StartLine":56,"EndLine":56,"StartColumn":1,"EndColumn":71,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":58,"StartLine":58,"EndLine":58,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - [Book] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":69,"StartLine":69,"EndLine":69,"StartColumn":14,"EndColumn":29,"Class":"Book","Function":"Book","Command":"$this.Init(@{})","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":71,"StartLine":71,"EndLine":71,"StartColumn":36,"EndColumn":59,"Class":"Book","Function":"Book","Command":"$this.Init($Properties)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":9,"EndColumn":57,"Class":"Book","Function":"Book","Command":"$this.Init(@{Title = $Title; Author = $Author })","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":30,"EndColumn":36,"Class":"Book","Function":"Book","Command":"Title = $Title","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":47,"EndColumn":54,"Class":"Book","Function":"Book","Command":"Author = $Author","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":78,"StartLine":78,"EndLine":78,"StartColumn":31,"EndColumn":47,"Class":"Book","Function":"Init","Command":"$Properties.Keys","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":79,"StartLine":79,"EndLine":79,"StartColumn":31,"EndColumn":52,"Class":"Book","Function":"Init","Command":"$this.$Property = $Properties.$Property","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":84,"StartLine":84,"EndLine":84,"StartColumn":13,"EndColumn":34,"Class":"Book","Function":"GetReadingTime","Command":"if ($this.PageCount -le 0) {\n throw 'Unable to determine reading time from page count.'\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":85,"StartLine":85,"EndLine":85,"StartColumn":19,"EndColumn":70,"Class":"Book","Function":"GetReadingTime","Command":"throw 'Unable to determine reading time from page count.'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":87,"StartLine":87,"EndLine":87,"StartColumn":20,"EndColumn":39,"Class":"Book","Function":"GetReadingTime","Command":"$Minutes = $this.PageCount * 2","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":88,"StartLine":88,"EndLine":88,"StartColumn":16,"EndColumn":47,"Class":"Book","Function":"GetReadingTime","Command":"return [timespan]::new(0, $Minutes, 0)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":93,"StartLine":93,"EndLine":94,"StartColumn":13,"EndColumn":55,"Class":"Book","Function":"GetPublishedAge","Command":"if (\n $null -eq $this.PublishDate -or\n $this.PublishDate -eq [datetime]::MinValue\n ) { throw 'PublishDate not defined' }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":95,"StartLine":95,"EndLine":95,"StartColumn":19,"EndColumn":44,"Class":"Book","Function":"GetPublishedAge","Command":"throw 'PublishDate not defined'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":97,"StartLine":97,"EndLine":97,"StartColumn":16,"EndColumn":46,"Class":"Book","Function":"GetPublishedAge","Command":"return (Get-Date) - $this.PublishDate","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":97,"StartLine":97,"EndLine":97,"StartColumn":17,"EndColumn":25,"Class":"Book","Function":"GetPublishedAge","Command":"Get-Date","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":16,"EndColumn":79,"Class":"Book","Function":"ToString","Command":"return \"$($this.Title) by $($this.Author) ($($this.PublishDate.Year))\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":19,"EndColumn":30,"Class":"Book","Function":"ToString","Command":"$this.Title","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":37,"EndColumn":49,"Class":"Book","Function":"ToString","Command":"$this.Author","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":54,"EndColumn":76,"Class":"Book","Function":"ToString","Command":"$this.PublishDate.Year","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":110,"StartLine":110,"EndLine":110,"StartColumn":34,"EndColumn":64,"Class":"BookList","Function":"Initialize","Command":"[BookList]::Initialize($false)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":112,"StartLine":112,"EndLine":112,"StartColumn":13,"EndColumn":59,"Class":"BookList","Function":"Initialize","Command":"if ([BookList]::Books.Count -gt 0 -and -not $force) {\n return $false\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":113,"StartLine":113,"EndLine":113,"StartColumn":20,"EndColumn":26,"Class":"BookList","Function":"Initialize","Command":"return $false","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":116,"StartLine":116,"EndLine":116,"StartColumn":29,"EndColumn":75,"Class":"BookList","Function":"Initialize","Command":"[BookList]::Books = [System.Collections.Generic.List[Book]]::new()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":118,"StartLine":118,"EndLine":118,"StartColumn":16,"EndColumn":21,"Class":"BookList","Function":"Initialize","Command":"return $true","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":122,"StartLine":122,"EndLine":125,"StartColumn":19,"EndColumn":20,"Class":"BookList","Function":"Validate","Command":"$Prefix = @(\n 'Book validation failed: Book must be defined with the Title,'\n 'Author, and PublishDate properties, but'\n ) -join ' '","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":123,"StartLine":123,"EndLine":123,"StartColumn":13,"EndColumn":75,"Class":"BookList","Function":"Validate","Command":"'Book validation failed: Book must be defined with the Title,'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":124,"StartLine":124,"EndLine":124,"StartColumn":13,"EndColumn":54,"Class":"BookList","Function":"Validate","Command":"'Author, and PublishDate properties, but'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":126,"StartLine":126,"EndLine":126,"StartColumn":13,"EndColumn":28,"Class":"BookList","Function":"Validate","Command":"if ($null -eq $Book) { throw \"$Prefix was null\" }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":126,"StartLine":126,"EndLine":126,"StartColumn":38,"EndColumn":56,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix was null\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":127,"StartLine":127,"EndLine":127,"StartColumn":13,"EndColumn":49,"Class":"BookList","Function":"Validate","Command":"if ([string]::IsNullOrEmpty($Book.Title)) {\n throw \"$Prefix Title wasn't defined\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":128,"StartLine":128,"EndLine":128,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix Title wasn't defined\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":130,"StartLine":130,"EndLine":130,"StartColumn":13,"EndColumn":50,"Class":"BookList","Function":"Validate","Command":"if ([string]::IsNullOrEmpty($Book.Author)) {\n throw \"$Prefix Author wasn't defined\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":131,"StartLine":131,"EndLine":131,"StartColumn":19,"EndColumn":50,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix Author wasn't defined\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":133,"StartLine":133,"EndLine":133,"StartColumn":13,"EndColumn":55,"Class":"BookList","Function":"Validate","Command":"if ([datetime]::MinValue -eq $Book.PublishDate) {\n throw \"$Prefix PublishDate wasn't defined\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":134,"StartLine":134,"EndLine":134,"StartColumn":19,"EndColumn":55,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix PublishDate wasn't defined\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":140,"StartLine":140,"EndLine":140,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Add","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":141,"StartLine":141,"EndLine":141,"StartColumn":9,"EndColumn":36,"Class":"BookList","Function":"Add","Command":"[BookList]::Validate($Book)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":142,"StartLine":142,"EndLine":142,"StartColumn":13,"EndColumn":46,"Class":"BookList","Function":"Add","Command":"if ([BookList]::Books.Contains($Book)) {\n throw \"Book '$Book' already in list\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":143,"StartLine":143,"EndLine":143,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"throw \"Book '$Book' already in list\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":146,"StartLine":146,"EndLine":152,"StartColumn":26,"EndColumn":26,"Class":"BookList","Function":"Add","Command":"$FindPredicate = {\n param([Book]$b)\n\n $b.Title -eq $Book.Title -and\n $b.Author -eq $Book.Author -and\n $b.PublishDate -eq $Book.PublishDate\n }.GetNewClosure()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":149,"StartLine":149,"EndLine":151,"StartColumn":13,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"$b.Title -eq $Book.Title -and\n $b.Author -eq $Book.Author -and\n $b.PublishDate -eq $Book.PublishDate","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":153,"StartLine":153,"EndLine":153,"StartColumn":13,"EndColumn":51,"Class":"BookList","Function":"Add","Command":"if ([BookList]::Books.Find($FindPredicate)) {\n throw \"Book '$Book' already in list\"\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":154,"StartLine":154,"EndLine":154,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"throw \"Book '$Book' already in list\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":157,"StartLine":157,"EndLine":157,"StartColumn":9,"EndColumn":37,"Class":"BookList","Function":"Add","Command":"[BookList]::Books.Add($Book)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":161,"StartLine":161,"EndLine":161,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Clear","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":162,"StartLine":162,"EndLine":162,"StartColumn":9,"EndColumn":34,"Class":"BookList","Function":"Clear","Command":"[BookList]::Books.Clear()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":166,"StartLine":166,"EndLine":166,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Find","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":167,"StartLine":167,"EndLine":167,"StartColumn":16,"EndColumn":50,"Class":"BookList","Function":"Find","Command":"return [BookList]::Books.Find($Predicate)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":171,"StartLine":171,"EndLine":171,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"FindAll","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":172,"StartLine":172,"EndLine":172,"StartColumn":16,"EndColumn":53,"Class":"BookList","Function":"FindAll","Command":"return [BookList]::Books.FindAll($Predicate)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":176,"StartLine":176,"EndLine":176,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Remove","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":177,"StartLine":177,"EndLine":177,"StartColumn":9,"EndColumn":40,"Class":"BookList","Function":"Remove","Command":"[BookList]::Books.Remove($Book)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":181,"StartLine":181,"EndLine":181,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"RemoveBy","Command":"[BookList]::Initialize()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":182,"StartLine":182,"EndLine":185,"StartColumn":18,"EndColumn":31,"Class":"BookList","Function":"RemoveBy","Command":"$Index = [BookList]::Books.FindIndex({\n param($b)\n $b.$Property -eq $Value\n }.GetNewClosure())","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":184,"StartLine":184,"EndLine":184,"StartColumn":17,"EndColumn":40,"Class":"BookList","Function":"RemoveBy","Command":"$b.$Property -eq $Value","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":186,"StartLine":186,"EndLine":186,"StartColumn":13,"EndColumn":25,"Class":"BookList","Function":"RemoveBy","Command":"if ($Index -ge 0) {\n [BookList]::Books.RemoveAt($Index)\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":187,"StartLine":187,"EndLine":187,"StartColumn":13,"EndColumn":47,"Class":"BookList","Function":"RemoveBy","Command":"[BookList]::Books.RemoveAt($Index)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":206,"StartLine":206,"EndLine":206,"StartColumn":1,"EndColumn":67,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - [Book] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":208,"StartLine":208,"EndLine":208,"StartColumn":1,"EndColumn":58,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":211,"StartLine":211,"EndLine":211,"StartColumn":1,"EndColumn":74,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":213,"StartLine":213,"EndLine":213,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Get-InternalPSModule] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":230,"StartLine":230,"EndLine":230,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-InternalPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":232,"StartLine":232,"EndLine":232,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Get-InternalPSModule] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":235,"StartLine":235,"EndLine":235,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Set-InternalPSModule] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":256,"StartLine":256,"EndLine":256,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Set-InternalPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":258,"StartLine":258,"EndLine":258,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Set-InternalPSModule] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":260,"StartLine":260,"EndLine":260,"StartColumn":1,"EndColumn":61,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":263,"StartLine":263,"EndLine":263,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":265,"StartLine":265,"EndLine":265,"StartColumn":1,"EndColumn":80,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [completers] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":266,"StartLine":266,"EndLine":273,"StartColumn":1,"EndColumn":2,"Class":"","Function":"","Command":"Register-ArgumentCompleter -CommandName New-PSModuleTest -ParameterName Name -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters\n\n 'Alice', 'Bob', 'Charlie' | Where-Object { $_ -like \"$wordToComplete*\" } | ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }\n}","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":268,"StartLine":268,"EndLine":268,"StartColumn":13,"EndColumn":93,"Class":"","Function":"","Command":"$null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":5,"EndColumn":30,"Class":"","Function":"","Command":"'Alice', 'Bob', 'Charlie'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":33,"EndColumn":77,"Class":"","Function":"","Command":"Where-Object { $_ -like \"$wordToComplete*\" }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":48,"EndColumn":75,"Class":"","Function":"","Command":"$_ -like \"$wordToComplete*\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":272,"StartColumn":80,"EndColumn":6,"Class":"","Function":"","Command":"ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":271,"StartLine":271,"EndLine":271,"StartColumn":9,"EndColumn":91,"Class":"","Function":"","Command":"[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":274,"StartLine":274,"EndLine":274,"StartColumn":1,"EndColumn":75,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [completers] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":277,"StartLine":277,"EndLine":277,"StartColumn":1,"EndColumn":87,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [Test-PSModuleTest] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":294,"StartLine":294,"EndLine":294,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Test-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":296,"StartLine":296,"EndLine":296,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [Test-PSModuleTest] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":299,"StartLine":299,"EndLine":299,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":301,"StartLine":301,"EndLine":301,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [Get-PSModuleTest] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":323,"StartLine":323,"EndLine":323,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":325,"StartLine":325,"EndLine":325,"StartColumn":1,"EndColumn":94,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [Get-PSModuleTest] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":328,"StartLine":328,"EndLine":328,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [New-PSModuleTest] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":358,"StartLine":358,"EndLine":358,"StartColumn":5,"EndColumn":33,"Class":"","Function":"New-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":361,"StartLine":361,"EndLine":361,"StartColumn":1,"EndColumn":50,"Class":"","Function":"","Command":"New-Alias New-PSModuleTestAlias3 New-PSModuleTest","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":362,"StartLine":362,"EndLine":362,"StartColumn":1,"EndColumn":63,"Class":"","Function":"","Command":"New-Alias -Name New-PSModuleTestAlias4 -Value New-PSModuleTest","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":365,"StartLine":365,"EndLine":365,"StartColumn":1,"EndColumn":50,"Class":"","Function":"","Command":"Set-Alias New-PSModuleTestAlias5 New-PSModuleTest","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":366,"StartLine":366,"EndLine":366,"StartColumn":1,"EndColumn":94,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [New-PSModuleTest] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":368,"StartLine":368,"EndLine":368,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":371,"StartLine":371,"EndLine":371,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":373,"StartLine":373,"EndLine":373,"StartColumn":1,"EndColumn":104,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - [Set-PSModuleTest] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":394,"StartLine":394,"EndLine":394,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Set-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":396,"StartLine":396,"EndLine":396,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - [Set-PSModuleTest] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":398,"StartLine":398,"EndLine":398,"StartColumn":1,"EndColumn":78,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":400,"StartLine":400,"EndLine":400,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":403,"StartLine":403,"EndLine":403,"StartColumn":1,"EndColumn":74,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":405,"StartLine":405,"EndLine":405,"StartColumn":1,"EndColumn":87,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - [PrivateVariables] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":406,"StartLine":406,"EndLine":437,"StartColumn":28,"EndColumn":2,"Class":"","Function":"","Command":"$script:HabitablePlanets = @(\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n },\n @{\n Name = 'Proxima Centauri b'\n Mass = 1.17\n Diameter = 11449\n DayLength = 5.15\n },\n @{\n Name = 'Kepler-442b'\n Mass = 2.34\n Diameter = 11349\n DayLength = 5.7\n },\n @{\n Name = 'Kepler-452b'\n Mass = 5.0\n Diameter = 17340\n DayLength = 20.0\n }\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":407,"StartLine":407,"EndLine":436,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n },\n @{\n Name = 'Proxima Centauri b'\n Mass = 1.17\n Diameter = 11449\n DayLength = 5.15\n },\n @{\n Name = 'Kepler-442b'\n Mass = 2.34\n Diameter = 11349\n DayLength = 5.7\n },\n @{\n Name = 'Kepler-452b'\n Mass = 5.0\n Diameter = 17340\n DayLength = 20.0\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":408,"StartLine":408,"EndLine":408,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":409,"StartLine":409,"EndLine":409,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":410,"StartLine":410,"EndLine":410,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":411,"StartLine":411,"EndLine":411,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":414,"StartLine":414,"EndLine":414,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Mars'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":415,"StartLine":415,"EndLine":415,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.642","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":416,"StartLine":416,"EndLine":416,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 6792","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":417,"StartLine":417,"EndLine":417,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.7","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":420,"StartLine":420,"EndLine":420,"StartColumn":21,"EndColumn":41,"Class":"","Function":"","Command":"Name = 'Proxima Centauri b'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":421,"StartLine":421,"EndLine":421,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 1.17","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":422,"StartLine":422,"EndLine":422,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 11449","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":423,"StartLine":423,"EndLine":423,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 5.15","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":426,"StartLine":426,"EndLine":426,"StartColumn":21,"EndColumn":34,"Class":"","Function":"","Command":"Name = 'Kepler-442b'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":427,"StartLine":427,"EndLine":427,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 2.34","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":428,"StartLine":428,"EndLine":428,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 11349","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":429,"StartLine":429,"EndLine":429,"StartColumn":21,"EndColumn":24,"Class":"","Function":"","Command":"DayLength = 5.7","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":432,"StartLine":432,"EndLine":432,"StartColumn":21,"EndColumn":34,"Class":"","Function":"","Command":"Name = 'Kepler-452b'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":433,"StartLine":433,"EndLine":433,"StartColumn":21,"EndColumn":24,"Class":"","Function":"","Command":"Mass = 5.0","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":434,"StartLine":434,"EndLine":434,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 17340","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":435,"StartLine":435,"EndLine":435,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 20.0","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":439,"StartLine":439,"EndLine":452,"StartColumn":28,"EndColumn":2,"Class":"","Function":"","Command":"$script:InhabitedPlanets = @(\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n }\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":440,"StartLine":440,"EndLine":451,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":441,"StartLine":441,"EndLine":441,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":442,"StartLine":442,"EndLine":442,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":443,"StartLine":443,"EndLine":443,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":444,"StartLine":444,"EndLine":444,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":447,"StartLine":447,"EndLine":447,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Mars'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":448,"StartLine":448,"EndLine":448,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.642","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":449,"StartLine":449,"EndLine":449,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 6792","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":450,"StartLine":450,"EndLine":450,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.7","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":453,"StartLine":453,"EndLine":453,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - [PrivateVariables] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":455,"StartLine":455,"EndLine":455,"StartColumn":1,"EndColumn":61,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":458,"StartLine":458,"EndLine":458,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - Processing folder\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":460,"StartLine":460,"EndLine":460,"StartColumn":1,"EndColumn":75,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Moons] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":461,"StartLine":461,"EndLine":466,"StartColumn":17,"EndColumn":2,"Class":"","Function":"","Command":"$script:Moons = @(\n @{\n Planet = 'Earth'\n Name = 'Moon'\n }\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":462,"StartLine":462,"EndLine":465,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Planet = 'Earth'\n Name = 'Moon'\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":463,"StartLine":463,"EndLine":463,"StartColumn":18,"EndColumn":25,"Class":"","Function":"","Command":"Planet = 'Earth'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":464,"StartLine":464,"EndLine":464,"StartColumn":18,"EndColumn":24,"Class":"","Function":"","Command":"Name = 'Moon'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":467,"StartLine":467,"EndLine":467,"StartColumn":1,"EndColumn":70,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Moons] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":470,"StartLine":470,"EndLine":470,"StartColumn":1,"EndColumn":77,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Planets] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":471,"StartLine":471,"EndLine":490,"StartColumn":19,"EndColumn":2,"Class":"","Function":"","Command":"$script:Planets = @(\n @{\n Name = 'Mercury'\n Mass = 0.330\n Diameter = 4879\n DayLength = 4222.6\n },\n @{\n Name = 'Venus'\n Mass = 4.87\n Diameter = 12104\n DayLength = 2802.0\n },\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n }\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":472,"StartLine":472,"EndLine":489,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Mercury'\n Mass = 0.330\n Diameter = 4879\n DayLength = 4222.6\n },\n @{\n Name = 'Venus'\n Mass = 4.87\n Diameter = 12104\n DayLength = 2802.0\n },\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":473,"StartLine":473,"EndLine":473,"StartColumn":21,"EndColumn":30,"Class":"","Function":"","Command":"Name = 'Mercury'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":474,"StartLine":474,"EndLine":474,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.330","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":475,"StartLine":475,"EndLine":475,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 4879","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":476,"StartLine":476,"EndLine":476,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"DayLength = 4222.6","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":479,"StartLine":479,"EndLine":479,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Venus'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":480,"StartLine":480,"EndLine":480,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 4.87","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":481,"StartLine":481,"EndLine":481,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12104","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":482,"StartLine":482,"EndLine":482,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"DayLength = 2802.0","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":485,"StartLine":485,"EndLine":485,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":486,"StartLine":486,"EndLine":486,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":487,"StartLine":487,"EndLine":487,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":488,"StartLine":488,"EndLine":488,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":491,"StartLine":491,"EndLine":491,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Planets] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":494,"StartLine":494,"EndLine":494,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [SolarSystems] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":495,"StartLine":495,"EndLine":511,"StartColumn":24,"EndColumn":2,"Class":"","Function":"","Command":"$script:SolarSystems = @(\n @{\n Name = 'Solar System'\n Planets = $script:Planets\n Moons = $script:Moons\n },\n @{\n Name = 'Alpha Centauri'\n Planets = @()\n Moons = @()\n },\n @{\n Name = 'Sirius'\n Planets = @()\n Moons = @()\n }\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":496,"StartLine":496,"EndLine":510,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Solar System'\n Planets = $script:Planets\n Moons = $script:Moons\n },\n @{\n Name = 'Alpha Centauri'\n Planets = @()\n Moons = @()\n },\n @{\n Name = 'Sirius'\n Planets = @()\n Moons = @()\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":497,"StartLine":497,"EndLine":497,"StartColumn":19,"EndColumn":33,"Class":"","Function":"","Command":"Name = 'Solar System'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":498,"StartLine":498,"EndLine":498,"StartColumn":19,"EndColumn":34,"Class":"","Function":"","Command":"Planets = $script:Planets","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":499,"StartLine":499,"EndLine":499,"StartColumn":19,"EndColumn":32,"Class":"","Function":"","Command":"Moons = $script:Moons","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":502,"StartLine":502,"EndLine":502,"StartColumn":19,"EndColumn":35,"Class":"","Function":"","Command":"Name = 'Alpha Centauri'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":503,"StartLine":503,"EndLine":503,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Planets = @()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":504,"StartLine":504,"EndLine":504,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Moons = @()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":507,"StartLine":507,"EndLine":507,"StartColumn":19,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Sirius'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":508,"StartLine":508,"EndLine":508,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Planets = @()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":509,"StartLine":509,"EndLine":509,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Moons = @()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":512,"StartLine":512,"EndLine":512,"StartColumn":1,"EndColumn":77,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [SolarSystems] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":514,"StartLine":514,"EndLine":514,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":517,"StartLine":517,"EndLine":517,"StartColumn":1,"EndColumn":52,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [finally] - Importing\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":518,"StartLine":518,"EndLine":518,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '------------------------------'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":519,"StartLine":519,"EndLine":519,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS A LAST LOADER ---'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":520,"StartLine":520,"EndLine":520,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '------------------------------'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":521,"StartLine":521,"EndLine":521,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [finally] - Done\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":525,"StartLine":525,"EndLine":527,"StartColumn":26,"EndColumn":2,"Class":"","Function":"","Command":"$TypeAcceleratorsClass = [psobject].Assembly.GetType(\n 'System.Management.Automation.TypeAccelerators'\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":530,"StartLine":530,"EndLine":530,"StartColumn":29,"EndColumn":56,"Class":"","Function":"","Command":"$ExistingTypeAccelerators = $TypeAcceleratorsClass::Get","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":532,"StartLine":532,"EndLine":535,"StartColumn":20,"EndColumn":2,"Class":"","Function":"","Command":"$ExportableEnums = @(\n [Binding]\n [Genre]\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":533,"StartLine":533,"EndLine":533,"StartColumn":5,"EndColumn":14,"Class":"","Function":"","Command":"[Binding]","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":534,"StartLine":534,"EndLine":534,"StartColumn":5,"EndColumn":12,"Class":"","Function":"","Command":"[Genre]","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":1,"EndColumn":17,"Class":"","Function":"","Command":"$ExportableEnums","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":20,"EndColumn":87,"Class":"","Function":"","Command":"Foreach-Object { Write-Verbose \"Exporting enum '$($_.FullName)'.\" }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":37,"EndColumn":85,"Class":"","Function":"","Command":"Write-Verbose \"Exporting enum '$($_.FullName)'.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":70,"EndColumn":81,"Class":"","Function":"","Command":"$_.FullName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":537,"StartLine":537,"EndLine":537,"StartColumn":19,"EndColumn":35,"Class":"","Function":"","Command":"$ExportableEnums","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":538,"StartLine":538,"EndLine":538,"StartColumn":9,"EndColumn":58,"Class":"","Function":"","Command":"if ($Type.FullName -in $ExistingTypeAccelerators.Keys) {\n Write-Verbose \"Enum already exists [$($Type.FullName)]. Skipping.\"\n } else {\n Write-Verbose \"Importing enum '$Type'.\"\n $TypeAcceleratorsClass::Add($Type.FullName, $Type)\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":539,"StartLine":539,"EndLine":539,"StartColumn":9,"EndColumn":75,"Class":"","Function":"","Command":"Write-Verbose \"Enum already exists [$($Type.FullName)]. Skipping.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":539,"StartLine":539,"EndLine":539,"StartColumn":47,"EndColumn":61,"Class":"","Function":"","Command":"$Type.FullName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":541,"StartLine":541,"EndLine":541,"StartColumn":9,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose \"Importing enum '$Type'.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":542,"StartLine":542,"EndLine":542,"StartColumn":9,"EndColumn":59,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Add($Type.FullName, $Type)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":545,"StartLine":545,"EndLine":548,"StartColumn":22,"EndColumn":2,"Class":"","Function":"","Command":"$ExportableClasses = @(\n [Book]\n [BookList]\n)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":546,"StartLine":546,"EndLine":546,"StartColumn":5,"EndColumn":11,"Class":"","Function":"","Command":"[Book]","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":547,"StartLine":547,"EndLine":547,"StartColumn":5,"EndColumn":15,"Class":"","Function":"","Command":"[BookList]","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":1,"EndColumn":19,"Class":"","Function":"","Command":"$ExportableClasses","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":22,"EndColumn":90,"Class":"","Function":"","Command":"Foreach-Object { Write-Verbose \"Exporting class '$($_.FullName)'.\" }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":39,"EndColumn":88,"Class":"","Function":"","Command":"Write-Verbose \"Exporting class '$($_.FullName)'.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":73,"EndColumn":84,"Class":"","Function":"","Command":"$_.FullName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":550,"StartLine":550,"EndLine":550,"StartColumn":19,"EndColumn":37,"Class":"","Function":"","Command":"$ExportableClasses","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":551,"StartLine":551,"EndLine":551,"StartColumn":9,"EndColumn":58,"Class":"","Function":"","Command":"if ($Type.FullName -in $ExistingTypeAccelerators.Keys) {\n Write-Verbose \"Class already exists [$($Type.FullName)]. Skipping.\"\n } else {\n Write-Verbose \"Importing class '$Type'.\"\n $TypeAcceleratorsClass::Add($Type.FullName, $Type)\n }","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":552,"StartLine":552,"EndLine":552,"StartColumn":9,"EndColumn":76,"Class":"","Function":"","Command":"Write-Verbose \"Class already exists [$($Type.FullName)]. Skipping.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":552,"StartLine":552,"EndLine":552,"StartColumn":48,"EndColumn":62,"Class":"","Function":"","Command":"$Type.FullName","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":554,"StartLine":554,"EndLine":554,"StartColumn":9,"EndColumn":49,"Class":"","Function":"","Command":"Write-Verbose \"Importing class '$Type'.\"","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":555,"StartLine":555,"EndLine":555,"StartColumn":9,"EndColumn":59,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Add($Type.FullName, $Type)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":560,"StartLine":560,"EndLine":564,"StartColumn":55,"EndColumn":18,"Class":"","Function":"","Command":"$MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = {\n foreach ($Type in ($ExportableEnums + $ExportableClasses)) {\n $TypeAcceleratorsClass::Remove($Type.FullName)\n }\n}.GetNewClosure()","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":561,"StartLine":561,"EndLine":561,"StartColumn":23,"EndColumn":62,"Class":"","Function":"","Command":"($ExportableEnums + $ExportableClasses)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":561,"StartLine":561,"EndLine":561,"StartColumn":24,"EndColumn":61,"Class":"","Function":"","Command":"$ExportableEnums + $ExportableClasses","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":562,"StartLine":562,"EndLine":562,"StartColumn":9,"EndColumn":55,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Remove($Type.FullName)","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":567,"StartLine":567,"EndLine":581,"StartColumn":12,"EndColumn":2,"Class":"","Function":"","Command":"$exports = @{\n Alias = '*'\n Cmdlet = ''\n Function = @(\n 'Get-PSModuleTest'\n 'New-PSModuleTest'\n 'Set-PSModuleTest'\n 'Test-PSModuleTest'\n )\n Variable = @(\n 'Moons'\n 'Planets'\n 'SolarSystems'\n )\n}","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":568,"StartLine":568,"EndLine":568,"StartColumn":16,"EndColumn":19,"Class":"","Function":"","Command":"Alias = '*'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":569,"StartLine":569,"EndLine":569,"StartColumn":16,"EndColumn":18,"Class":"","Function":"","Command":"Cmdlet = ''","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":570,"StartLine":570,"EndLine":575,"StartColumn":16,"EndColumn":6,"Class":"","Function":"","Command":"Function = @(\n 'Get-PSModuleTest'\n 'New-PSModuleTest'\n 'Set-PSModuleTest'\n 'Test-PSModuleTest'\n )","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":571,"StartLine":571,"EndLine":571,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'Get-PSModuleTest'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":572,"StartLine":572,"EndLine":572,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'New-PSModuleTest'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":573,"StartLine":573,"EndLine":573,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'Set-PSModuleTest'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":574,"StartLine":574,"EndLine":574,"StartColumn":9,"EndColumn":28,"Class":"","Function":"","Command":"'Test-PSModuleTest'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":576,"StartLine":576,"EndLine":580,"StartColumn":16,"EndColumn":6,"Class":"","Function":"","Command":"Variable = @(\n 'Moons'\n 'Planets'\n 'SolarSystems'\n )","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":577,"StartLine":577,"EndLine":577,"StartColumn":9,"EndColumn":16,"Class":"","Function":"","Command":"'Moons'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":578,"StartLine":578,"EndLine":578,"StartColumn":9,"EndColumn":18,"Class":"","Function":"","Command":"'Planets'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":579,"StartLine":579,"EndLine":579,"StartColumn":9,"EndColumn":23,"Class":"","Function":"","Command":"'SolarSystems'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","Line":582,"StartLine":582,"EndLine":582,"StartColumn":1,"EndColumn":29,"Class":"","Function":"","Command":"Export-ModuleMember @exports","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\scripts\\loader.ps1","Line":1,"StartLine":1,"EndLine":1,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '-------------------------'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\scripts\\loader.ps1","Line":2,"StartLine":2,"EndLine":2,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS A LOADER ---'","HitCount":0},{"File":"D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\scripts\\loader.ps1","Line":3,"StartLine":3,"EndLine":3,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '-------------------------'","HitCount":0}],"CommandsExecuted":[],"FilesAnalyzed":["D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\modules\\OtherPSModule.psm1","D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\PSModuleTest.psm1","D:\\a\\Process-PSModule\\Process-PSModule\\tests\\srcWithManifestTestRepo\\outputs\\module\\PSModuleTest\\scripts\\loader.ps1"],"CoveragePercent":0.0,"CoveragePercentTarget":0.0,"CoverageReport":"Covered 0% / 0%. 263 analyzed Commands in 3 Files.\n Missed commands:\n \r\n\u001b[32;1mFile \u001b[0m\u001b[32;1m Class \u001b[0m\u001b[32;1m Function \u001b[0m\u001b[32;1m Line\u001b[0m\u001b[32;1m Command\u001b[0m\r\n\u001b[32;1m---- \u001b[0m \u001b[32;1m----- \u001b[0m \u001b[32;1m-------- \u001b[0m \u001b[32;1m----\u001b[0m \u001b[32;1m-------\u001b[0m\r\nmodules\\OtherPSModule.psm1 Get-OtherPSModule 18 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 5 $baseName = [System.IO.Path]::GetFileNameWithoutExten…\r\nPSModuleTest.psm1 6 $script:PSModuleInfo = Test-ModuleManifest -Path \"$PS…\r\nPSModuleTest.psm1 7 $script:PSModuleInfo\r\nPSModuleTest.psm1 7 Format-List\r\nPSModuleTest.psm1 7 Out-String -Stream\r\nPSModuleTest.psm1 7 ForEach-Object { Write-Debug $_ }\r\nPSModuleTest.psm1 7 Write-Debug $_\r\nPSModuleTest.psm1 8 $scriptName = $script:PSModuleInfo.Name\r\nPSModuleTest.psm1 9 Write-Debug \"[$scriptName] - Importing module\"\r\nPSModuleTest.psm1 11 Write-Debug \"[$scriptName] - [data] - Processing fold…\r\nPSModuleTest.psm1 12 $dataFolder = (Join-Path $PSScriptRoot 'data')\r\nPSModuleTest.psm1 12 Join-Path $PSScriptRoot 'data'\r\nPSModuleTest.psm1 13 Write-Debug \"[$scriptName] - [data] - [$dataFolder]\"\r\nPSModuleTest.psm1 14 Get-ChildItem -Path \"$dataFolder\" -Recurse -Force -In…\r\nPSModuleTest.psm1 14 ForEach-Object {…\r\nPSModuleTest.psm1 15 Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)…\r\nPSModuleTest.psm1 15 $_.BaseName\r\nPSModuleTest.psm1 16 New-Variable -Name $_.BaseName -Value (Import-PowerSh…\r\nPSModuleTest.psm1 16 Import-PowerShellDataFile -Path $_.FullName\r\nPSModuleTest.psm1 17 Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)…\r\nPSModuleTest.psm1 17 $_.BaseName\r\nPSModuleTest.psm1 19 Write-Debug \"[$scriptName] - [data] - Done\"\r\nPSModuleTest.psm1 22 Write-Debug \"[$scriptName] - [init] - Processing fold…\r\nPSModuleTest.psm1 24 Write-Debug \"[$scriptName] - [init] - [initializer] -…\r\nPSModuleTest.psm1 25 Write-Verbose '-------------------------------'\r\nPSModuleTest.psm1 26 Write-Verbose '--- THIS IS AN INITIALIZER ---'\r\nPSModuleTest.psm1 27 Write-Verbose '-------------------------------'\r\nPSModuleTest.psm1 28 Write-Debug \"[$scriptName] - [init] - [initializer] -…\r\nPSModuleTest.psm1 30 Write-Debug \"[$scriptName] - [init] - Done\"\r\nPSModuleTest.psm1 33 Write-Debug \"[$scriptName] - [classes] - [private] - …\r\nPSModuleTest.psm1 35 Write-Debug \"[$scriptName] - [classes] - [private] - …\r\nPSModuleTest.psm1 SecretWriter SecretWriter 42 $this.Alias = $alias\r\nPSModuleTest.psm1 SecretWriter SecretWriter 43 $this.Name = $name\r\nPSModuleTest.psm1 SecretWriter SecretWriter 44 $this.Secret = $secret\r\nPSModuleTest.psm1 SecretWriter GetAlias 48 return $this.Alias\r\nPSModuleTest.psm1 51 Write-Debug \"[$scriptName] - [classes] - [private] - …\r\nPSModuleTest.psm1 53 Write-Debug \"[$scriptName] - [classes] - [private] - …\r\nPSModuleTest.psm1 56 Write-Debug \"[$scriptName] - [classes] - [public] - P…\r\nPSModuleTest.psm1 58 Write-Debug \"[$scriptName] - [classes] - [public] - […\r\nPSModuleTest.psm1 Book Book 69 $this.Init(@{})\r\nPSModuleTest.psm1 Book Book 71 $this.Init($Properties)\r\nPSModuleTest.psm1 Book Book 74 $this.Init(@{Title = $Title; Author = $Author })\r\nPSModuleTest.psm1 Book Book 74 Title = $Title\r\nPSModuleTest.psm1 Book Book 74 Author = $Author\r\nPSModuleTest.psm1 Book Init 78 $Properties.Keys\r\nPSModuleTest.psm1 Book Init 79 $this.$Property = $Properties.$Property\r\nPSModuleTest.psm1 Book GetReadingTime 84 if ($this.PageCount -le 0) {…\r\nPSModuleTest.psm1 Book GetReadingTime 85 throw 'Unable to determine reading time from page cou…\r\nPSModuleTest.psm1 Book GetReadingTime 87 $Minutes = $this.PageCount * 2\r\nPSModuleTest.psm1 Book GetReadingTime 88 return [timespan]::new(0, $Minutes, 0)\r\nPSModuleTest.psm1 Book GetPublishedAge 93 if (…\r\nPSModuleTest.psm1 Book GetPublishedAge 95 throw 'PublishDate not defined'\r\nPSModuleTest.psm1 Book GetPublishedAge 97 return (Get-Date) - $this.PublishDate\r\nPSModuleTest.psm1 Book GetPublishedAge 97 Get-Date\r\nPSModuleTest.psm1 Book ToString 101 return \"$($this.Title) by $($this.Author) ($($this.Pu…\r\nPSModuleTest.psm1 Book ToString 101 $this.Title\r\nPSModuleTest.psm1 Book ToString 101 $this.Author\r\nPSModuleTest.psm1 Book ToString 101 $this.PublishDate.Year\r\nPSModuleTest.psm1 BookList Initialize 110 [BookList]::Initialize($false)\r\nPSModuleTest.psm1 BookList Initialize 112 if ([BookList]::Books.Count -gt 0 -and -not $force) {…\r\nPSModuleTest.psm1 BookList Initialize 113 return $false\r\nPSModuleTest.psm1 BookList Initialize 116 [BookList]::Books = [System.Collections.Generic.List[…\r\nPSModuleTest.psm1 BookList Initialize 118 return $true\r\nPSModuleTest.psm1 BookList Validate 122 $Prefix = @(…\r\nPSModuleTest.psm1 BookList Validate 123 'Book validation failed: Book must be defined with th…\r\nPSModuleTest.psm1 BookList Validate 124 'Author, and PublishDate properties, but'\r\nPSModuleTest.psm1 BookList Validate 126 if ($null -eq $Book) { throw \"$Prefix was null\" }\r\nPSModuleTest.psm1 BookList Validate 126 throw \"$Prefix was null\"\r\nPSModuleTest.psm1 BookList Validate 127 if ([string]::IsNullOrEmpty($Book.Title)) {…\r\nPSModuleTest.psm1 BookList Validate 128 throw \"$Prefix Title wasn't defined\"\r\nPSModuleTest.psm1 BookList Validate 130 if ([string]::IsNullOrEmpty($Book.Author)) {…\r\nPSModuleTest.psm1 BookList Validate 131 throw \"$Prefix Author wasn't defined\"\r\nPSModuleTest.psm1 BookList Validate 133 if ([datetime]::MinValue -eq $Book.PublishDate) {…\r\nPSModuleTest.psm1 BookList Validate 134 throw \"$Prefix PublishDate wasn't defined\"\r\nPSModuleTest.psm1 BookList Add 140 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList Add 141 [BookList]::Validate($Book)\r\nPSModuleTest.psm1 BookList Add 142 if ([BookList]::Books.Contains($Book)) {…\r\nPSModuleTest.psm1 BookList Add 143 throw \"Book '$Book' already in list\"\r\nPSModuleTest.psm1 BookList Add 146 $FindPredicate = {…\r\nPSModuleTest.psm1 BookList Add 149 $b.Title -eq $Book.Title -and…\r\nPSModuleTest.psm1 BookList Add 153 if ([BookList]::Books.Find($FindPredicate)) {…\r\nPSModuleTest.psm1 BookList Add 154 throw \"Book '$Book' already in list\"\r\nPSModuleTest.psm1 BookList Add 157 [BookList]::Books.Add($Book)\r\nPSModuleTest.psm1 BookList Clear 161 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList Clear 162 [BookList]::Books.Clear()\r\nPSModuleTest.psm1 BookList Find 166 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList Find 167 return [BookList]::Books.Find($Predicate)\r\nPSModuleTest.psm1 BookList FindAll 171 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList FindAll 172 return [BookList]::Books.FindAll($Predicate)\r\nPSModuleTest.psm1 BookList Remove 176 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList Remove 177 [BookList]::Books.Remove($Book)\r\nPSModuleTest.psm1 BookList RemoveBy 181 [BookList]::Initialize()\r\nPSModuleTest.psm1 BookList RemoveBy 182 $Index = [BookList]::Books.FindIndex({…\r\nPSModuleTest.psm1 BookList RemoveBy 184 $b.$Property -eq $Value\r\nPSModuleTest.psm1 BookList RemoveBy 186 if ($Index -ge 0) {…\r\nPSModuleTest.psm1 BookList RemoveBy 187 [BookList]::Books.RemoveAt($Index)\r\nPSModuleTest.psm1 206 Write-Debug \"[$scriptName] - [classes] - [public] - […\r\nPSModuleTest.psm1 208 Write-Debug \"[$scriptName] - [classes] - [public] - D…\r\nPSModuleTest.psm1 211 Write-Debug \"[$scriptName] - [functions] - [private] …\r\nPSModuleTest.psm1 213 Write-Debug \"[$scriptName] - [functions] - [private] …\r\nPSModuleTest.psm1 Get-InternalPSModule 230 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 232 Write-Debug \"[$scriptName] - [functions] - [private] …\r\nPSModuleTest.psm1 235 Write-Debug \"[$scriptName] - [functions] - [private] …\r\nPSModuleTest.psm1 Set-InternalPSModule 256 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 258 Write-Debug \"[$scriptName] - [functions] - [private] …\r\nPSModuleTest.psm1 260 Write-Debug \"[$scriptName] - [functions] - [private] …\r\nPSModuleTest.psm1 263 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 265 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 266 Register-ArgumentCompleter -CommandName New-PSModuleT…\r\nPSModuleTest.psm1 268 $null = $commandName, $parameterName, $wordToComplete…\r\nPSModuleTest.psm1 270 'Alice', 'Bob', 'Charlie'\r\nPSModuleTest.psm1 270 Where-Object { $_ -like \"$wordToComplete*\" }\r\nPSModuleTest.psm1 270 $_ -like \"$wordToComplete*\"\r\nPSModuleTest.psm1 270 ForEach-Object {…\r\nPSModuleTest.psm1 271 [System.Management.Automation.CompletionResult]::new(…\r\nPSModuleTest.psm1 274 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 277 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 Test-PSModuleTest 294 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 296 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 299 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 301 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 Get-PSModuleTest 323 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 325 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 328 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 New-PSModuleTest 358 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 361 New-Alias New-PSModuleTestAlias3 New-PSModuleTest\r\nPSModuleTest.psm1 362 New-Alias -Name New-PSModuleTestAlias4 -Value New-PSM…\r\nPSModuleTest.psm1 365 Set-Alias New-PSModuleTestAlias5 New-PSModuleTest\r\nPSModuleTest.psm1 366 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 368 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 371 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 373 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 Set-PSModuleTest 394 Write-Output \"Hello, $Name!\"\r\nPSModuleTest.psm1 396 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 398 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 400 Write-Debug \"[$scriptName] - [functions] - [public] -…\r\nPSModuleTest.psm1 403 Write-Debug \"[$scriptName] - [variables] - [private] …\r\nPSModuleTest.psm1 405 Write-Debug \"[$scriptName] - [variables] - [private] …\r\nPSModuleTest.psm1 406 $script:HabitablePlanets = @(…\r\nPSModuleTest.psm1 407 @{…\r\nPSModuleTest.psm1 408 Name = 'Earth'\r\nPSModuleTest.psm1 409 Mass = 5.97\r\nPSModuleTest.psm1 410 Diameter = 12756\r\nPSModuleTest.psm1 411 DayLength = 24.0\r\nPSModuleTest.psm1 414 Name = 'Mars'\r\nPSModuleTest.psm1 415 Mass = 0.642\r\nPSModuleTest.psm1 416 Diameter = 6792\r\nPSModuleTest.psm1 417 DayLength = 24.7\r\nPSModuleTest.psm1 420 Name = 'Proxima Centauri b'\r\nPSModuleTest.psm1 421 Mass = 1.17\r\nPSModuleTest.psm1 422 Diameter = 11449\r\nPSModuleTest.psm1 423 DayLength = 5.15\r\nPSModuleTest.psm1 426 Name = 'Kepler-442b'\r\nPSModuleTest.psm1 427 Mass = 2.34\r\nPSModuleTest.psm1 428 Diameter = 11349\r\nPSModuleTest.psm1 429 DayLength = 5.7\r\nPSModuleTest.psm1 432 Name = 'Kepler-452b'\r\nPSModuleTest.psm1 433 Mass = 5.0\r\nPSModuleTest.psm1 434 Diameter = 17340\r\nPSModuleTest.psm1 435 DayLength = 20.0\r\nPSModuleTest.psm1 439 $script:InhabitedPlanets = @(…\r\nPSModuleTest.psm1 440 @{…\r\nPSModuleTest.psm1 441 Name = 'Earth'\r\nPSModuleTest.psm1 442 Mass = 5.97\r\nPSModuleTest.psm1 443 Diameter = 12756\r\nPSModuleTest.psm1 444 DayLength = 24.0\r\nPSModuleTest.psm1 447 Name = 'Mars'\r\nPSModuleTest.psm1 448 Mass = 0.642\r\nPSModuleTest.psm1 449 Diameter = 6792\r\nPSModuleTest.psm1 450 DayLength = 24.7\r\nPSModuleTest.psm1 453 Write-Debug \"[$scriptName] - [variables] - [private] …\r\nPSModuleTest.psm1 455 Write-Debug \"[$scriptName] - [variables] - [private] …\r\nPSModuleTest.psm1 458 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 460 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 461 $script:Moons = @(…\r\nPSModuleTest.psm1 462 @{…\r\nPSModuleTest.psm1 463 Planet = 'Earth'\r\nPSModuleTest.psm1 464 Name = 'Moon'\r\nPSModuleTest.psm1 467 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 470 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 471 $script:Planets = @(…\r\nPSModuleTest.psm1 472 @{…\r\nPSModuleTest.psm1 473 Name = 'Mercury'\r\nPSModuleTest.psm1 474 Mass = 0.330\r\nPSModuleTest.psm1 475 Diameter = 4879\r\nPSModuleTest.psm1 476 DayLength = 4222.6\r\nPSModuleTest.psm1 479 Name = 'Venus'\r\nPSModuleTest.psm1 480 Mass = 4.87\r\nPSModuleTest.psm1 481 Diameter = 12104\r\nPSModuleTest.psm1 482 DayLength = 2802.0\r\nPSModuleTest.psm1 485 Name = 'Earth'\r\nPSModuleTest.psm1 486 Mass = 5.97\r\nPSModuleTest.psm1 487 Diameter = 12756\r\nPSModuleTest.psm1 488 DayLength = 24.0\r\nPSModuleTest.psm1 491 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 494 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 495 $script:SolarSystems = @(…\r\nPSModuleTest.psm1 496 @{…\r\nPSModuleTest.psm1 497 Name = 'Solar System'\r\nPSModuleTest.psm1 498 Planets = $script:Planets\r\nPSModuleTest.psm1 499 Moons = $script:Moons\r\nPSModuleTest.psm1 502 Name = 'Alpha Centauri'\r\nPSModuleTest.psm1 503 Planets = @()\r\nPSModuleTest.psm1 504 Moons = @()\r\nPSModuleTest.psm1 507 Name = 'Sirius'\r\nPSModuleTest.psm1 508 Planets = @()\r\nPSModuleTest.psm1 509 Moons = @()\r\nPSModuleTest.psm1 512 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 514 Write-Debug \"[$scriptName] - [variables] - [public] -…\r\nPSModuleTest.psm1 517 Write-Debug \"[$scriptName] - [finally] - Importing\"\r\nPSModuleTest.psm1 518 Write-Verbose '------------------------------'\r\nPSModuleTest.psm1 519 Write-Verbose '--- THIS IS A LAST LOADER ---'\r\nPSModuleTest.psm1 520 Write-Verbose '------------------------------'\r\nPSModuleTest.psm1 521 Write-Debug \"[$scriptName] - [finally] - Done\"\r\nPSModuleTest.psm1 525 $TypeAcceleratorsClass = [psobject].Assembly.GetType(…\r\nPSModuleTest.psm1 530 $ExistingTypeAccelerators = $TypeAcceleratorsClass::G…\r\nPSModuleTest.psm1 532 $ExportableEnums = @(…\r\nPSModuleTest.psm1 533 [Binding]\r\nPSModuleTest.psm1 534 [Genre]\r\nPSModuleTest.psm1 536 $ExportableEnums\r\nPSModuleTest.psm1 536 Foreach-Object { Write-Verbose \"Exporting enum '$($_.…\r\nPSModuleTest.psm1 536 Write-Verbose \"Exporting enum '$($_.FullName)'.\"\r\nPSModuleTest.psm1 536 $_.FullName\r\nPSModuleTest.psm1 537 $ExportableEnums\r\nPSModuleTest.psm1 538 if ($Type.FullName -in $ExistingTypeAccelerators.Keys…\r\nPSModuleTest.psm1 539 Write-Verbose \"Enum already exists [$($Type.FullName)…\r\nPSModuleTest.psm1 539 $Type.FullName\r\nPSModuleTest.psm1 541 Write-Verbose \"Importing enum '$Type'.\"\r\nPSModuleTest.psm1 542 $TypeAcceleratorsClass::Add($Type.FullName, $Type)\r\nPSModuleTest.psm1 545 $ExportableClasses = @(…\r\nPSModuleTest.psm1 546 [Book]\r\nPSModuleTest.psm1 547 [BookList]\r\nPSModuleTest.psm1 549 $ExportableClasses\r\nPSModuleTest.psm1 549 Foreach-Object { Write-Verbose \"Exporting class '$($_…\r\nPSModuleTest.psm1 549 Write-Verbose \"Exporting class '$($_.FullName)'.\"\r\nPSModuleTest.psm1 549 $_.FullName\r\nPSModuleTest.psm1 550 $ExportableClasses\r\nPSModuleTest.psm1 551 if ($Type.FullName -in $ExistingTypeAccelerators.Keys…\r\nPSModuleTest.psm1 552 Write-Verbose \"Class already exists [$($Type.FullName…\r\nPSModuleTest.psm1 552 $Type.FullName\r\nPSModuleTest.psm1 554 Write-Verbose \"Importing class '$Type'.\"\r\nPSModuleTest.psm1 555 $TypeAcceleratorsClass::Add($Type.FullName, $Type)\r\nPSModuleTest.psm1 560 $MyInvocation.MyCommand.ScriptBlock.Module.OnRemove =…\r\nPSModuleTest.psm1 561 ($ExportableEnums + $ExportableClasses)\r\nPSModuleTest.psm1 561 $ExportableEnums + $ExportableClasses\r\nPSModuleTest.psm1 562 $TypeAcceleratorsClass::Remove($Type.FullName)\r\nPSModuleTest.psm1 567 $exports = @{…\r\nPSModuleTest.psm1 568 Alias = '*'\r\nPSModuleTest.psm1 569 Cmdlet = ''\r\nPSModuleTest.psm1 570 Function = @(…\r\nPSModuleTest.psm1 571 'Get-PSModuleTest'\r\nPSModuleTest.psm1 572 'New-PSModuleTest'\r\nPSModuleTest.psm1 573 'Set-PSModuleTest'\r\nPSModuleTest.psm1 574 'Test-PSModuleTest'\r\nPSModuleTest.psm1 576 Variable = @(…\r\nPSModuleTest.psm1 577 'Moons'\r\nPSModuleTest.psm1 578 'Planets'\r\nPSModuleTest.psm1 579 'SolarSystems'\r\nPSModuleTest.psm1 582 Export-ModuleMember @exports\r\nscripts\\loader.ps1 1 Write-Verbose '-------------------------'\r\nscripts\\loader.ps1 2 Write-Verbose '--- THIS IS A LOADER ---'\r\nscripts\\loader.ps1 3 Write-Verbose '-------------------------'\r\n\r\n\n","CommandsAnalyzedCount":263,"CommandsExecutedCount":0,"CommandsMissedCount":263,"FilesAnalyzedCount":3} diff --git a/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-Windows-CodeCoverage/MyTests-Windows-CodeCoverage-Report.xml b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-Windows-CodeCoverage/MyTests-Windows-CodeCoverage-Report.xml new file mode 100644 index 00000000..07c2ab07 --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-Windows-CodeCoverage/MyTests-Windows-CodeCoverage-Report.xml @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-macOS-CodeCoverage/MyTests-macOS-CodeCoverage-Report.json b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-macOS-CodeCoverage/MyTests-macOS-CodeCoverage-Report.json new file mode 100644 index 00000000..b1c688de --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-macOS-CodeCoverage/MyTests-macOS-CodeCoverage-Report.json @@ -0,0 +1 @@ +{"CommandsMissed":[{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1","Line":18,"StartLine":18,"EndLine":18,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-OtherPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":5,"StartLine":5,"EndLine":5,"StartColumn":13,"EndColumn":74,"Class":"","Function":"","Command":"$baseName = [System.IO.Path]::GetFileNameWithoutExtension($PSCommandPath)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":6,"StartLine":6,"EndLine":6,"StartColumn":24,"EndColumn":80,"Class":"","Function":"","Command":"$script:PSModuleInfo = Test-ModuleManifest -Path \"$PSScriptRoot\\$baseName.psd1\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":1,"EndColumn":21,"Class":"","Function":"","Command":"$script:PSModuleInfo","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":24,"EndColumn":35,"Class":"","Function":"","Command":"Format-List","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":38,"EndColumn":56,"Class":"","Function":"","Command":"Out-String -Stream","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":59,"EndColumn":92,"Class":"","Function":"","Command":"ForEach-Object { Write-Debug $_ }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":7,"StartLine":7,"EndLine":7,"StartColumn":76,"EndColumn":90,"Class":"","Function":"","Command":"Write-Debug $_","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":8,"StartLine":8,"EndLine":8,"StartColumn":15,"EndColumn":40,"Class":"","Function":"","Command":"$scriptName = $script:PSModuleInfo.Name","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":9,"StartLine":9,"EndLine":9,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - Importing module\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":11,"StartLine":11,"EndLine":11,"StartColumn":1,"EndColumn":57,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":12,"StartLine":12,"EndLine":12,"StartColumn":15,"EndColumn":47,"Class":"","Function":"","Command":"$dataFolder = (Join-Path $PSScriptRoot 'data')","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":12,"StartLine":12,"EndLine":12,"StartColumn":16,"EndColumn":46,"Class":"","Function":"","Command":"Join-Path $PSScriptRoot 'data'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":13,"StartLine":13,"EndLine":13,"StartColumn":1,"EndColumn":53,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$dataFolder]\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":14,"StartLine":14,"EndLine":14,"StartColumn":1,"EndColumn":98,"Class":"","Function":"","Command":"Get-ChildItem -Path \"$dataFolder\" -Recurse -Force -Include '*.psd1' -ErrorAction SilentlyContinue","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":14,"StartLine":14,"EndLine":18,"StartColumn":101,"EndColumn":2,"Class":"","Function":"","Command":"ForEach-Object {\n Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Importing\"\n New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force\n Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Done\"\n}","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":15,"StartLine":15,"EndLine":15,"StartColumn":5,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":15,"StartLine":15,"EndLine":15,"StartColumn":46,"EndColumn":57,"Class":"","Function":"","Command":"$_.BaseName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":16,"StartLine":16,"EndLine":16,"StartColumn":5,"EndColumn":95,"Class":"","Function":"","Command":"New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":16,"StartLine":16,"EndLine":16,"StartColumn":44,"EndColumn":87,"Class":"","Function":"","Command":"Import-PowerShellDataFile -Path $_.FullName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":17,"StartLine":17,"EndLine":17,"StartColumn":5,"EndColumn":67,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":17,"StartLine":17,"EndLine":17,"StartColumn":46,"EndColumn":57,"Class":"","Function":"","Command":"$_.BaseName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":19,"StartLine":19,"EndLine":19,"StartColumn":1,"EndColumn":44,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [data] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":22,"StartLine":22,"EndLine":22,"StartColumn":1,"EndColumn":57,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":24,"StartLine":24,"EndLine":24,"StartColumn":1,"EndColumn":65,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - [initializer] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":25,"StartLine":25,"EndLine":25,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '-------------------------------'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":26,"StartLine":26,"EndLine":26,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS AN INITIALIZER ---'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":27,"StartLine":27,"EndLine":27,"StartColumn":1,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose '-------------------------------'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":28,"StartLine":28,"EndLine":28,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - [initializer] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":30,"StartLine":30,"EndLine":30,"StartColumn":1,"EndColumn":44,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [init] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":33,"StartLine":33,"EndLine":33,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":35,"StartLine":35,"EndLine":35,"StartColumn":1,"EndColumn":81,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - [SecretWriter] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":42,"StartLine":42,"EndLine":42,"StartColumn":23,"EndColumn":29,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Alias = $alias","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":43,"StartLine":43,"EndLine":43,"StartColumn":22,"EndColumn":27,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Name = $name","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":44,"StartLine":44,"EndLine":44,"StartColumn":24,"EndColumn":31,"Class":"SecretWriter","Function":"SecretWriter","Command":"$this.Secret = $secret","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":48,"StartLine":48,"EndLine":48,"StartColumn":16,"EndColumn":27,"Class":"SecretWriter","Function":"GetAlias","Command":"return $this.Alias","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":51,"StartLine":51,"EndLine":51,"StartColumn":1,"EndColumn":76,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - [SecretWriter] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":53,"StartLine":53,"EndLine":53,"StartColumn":1,"EndColumn":59,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [private] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":56,"StartLine":56,"EndLine":56,"StartColumn":1,"EndColumn":71,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":58,"StartLine":58,"EndLine":58,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - [Book] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":69,"StartLine":69,"EndLine":69,"StartColumn":14,"EndColumn":29,"Class":"Book","Function":"Book","Command":"$this.Init(@{})","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":71,"StartLine":71,"EndLine":71,"StartColumn":36,"EndColumn":59,"Class":"Book","Function":"Book","Command":"$this.Init($Properties)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":9,"EndColumn":57,"Class":"Book","Function":"Book","Command":"$this.Init(@{Title = $Title; Author = $Author })","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":30,"EndColumn":36,"Class":"Book","Function":"Book","Command":"Title = $Title","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":74,"StartLine":74,"EndLine":74,"StartColumn":47,"EndColumn":54,"Class":"Book","Function":"Book","Command":"Author = $Author","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":78,"StartLine":78,"EndLine":78,"StartColumn":31,"EndColumn":47,"Class":"Book","Function":"Init","Command":"$Properties.Keys","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":79,"StartLine":79,"EndLine":79,"StartColumn":31,"EndColumn":52,"Class":"Book","Function":"Init","Command":"$this.$Property = $Properties.$Property","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":84,"StartLine":84,"EndLine":84,"StartColumn":13,"EndColumn":34,"Class":"Book","Function":"GetReadingTime","Command":"if ($this.PageCount -le 0) {\n throw 'Unable to determine reading time from page count.'\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":85,"StartLine":85,"EndLine":85,"StartColumn":19,"EndColumn":70,"Class":"Book","Function":"GetReadingTime","Command":"throw 'Unable to determine reading time from page count.'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":87,"StartLine":87,"EndLine":87,"StartColumn":20,"EndColumn":39,"Class":"Book","Function":"GetReadingTime","Command":"$Minutes = $this.PageCount * 2","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":88,"StartLine":88,"EndLine":88,"StartColumn":16,"EndColumn":47,"Class":"Book","Function":"GetReadingTime","Command":"return [timespan]::new(0, $Minutes, 0)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":93,"StartLine":93,"EndLine":94,"StartColumn":13,"EndColumn":55,"Class":"Book","Function":"GetPublishedAge","Command":"if (\n $null -eq $this.PublishDate -or\n $this.PublishDate -eq [datetime]::MinValue\n ) { throw 'PublishDate not defined' }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":95,"StartLine":95,"EndLine":95,"StartColumn":19,"EndColumn":44,"Class":"Book","Function":"GetPublishedAge","Command":"throw 'PublishDate not defined'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":97,"StartLine":97,"EndLine":97,"StartColumn":16,"EndColumn":46,"Class":"Book","Function":"GetPublishedAge","Command":"return (Get-Date) - $this.PublishDate","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":97,"StartLine":97,"EndLine":97,"StartColumn":17,"EndColumn":25,"Class":"Book","Function":"GetPublishedAge","Command":"Get-Date","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":16,"EndColumn":79,"Class":"Book","Function":"ToString","Command":"return \"$($this.Title) by $($this.Author) ($($this.PublishDate.Year))\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":19,"EndColumn":30,"Class":"Book","Function":"ToString","Command":"$this.Title","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":37,"EndColumn":49,"Class":"Book","Function":"ToString","Command":"$this.Author","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":101,"StartLine":101,"EndLine":101,"StartColumn":54,"EndColumn":76,"Class":"Book","Function":"ToString","Command":"$this.PublishDate.Year","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":110,"StartLine":110,"EndLine":110,"StartColumn":34,"EndColumn":64,"Class":"BookList","Function":"Initialize","Command":"[BookList]::Initialize($false)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":112,"StartLine":112,"EndLine":112,"StartColumn":13,"EndColumn":59,"Class":"BookList","Function":"Initialize","Command":"if ([BookList]::Books.Count -gt 0 -and -not $force) {\n return $false\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":113,"StartLine":113,"EndLine":113,"StartColumn":20,"EndColumn":26,"Class":"BookList","Function":"Initialize","Command":"return $false","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":116,"StartLine":116,"EndLine":116,"StartColumn":29,"EndColumn":75,"Class":"BookList","Function":"Initialize","Command":"[BookList]::Books = [System.Collections.Generic.List[Book]]::new()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":118,"StartLine":118,"EndLine":118,"StartColumn":16,"EndColumn":21,"Class":"BookList","Function":"Initialize","Command":"return $true","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":122,"StartLine":122,"EndLine":125,"StartColumn":19,"EndColumn":20,"Class":"BookList","Function":"Validate","Command":"$Prefix = @(\n 'Book validation failed: Book must be defined with the Title,'\n 'Author, and PublishDate properties, but'\n ) -join ' '","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":123,"StartLine":123,"EndLine":123,"StartColumn":13,"EndColumn":75,"Class":"BookList","Function":"Validate","Command":"'Book validation failed: Book must be defined with the Title,'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":124,"StartLine":124,"EndLine":124,"StartColumn":13,"EndColumn":54,"Class":"BookList","Function":"Validate","Command":"'Author, and PublishDate properties, but'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":126,"StartLine":126,"EndLine":126,"StartColumn":13,"EndColumn":28,"Class":"BookList","Function":"Validate","Command":"if ($null -eq $Book) { throw \"$Prefix was null\" }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":126,"StartLine":126,"EndLine":126,"StartColumn":38,"EndColumn":56,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix was null\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":127,"StartLine":127,"EndLine":127,"StartColumn":13,"EndColumn":49,"Class":"BookList","Function":"Validate","Command":"if ([string]::IsNullOrEmpty($Book.Title)) {\n throw \"$Prefix Title wasn't defined\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":128,"StartLine":128,"EndLine":128,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix Title wasn't defined\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":130,"StartLine":130,"EndLine":130,"StartColumn":13,"EndColumn":50,"Class":"BookList","Function":"Validate","Command":"if ([string]::IsNullOrEmpty($Book.Author)) {\n throw \"$Prefix Author wasn't defined\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":131,"StartLine":131,"EndLine":131,"StartColumn":19,"EndColumn":50,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix Author wasn't defined\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":133,"StartLine":133,"EndLine":133,"StartColumn":13,"EndColumn":55,"Class":"BookList","Function":"Validate","Command":"if ([datetime]::MinValue -eq $Book.PublishDate) {\n throw \"$Prefix PublishDate wasn't defined\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":134,"StartLine":134,"EndLine":134,"StartColumn":19,"EndColumn":55,"Class":"BookList","Function":"Validate","Command":"throw \"$Prefix PublishDate wasn't defined\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":140,"StartLine":140,"EndLine":140,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Add","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":141,"StartLine":141,"EndLine":141,"StartColumn":9,"EndColumn":36,"Class":"BookList","Function":"Add","Command":"[BookList]::Validate($Book)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":142,"StartLine":142,"EndLine":142,"StartColumn":13,"EndColumn":46,"Class":"BookList","Function":"Add","Command":"if ([BookList]::Books.Contains($Book)) {\n throw \"Book '$Book' already in list\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":143,"StartLine":143,"EndLine":143,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"throw \"Book '$Book' already in list\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":146,"StartLine":146,"EndLine":152,"StartColumn":26,"EndColumn":26,"Class":"BookList","Function":"Add","Command":"$FindPredicate = {\n param([Book]$b)\n\n $b.Title -eq $Book.Title -and\n $b.Author -eq $Book.Author -and\n $b.PublishDate -eq $Book.PublishDate\n }.GetNewClosure()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":149,"StartLine":149,"EndLine":151,"StartColumn":13,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"$b.Title -eq $Book.Title -and\n $b.Author -eq $Book.Author -and\n $b.PublishDate -eq $Book.PublishDate","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":153,"StartLine":153,"EndLine":153,"StartColumn":13,"EndColumn":51,"Class":"BookList","Function":"Add","Command":"if ([BookList]::Books.Find($FindPredicate)) {\n throw \"Book '$Book' already in list\"\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":154,"StartLine":154,"EndLine":154,"StartColumn":19,"EndColumn":49,"Class":"BookList","Function":"Add","Command":"throw \"Book '$Book' already in list\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":157,"StartLine":157,"EndLine":157,"StartColumn":9,"EndColumn":37,"Class":"BookList","Function":"Add","Command":"[BookList]::Books.Add($Book)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":161,"StartLine":161,"EndLine":161,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Clear","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":162,"StartLine":162,"EndLine":162,"StartColumn":9,"EndColumn":34,"Class":"BookList","Function":"Clear","Command":"[BookList]::Books.Clear()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":166,"StartLine":166,"EndLine":166,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Find","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":167,"StartLine":167,"EndLine":167,"StartColumn":16,"EndColumn":50,"Class":"BookList","Function":"Find","Command":"return [BookList]::Books.Find($Predicate)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":171,"StartLine":171,"EndLine":171,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"FindAll","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":172,"StartLine":172,"EndLine":172,"StartColumn":16,"EndColumn":53,"Class":"BookList","Function":"FindAll","Command":"return [BookList]::Books.FindAll($Predicate)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":176,"StartLine":176,"EndLine":176,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"Remove","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":177,"StartLine":177,"EndLine":177,"StartColumn":9,"EndColumn":40,"Class":"BookList","Function":"Remove","Command":"[BookList]::Books.Remove($Book)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":181,"StartLine":181,"EndLine":181,"StartColumn":9,"EndColumn":33,"Class":"BookList","Function":"RemoveBy","Command":"[BookList]::Initialize()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":182,"StartLine":182,"EndLine":185,"StartColumn":18,"EndColumn":31,"Class":"BookList","Function":"RemoveBy","Command":"$Index = [BookList]::Books.FindIndex({\n param($b)\n $b.$Property -eq $Value\n }.GetNewClosure())","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":184,"StartLine":184,"EndLine":184,"StartColumn":17,"EndColumn":40,"Class":"BookList","Function":"RemoveBy","Command":"$b.$Property -eq $Value","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":186,"StartLine":186,"EndLine":186,"StartColumn":13,"EndColumn":25,"Class":"BookList","Function":"RemoveBy","Command":"if ($Index -ge 0) {\n [BookList]::Books.RemoveAt($Index)\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":187,"StartLine":187,"EndLine":187,"StartColumn":13,"EndColumn":47,"Class":"BookList","Function":"RemoveBy","Command":"[BookList]::Books.RemoveAt($Index)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":206,"StartLine":206,"EndLine":206,"StartColumn":1,"EndColumn":67,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - [Book] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":208,"StartLine":208,"EndLine":208,"StartColumn":1,"EndColumn":58,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [classes] - [public] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":211,"StartLine":211,"EndLine":211,"StartColumn":1,"EndColumn":74,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":213,"StartLine":213,"EndLine":213,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Get-InternalPSModule] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":230,"StartLine":230,"EndLine":230,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-InternalPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":232,"StartLine":232,"EndLine":232,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Get-InternalPSModule] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":235,"StartLine":235,"EndLine":235,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Set-InternalPSModule] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":256,"StartLine":256,"EndLine":256,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Set-InternalPSModule","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":258,"StartLine":258,"EndLine":258,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - [Set-InternalPSModule] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":260,"StartLine":260,"EndLine":260,"StartColumn":1,"EndColumn":61,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [private] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":263,"StartLine":263,"EndLine":263,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":265,"StartLine":265,"EndLine":265,"StartColumn":1,"EndColumn":80,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [completers] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":266,"StartLine":266,"EndLine":273,"StartColumn":1,"EndColumn":2,"Class":"","Function":"","Command":"Register-ArgumentCompleter -CommandName New-PSModuleTest -ParameterName Name -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters\n\n 'Alice', 'Bob', 'Charlie' | Where-Object { $_ -like \"$wordToComplete*\" } | ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }\n}","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":268,"StartLine":268,"EndLine":268,"StartColumn":13,"EndColumn":93,"Class":"","Function":"","Command":"$null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":5,"EndColumn":30,"Class":"","Function":"","Command":"'Alice', 'Bob', 'Charlie'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":33,"EndColumn":77,"Class":"","Function":"","Command":"Where-Object { $_ -like \"$wordToComplete*\" }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":270,"StartColumn":48,"EndColumn":75,"Class":"","Function":"","Command":"$_ -like \"$wordToComplete*\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":270,"StartLine":270,"EndLine":272,"StartColumn":80,"EndColumn":6,"Class":"","Function":"","Command":"ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":271,"StartLine":271,"EndLine":271,"StartColumn":9,"EndColumn":91,"Class":"","Function":"","Command":"[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":274,"StartLine":274,"EndLine":274,"StartColumn":1,"EndColumn":75,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [completers] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":277,"StartLine":277,"EndLine":277,"StartColumn":1,"EndColumn":87,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [Test-PSModuleTest] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":294,"StartLine":294,"EndLine":294,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Test-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":296,"StartLine":296,"EndLine":296,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [Test-PSModuleTest] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":299,"StartLine":299,"EndLine":299,"StartColumn":1,"EndColumn":86,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":301,"StartLine":301,"EndLine":301,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [Get-PSModuleTest] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":323,"StartLine":323,"EndLine":323,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Get-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":325,"StartLine":325,"EndLine":325,"StartColumn":1,"EndColumn":94,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [Get-PSModuleTest] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":328,"StartLine":328,"EndLine":328,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [New-PSModuleTest] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":358,"StartLine":358,"EndLine":358,"StartColumn":5,"EndColumn":33,"Class":"","Function":"New-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":361,"StartLine":361,"EndLine":361,"StartColumn":1,"EndColumn":50,"Class":"","Function":"","Command":"New-Alias New-PSModuleTestAlias3 New-PSModuleTest","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":362,"StartLine":362,"EndLine":362,"StartColumn":1,"EndColumn":63,"Class":"","Function":"","Command":"New-Alias -Name New-PSModuleTestAlias4 -Value New-PSModuleTest","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":365,"StartLine":365,"EndLine":365,"StartColumn":1,"EndColumn":50,"Class":"","Function":"","Command":"Set-Alias New-PSModuleTestAlias5 New-PSModuleTest","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":366,"StartLine":366,"EndLine":366,"StartColumn":1,"EndColumn":94,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - [New-PSModuleTest] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":368,"StartLine":368,"EndLine":368,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [PSModule] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":371,"StartLine":371,"EndLine":371,"StartColumn":1,"EndColumn":91,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":373,"StartLine":373,"EndLine":373,"StartColumn":1,"EndColumn":104,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - [Set-PSModuleTest] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":394,"StartLine":394,"EndLine":394,"StartColumn":5,"EndColumn":33,"Class":"","Function":"Set-PSModuleTest","Command":"Write-Output \"Hello, $Name!\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":396,"StartLine":396,"EndLine":396,"StartColumn":1,"EndColumn":99,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - [Set-PSModuleTest] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":398,"StartLine":398,"EndLine":398,"StartColumn":1,"EndColumn":78,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - [SomethingElse] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":400,"StartLine":400,"EndLine":400,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [functions] - [public] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":403,"StartLine":403,"EndLine":403,"StartColumn":1,"EndColumn":74,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":405,"StartLine":405,"EndLine":405,"StartColumn":1,"EndColumn":87,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - [PrivateVariables] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":406,"StartLine":406,"EndLine":437,"StartColumn":28,"EndColumn":2,"Class":"","Function":"","Command":"$script:HabitablePlanets = @(\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n },\n @{\n Name = 'Proxima Centauri b'\n Mass = 1.17\n Diameter = 11449\n DayLength = 5.15\n },\n @{\n Name = 'Kepler-442b'\n Mass = 2.34\n Diameter = 11349\n DayLength = 5.7\n },\n @{\n Name = 'Kepler-452b'\n Mass = 5.0\n Diameter = 17340\n DayLength = 20.0\n }\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":407,"StartLine":407,"EndLine":436,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n },\n @{\n Name = 'Proxima Centauri b'\n Mass = 1.17\n Diameter = 11449\n DayLength = 5.15\n },\n @{\n Name = 'Kepler-442b'\n Mass = 2.34\n Diameter = 11349\n DayLength = 5.7\n },\n @{\n Name = 'Kepler-452b'\n Mass = 5.0\n Diameter = 17340\n DayLength = 20.0\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":408,"StartLine":408,"EndLine":408,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":409,"StartLine":409,"EndLine":409,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":410,"StartLine":410,"EndLine":410,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":411,"StartLine":411,"EndLine":411,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":414,"StartLine":414,"EndLine":414,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Mars'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":415,"StartLine":415,"EndLine":415,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.642","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":416,"StartLine":416,"EndLine":416,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 6792","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":417,"StartLine":417,"EndLine":417,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.7","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":420,"StartLine":420,"EndLine":420,"StartColumn":21,"EndColumn":41,"Class":"","Function":"","Command":"Name = 'Proxima Centauri b'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":421,"StartLine":421,"EndLine":421,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 1.17","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":422,"StartLine":422,"EndLine":422,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 11449","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":423,"StartLine":423,"EndLine":423,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 5.15","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":426,"StartLine":426,"EndLine":426,"StartColumn":21,"EndColumn":34,"Class":"","Function":"","Command":"Name = 'Kepler-442b'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":427,"StartLine":427,"EndLine":427,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 2.34","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":428,"StartLine":428,"EndLine":428,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 11349","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":429,"StartLine":429,"EndLine":429,"StartColumn":21,"EndColumn":24,"Class":"","Function":"","Command":"DayLength = 5.7","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":432,"StartLine":432,"EndLine":432,"StartColumn":21,"EndColumn":34,"Class":"","Function":"","Command":"Name = 'Kepler-452b'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":433,"StartLine":433,"EndLine":433,"StartColumn":21,"EndColumn":24,"Class":"","Function":"","Command":"Mass = 5.0","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":434,"StartLine":434,"EndLine":434,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 17340","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":435,"StartLine":435,"EndLine":435,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 20.0","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":439,"StartLine":439,"EndLine":452,"StartColumn":28,"EndColumn":2,"Class":"","Function":"","Command":"$script:InhabitedPlanets = @(\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n }\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":440,"StartLine":440,"EndLine":451,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n },\n @{\n Name = 'Mars'\n Mass = 0.642\n Diameter = 6792\n DayLength = 24.7\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":441,"StartLine":441,"EndLine":441,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":442,"StartLine":442,"EndLine":442,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":443,"StartLine":443,"EndLine":443,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":444,"StartLine":444,"EndLine":444,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":447,"StartLine":447,"EndLine":447,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Mars'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":448,"StartLine":448,"EndLine":448,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.642","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":449,"StartLine":449,"EndLine":449,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 6792","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":450,"StartLine":450,"EndLine":450,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.7","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":453,"StartLine":453,"EndLine":453,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - [PrivateVariables] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":455,"StartLine":455,"EndLine":455,"StartColumn":1,"EndColumn":61,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [private] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":458,"StartLine":458,"EndLine":458,"StartColumn":1,"EndColumn":73,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - Processing folder\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":460,"StartLine":460,"EndLine":460,"StartColumn":1,"EndColumn":75,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Moons] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":461,"StartLine":461,"EndLine":466,"StartColumn":17,"EndColumn":2,"Class":"","Function":"","Command":"$script:Moons = @(\n @{\n Planet = 'Earth'\n Name = 'Moon'\n }\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":462,"StartLine":462,"EndLine":465,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Planet = 'Earth'\n Name = 'Moon'\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":463,"StartLine":463,"EndLine":463,"StartColumn":18,"EndColumn":25,"Class":"","Function":"","Command":"Planet = 'Earth'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":464,"StartLine":464,"EndLine":464,"StartColumn":18,"EndColumn":24,"Class":"","Function":"","Command":"Name = 'Moon'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":467,"StartLine":467,"EndLine":467,"StartColumn":1,"EndColumn":70,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Moons] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":470,"StartLine":470,"EndLine":470,"StartColumn":1,"EndColumn":77,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Planets] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":471,"StartLine":471,"EndLine":490,"StartColumn":19,"EndColumn":2,"Class":"","Function":"","Command":"$script:Planets = @(\n @{\n Name = 'Mercury'\n Mass = 0.330\n Diameter = 4879\n DayLength = 4222.6\n },\n @{\n Name = 'Venus'\n Mass = 4.87\n Diameter = 12104\n DayLength = 2802.0\n },\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n }\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":472,"StartLine":472,"EndLine":489,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Mercury'\n Mass = 0.330\n Diameter = 4879\n DayLength = 4222.6\n },\n @{\n Name = 'Venus'\n Mass = 4.87\n Diameter = 12104\n DayLength = 2802.0\n },\n @{\n Name = 'Earth'\n Mass = 5.97\n Diameter = 12756\n DayLength = 24.0\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":473,"StartLine":473,"EndLine":473,"StartColumn":21,"EndColumn":30,"Class":"","Function":"","Command":"Name = 'Mercury'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":474,"StartLine":474,"EndLine":474,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Mass = 0.330","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":475,"StartLine":475,"EndLine":475,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Diameter = 4879","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":476,"StartLine":476,"EndLine":476,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"DayLength = 4222.6","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":479,"StartLine":479,"EndLine":479,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Venus'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":480,"StartLine":480,"EndLine":480,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 4.87","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":481,"StartLine":481,"EndLine":481,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12104","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":482,"StartLine":482,"EndLine":482,"StartColumn":21,"EndColumn":27,"Class":"","Function":"","Command":"DayLength = 2802.0","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":485,"StartLine":485,"EndLine":485,"StartColumn":21,"EndColumn":28,"Class":"","Function":"","Command":"Name = 'Earth'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":486,"StartLine":486,"EndLine":486,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"Mass = 5.97","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":487,"StartLine":487,"EndLine":487,"StartColumn":21,"EndColumn":26,"Class":"","Function":"","Command":"Diameter = 12756","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":488,"StartLine":488,"EndLine":488,"StartColumn":21,"EndColumn":25,"Class":"","Function":"","Command":"DayLength = 24.0","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":491,"StartLine":491,"EndLine":491,"StartColumn":1,"EndColumn":72,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [Planets] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":494,"StartLine":494,"EndLine":494,"StartColumn":1,"EndColumn":82,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [SolarSystems] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":495,"StartLine":495,"EndLine":511,"StartColumn":24,"EndColumn":2,"Class":"","Function":"","Command":"$script:SolarSystems = @(\n @{\n Name = 'Solar System'\n Planets = $script:Planets\n Moons = $script:Moons\n },\n @{\n Name = 'Alpha Centauri'\n Planets = @()\n Moons = @()\n },\n @{\n Name = 'Sirius'\n Planets = @()\n Moons = @()\n }\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":496,"StartLine":496,"EndLine":510,"StartColumn":5,"EndColumn":6,"Class":"","Function":"","Command":"@{\n Name = 'Solar System'\n Planets = $script:Planets\n Moons = $script:Moons\n },\n @{\n Name = 'Alpha Centauri'\n Planets = @()\n Moons = @()\n },\n @{\n Name = 'Sirius'\n Planets = @()\n Moons = @()\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":497,"StartLine":497,"EndLine":497,"StartColumn":19,"EndColumn":33,"Class":"","Function":"","Command":"Name = 'Solar System'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":498,"StartLine":498,"EndLine":498,"StartColumn":19,"EndColumn":34,"Class":"","Function":"","Command":"Planets = $script:Planets","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":499,"StartLine":499,"EndLine":499,"StartColumn":19,"EndColumn":32,"Class":"","Function":"","Command":"Moons = $script:Moons","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":502,"StartLine":502,"EndLine":502,"StartColumn":19,"EndColumn":35,"Class":"","Function":"","Command":"Name = 'Alpha Centauri'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":503,"StartLine":503,"EndLine":503,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Planets = @()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":504,"StartLine":504,"EndLine":504,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Moons = @()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":507,"StartLine":507,"EndLine":507,"StartColumn":19,"EndColumn":27,"Class":"","Function":"","Command":"Name = 'Sirius'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":508,"StartLine":508,"EndLine":508,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Planets = @()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":509,"StartLine":509,"EndLine":509,"StartColumn":19,"EndColumn":22,"Class":"","Function":"","Command":"Moons = @()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":512,"StartLine":512,"EndLine":512,"StartColumn":1,"EndColumn":77,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - [SolarSystems] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":514,"StartLine":514,"EndLine":514,"StartColumn":1,"EndColumn":60,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [variables] - [public] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":517,"StartLine":517,"EndLine":517,"StartColumn":1,"EndColumn":52,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [finally] - Importing\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":518,"StartLine":518,"EndLine":518,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '------------------------------'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":519,"StartLine":519,"EndLine":519,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS A LAST LOADER ---'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":520,"StartLine":520,"EndLine":520,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Verbose '------------------------------'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":521,"StartLine":521,"EndLine":521,"StartColumn":1,"EndColumn":47,"Class":"","Function":"","Command":"Write-Debug \"[$scriptName] - [finally] - Done\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":525,"StartLine":525,"EndLine":527,"StartColumn":26,"EndColumn":2,"Class":"","Function":"","Command":"$TypeAcceleratorsClass = [psobject].Assembly.GetType(\n 'System.Management.Automation.TypeAccelerators'\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":530,"StartLine":530,"EndLine":530,"StartColumn":29,"EndColumn":56,"Class":"","Function":"","Command":"$ExistingTypeAccelerators = $TypeAcceleratorsClass::Get","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":532,"StartLine":532,"EndLine":535,"StartColumn":20,"EndColumn":2,"Class":"","Function":"","Command":"$ExportableEnums = @(\n [Binding]\n [Genre]\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":533,"StartLine":533,"EndLine":533,"StartColumn":5,"EndColumn":14,"Class":"","Function":"","Command":"[Binding]","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":534,"StartLine":534,"EndLine":534,"StartColumn":5,"EndColumn":12,"Class":"","Function":"","Command":"[Genre]","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":1,"EndColumn":17,"Class":"","Function":"","Command":"$ExportableEnums","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":20,"EndColumn":87,"Class":"","Function":"","Command":"Foreach-Object { Write-Verbose \"Exporting enum '$($_.FullName)'.\" }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":37,"EndColumn":85,"Class":"","Function":"","Command":"Write-Verbose \"Exporting enum '$($_.FullName)'.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":536,"StartLine":536,"EndLine":536,"StartColumn":70,"EndColumn":81,"Class":"","Function":"","Command":"$_.FullName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":537,"StartLine":537,"EndLine":537,"StartColumn":19,"EndColumn":35,"Class":"","Function":"","Command":"$ExportableEnums","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":538,"StartLine":538,"EndLine":538,"StartColumn":9,"EndColumn":58,"Class":"","Function":"","Command":"if ($Type.FullName -in $ExistingTypeAccelerators.Keys) {\n Write-Verbose \"Enum already exists [$($Type.FullName)]. Skipping.\"\n } else {\n Write-Verbose \"Importing enum '$Type'.\"\n $TypeAcceleratorsClass::Add($Type.FullName, $Type)\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":539,"StartLine":539,"EndLine":539,"StartColumn":9,"EndColumn":75,"Class":"","Function":"","Command":"Write-Verbose \"Enum already exists [$($Type.FullName)]. Skipping.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":539,"StartLine":539,"EndLine":539,"StartColumn":47,"EndColumn":61,"Class":"","Function":"","Command":"$Type.FullName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":541,"StartLine":541,"EndLine":541,"StartColumn":9,"EndColumn":48,"Class":"","Function":"","Command":"Write-Verbose \"Importing enum '$Type'.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":542,"StartLine":542,"EndLine":542,"StartColumn":9,"EndColumn":59,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Add($Type.FullName, $Type)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":545,"StartLine":545,"EndLine":548,"StartColumn":22,"EndColumn":2,"Class":"","Function":"","Command":"$ExportableClasses = @(\n [Book]\n [BookList]\n)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":546,"StartLine":546,"EndLine":546,"StartColumn":5,"EndColumn":11,"Class":"","Function":"","Command":"[Book]","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":547,"StartLine":547,"EndLine":547,"StartColumn":5,"EndColumn":15,"Class":"","Function":"","Command":"[BookList]","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":1,"EndColumn":19,"Class":"","Function":"","Command":"$ExportableClasses","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":22,"EndColumn":90,"Class":"","Function":"","Command":"Foreach-Object { Write-Verbose \"Exporting class '$($_.FullName)'.\" }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":39,"EndColumn":88,"Class":"","Function":"","Command":"Write-Verbose \"Exporting class '$($_.FullName)'.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":549,"StartLine":549,"EndLine":549,"StartColumn":73,"EndColumn":84,"Class":"","Function":"","Command":"$_.FullName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":550,"StartLine":550,"EndLine":550,"StartColumn":19,"EndColumn":37,"Class":"","Function":"","Command":"$ExportableClasses","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":551,"StartLine":551,"EndLine":551,"StartColumn":9,"EndColumn":58,"Class":"","Function":"","Command":"if ($Type.FullName -in $ExistingTypeAccelerators.Keys) {\n Write-Verbose \"Class already exists [$($Type.FullName)]. Skipping.\"\n } else {\n Write-Verbose \"Importing class '$Type'.\"\n $TypeAcceleratorsClass::Add($Type.FullName, $Type)\n }","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":552,"StartLine":552,"EndLine":552,"StartColumn":9,"EndColumn":76,"Class":"","Function":"","Command":"Write-Verbose \"Class already exists [$($Type.FullName)]. Skipping.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":552,"StartLine":552,"EndLine":552,"StartColumn":48,"EndColumn":62,"Class":"","Function":"","Command":"$Type.FullName","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":554,"StartLine":554,"EndLine":554,"StartColumn":9,"EndColumn":49,"Class":"","Function":"","Command":"Write-Verbose \"Importing class '$Type'.\"","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":555,"StartLine":555,"EndLine":555,"StartColumn":9,"EndColumn":59,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Add($Type.FullName, $Type)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":560,"StartLine":560,"EndLine":564,"StartColumn":55,"EndColumn":18,"Class":"","Function":"","Command":"$MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = {\n foreach ($Type in ($ExportableEnums + $ExportableClasses)) {\n $TypeAcceleratorsClass::Remove($Type.FullName)\n }\n}.GetNewClosure()","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":561,"StartLine":561,"EndLine":561,"StartColumn":23,"EndColumn":62,"Class":"","Function":"","Command":"($ExportableEnums + $ExportableClasses)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":561,"StartLine":561,"EndLine":561,"StartColumn":24,"EndColumn":61,"Class":"","Function":"","Command":"$ExportableEnums + $ExportableClasses","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":562,"StartLine":562,"EndLine":562,"StartColumn":9,"EndColumn":55,"Class":"","Function":"","Command":"$TypeAcceleratorsClass::Remove($Type.FullName)","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":567,"StartLine":567,"EndLine":581,"StartColumn":12,"EndColumn":2,"Class":"","Function":"","Command":"$exports = @{\n Alias = '*'\n Cmdlet = ''\n Function = @(\n 'Get-PSModuleTest'\n 'New-PSModuleTest'\n 'Set-PSModuleTest'\n 'Test-PSModuleTest'\n )\n Variable = @(\n 'Moons'\n 'Planets'\n 'SolarSystems'\n )\n}","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":568,"StartLine":568,"EndLine":568,"StartColumn":16,"EndColumn":19,"Class":"","Function":"","Command":"Alias = '*'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":569,"StartLine":569,"EndLine":569,"StartColumn":16,"EndColumn":18,"Class":"","Function":"","Command":"Cmdlet = ''","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":570,"StartLine":570,"EndLine":575,"StartColumn":16,"EndColumn":6,"Class":"","Function":"","Command":"Function = @(\n 'Get-PSModuleTest'\n 'New-PSModuleTest'\n 'Set-PSModuleTest'\n 'Test-PSModuleTest'\n )","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":571,"StartLine":571,"EndLine":571,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'Get-PSModuleTest'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":572,"StartLine":572,"EndLine":572,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'New-PSModuleTest'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":573,"StartLine":573,"EndLine":573,"StartColumn":9,"EndColumn":27,"Class":"","Function":"","Command":"'Set-PSModuleTest'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":574,"StartLine":574,"EndLine":574,"StartColumn":9,"EndColumn":28,"Class":"","Function":"","Command":"'Test-PSModuleTest'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":576,"StartLine":576,"EndLine":580,"StartColumn":16,"EndColumn":6,"Class":"","Function":"","Command":"Variable = @(\n 'Moons'\n 'Planets'\n 'SolarSystems'\n )","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":577,"StartLine":577,"EndLine":577,"StartColumn":9,"EndColumn":16,"Class":"","Function":"","Command":"'Moons'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":578,"StartLine":578,"EndLine":578,"StartColumn":9,"EndColumn":18,"Class":"","Function":"","Command":"'Planets'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":579,"StartLine":579,"EndLine":579,"StartColumn":9,"EndColumn":23,"Class":"","Function":"","Command":"'SolarSystems'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","Line":582,"StartLine":582,"EndLine":582,"StartColumn":1,"EndColumn":29,"Class":"","Function":"","Command":"Export-ModuleMember @exports","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1","Line":1,"StartLine":1,"EndLine":1,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '-------------------------'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1","Line":2,"StartLine":2,"EndLine":2,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '--- THIS IS A LOADER ---'","HitCount":0},{"File":"/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1","Line":3,"StartLine":3,"EndLine":3,"StartColumn":1,"EndColumn":42,"Class":"","Function":"","Command":"Write-Verbose '-------------------------'","HitCount":0}],"CommandsExecuted":[],"FilesAnalyzed":["/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1","/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1","/Users/runner/work/Process-PSModule/Process-PSModule/tests/srcWithManifestTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1"],"CoveragePercent":0.0,"CoveragePercentTarget":0.0,"CoverageReport":"Covered 0% / 0%. 263 analyzed Commands in 3 Files.\n Missed commands:\n \n\u001b[32;1mFile \u001b[0m\u001b[32;1m Class \u001b[0m\u001b[32;1m Function \u001b[0m\u001b[32;1m Line\u001b[0m\u001b[32;1m Command\u001b[0m\n\u001b[32;1m---- \u001b[0m \u001b[32;1m----- \u001b[0m \u001b[32;1m-------- \u001b[0m \u001b[32;1m----\u001b[0m \u001b[32;1m-------\u001b[0m\nmodules/OtherPSModule.psm1 Get-OtherPSModule 18 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 5 $baseName = [System.IO.Path]::GetFileNameWithoutExten…\nPSModuleTest.psm1 6 $script:PSModuleInfo = Test-ModuleManifest -Path \"$PS…\nPSModuleTest.psm1 7 $script:PSModuleInfo\nPSModuleTest.psm1 7 Format-List\nPSModuleTest.psm1 7 Out-String -Stream\nPSModuleTest.psm1 7 ForEach-Object { Write-Debug $_ }\nPSModuleTest.psm1 7 Write-Debug $_\nPSModuleTest.psm1 8 $scriptName = $script:PSModuleInfo.Name\nPSModuleTest.psm1 9 Write-Debug \"[$scriptName] - Importing module\"\nPSModuleTest.psm1 11 Write-Debug \"[$scriptName] - [data] - Processing fold…\nPSModuleTest.psm1 12 $dataFolder = (Join-Path $PSScriptRoot 'data')\nPSModuleTest.psm1 12 Join-Path $PSScriptRoot 'data'\nPSModuleTest.psm1 13 Write-Debug \"[$scriptName] - [data] - [$dataFolder]\"\nPSModuleTest.psm1 14 Get-ChildItem -Path \"$dataFolder\" -Recurse -Force -In…\nPSModuleTest.psm1 14 ForEach-Object {…\nPSModuleTest.psm1 15 Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)…\nPSModuleTest.psm1 15 $_.BaseName\nPSModuleTest.psm1 16 New-Variable -Name $_.BaseName -Value (Import-PowerSh…\nPSModuleTest.psm1 16 Import-PowerShellDataFile -Path $_.FullName\nPSModuleTest.psm1 17 Write-Debug \"[$scriptName] - [data] - [$($_.BaseName)…\nPSModuleTest.psm1 17 $_.BaseName\nPSModuleTest.psm1 19 Write-Debug \"[$scriptName] - [data] - Done\"\nPSModuleTest.psm1 22 Write-Debug \"[$scriptName] - [init] - Processing fold…\nPSModuleTest.psm1 24 Write-Debug \"[$scriptName] - [init] - [initializer] -…\nPSModuleTest.psm1 25 Write-Verbose '-------------------------------'\nPSModuleTest.psm1 26 Write-Verbose '--- THIS IS AN INITIALIZER ---'\nPSModuleTest.psm1 27 Write-Verbose '-------------------------------'\nPSModuleTest.psm1 28 Write-Debug \"[$scriptName] - [init] - [initializer] -…\nPSModuleTest.psm1 30 Write-Debug \"[$scriptName] - [init] - Done\"\nPSModuleTest.psm1 33 Write-Debug \"[$scriptName] - [classes] - [private] - …\nPSModuleTest.psm1 35 Write-Debug \"[$scriptName] - [classes] - [private] - …\nPSModuleTest.psm1 SecretWriter SecretWriter 42 $this.Alias = $alias\nPSModuleTest.psm1 SecretWriter SecretWriter 43 $this.Name = $name\nPSModuleTest.psm1 SecretWriter SecretWriter 44 $this.Secret = $secret\nPSModuleTest.psm1 SecretWriter GetAlias 48 return $this.Alias\nPSModuleTest.psm1 51 Write-Debug \"[$scriptName] - [classes] - [private] - …\nPSModuleTest.psm1 53 Write-Debug \"[$scriptName] - [classes] - [private] - …\nPSModuleTest.psm1 56 Write-Debug \"[$scriptName] - [classes] - [public] - P…\nPSModuleTest.psm1 58 Write-Debug \"[$scriptName] - [classes] - [public] - […\nPSModuleTest.psm1 Book Book 69 $this.Init(@{})\nPSModuleTest.psm1 Book Book 71 $this.Init($Properties)\nPSModuleTest.psm1 Book Book 74 $this.Init(@{Title = $Title; Author = $Author })\nPSModuleTest.psm1 Book Book 74 Title = $Title\nPSModuleTest.psm1 Book Book 74 Author = $Author\nPSModuleTest.psm1 Book Init 78 $Properties.Keys\nPSModuleTest.psm1 Book Init 79 $this.$Property = $Properties.$Property\nPSModuleTest.psm1 Book GetReadingTime 84 if ($this.PageCount -le 0) {…\nPSModuleTest.psm1 Book GetReadingTime 85 throw 'Unable to determine reading time from page cou…\nPSModuleTest.psm1 Book GetReadingTime 87 $Minutes = $this.PageCount * 2\nPSModuleTest.psm1 Book GetReadingTime 88 return [timespan]::new(0, $Minutes, 0)\nPSModuleTest.psm1 Book GetPublishedAge 93 if (…\nPSModuleTest.psm1 Book GetPublishedAge 95 throw 'PublishDate not defined'\nPSModuleTest.psm1 Book GetPublishedAge 97 return (Get-Date) - $this.PublishDate\nPSModuleTest.psm1 Book GetPublishedAge 97 Get-Date\nPSModuleTest.psm1 Book ToString 101 return \"$($this.Title) by $($this.Author) ($($this.Pu…\nPSModuleTest.psm1 Book ToString 101 $this.Title\nPSModuleTest.psm1 Book ToString 101 $this.Author\nPSModuleTest.psm1 Book ToString 101 $this.PublishDate.Year\nPSModuleTest.psm1 BookList Initialize 110 [BookList]::Initialize($false)\nPSModuleTest.psm1 BookList Initialize 112 if ([BookList]::Books.Count -gt 0 -and -not $force) {…\nPSModuleTest.psm1 BookList Initialize 113 return $false\nPSModuleTest.psm1 BookList Initialize 116 [BookList]::Books = [System.Collections.Generic.List[…\nPSModuleTest.psm1 BookList Initialize 118 return $true\nPSModuleTest.psm1 BookList Validate 122 $Prefix = @(…\nPSModuleTest.psm1 BookList Validate 123 'Book validation failed: Book must be defined with th…\nPSModuleTest.psm1 BookList Validate 124 'Author, and PublishDate properties, but'\nPSModuleTest.psm1 BookList Validate 126 if ($null -eq $Book) { throw \"$Prefix was null\" }\nPSModuleTest.psm1 BookList Validate 126 throw \"$Prefix was null\"\nPSModuleTest.psm1 BookList Validate 127 if ([string]::IsNullOrEmpty($Book.Title)) {…\nPSModuleTest.psm1 BookList Validate 128 throw \"$Prefix Title wasn't defined\"\nPSModuleTest.psm1 BookList Validate 130 if ([string]::IsNullOrEmpty($Book.Author)) {…\nPSModuleTest.psm1 BookList Validate 131 throw \"$Prefix Author wasn't defined\"\nPSModuleTest.psm1 BookList Validate 133 if ([datetime]::MinValue -eq $Book.PublishDate) {…\nPSModuleTest.psm1 BookList Validate 134 throw \"$Prefix PublishDate wasn't defined\"\nPSModuleTest.psm1 BookList Add 140 [BookList]::Initialize()\nPSModuleTest.psm1 BookList Add 141 [BookList]::Validate($Book)\nPSModuleTest.psm1 BookList Add 142 if ([BookList]::Books.Contains($Book)) {…\nPSModuleTest.psm1 BookList Add 143 throw \"Book '$Book' already in list\"\nPSModuleTest.psm1 BookList Add 146 $FindPredicate = {…\nPSModuleTest.psm1 BookList Add 149 $b.Title -eq $Book.Title -and…\nPSModuleTest.psm1 BookList Add 153 if ([BookList]::Books.Find($FindPredicate)) {…\nPSModuleTest.psm1 BookList Add 154 throw \"Book '$Book' already in list\"\nPSModuleTest.psm1 BookList Add 157 [BookList]::Books.Add($Book)\nPSModuleTest.psm1 BookList Clear 161 [BookList]::Initialize()\nPSModuleTest.psm1 BookList Clear 162 [BookList]::Books.Clear()\nPSModuleTest.psm1 BookList Find 166 [BookList]::Initialize()\nPSModuleTest.psm1 BookList Find 167 return [BookList]::Books.Find($Predicate)\nPSModuleTest.psm1 BookList FindAll 171 [BookList]::Initialize()\nPSModuleTest.psm1 BookList FindAll 172 return [BookList]::Books.FindAll($Predicate)\nPSModuleTest.psm1 BookList Remove 176 [BookList]::Initialize()\nPSModuleTest.psm1 BookList Remove 177 [BookList]::Books.Remove($Book)\nPSModuleTest.psm1 BookList RemoveBy 181 [BookList]::Initialize()\nPSModuleTest.psm1 BookList RemoveBy 182 $Index = [BookList]::Books.FindIndex({…\nPSModuleTest.psm1 BookList RemoveBy 184 $b.$Property -eq $Value\nPSModuleTest.psm1 BookList RemoveBy 186 if ($Index -ge 0) {…\nPSModuleTest.psm1 BookList RemoveBy 187 [BookList]::Books.RemoveAt($Index)\nPSModuleTest.psm1 206 Write-Debug \"[$scriptName] - [classes] - [public] - […\nPSModuleTest.psm1 208 Write-Debug \"[$scriptName] - [classes] - [public] - D…\nPSModuleTest.psm1 211 Write-Debug \"[$scriptName] - [functions] - [private] …\nPSModuleTest.psm1 213 Write-Debug \"[$scriptName] - [functions] - [private] …\nPSModuleTest.psm1 Get-InternalPSModule 230 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 232 Write-Debug \"[$scriptName] - [functions] - [private] …\nPSModuleTest.psm1 235 Write-Debug \"[$scriptName] - [functions] - [private] …\nPSModuleTest.psm1 Set-InternalPSModule 256 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 258 Write-Debug \"[$scriptName] - [functions] - [private] …\nPSModuleTest.psm1 260 Write-Debug \"[$scriptName] - [functions] - [private] …\nPSModuleTest.psm1 263 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 265 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 266 Register-ArgumentCompleter -CommandName New-PSModuleT…\nPSModuleTest.psm1 268 $null = $commandName, $parameterName, $wordToComplete…\nPSModuleTest.psm1 270 'Alice', 'Bob', 'Charlie'\nPSModuleTest.psm1 270 Where-Object { $_ -like \"$wordToComplete*\" }\nPSModuleTest.psm1 270 $_ -like \"$wordToComplete*\"\nPSModuleTest.psm1 270 ForEach-Object {…\nPSModuleTest.psm1 271 [System.Management.Automation.CompletionResult]::new(…\nPSModuleTest.psm1 274 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 277 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 Test-PSModuleTest 294 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 296 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 299 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 301 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 Get-PSModuleTest 323 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 325 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 328 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 New-PSModuleTest 358 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 361 New-Alias New-PSModuleTestAlias3 New-PSModuleTest\nPSModuleTest.psm1 362 New-Alias -Name New-PSModuleTestAlias4 -Value New-PSM…\nPSModuleTest.psm1 365 Set-Alias New-PSModuleTestAlias5 New-PSModuleTest\nPSModuleTest.psm1 366 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 368 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 371 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 373 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 Set-PSModuleTest 394 Write-Output \"Hello, $Name!\"\nPSModuleTest.psm1 396 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 398 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 400 Write-Debug \"[$scriptName] - [functions] - [public] -…\nPSModuleTest.psm1 403 Write-Debug \"[$scriptName] - [variables] - [private] …\nPSModuleTest.psm1 405 Write-Debug \"[$scriptName] - [variables] - [private] …\nPSModuleTest.psm1 406 $script:HabitablePlanets = @(…\nPSModuleTest.psm1 407 @{…\nPSModuleTest.psm1 408 Name = 'Earth'\nPSModuleTest.psm1 409 Mass = 5.97\nPSModuleTest.psm1 410 Diameter = 12756\nPSModuleTest.psm1 411 DayLength = 24.0\nPSModuleTest.psm1 414 Name = 'Mars'\nPSModuleTest.psm1 415 Mass = 0.642\nPSModuleTest.psm1 416 Diameter = 6792\nPSModuleTest.psm1 417 DayLength = 24.7\nPSModuleTest.psm1 420 Name = 'Proxima Centauri b'\nPSModuleTest.psm1 421 Mass = 1.17\nPSModuleTest.psm1 422 Diameter = 11449\nPSModuleTest.psm1 423 DayLength = 5.15\nPSModuleTest.psm1 426 Name = 'Kepler-442b'\nPSModuleTest.psm1 427 Mass = 2.34\nPSModuleTest.psm1 428 Diameter = 11349\nPSModuleTest.psm1 429 DayLength = 5.7\nPSModuleTest.psm1 432 Name = 'Kepler-452b'\nPSModuleTest.psm1 433 Mass = 5.0\nPSModuleTest.psm1 434 Diameter = 17340\nPSModuleTest.psm1 435 DayLength = 20.0\nPSModuleTest.psm1 439 $script:InhabitedPlanets = @(…\nPSModuleTest.psm1 440 @{…\nPSModuleTest.psm1 441 Name = 'Earth'\nPSModuleTest.psm1 442 Mass = 5.97\nPSModuleTest.psm1 443 Diameter = 12756\nPSModuleTest.psm1 444 DayLength = 24.0\nPSModuleTest.psm1 447 Name = 'Mars'\nPSModuleTest.psm1 448 Mass = 0.642\nPSModuleTest.psm1 449 Diameter = 6792\nPSModuleTest.psm1 450 DayLength = 24.7\nPSModuleTest.psm1 453 Write-Debug \"[$scriptName] - [variables] - [private] …\nPSModuleTest.psm1 455 Write-Debug \"[$scriptName] - [variables] - [private] …\nPSModuleTest.psm1 458 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 460 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 461 $script:Moons = @(…\nPSModuleTest.psm1 462 @{…\nPSModuleTest.psm1 463 Planet = 'Earth'\nPSModuleTest.psm1 464 Name = 'Moon'\nPSModuleTest.psm1 467 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 470 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 471 $script:Planets = @(…\nPSModuleTest.psm1 472 @{…\nPSModuleTest.psm1 473 Name = 'Mercury'\nPSModuleTest.psm1 474 Mass = 0.330\nPSModuleTest.psm1 475 Diameter = 4879\nPSModuleTest.psm1 476 DayLength = 4222.6\nPSModuleTest.psm1 479 Name = 'Venus'\nPSModuleTest.psm1 480 Mass = 4.87\nPSModuleTest.psm1 481 Diameter = 12104\nPSModuleTest.psm1 482 DayLength = 2802.0\nPSModuleTest.psm1 485 Name = 'Earth'\nPSModuleTest.psm1 486 Mass = 5.97\nPSModuleTest.psm1 487 Diameter = 12756\nPSModuleTest.psm1 488 DayLength = 24.0\nPSModuleTest.psm1 491 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 494 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 495 $script:SolarSystems = @(…\nPSModuleTest.psm1 496 @{…\nPSModuleTest.psm1 497 Name = 'Solar System'\nPSModuleTest.psm1 498 Planets = $script:Planets\nPSModuleTest.psm1 499 Moons = $script:Moons\nPSModuleTest.psm1 502 Name = 'Alpha Centauri'\nPSModuleTest.psm1 503 Planets = @()\nPSModuleTest.psm1 504 Moons = @()\nPSModuleTest.psm1 507 Name = 'Sirius'\nPSModuleTest.psm1 508 Planets = @()\nPSModuleTest.psm1 509 Moons = @()\nPSModuleTest.psm1 512 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 514 Write-Debug \"[$scriptName] - [variables] - [public] -…\nPSModuleTest.psm1 517 Write-Debug \"[$scriptName] - [finally] - Importing\"\nPSModuleTest.psm1 518 Write-Verbose '------------------------------'\nPSModuleTest.psm1 519 Write-Verbose '--- THIS IS A LAST LOADER ---'\nPSModuleTest.psm1 520 Write-Verbose '------------------------------'\nPSModuleTest.psm1 521 Write-Debug \"[$scriptName] - [finally] - Done\"\nPSModuleTest.psm1 525 $TypeAcceleratorsClass = [psobject].Assembly.GetType(…\nPSModuleTest.psm1 530 $ExistingTypeAccelerators = $TypeAcceleratorsClass::G…\nPSModuleTest.psm1 532 $ExportableEnums = @(…\nPSModuleTest.psm1 533 [Binding]\nPSModuleTest.psm1 534 [Genre]\nPSModuleTest.psm1 536 $ExportableEnums\nPSModuleTest.psm1 536 Foreach-Object { Write-Verbose \"Exporting enum '$($_.…\nPSModuleTest.psm1 536 Write-Verbose \"Exporting enum '$($_.FullName)'.\"\nPSModuleTest.psm1 536 $_.FullName\nPSModuleTest.psm1 537 $ExportableEnums\nPSModuleTest.psm1 538 if ($Type.FullName -in $ExistingTypeAccelerators.Keys…\nPSModuleTest.psm1 539 Write-Verbose \"Enum already exists [$($Type.FullName)…\nPSModuleTest.psm1 539 $Type.FullName\nPSModuleTest.psm1 541 Write-Verbose \"Importing enum '$Type'.\"\nPSModuleTest.psm1 542 $TypeAcceleratorsClass::Add($Type.FullName, $Type)\nPSModuleTest.psm1 545 $ExportableClasses = @(…\nPSModuleTest.psm1 546 [Book]\nPSModuleTest.psm1 547 [BookList]\nPSModuleTest.psm1 549 $ExportableClasses\nPSModuleTest.psm1 549 Foreach-Object { Write-Verbose \"Exporting class '$($_…\nPSModuleTest.psm1 549 Write-Verbose \"Exporting class '$($_.FullName)'.\"\nPSModuleTest.psm1 549 $_.FullName\nPSModuleTest.psm1 550 $ExportableClasses\nPSModuleTest.psm1 551 if ($Type.FullName -in $ExistingTypeAccelerators.Keys…\nPSModuleTest.psm1 552 Write-Verbose \"Class already exists [$($Type.FullName…\nPSModuleTest.psm1 552 $Type.FullName\nPSModuleTest.psm1 554 Write-Verbose \"Importing class '$Type'.\"\nPSModuleTest.psm1 555 $TypeAcceleratorsClass::Add($Type.FullName, $Type)\nPSModuleTest.psm1 560 $MyInvocation.MyCommand.ScriptBlock.Module.OnRemove =…\nPSModuleTest.psm1 561 ($ExportableEnums + $ExportableClasses)\nPSModuleTest.psm1 561 $ExportableEnums + $ExportableClasses\nPSModuleTest.psm1 562 $TypeAcceleratorsClass::Remove($Type.FullName)\nPSModuleTest.psm1 567 $exports = @{…\nPSModuleTest.psm1 568 Alias = '*'\nPSModuleTest.psm1 569 Cmdlet = ''\nPSModuleTest.psm1 570 Function = @(…\nPSModuleTest.psm1 571 'Get-PSModuleTest'\nPSModuleTest.psm1 572 'New-PSModuleTest'\nPSModuleTest.psm1 573 'Set-PSModuleTest'\nPSModuleTest.psm1 574 'Test-PSModuleTest'\nPSModuleTest.psm1 576 Variable = @(…\nPSModuleTest.psm1 577 'Moons'\nPSModuleTest.psm1 578 'Planets'\nPSModuleTest.psm1 579 'SolarSystems'\nPSModuleTest.psm1 582 Export-ModuleMember @exports\nscripts/loader.ps1 1 Write-Verbose '-------------------------'\nscripts/loader.ps1 2 Write-Verbose '--- THIS IS A LOADER ---'\nscripts/loader.ps1 3 Write-Verbose '-------------------------'\n\n\n","CommandsAnalyzedCount":263,"CommandsExecutedCount":0,"CommandsMissedCount":263,"FilesAnalyzedCount":3} diff --git a/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-macOS-CodeCoverage/MyTests-macOS-CodeCoverage-Report.xml b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-macOS-CodeCoverage/MyTests-macOS-CodeCoverage-Report.xml new file mode 100644 index 00000000..6ad66f0d --- /dev/null +++ b/.github/actions/Get-PesterCodeCoverage/tests/CodeCoverage/MyTests-macOS-CodeCoverage/MyTests-macOS-CodeCoverage-Report.xml @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.github/actions/Get-PesterTestResults/action.yml b/.github/actions/Get-PesterTestResults/action.yml new file mode 100644 index 00000000..5e94aac2 --- /dev/null +++ b/.github/actions/Get-PesterTestResults/action.yml @@ -0,0 +1,56 @@ +name: Get-PesterTestResults +description: A GitHub Action that is used to gather test results for the PSModule process. +author: PSModule +branding: + icon: upload-cloud + color: white + +inputs: + SourceCodeTestSuites: + description: The test suites to run for the source code. + required: true + PSModuleTestSuites: + description: The test suites to run for the PSModule. + required: true + ModuleTestSuites: + description: The test suites to run for the module. + required: true + Debug: + description: Enable debug output. + required: false + default: 'false' + Verbose: + description: Enable verbose output. + required: false + default: 'false' + Version: + description: Specifies the version of the GitHub module to be installed. The value must be an exact version. + required: false + Prerelease: + description: Allow prerelease versions if available. + required: false + default: 'false' + WorkingDirectory: + description: The working directory where the script will run from. + required: false + default: '.' + +runs: + using: composite + steps: + - name: Get-PesterTestResults + uses: PSModule/GitHub-Script@8083ec1f733f00357ee4d0db0c6056686e483bc0 # v1.9.0 + env: + PSMODULE_GET_PESTERTESTRESULTS_INPUT_SourceCodeTestSuites: ${{ inputs.SourceCodeTestSuites }} + PSMODULE_GET_PESTERTESTRESULTS_INPUT_PSModuleTestSuites: ${{ inputs.PSModuleTestSuites }} + PSMODULE_GET_PESTERTESTRESULTS_INPUT_ModuleTestSuites: ${{ inputs.ModuleTestSuites }} + with: + Name: Get-PesterTestResults + Debug: ${{ inputs.Debug }} + Prerelease: ${{ inputs.Prerelease }} + Verbose: ${{ inputs.Verbose }} + Version: ${{ inputs.Version }} + WorkingDirectory: ${{ inputs.WorkingDirectory }} + ShowInfo: false + Script: | + ${{ github.action_path }}/src/main.ps1 diff --git a/.github/actions/Get-PesterTestResults/src/main.ps1 b/.github/actions/Get-PesterTestResults/src/main.ps1 new file mode 100644 index 00000000..06900716 --- /dev/null +++ b/.github/actions/Get-PesterTestResults/src/main.ps1 @@ -0,0 +1,230 @@ +#Requires -Modules GitHub + +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', + Justification = 'Outputs to GitHub Actions logs.' +)] +[CmdletBinding()] +param() + +$owner = $env:GITHUB_REPOSITORY_OWNER +$repo = $env:GITHUB_REPOSITORY_NAME +$runId = $env:GITHUB_RUN_ID + +$files = Get-GitHubArtifact -Owner $owner -Repository $repo -WorkflowRunID $runId -Name '*-TestResults' | + Save-GitHubArtifact -Path 'TestResults' -Force -Expand -PassThru | Get-ChildItem -Recurse -Filter *.json | Sort-Object Name -Unique + +LogGroup 'List files' { + $files.Name | Out-String +} + +$sourceCodeTestSuites = $env:PSMODULE_GET_PESTERTESTRESULTS_INPUT_SourceCodeTestSuites | ConvertFrom-Json +$psModuleTestSuites = $env:PSMODULE_GET_PESTERTESTRESULTS_INPUT_PSModuleTestSuites | ConvertFrom-Json +$moduleTestSuites = $env:PSMODULE_GET_PESTERTESTRESULTS_INPUT_ModuleTestSuites | ConvertFrom-Json + +LogGroup 'Expected test suites' { + + # Build an array of expected test suite objects + $expectedTestSuites = @() + + # SourceCodeTestSuites: expected file names start with "SourceCode-" + foreach ($suite in $sourceCodeTestSuites) { + $expectedTestSuites += [pscustomobject]@{ + Name = "PSModuleTest-SourceCode-$($suite.OSName)-TestResult-Report" + Category = 'SourceCode' + OSName = $suite.OSName + TestName = $null + } + $expectedTestSuites += [pscustomobject]@{ + Name = "PSModuleLint-SourceCode-$($suite.OSName)-TestResult-Report" + Category = 'SourceCode' + OSName = $suite.OSName + TestName = $null + } + } + + # PSModuleTestSuites: expected file names start with "Module-" + foreach ($suite in $psModuleTestSuites) { + $expectedTestSuites += [pscustomobject]@{ + Name = "PSModuleTest-Module-$($suite.OSName)-TestResult-Report" + Category = 'PSModuleTest' + OSName = $suite.OSName + TestName = $null + } + $expectedTestSuites += [pscustomobject]@{ + Name = "PSModuleLint-Module-$($suite.OSName)-TestResult-Report" + Category = 'PSModuleTest' + OSName = $suite.OSName + TestName = $null + } + } + + # ModuleTestSuites: expected file names use the TestName as prefix + foreach ($suite in $moduleTestSuites) { + $expectedTestSuites += [pscustomobject]@{ + Name = "$($suite.TestName)-$($suite.OSName)-TestResult-Report" + Category = 'ModuleTest' + OSName = $suite.OSName + TestName = $suite.TestName + } + } + + $expectedTestSuites = $expectedTestSuites | Sort-Object Category, Name + $expectedTestSuites | Format-Table | Out-String +} +$isFailure = $false + +$testResults = [System.Collections.Generic.List[psobject]]::new() +$failedTests = [System.Collections.Generic.List[string]]::new() +$unexecutedTests = [System.Collections.Generic.List[string]]::new() +$missingResultFiles = [System.Collections.Generic.List[string]]::new() +$totalErrors = 0 + +foreach ($expected in $expectedTestSuites) { + $file = $files | Where-Object { $_.BaseName -eq $expected.Name } + $result = if ($file) { + $object = $file | Get-Content | ConvertFrom-Json + [pscustomobject]@{ + Result = $object.Result + Executed = $object.Executed + ResultFilePresent = $true + Tests = [int]([math]::Round(($object | Measure-Object -Sum -Property TotalCount).Sum)) + Passed = [int]([math]::Round(($object | Measure-Object -Sum -Property PassedCount).Sum)) + Failed = [int]([math]::Round(($object | Measure-Object -Sum -Property FailedCount).Sum)) + NotRun = [int]([math]::Round(($object | Measure-Object -Sum -Property NotRunCount).Sum)) + Inconclusive = [int]([math]::Round(($object | Measure-Object -Sum -Property InconclusiveCount).Sum)) + Skipped = [int]([math]::Round(($object | Measure-Object -Sum -Property SkippedCount).Sum)) + } + } else { + [pscustomobject]@{ + Result = $null + Executed = $null + ResultFilePresent = $false + Tests = $null + Passed = $null + Failed = $null + NotRun = $null + Inconclusive = $null + Skipped = $null + } + } + + # Determine if there’s any failure for this single test file + $hasTestsValue = $null -ne $result.Tests + $hasPassedValue = $null -ne $result.Passed + $hasFailedValue = $null -ne $result.Failed + $hasInconclusiveValue = $null -ne $result.Inconclusive + + $testFailure = ( + $result.Result -ne 'Passed' -or + $result.Executed -ne $true -or + $result.ResultFilePresent -eq $false -or + ($hasTestsValue -and $result.Tests -eq 0) -or + ($hasPassedValue -and $hasTestsValue -and $result.Tests -gt 0 -and $result.Passed -eq 0) -or + ($hasFailedValue -and $result.Failed -gt 0) -or + ($hasInconclusiveValue -and $result.Inconclusive -gt 0) + ) + + if ($testFailure) { + $conclusion = 'Failed' + $color = $PSStyle.Foreground.Red + $isFailure = $true + } else { + $conclusion = 'Passed' + $color = $PSStyle.Foreground.Green + } + $result | Add-Member -NotePropertyName 'Conclusion' -NotePropertyValue $conclusion + + $reset = $PSStyle.Reset + $logGroupName = $expected.Name -replace '-TestResult-Report.*', '' + + LogGroup " - $color$logGroupName$reset" { + $failureReasons = [System.Collections.Generic.List[string]]::new() + + if ($result.ResultFilePresent -eq $false) { + $missingResultFiles.Add($expected.Name) + $null = $failureReasons.Add("Result file '$($expected.Name)' was not found in the artifacts.") + } + + if ($result.Executed -eq $false) { + $unexecutedTests.Add($expected.Name) + $null = $failureReasons.Add("Test execution flag is false in file: $($expected.Name)") + } + + if ($result.Result -and $result.Result -ne 'Passed') { + if ($failedTests -notcontains $expected.Name) { + $failedTests.Add($expected.Name) + } + $null = $failureReasons.Add("Test result value '$($result.Result)' indicates failure in file: $($expected.Name)") + } + + if ($hasTestsValue -and $result.Tests -eq 0) { + $null = $failureReasons.Add("No tests were reported in file: $($expected.Name)") + } + + if ($hasPassedValue -and $hasTestsValue -and $result.Tests -gt 0 -and $result.Passed -eq 0) { + $null = $failureReasons.Add("No tests passed according to file: $($expected.Name)") + } + + if ($hasFailedValue -and $result.Failed -gt 0) { + if ($failedTests -notcontains $expected.Name) { + $failedTests.Add($expected.Name) + } + $null = $failureReasons.Add("$($result.Failed) tests failed in file: $($expected.Name)") + } + + if ($hasInconclusiveValue -and $result.Inconclusive -gt 0) { + $null = $failureReasons.Add("$($result.Inconclusive) tests were inconclusive in file: $($expected.Name)") + } + + foreach ($reason in $failureReasons) { + Write-GitHubError $reason + $totalErrors++ + } + + Write-Host "$($result | Format-Table | Out-String)" + } + + if ($result.ResultFilePresent) { + $testResults.Add($result) + } +} + +Write-Output ('─' * 50) +$total = [pscustomobject]@{ + Tests = [int]([math]::Round(($testResults | Measure-Object -Sum -Property Tests).Sum)) + Passed = [int]([math]::Round(($testResults | Measure-Object -Sum -Property Passed).Sum)) + Failed = [int]([math]::Round(($testResults | Measure-Object -Sum -Property Failed).Sum)) + NotRun = [int]([math]::Round(($testResults | Measure-Object -Sum -Property NotRun).Sum)) + Inconclusive = [int]([math]::Round(($testResults | Measure-Object -Sum -Property Inconclusive).Sum)) + Skipped = [int]([math]::Round(($testResults | Measure-Object -Sum -Property Skipped).Sum)) +} + + +$color = if ($isFailure) { $PSStyle.Foreground.Red } else { $PSStyle.Foreground.Green } +$reset = $PSStyle.Reset +LogGroup " - $color`Summary$reset" { + $total | Format-Table | Out-String + if ($total.Failed -gt 0) { + Write-GitHubError "There are $($total.Failed) failed tests of $($total.Tests) tests" + $totalErrors += $total.Failed + } + if ($total.Inconclusive -gt 0) { + Write-GitHubError "There are $($total.Inconclusive) inconclusive tests of $($total.Tests) tests" + $totalErrors += $total.Inconclusive + } + if ($failedTests.Count -gt 0) { + Write-Host 'Failed Test Files' + $failedTests | ForEach-Object { Write-Host " - $_" } + } + if ($unexecutedTests.Count -gt 0) { + Write-Host 'Unexecuted Test Files' + $unexecutedTests | ForEach-Object { Write-Host " - $_" } + } + if ($missingResultFiles.Count -gt 0) { + Write-Host 'Missing Test Result Files' + $missingResultFiles | ForEach-Object { Write-Host " - $_" } + } +} + +exit $totalErrors diff --git a/.github/actions/Get-PesterTestResults/tests/TestResults/PATH-Windows-TestResults/PATH-Windows-TestResult-Report.json b/.github/actions/Get-PesterTestResults/tests/TestResults/PATH-Windows-TestResults/PATH-Windows-TestResult-Report.json new file mode 100644 index 00000000..b36e4611 --- /dev/null +++ b/.github/actions/Get-PesterTestResults/tests/TestResults/PATH-Windows-TestResults/PATH-Windows-TestResult-Report.json @@ -0,0 +1 @@ +{"Depth":0,"ItemType":"TestSuite","Name":"PATH-Windows","Path":null,"Children":[{"Depth":1,"ItemType":"Container","Name":"PATH","Path":["PATH-Windows"],"Children":[{"Depth":2,"ItemType":"Block","Name":"PATH","Path":["PATH-Windows","PATH"],"Children":[[{"Depth":3,"ItemType":"Block","Name":"Function: Get-EnvironemntPath","Path":["PATH-Windows","PATH","PATH"],"Children":[[{"Depth":4,"ItemType":"Block","Name":"CurrentUser","Path":["PATH-Windows","PATH","PATH","Function: Get-EnvironemntPath"],"Children":[[{"Depth":5,"ItemType":"Test","Name":"Should not throw","Path":["PATH-Windows","PATH","PATH","Function: Get-EnvironemntPath","CurrentUser"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.9462579+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":1086898,"DiscoveryDuration":0,"UserDuration":538168,"FrameworkDuration":548730},{"Depth":5,"ItemType":"Test","Name":"Should not throw when using '-AsArray'","Path":["PATH-Windows","PATH","PATH","Function: Get-EnvironemntPath","CurrentUser"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:54.0543044+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":424915,"DiscoveryDuration":0,"UserDuration":365261,"FrameworkDuration":59654}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":2,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":2,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.9379759+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":1779884,"DiscoveryDuration":0,"UserDuration":909067,"FrameworkDuration":870817},{"Depth":4,"ItemType":"Block","Name":"AllUsers","Path":["PATH-Windows","PATH","PATH","Function: Get-EnvironemntPath"],"Children":[[{"Depth":5,"ItemType":"Test","Name":"Should not throw","Path":["PATH-Windows","PATH","PATH","Function: Get-EnvironemntPath","AllUsers"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:54.1190611+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":114855,"DiscoveryDuration":0,"UserDuration":53266,"FrameworkDuration":61589},{"Depth":5,"ItemType":"Test","Name":"Should not throw when using '-AsArray'","Path":["PATH-Windows","PATH","PATH","Function: Get-EnvironemntPath","AllUsers"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:54.1304947+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":162586,"DiscoveryDuration":0,"UserDuration":114430,"FrameworkDuration":48156}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":2,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":2,"Executed":true,"ExecutedAt":"2025-04-17T07:28:54.1159787+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":2139932,"DiscoveryDuration":0,"UserDuration":1085300,"FrameworkDuration":1054632}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":4,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":4,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.9353945+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":2203182,"DiscoveryDuration":0,"UserDuration":1089560,"FrameworkDuration":1113622},{"Depth":3,"ItemType":"Block","Name":"Function: Add-EnvironmentPath","Path":["PATH-Windows","PATH","PATH"],"Children":[{"Depth":4,"ItemType":"Test","Name":"Should not throw","Path":["PATH-Windows","PATH","PATH","Function: Add-EnvironmentPath"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:54.1587806+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":1323229,"DiscoveryDuration":0,"UserDuration":1265314,"FrameworkDuration":57915}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":1,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":1,"Executed":true,"ExecutedAt":"2025-04-17T07:28:54.1557398+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":3582187,"DiscoveryDuration":0,"UserDuration":2360823,"FrameworkDuration":1221364},{"Depth":3,"ItemType":"Block","Name":"Function: Repair-EnvironmentPath","Path":["PATH-Windows","PATH","PATH"],"Children":[{"Depth":4,"ItemType":"Test","Name":"Should not throw","Path":["PATH-Windows","PATH","PATH","Function: Repair-EnvironmentPath"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:54.296415+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":1620942,"DiscoveryDuration":0,"UserDuration":458230,"FrameworkDuration":1162712}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":1,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":1,"Executed":true,"ExecutedAt":"2025-04-17T07:28:54.2936318+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":5487321,"DiscoveryDuration":0,"UserDuration":2826457,"FrameworkDuration":2660864},{"Depth":3,"ItemType":"Block","Name":"Function: Remove-EnvironmentPath","Path":["PATH-Windows","PATH","PATH"],"Children":[{"Depth":4,"ItemType":"Test","Name":"Should not throw","Path":["PATH-Windows","PATH","PATH","Function: Remove-EnvironmentPath"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:54.4863427+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":637483,"DiscoveryDuration":0,"UserDuration":582875,"FrameworkDuration":54608}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":1,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":1,"Executed":true,"ExecutedAt":"2025-04-17T07:28:54.4841492+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":6172845,"DiscoveryDuration":0,"UserDuration":3413700,"FrameworkDuration":2759145}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":7,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":7,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.9213988+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":6337331,"DiscoveryDuration":0,"UserDuration":3430242,"FrameworkDuration":2907089}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":7,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":7,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.8529645+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":16305353,"DiscoveryDuration":1458279,"UserDuration":3480232,"FrameworkDuration":11366842}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":0,"FailedContainersCount":0,"PassedCount":7,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":7,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.0665812+00:00","Version":"5.7.1","PSVersion":"7.4.7","Plugins":null,"PluginConfiguration":null,"PluginData":null,"Configuration":{"TestDrive":{"Enabled":true},"Output":{"Verbosity":"Detailed","CIFormat":"GithubActions","StackTraceVerbosity":"Filtered","CILogLevel":"Error","RenderMode":"Ansi"},"Run":{"ExcludePath":[],"ScriptBlock":[],"TestExtension":".Tests.ps1","SkipRun":false,"Path":["C:\\Users\\runneradmin\\Documents\\PowerShell\\Modules\\PSModuleTest\\999.0.0"],"PassThru":true,"Throw":false,"SkipRemainingOnFailure":"None","Container":[{"Path":"D:\\a\\Path\\Path\\tests\\PATH.Tests.ps1","Data":{}}],"Exit":false},"TestRegistry":{"Enabled":true},"TestResult":{"OutputEncoding":"UTF8","OutputFormat":"NUnitXml","OutputPath":"D:\\a\\Path\\Path/TestResult/PATH-Windows-TestResult-Report.xml","Enabled":true,"TestSuiteName":"PATH-Windows"},"Should":{"ErrorAction":"Stop"},"Debug":{"WriteDebugMessagesFrom":["Discovery","Skip","Mock","CodeCoverage"],"ShowNavigationMarkers":false,"WriteDebugMessages":false,"ReturnRawResultObject":false,"ShowFullErrors":false},"CodeCoverage":{"OutputFormat":"JaCoCo","OutputPath":"D:\\a\\Path\\Path/CodeCoverage/PATH-Windows-CodeCoverage-Report.xml","RecursePaths":true,"OutputEncoding":"UTF8","ExcludeTests":true,"Path":[],"UseBreakpoints":true,"Enabled":true,"SingleHitBreakpoints":true,"CoveragePercentTarget":0.0},"Filter":{"ExcludeTag":["Flaky"],"FullName":[],"Tag":[],"Line":[],"ExcludeLine":[]}},"Duration":16305353,"DiscoveryDuration":1458279,"UserDuration":3480232,"FrameworkDuration":11366842} diff --git a/.github/actions/Get-PesterTestResults/tests/TestResults/PATH-Windows-TestResults/PATH-Windows-TestResult-Report.xml b/.github/actions/Get-PesterTestResults/tests/TestResults/PATH-Windows-TestResults/PATH-Windows-TestResult-Report.xml new file mode 100644 index 00000000..b8a7b898 --- /dev/null +++ b/.github/actions/Get-PesterTestResults/tests/TestResults/PATH-Windows-TestResults/PATH-Windows-TestResult-Report.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-Module-Windows-TestResults/PSModuleLint-Module-Windows-TestResult-Report.json b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-Module-Windows-TestResults/PSModuleLint-Module-Windows-TestResult-Report.json new file mode 100644 index 00000000..ec692d70 --- /dev/null +++ b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-Module-Windows-TestResults/PSModuleLint-Module-Windows-TestResult-Report.json @@ -0,0 +1 @@ +{"Depth":0,"ItemType":"TestSuite","Name":"PSModuleLint-Module-Windows","Path":null,"Children":[{"Depth":1,"ItemType":"Container","Name":"PSScriptAnalyzer","Path":["PSModuleLint-Module-Windows"],"Children":[{"Depth":2,"ItemType":"Block","Name":"PSScriptAnalyzer","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer"],"Children":[[{"Depth":3,"ItemType":"Block","Name":"Severity: Information","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer"],"Children":[[{"Depth":4,"ItemType":"Test","Name":"'=' is not an assignment operator. Did you mean the equality operator '-eq'? (PSPossibleIncorrectUsageOfAssignmentOperator)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:59.8830893+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":1125258,"DiscoveryDuration":0,"UserDuration":522970,"FrameworkDuration":602288},{"Depth":4,"ItemType":"Test","Name":"Avoid trailing whitespace (PSAvoidTrailingWhitespace)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:59.9950988+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":57307,"DiscoveryDuration":0,"UserDuration":18499,"FrameworkDuration":38808},{"Depth":4,"ItemType":"Test","Name":"Avoid using double quotes if the string is constant. (PSAvoidUsingDoubleQuotesForConstantString)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.0008184+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":71030,"DiscoveryDuration":0,"UserDuration":22262,"FrameworkDuration":48768},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Positional Parameters (PSAvoidUsingPositionalParameters)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.0081527+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":78856,"DiscoveryDuration":0,"UserDuration":25774,"FrameworkDuration":53082},{"Depth":4,"ItemType":"Test","Name":"Basic Comment Help (PSProvideCommentHelp)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.016053+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":70247,"DiscoveryDuration":0,"UserDuration":27255,"FrameworkDuration":42992},{"Depth":4,"ItemType":"Test","Name":"DSC examples are present (PSDSCDscExamplesPresent)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.0232511+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":65204,"DiscoveryDuration":0,"UserDuration":19303,"FrameworkDuration":45901},{"Depth":4,"ItemType":"Test","Name":"Dsc tests are present (PSDSCDscTestsPresent)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.0298176+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":59572,"DiscoveryDuration":0,"UserDuration":19632,"FrameworkDuration":39940},{"Depth":4,"ItemType":"Test","Name":"Return Correct Types For DSC Functions (PSDSCReturnCorrectTypesForDSCFunctions)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.0358689+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":167148,"DiscoveryDuration":0,"UserDuration":18447,"FrameworkDuration":148701},{"Depth":4,"ItemType":"Test","Name":"Use exact casing of cmdlet/function/parameter name. (PSUseCorrectCasing)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.0526732+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":63238,"DiscoveryDuration":0,"UserDuration":18580,"FrameworkDuration":44658},{"Depth":4,"ItemType":"Test","Name":"Use OutputType Correctly (PSUseOutputTypeCorrectly)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.059154+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":67924,"DiscoveryDuration":0,"UserDuration":22551,"FrameworkDuration":45373},{"Depth":4,"ItemType":"Test","Name":"Use verbose message in DSC resource (PSDSCUseVerboseMessageInDSCResource)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.0660632+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":75887,"DiscoveryDuration":0,"UserDuration":21324,"FrameworkDuration":54563}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":11,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":11,"Executed":true,"ExecutedAt":"2025-04-17T07:28:59.8715695+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":2242916,"DiscoveryDuration":0,"UserDuration":742703,"FrameworkDuration":1500213},{"Depth":3,"ItemType":"Block","Name":"Severity: Warning","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer"],"Children":[[{"Depth":4,"ItemType":"Test","Name":"'>' is not a comparison operator. Use '-gt' (greater than) or '-ge' (greater or equal). (PSPossibleIncorrectUsageOfRedirectionOperator)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.0984258+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":583021,"DiscoveryDuration":0,"UserDuration":23894,"FrameworkDuration":559127},{"Depth":4,"ItemType":"Test","Name":"Align assignment statement (PSAlignAssignmentStatement)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.1568059+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":501066,"DiscoveryDuration":0,"UserDuration":24651,"FrameworkDuration":476415},{"Depth":4,"ItemType":"Test","Name":"Avoid AllowUnencryptedAuthentication Switch (PSAvoidUsingAllowUnencryptedAuthentication)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.2070516+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":65889,"DiscoveryDuration":0,"UserDuration":24455,"FrameworkDuration":41434},{"Depth":4,"ItemType":"Test","Name":"Avoid Default Value For Mandatory Parameter (PSAvoidDefaultValueForMandatoryParameter)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.2137416+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":63670,"DiscoveryDuration":0,"UserDuration":22698,"FrameworkDuration":40972},{"Depth":4,"ItemType":"Test","Name":"Avoid exclaim operator (PSAvoidExclaimOperator)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.2203808+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":354235,"DiscoveryDuration":0,"UserDuration":22788,"FrameworkDuration":331447},{"Depth":4,"ItemType":"Test","Name":"Avoid global aliases. (PSAvoidGlobalAliases)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.2558442+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":143326,"DiscoveryDuration":0,"UserDuration":24117,"FrameworkDuration":119209},{"Depth":4,"ItemType":"Test","Name":"Avoid global functions and aliases (PSAvoidGlobalFunctions)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.2702859+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":67620,"DiscoveryDuration":0,"UserDuration":23055,"FrameworkDuration":44565},{"Depth":4,"ItemType":"Test","Name":"Avoid Invoking Empty Members (PSAvoidInvokingEmptyMembers)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.2771443+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":179159,"DiscoveryDuration":0,"UserDuration":24192,"FrameworkDuration":154967},{"Depth":4,"ItemType":"Test","Name":"Avoid long lines (PSAvoidLongLines)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.2953197+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":75371,"DiscoveryDuration":0,"UserDuration":30720,"FrameworkDuration":44651},{"Depth":4,"ItemType":"Test","Name":"Avoid multiple type specifiers on parameters (PSAvoidMultipleTypeAttributes)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.3030038+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":69232,"DiscoveryDuration":0,"UserDuration":24532,"FrameworkDuration":44700},{"Depth":4,"ItemType":"Test","Name":"Avoid overwriting built in cmdlets (PSAvoidOverwritingBuiltInCmdlets)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.3100584+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":68331,"DiscoveryDuration":0,"UserDuration":24908,"FrameworkDuration":43423},{"Depth":4,"ItemType":"Test","Name":"Avoid semicolons as line terminators (PSAvoidSemicolonsAsLineTerminators)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.3170225+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":253254,"DiscoveryDuration":0,"UserDuration":29814,"FrameworkDuration":223440},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Broken Hash Algorithms (PSAvoidUsingBrokenHashAlgorithms)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.3424996+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":69196,"DiscoveryDuration":0,"UserDuration":25560,"FrameworkDuration":43636},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Cmdlet Aliases or omitting the 'Get-' prefix. (PSAvoidUsingCmdletAliases)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.3495377+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":69937,"DiscoveryDuration":0,"UserDuration":25874,"FrameworkDuration":44063},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Deprecated Manifest Fields (PSAvoidUsingDeprecatedManifestFields)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.3565959+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":70618,"DiscoveryDuration":0,"UserDuration":24861,"FrameworkDuration":45757},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Empty Catch Block (PSAvoidUsingEmptyCatchBlock)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.3638225+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":69575,"DiscoveryDuration":0,"UserDuration":24967,"FrameworkDuration":44608},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Get-WMIObject, Remove-WMIObject, Invoke-WmiMethod, Register-WmiEvent, Set-WmiInstance (PSAvoidUsingWMICmdlet)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.3707948+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":48331,"DiscoveryDuration":0,"UserDuration":15978,"FrameworkDuration":32353},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Invoke-Expression (PSAvoidUsingInvokeExpression)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.3757422+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":48075,"DiscoveryDuration":0,"UserDuration":16145,"FrameworkDuration":31930},{"Depth":4,"ItemType":"Test","Name":"Avoid using null or empty HelpMessage parameter attribute. (PSAvoidNullOrEmptyHelpMessageAttribute)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.3806346+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":59925,"DiscoveryDuration":0,"UserDuration":22863,"FrameworkDuration":37062},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Plain Text For Password Parameter (PSAvoidUsingPlainTextForPassword)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.3867655+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":52526,"DiscoveryDuration":0,"UserDuration":17667,"FrameworkDuration":34859},{"Depth":4,"ItemType":"Test","Name":"Avoid Using ShouldContinue Without Boolean Force Parameter (PSAvoidShouldContinueWithoutForce)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.3921259+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":60018,"DiscoveryDuration":0,"UserDuration":22742,"FrameworkDuration":37276},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Write-Host (PSAvoidUsingWriteHost)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.398266+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":2520975,"DiscoveryDuration":0,"UserDuration":23694,"FrameworkDuration":2497281},{"Depth":4,"ItemType":"Test","Name":"Changing automatic variables might have undesired side effects (PSAvoidAssignmentToAutomaticVariable)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.6505303+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":65919,"DiscoveryDuration":0,"UserDuration":25727,"FrameworkDuration":40192},{"Depth":4,"ItemType":"Test","Name":"Cmdlet Singular Noun (PSUseSingularNouns)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.6571999+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":54605,"DiscoveryDuration":0,"UserDuration":18432,"FrameworkDuration":36173},{"Depth":4,"ItemType":"Test","Name":"Cmdlet Verbs (PSUseApprovedVerbs)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.6627618+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":53278,"DiscoveryDuration":0,"UserDuration":18811,"FrameworkDuration":34467},{"Depth":4,"ItemType":"Test","Name":"Create hashtables with literal initializers (PSUseLiteralInitializerForHashtable)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.6681955+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":52149,"DiscoveryDuration":0,"UserDuration":17794,"FrameworkDuration":34355},{"Depth":4,"ItemType":"Test","Name":"Extra Variables (PSUseDeclaredVarsMoreThanAssignments)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.6736213+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":54183,"DiscoveryDuration":0,"UserDuration":18680,"FrameworkDuration":35503},{"Depth":4,"ItemType":"Test","Name":"Misleading Backtick (PSMisleadingBacktick)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.6791406+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":105864,"DiscoveryDuration":0,"UserDuration":21058,"FrameworkDuration":84806},{"Depth":4,"ItemType":"Test","Name":"Module Manifest Fields (PSMissingModuleManifestField)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.6898577+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":54483,"DiscoveryDuration":0,"UserDuration":18705,"FrameworkDuration":35778},{"Depth":4,"ItemType":"Test","Name":"No Global Variables (PSAvoidGlobalVars)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.6954062+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":53709,"DiscoveryDuration":0,"UserDuration":18685,"FrameworkDuration":35024},{"Depth":4,"ItemType":"Test","Name":"Null Comparison (PSPossibleIncorrectComparisonWithNull)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.700897+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":54814,"DiscoveryDuration":0,"UserDuration":18516,"FrameworkDuration":36298},{"Depth":4,"ItemType":"Test","Name":"Place close braces (PSPlaceCloseBrace)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.706486+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":59822,"DiscoveryDuration":0,"UserDuration":18799,"FrameworkDuration":41023},{"Depth":4,"ItemType":"Test","Name":"Place open braces consistently (PSPlaceOpenBrace)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7125959+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":59065,"DiscoveryDuration":0,"UserDuration":18799,"FrameworkDuration":40266},{"Depth":4,"ItemType":"Test","Name":"Reserved Cmdlet Chars (PSReservedCmdletChar)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7186145+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":56155,"DiscoveryDuration":0,"UserDuration":17729,"FrameworkDuration":38426},{"Depth":4,"ItemType":"Test","Name":"ReviewUnusedParameter (PSReviewUnusedParameter)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7243342+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":56496,"DiscoveryDuration":0,"UserDuration":17266,"FrameworkDuration":39230},{"Depth":4,"ItemType":"Test","Name":"Should Process (PSShouldProcess)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7301966+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":59680,"DiscoveryDuration":0,"UserDuration":16748,"FrameworkDuration":42932},{"Depth":4,"ItemType":"Test","Name":"Switch Parameters Should Not Default To True (PSAvoidDefaultValueSwitchParameter)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.736205+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":55338,"DiscoveryDuration":0,"UserDuration":16680,"FrameworkDuration":38658},{"Depth":4,"ItemType":"Test","Name":"Use 'Using:' scope modifier in RunSpace ScriptBlocks (PSUseUsingScopeModifierInNewRunspaces)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7418022+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":53579,"DiscoveryDuration":0,"UserDuration":16813,"FrameworkDuration":36766},{"Depth":4,"ItemType":"Test","Name":"Use BOM encoding for non-ASCII files (PSUseBOMForUnicodeEncodedFile)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7472502+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":54160,"DiscoveryDuration":0,"UserDuration":16631,"FrameworkDuration":37529},{"Depth":4,"ItemType":"Test","Name":"Use Cmdlet Correctly (PSUseCmdletCorrectly)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7528067+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":59731,"DiscoveryDuration":0,"UserDuration":20305,"FrameworkDuration":39426},{"Depth":4,"ItemType":"Test","Name":"Use compatible cmdlets (PSUseCompatibleCmdlets)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7588887+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":62274,"DiscoveryDuration":0,"UserDuration":21120,"FrameworkDuration":41154},{"Depth":4,"ItemType":"Test","Name":"Use compatible commands (PSUseCompatibleCommands)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7651668+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":55213,"DiscoveryDuration":0,"UserDuration":17071,"FrameworkDuration":38142},{"Depth":4,"ItemType":"Test","Name":"Use compatible types (PSUseCompatibleTypes)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7708513+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":61075,"DiscoveryDuration":0,"UserDuration":19316,"FrameworkDuration":41759},{"Depth":4,"ItemType":"Test","Name":"Use consistent indentation (PSUseConsistentIndentation)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7769969+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":53251,"DiscoveryDuration":0,"UserDuration":16433,"FrameworkDuration":36818},{"Depth":4,"ItemType":"Test","Name":"Use process block for command that accepts input from pipeline. (PSUseProcessBlockForPipelineCommand)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7824063+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":52161,"DiscoveryDuration":0,"UserDuration":16306,"FrameworkDuration":35855},{"Depth":4,"ItemType":"Test","Name":"Use PSCredential type. (PSUsePSCredentialType)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7877119+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":51793,"DiscoveryDuration":0,"UserDuration":16281,"FrameworkDuration":35512},{"Depth":4,"ItemType":"Test","Name":"Use ShouldProcess For State Changing Functions (PSUseShouldProcessForStateChangingFunctions)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.792981+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":52944,"DiscoveryDuration":0,"UserDuration":16325,"FrameworkDuration":36619},{"Depth":4,"ItemType":"Test","Name":"Use SupportsShouldProcess (PSUseSupportsShouldProcess)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.7983954+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":43807,"DiscoveryDuration":0,"UserDuration":12718,"FrameworkDuration":31089},{"Depth":4,"ItemType":"Test","Name":"Use the *ToExport module manifest fields. (PSUseToExportFieldsInManifest)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.8027865+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":42398,"DiscoveryDuration":0,"UserDuration":12365,"FrameworkDuration":30033},{"Depth":4,"ItemType":"Test","Name":"Use UTF8 Encoding For Help File (PSUseUTF8EncodingForHelpFile)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.8070982+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":42126,"DiscoveryDuration":0,"UserDuration":12269,"FrameworkDuration":29857},{"Depth":4,"ItemType":"Test","Name":"Use whitespaces (PSUseConsistentWhitespace)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.8113878+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":44671,"DiscoveryDuration":0,"UserDuration":12303,"FrameworkDuration":32368}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":51,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":51,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.0958762+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":9495410,"DiscoveryDuration":0,"UserDuration":1776174,"FrameworkDuration":7719236},{"Depth":3,"ItemType":"Block","Name":"Severity: Error","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer"],"Children":[[{"Depth":4,"ItemType":"Test","Name":"Avoid Using ComputerName Hardcoded (PSAvoidUsingComputerNameHardcoded)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.8235506+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":57273,"DiscoveryDuration":0,"UserDuration":14134,"FrameworkDuration":43139},{"Depth":4,"ItemType":"Test","Name":"Avoid Using SecureString With Plain Text (PSAvoidUsingConvertToSecureStringWithPlainText)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.8293691+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":53152,"DiscoveryDuration":0,"UserDuration":16612,"FrameworkDuration":36540},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Username and Password Parameters (PSAvoidUsingUsernameAndPasswordParams)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.8347425+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":43193,"DiscoveryDuration":0,"UserDuration":12533,"FrameworkDuration":30660},{"Depth":4,"ItemType":"Test","Name":"Reserved Parameters (PSReservedParams)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.8392073+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":55811,"DiscoveryDuration":0,"UserDuration":18232,"FrameworkDuration":37579},{"Depth":4,"ItemType":"Test","Name":"Use compatible syntax (PSUseCompatibleSyntax)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.8448053+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":43938,"DiscoveryDuration":0,"UserDuration":12787,"FrameworkDuration":31151},{"Depth":4,"ItemType":"Test","Name":"Use identical mandatory parameters for DSC Get/Test/Set TargetResource functions (PSDSCUseIdenticalMandatoryParametersForDSC)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.8493268+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":52632,"DiscoveryDuration":0,"UserDuration":16265,"FrameworkDuration":36367},{"Depth":4,"ItemType":"Test","Name":"Use Identical Parameters For DSC Test and Set Functions (PSDSCUseIdenticalParametersForDSC)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.8546554+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":43124,"DiscoveryDuration":0,"UserDuration":12751,"FrameworkDuration":30373},{"Depth":4,"ItemType":"Test","Name":"Use Standard Get/Set/Test TargetResource functions in DSC Resource (PSDSCStandardDSCFunctionsInResource)","Path":["PSModuleLint-Module-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.8590368+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":43549,"DiscoveryDuration":0,"UserDuration":13011,"FrameworkDuration":30538}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":8,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":8,"Executed":true,"ExecutedAt":"2025-04-17T07:29:00.8211488+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":9956823,"DiscoveryDuration":0,"UserDuration":1897102,"FrameworkDuration":8059721}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":70,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":70,"Executed":true,"ExecutedAt":"2025-04-17T07:28:58.4294544+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":24418373,"DiscoveryDuration":0,"UserDuration":16183191,"FrameworkDuration":8235182}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":70,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":70,"Executed":true,"ExecutedAt":"2025-04-17T07:28:58.3352017+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":51561209,"DiscoveryDuration":23320739,"UserDuration":16295008,"FrameworkDuration":11945462}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":0,"FailedContainersCount":0,"PassedCount":70,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":70,"Executed":true,"ExecutedAt":"2025-04-17T07:28:55.6986531+00:00","Version":"5.7.1","PSVersion":"7.4.7","Plugins":null,"PluginConfiguration":null,"PluginData":null,"Configuration":{"TestRegistry":{"Enabled":true},"TestDrive":{"Enabled":true},"Filter":{"FullName":[],"ExcludeLine":[],"ExcludeTag":[],"Tag":[],"Line":[]},"Debug":{"ShowNavigationMarkers":false,"ReturnRawResultObject":false,"WriteDebugMessagesFrom":["Discovery","Skip","Mock","CodeCoverage"],"ShowFullErrors":false,"WriteDebugMessages":false},"TestResult":{"TestSuiteName":"PSModuleLint-Module-Windows","Enabled":true,"OutputEncoding":"UTF8","OutputFormat":"NUnitXml","OutputPath":"D:\\a\\Path\\Path/TestResult/PSModuleLint-Module-Windows-TestResult-Report.xml"},"CodeCoverage":{"CoveragePercentTarget":75.0,"Path":[],"OutputEncoding":"UTF8","OutputPath":"D:\\a\\Path\\Path/CodeCoverage/PSModuleLint-Module-Windows-CodeCoverage-Report.xml","OutputFormat":"JaCoCo","SingleHitBreakpoints":true,"UseBreakpoints":true,"Enabled":false,"ExcludeTests":true,"RecursePaths":true},"Output":{"CILogLevel":"Error","Verbosity":"Detailed","CIFormat":"GithubActions","RenderMode":"Ansi","StackTraceVerbosity":"Filtered"},"Should":{"ErrorAction":"Stop"},"Run":{"Path":["D:\\a\\Path\\Path\\outputs\\module"],"TestExtension":".Tests.ps1","ScriptBlock":[],"PassThru":true,"Exit":false,"ExcludePath":[],"SkipRemainingOnFailure":"None","SkipRun":false,"Container":[{"Path":"D:\\a\\_actions\\PSModule\\Invoke-ScriptAnalyzer\\v3\\scripts\\tests\\PSScriptAnalyzer\\PSScriptAnalyzer.Tests.ps1","Data":{"Path":"D:\\a\\Path\\Path\\outputs\\module","SettingsFilePath":"D:\\a\\_actions\\PSModule\\Invoke-ScriptAnalyzer\\v3\\scripts\\tests\\PSScriptAnalyzer/Module.Settings.psd1","Verbose":false,"Debug":false}}],"Throw":false}},"Duration":51561209,"DiscoveryDuration":23320739,"UserDuration":16295008,"FrameworkDuration":11945462} diff --git a/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-Module-Windows-TestResults/PSModuleLint-Module-Windows-TestResult-Report.xml b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-Module-Windows-TestResults/PSModuleLint-Module-Windows-TestResult-Report.xml new file mode 100644 index 00000000..998ef937 --- /dev/null +++ b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-Module-Windows-TestResults/PSModuleLint-Module-Windows-TestResult-Report.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-SourceCode-Windows-TestResults/PSModuleLint-SourceCode-Windows-TestResult-Report.json b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-SourceCode-Windows-TestResults/PSModuleLint-SourceCode-Windows-TestResult-Report.json new file mode 100644 index 00000000..dc662790 --- /dev/null +++ b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-SourceCode-Windows-TestResults/PSModuleLint-SourceCode-Windows-TestResult-Report.json @@ -0,0 +1 @@ +{"Depth":0,"ItemType":"TestSuite","Name":"PSModuleLint-SourceCode-Windows","Path":null,"Children":[{"Depth":1,"ItemType":"Container","Name":"PSScriptAnalyzer","Path":["PSModuleLint-SourceCode-Windows"],"Children":[{"Depth":2,"ItemType":"Block","Name":"PSScriptAnalyzer","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer"],"Children":[[{"Depth":3,"ItemType":"Block","Name":"Severity: Information","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer"],"Children":[[{"Depth":4,"ItemType":"Test","Name":"'=' is not an assignment operator. Did you mean the equality operator '-eq'? (PSPossibleIncorrectUsageOfAssignmentOperator)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:55.8489142+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":1014280,"DiscoveryDuration":0,"UserDuration":464897,"FrameworkDuration":549383},{"Depth":4,"ItemType":"Test","Name":"Avoid trailing whitespace (PSAvoidTrailingWhitespace)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:55.9498155+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":56023,"DiscoveryDuration":0,"UserDuration":18400,"FrameworkDuration":37623},{"Depth":4,"ItemType":"Test","Name":"Avoid using double quotes if the string is constant. (PSAvoidUsingDoubleQuotesForConstantString)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:55.9554835+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":51501,"DiscoveryDuration":0,"UserDuration":16313,"FrameworkDuration":35188},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Positional Parameters (PSAvoidUsingPositionalParameters)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:55.9607695+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":64730,"DiscoveryDuration":0,"UserDuration":24129,"FrameworkDuration":40601},{"Depth":4,"ItemType":"Test","Name":"Basic Comment Help (PSProvideCommentHelp)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:55.9672847+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":64716,"DiscoveryDuration":0,"UserDuration":24214,"FrameworkDuration":40502},{"Depth":4,"ItemType":"Test","Name":"DSC examples are present (PSDSCDscExamplesPresent)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:55.973912+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":66759,"DiscoveryDuration":0,"UserDuration":20664,"FrameworkDuration":46095},{"Depth":4,"ItemType":"Test","Name":"Dsc tests are present (PSDSCDscTestsPresent)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:55.9806749+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":58575,"DiscoveryDuration":0,"UserDuration":19867,"FrameworkDuration":38708},{"Depth":4,"ItemType":"Test","Name":"Return Correct Types For DSC Functions (PSDSCReturnCorrectTypesForDSCFunctions)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:55.9865697+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":52326,"DiscoveryDuration":0,"UserDuration":16796,"FrameworkDuration":35530},{"Depth":4,"ItemType":"Test","Name":"Use exact casing of cmdlet/function/parameter name. (PSUseCorrectCasing)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:55.9918972+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":62528,"DiscoveryDuration":0,"UserDuration":17173,"FrameworkDuration":45355},{"Depth":4,"ItemType":"Test","Name":"Use OutputType Correctly (PSUseOutputTypeCorrectly)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:55.998268+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":56678,"DiscoveryDuration":0,"UserDuration":18689,"FrameworkDuration":37989},{"Depth":4,"ItemType":"Test","Name":"Use verbose message in DSC resource (PSDSCUseVerboseMessageInDSCResource)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Information"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.0040241+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":68512,"DiscoveryDuration":0,"UserDuration":16972,"FrameworkDuration":51540}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":11,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":11,"Executed":true,"ExecutedAt":"2025-04-17T07:28:55.8182634+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":2246512,"DiscoveryDuration":0,"UserDuration":664724,"FrameworkDuration":1581788},{"Depth":3,"ItemType":"Block","Name":"Severity: Warning","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer"],"Children":[[{"Depth":4,"ItemType":"Test","Name":"'>' is not a comparison operator. Use '-gt' (greater than) or '-ge' (greater or equal). (PSPossibleIncorrectUsageOfRedirectionOperator)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.0453142+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":499025,"DiscoveryDuration":0,"UserDuration":24910,"FrameworkDuration":474115},{"Depth":4,"ItemType":"Test","Name":"Align assignment statement (PSAlignAssignmentStatement)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.0953141+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":524017,"DiscoveryDuration":0,"UserDuration":23978,"FrameworkDuration":500039},{"Depth":4,"ItemType":"Test","Name":"Avoid AllowUnencryptedAuthentication Switch (PSAvoidUsingAllowUnencryptedAuthentication)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.1478842+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":67013,"DiscoveryDuration":0,"UserDuration":25401,"FrameworkDuration":41612},{"Depth":4,"ItemType":"Test","Name":"Avoid Default Value For Mandatory Parameter (PSAvoidDefaultValueForMandatoryParameter)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.1547183+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":61863,"DiscoveryDuration":0,"UserDuration":22881,"FrameworkDuration":38982},{"Depth":4,"ItemType":"Test","Name":"Avoid exclaim operator (PSAvoidExclaimOperator)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.1609881+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":336689,"DiscoveryDuration":0,"UserDuration":22048,"FrameworkDuration":314641},{"Depth":4,"ItemType":"Test","Name":"Avoid global aliases. (PSAvoidGlobalAliases)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.1948286+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":152213,"DiscoveryDuration":0,"UserDuration":24719,"FrameworkDuration":127494},{"Depth":4,"ItemType":"Test","Name":"Avoid global functions and aliases (PSAvoidGlobalFunctions)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.2102136+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":67782,"DiscoveryDuration":0,"UserDuration":24739,"FrameworkDuration":43043},{"Depth":4,"ItemType":"Test","Name":"Avoid Invoking Empty Members (PSAvoidInvokingEmptyMembers)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.2170638+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":62809,"DiscoveryDuration":0,"UserDuration":24673,"FrameworkDuration":38136},{"Depth":4,"ItemType":"Test","Name":"Avoid long lines (PSAvoidLongLines)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.2234479+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":59985,"DiscoveryDuration":0,"UserDuration":22787,"FrameworkDuration":37198},{"Depth":4,"ItemType":"Test","Name":"Avoid multiple type specifiers on parameters (PSAvoidMultipleTypeAttributes)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.2295569+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":66656,"DiscoveryDuration":0,"UserDuration":23159,"FrameworkDuration":43497},{"Depth":4,"ItemType":"Test","Name":"Avoid overwriting built in cmdlets (PSAvoidOverwritingBuiltInCmdlets)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.2363316+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":63780,"DiscoveryDuration":0,"UserDuration":21877,"FrameworkDuration":41903},{"Depth":4,"ItemType":"Test","Name":"Avoid semicolons as line terminators (PSAvoidSemicolonsAsLineTerminators)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.2428283+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":64856,"DiscoveryDuration":0,"UserDuration":21935,"FrameworkDuration":42921},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Broken Hash Algorithms (PSAvoidUsingBrokenHashAlgorithms)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.249413+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":139552,"DiscoveryDuration":0,"UserDuration":107109,"FrameworkDuration":32443},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Cmdlet Aliases or omitting the 'Get-' prefix. (PSAvoidUsingCmdletAliases)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.2634751+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":54415,"DiscoveryDuration":0,"UserDuration":21826,"FrameworkDuration":32589},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Deprecated Manifest Fields (PSAvoidUsingDeprecatedManifestFields)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.2690075+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":53744,"DiscoveryDuration":0,"UserDuration":20632,"FrameworkDuration":33112},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Empty Catch Block (PSAvoidUsingEmptyCatchBlock)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.2744773+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":48356,"DiscoveryDuration":0,"UserDuration":19544,"FrameworkDuration":28812},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Get-WMIObject, Remove-WMIObject, Invoke-WmiMethod, Register-WmiEvent, Set-WmiInstance (PSAvoidUsingWMICmdlet)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.2793997+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":322581,"DiscoveryDuration":0,"UserDuration":92754,"FrameworkDuration":229827},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Invoke-Expression (PSAvoidUsingInvokeExpression)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.3118107+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":67898,"DiscoveryDuration":0,"UserDuration":27165,"FrameworkDuration":40733},{"Depth":4,"ItemType":"Test","Name":"Avoid using null or empty HelpMessage parameter attribute. (PSAvoidNullOrEmptyHelpMessageAttribute)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.318671+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":56503,"DiscoveryDuration":0,"UserDuration":19314,"FrameworkDuration":37189},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Plain Text For Password Parameter (PSAvoidUsingPlainTextForPassword)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.3244061+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":57988,"DiscoveryDuration":0,"UserDuration":19968,"FrameworkDuration":38020},{"Depth":4,"ItemType":"Test","Name":"Avoid Using ShouldContinue Without Boolean Force Parameter (PSAvoidShouldContinueWithoutForce)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.3303125+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":58010,"DiscoveryDuration":0,"UserDuration":19434,"FrameworkDuration":38576},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Write-Host (PSAvoidUsingWriteHost)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.3362137+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":2011942,"DiscoveryDuration":0,"UserDuration":19310,"FrameworkDuration":1992632},{"Depth":4,"ItemType":"Test","Name":"Changing automatic variables might have undesired side effects (PSAvoidAssignmentToAutomaticVariable)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.5375885+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":64860,"DiscoveryDuration":0,"UserDuration":24194,"FrameworkDuration":40666},{"Depth":4,"ItemType":"Test","Name":"Cmdlet Singular Noun (PSUseSingularNouns)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.54417+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":54232,"DiscoveryDuration":0,"UserDuration":18168,"FrameworkDuration":36064},{"Depth":4,"ItemType":"Test","Name":"Cmdlet Verbs (PSUseApprovedVerbs)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.5496873+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":48832,"DiscoveryDuration":0,"UserDuration":17051,"FrameworkDuration":31781},{"Depth":4,"ItemType":"Test","Name":"Create hashtables with literal initializers (PSUseLiteralInitializerForHashtable)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.5546623+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":46255,"DiscoveryDuration":0,"UserDuration":15920,"FrameworkDuration":30335},{"Depth":4,"ItemType":"Test","Name":"Extra Variables (PSUseDeclaredVarsMoreThanAssignments)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.5593451+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":50794,"DiscoveryDuration":0,"UserDuration":17695,"FrameworkDuration":33099},{"Depth":4,"ItemType":"Test","Name":"Misleading Backtick (PSMisleadingBacktick)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.5645521+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":48705,"DiscoveryDuration":0,"UserDuration":17139,"FrameworkDuration":31566},{"Depth":4,"ItemType":"Test","Name":"Module Manifest Fields (PSMissingModuleManifestField)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Skipped","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.5695109+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":60409,"DiscoveryDuration":0,"UserDuration":0,"FrameworkDuration":60409},{"Depth":4,"ItemType":"Test","Name":"No Global Variables (PSAvoidGlobalVars)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.575689+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":53924,"DiscoveryDuration":0,"UserDuration":18276,"FrameworkDuration":35648},{"Depth":4,"ItemType":"Test","Name":"Null Comparison (PSPossibleIncorrectComparisonWithNull)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.5811577+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":50043,"DiscoveryDuration":0,"UserDuration":17405,"FrameworkDuration":32638},{"Depth":4,"ItemType":"Test","Name":"Place close braces (PSPlaceCloseBrace)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.5862829+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":51467,"DiscoveryDuration":0,"UserDuration":17484,"FrameworkDuration":33983},{"Depth":4,"ItemType":"Test","Name":"Place open braces consistently (PSPlaceOpenBrace)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.5915191+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":233219,"DiscoveryDuration":0,"UserDuration":17304,"FrameworkDuration":215915},{"Depth":4,"ItemType":"Test","Name":"Reserved Cmdlet Chars (PSReservedCmdletChar)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6149905+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":53393,"DiscoveryDuration":0,"UserDuration":20223,"FrameworkDuration":33170},{"Depth":4,"ItemType":"Test","Name":"ReviewUnusedParameter (PSReviewUnusedParameter)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.620404+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":48235,"DiscoveryDuration":0,"UserDuration":17191,"FrameworkDuration":31044},{"Depth":4,"ItemType":"Test","Name":"Should Process (PSShouldProcess)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6253179+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":47193,"DiscoveryDuration":0,"UserDuration":16009,"FrameworkDuration":31184},{"Depth":4,"ItemType":"Test","Name":"Switch Parameters Should Not Default To True (PSAvoidDefaultValueSwitchParameter)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6301316+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":46502,"DiscoveryDuration":0,"UserDuration":15966,"FrameworkDuration":30536},{"Depth":4,"ItemType":"Test","Name":"Use 'Using:' scope modifier in RunSpace ScriptBlocks (PSUseUsingScopeModifierInNewRunspaces)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6348762+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":48419,"DiscoveryDuration":0,"UserDuration":16166,"FrameworkDuration":32253},{"Depth":4,"ItemType":"Test","Name":"Use BOM encoding for non-ASCII files (PSUseBOMForUnicodeEncodedFile)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6398185+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":49391,"DiscoveryDuration":0,"UserDuration":18044,"FrameworkDuration":31347},{"Depth":4,"ItemType":"Test","Name":"Use Cmdlet Correctly (PSUseCmdletCorrectly)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6448654+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":47305,"DiscoveryDuration":0,"UserDuration":16285,"FrameworkDuration":31020},{"Depth":4,"ItemType":"Test","Name":"Use compatible cmdlets (PSUseCompatibleCmdlets)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6496982+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":47982,"DiscoveryDuration":0,"UserDuration":16162,"FrameworkDuration":31820},{"Depth":4,"ItemType":"Test","Name":"Use compatible commands (PSUseCompatibleCommands)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6546136+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":48143,"DiscoveryDuration":0,"UserDuration":16919,"FrameworkDuration":31224},{"Depth":4,"ItemType":"Test","Name":"Use compatible types (PSUseCompatibleTypes)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6595153+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":48534,"DiscoveryDuration":0,"UserDuration":16962,"FrameworkDuration":31572},{"Depth":4,"ItemType":"Test","Name":"Use consistent indentation (PSUseConsistentIndentation)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6644858+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":48591,"DiscoveryDuration":0,"UserDuration":16819,"FrameworkDuration":31772},{"Depth":4,"ItemType":"Test","Name":"Use process block for command that accepts input from pipeline. (PSUseProcessBlockForPipelineCommand)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6694672+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":61484,"DiscoveryDuration":0,"UserDuration":23811,"FrameworkDuration":37673},{"Depth":4,"ItemType":"Test","Name":"Use PSCredential type. (PSUsePSCredentialType)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6757023+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":52004,"DiscoveryDuration":0,"UserDuration":15763,"FrameworkDuration":36241},{"Depth":4,"ItemType":"Test","Name":"Use ShouldProcess For State Changing Functions (PSUseShouldProcessForStateChangingFunctions)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6809838+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":53057,"DiscoveryDuration":0,"UserDuration":16888,"FrameworkDuration":36169},{"Depth":4,"ItemType":"Test","Name":"Use SupportsShouldProcess (PSUseSupportsShouldProcess)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6863688+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":50046,"DiscoveryDuration":0,"UserDuration":16526,"FrameworkDuration":33520},{"Depth":4,"ItemType":"Test","Name":"Use the *ToExport module manifest fields. (PSUseToExportFieldsInManifest)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Skipped","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6914539+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":28873,"DiscoveryDuration":0,"UserDuration":0,"FrameworkDuration":28873},{"Depth":4,"ItemType":"Test","Name":"Use UTF8 Encoding For Help File (PSUseUTF8EncodingForHelpFile)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6944306+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":49223,"DiscoveryDuration":0,"UserDuration":16021,"FrameworkDuration":33202},{"Depth":4,"ItemType":"Test","Name":"Use whitespaces (PSUseConsistentWhitespace)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Warning"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.6994363+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":49646,"DiscoveryDuration":0,"UserDuration":15992,"FrameworkDuration":33654}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":49,"SkippedCount":2,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":51,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.0430099+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":8892105,"DiscoveryDuration":0,"UserDuration":1791384,"FrameworkDuration":7100721},{"Depth":3,"ItemType":"Block","Name":"Severity: Error","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer"],"Children":[[{"Depth":4,"ItemType":"Test","Name":"Avoid Using ComputerName Hardcoded (PSAvoidUsingComputerNameHardcoded)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.7097516+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":59672,"DiscoveryDuration":0,"UserDuration":15508,"FrameworkDuration":44164},{"Depth":4,"ItemType":"Test","Name":"Avoid Using SecureString With Plain Text (PSAvoidUsingConvertToSecureStringWithPlainText)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.7158138+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":50354,"DiscoveryDuration":0,"UserDuration":16115,"FrameworkDuration":34239},{"Depth":4,"ItemType":"Test","Name":"Avoid Using Username and Password Parameters (PSAvoidUsingUsernameAndPasswordParams)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.7209422+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":50741,"DiscoveryDuration":0,"UserDuration":16261,"FrameworkDuration":34480},{"Depth":4,"ItemType":"Test","Name":"Reserved Parameters (PSReservedParams)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.7261005+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":49996,"DiscoveryDuration":0,"UserDuration":16380,"FrameworkDuration":33616},{"Depth":4,"ItemType":"Test","Name":"Use compatible syntax (PSUseCompatibleSyntax)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.731186+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":52396,"DiscoveryDuration":0,"UserDuration":16997,"FrameworkDuration":35399},{"Depth":4,"ItemType":"Test","Name":"Use identical mandatory parameters for DSC Get/Test/Set TargetResource functions (PSDSCUseIdenticalMandatoryParametersForDSC)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.7365223+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":78924,"DiscoveryDuration":0,"UserDuration":43174,"FrameworkDuration":35750},{"Depth":4,"ItemType":"Test","Name":"Use Identical Parameters For DSC Test and Set Functions (PSDSCUseIdenticalParametersForDSC)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.7445153+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":64174,"DiscoveryDuration":0,"UserDuration":21308,"FrameworkDuration":42866},{"Depth":4,"ItemType":"Test","Name":"Use Standard Get/Set/Test TargetResource functions in DSC Resource (PSDSCStandardDSCFunctionsInResource)","Path":["PSModuleLint-SourceCode-Windows","PSScriptAnalyzer","PSScriptAnalyzer","Severity: Error"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.7510346+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":52155,"DiscoveryDuration":0,"UserDuration":17070,"FrameworkDuration":35085}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":8,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":8,"Executed":true,"ExecutedAt":"2025-04-17T07:28:56.7075846+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":9427729,"DiscoveryDuration":0,"UserDuration":1958312,"FrameworkDuration":7469417}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":68,"SkippedCount":2,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":70,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.2657164+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":35009101,"DiscoveryDuration":0,"UserDuration":27348701,"FrameworkDuration":7660400}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":68,"SkippedCount":2,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":70,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.1685873+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":65190465,"DiscoveryDuration":27111183,"UserDuration":27454501,"FrameworkDuration":10624781}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":0,"FailedContainersCount":0,"PassedCount":68,"SkippedCount":2,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":70,"Executed":true,"ExecutedAt":"2025-04-17T07:28:50.1511592+00:00","Version":"5.7.1","PSVersion":"7.4.7","Plugins":null,"PluginConfiguration":null,"PluginData":null,"Configuration":{"Run":{"Exit":false,"ExcludePath":[],"PassThru":true,"ScriptBlock":[],"SkipRemainingOnFailure":"None","SkipRun":false,"Path":["D:\\a\\Path\\Path\\src"],"Container":[{"Path":"D:\\a\\_actions\\PSModule\\Invoke-ScriptAnalyzer\\v3\\scripts\\tests\\PSScriptAnalyzer\\PSScriptAnalyzer.Tests.ps1","Data":{"Verbose":false,"SettingsFilePath":"D:\\a\\_actions\\PSModule\\Invoke-ScriptAnalyzer\\v3\\scripts\\tests\\PSScriptAnalyzer/SourceCode.Settings.psd1","Path":"D:\\a\\Path\\Path\\src","Debug":false}}],"TestExtension":".Tests.ps1","Throw":false},"Debug":{"ReturnRawResultObject":false,"WriteDebugMessages":false,"ShowNavigationMarkers":false,"ShowFullErrors":false,"WriteDebugMessagesFrom":["Discovery","Skip","Mock","CodeCoverage"]},"Should":{"ErrorAction":"Stop"},"Output":{"StackTraceVerbosity":"Filtered","CIFormat":"GithubActions","RenderMode":"Ansi","Verbosity":"Detailed","CILogLevel":"Error"},"TestDrive":{"Enabled":true},"CodeCoverage":{"OutputEncoding":"UTF8","Enabled":false,"SingleHitBreakpoints":true,"OutputFormat":"JaCoCo","UseBreakpoints":true,"ExcludeTests":true,"OutputPath":"D:\\a\\Path\\Path/CodeCoverage/PSModuleLint-SourceCode-Windows-CodeCoverage-Report.xml","Path":[],"RecursePaths":true,"CoveragePercentTarget":75.0},"Filter":{"FullName":[],"ExcludeLine":[],"Line":[],"ExcludeTag":[],"Tag":[]},"TestRegistry":{"Enabled":true},"TestResult":{"OutputEncoding":"UTF8","OutputFormat":"NUnitXml","TestSuiteName":"PSModuleLint-SourceCode-Windows","Enabled":true,"OutputPath":"D:\\a\\Path\\Path/TestResult/PSModuleLint-SourceCode-Windows-TestResult-Report.xml"}},"Duration":65190465,"DiscoveryDuration":27111183,"UserDuration":27454501,"FrameworkDuration":10624781} diff --git a/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-SourceCode-Windows-TestResults/PSModuleLint-SourceCode-Windows-TestResult-Report.xml b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-SourceCode-Windows-TestResults/PSModuleLint-SourceCode-Windows-TestResult-Report.xml new file mode 100644 index 00000000..dcf63767 --- /dev/null +++ b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleLint-SourceCode-Windows-TestResults/PSModuleLint-SourceCode-Windows-TestResult-Report.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-Module-Windows-TestResults/PSModuleTest-Module-Windows-TestResult-Report.json b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-Module-Windows-TestResults/PSModuleTest-Module-Windows-TestResult-Report.json new file mode 100644 index 00000000..cc9d1691 --- /dev/null +++ b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-Module-Windows-TestResults/PSModuleTest-Module-Windows-TestResult-Report.json @@ -0,0 +1 @@ +{"Depth":0,"ItemType":"TestSuite","Name":"PSModuleTest-Module-Windows","Path":null,"Children":[{"Depth":1,"ItemType":"Container","Name":"PSModule","Path":["PSModuleTest-Module-Windows"],"Children":[{"Depth":2,"ItemType":"Block","Name":"PSModule - Module tests","Path":["PSModuleTest-Module-Windows","PSModule"],"Children":[[{"Depth":3,"ItemType":"Block","Name":"Module","Path":["PSModuleTest-Module-Windows","PSModule","PSModule - Module tests"],"Children":[{"Depth":4,"ItemType":"Test","Name":"The module should be importable","Path":["PSModuleTest-Module-Windows","PSModule","PSModule - Module tests","Module"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.1034528+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":2886026,"DiscoveryDuration":0,"UserDuration":2317875,"FrameworkDuration":568151}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":1,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":1,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.0954029+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":3149329,"DiscoveryDuration":0,"UserDuration":2323374,"FrameworkDuration":825955},{"Depth":3,"ItemType":"Block","Name":"Module Manifest","Path":["PSModuleTest-Module-Windows","PSModule","PSModule - Module tests"],"Children":[[{"Depth":4,"ItemType":"Test","Name":"Module Manifest exists","Path":["PSModuleTest-Module-Windows","PSModule","PSModule - Module tests","Module Manifest"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.4128495+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":300068,"DiscoveryDuration":0,"UserDuration":123483,"FrameworkDuration":176585},{"Depth":4,"ItemType":"Test","Name":"Module Manifest is valid","Path":["PSModuleTest-Module-Windows","PSModule","PSModule - Module tests","Module Manifest"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.4430574+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":989896,"DiscoveryDuration":0,"UserDuration":943784,"FrameworkDuration":46112}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":2,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":2,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.4103276+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":4502982,"DiscoveryDuration":0,"UserDuration":3395634,"FrameworkDuration":1107348}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":3,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":3,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.0807015+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":4674678,"DiscoveryDuration":0,"UserDuration":3412755,"FrameworkDuration":1261923}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":3,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":3,"Executed":true,"ExecutedAt":"2025-04-17T07:28:53.0050202+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":11723166,"DiscoveryDuration":1787284,"UserDuration":3515115,"FrameworkDuration":6420767}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":0,"FailedContainersCount":0,"PassedCount":3,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":3,"Executed":true,"ExecutedAt":"2025-04-17T07:28:52.2462766+00:00","Version":"5.7.1","PSVersion":"7.4.7","Plugins":null,"PluginConfiguration":null,"PluginData":null,"Configuration":{"TestRegistry":{"Enabled":true},"Run":{"Container":[{"Path":"D:\\a\\_actions\\PSModule\\Test-PSModule\\v3\\scripts\\tests\\Module\\PSModule\\PSModule.Tests.ps1","Data":{"Path":"C:\\Users\\runneradmin\\Documents\\PowerShell\\Modules\\PSModuleTest\\999.0.0","Verbose":false,"Debug":false}}],"Exit":false,"Path":["C:\\Users\\runneradmin\\Documents\\PowerShell\\Modules\\PSModuleTest\\999.0.0"],"ExcludePath":[],"Throw":false,"SkipRemainingOnFailure":"None","TestExtension":".Tests.ps1","SkipRun":false,"ScriptBlock":[],"PassThru":true},"TestDrive":{"Enabled":true},"Debug":{"WriteDebugMessagesFrom":["Discovery","Skip","Mock","CodeCoverage"],"WriteDebugMessages":false,"ReturnRawResultObject":false,"ShowFullErrors":false,"ShowNavigationMarkers":false},"Output":{"StackTraceVerbosity":"Filtered","CILogLevel":"Error","RenderMode":"Ansi","CIFormat":"GithubActions","Verbosity":"Detailed"},"Should":{"ErrorAction":"Stop"},"TestResult":{"OutputPath":"D:\\a\\Path\\Path/TestResult/PSModuleTest-Module-Windows-TestResult-Report.xml","Enabled":true,"OutputEncoding":"UTF8","OutputFormat":"NUnitXml","TestSuiteName":"PSModuleTest-Module-Windows"},"Filter":{"ExcludeLine":[],"Tag":[],"ExcludeTag":[],"Line":[],"FullName":[]},"CodeCoverage":{"OutputFormat":"JaCoCo","Enabled":true,"SingleHitBreakpoints":true,"ExcludeTests":true,"RecursePaths":true,"Path":[],"OutputEncoding":"UTF8","UseBreakpoints":true,"CoveragePercentTarget":80.0,"OutputPath":"D:\\a\\Path\\Path/CodeCoverage/PSModuleTest-Module-Windows-CodeCoverage-Report.xml"}},"Duration":11723166,"DiscoveryDuration":1787284,"UserDuration":3515115,"FrameworkDuration":6420767} diff --git a/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-Module-Windows-TestResults/PSModuleTest-Module-Windows-TestResult-Report.xml b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-Module-Windows-TestResults/PSModuleTest-Module-Windows-TestResult-Report.xml new file mode 100644 index 00000000..339d44ca --- /dev/null +++ b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-Module-Windows-TestResults/PSModuleTest-Module-Windows-TestResult-Report.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-SourceCode-Windows-TestResults/PSModuleTest-SourceCode-Windows-TestResult-Report.json b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-SourceCode-Windows-TestResults/PSModuleTest-SourceCode-Windows-TestResult-Report.json new file mode 100644 index 00000000..823c556e --- /dev/null +++ b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-SourceCode-Windows-TestResults/PSModuleTest-SourceCode-Windows-TestResult-Report.json @@ -0,0 +1 @@ +{"Depth":0,"ItemType":"TestSuite","Name":"PSModuleTest-SourceCode-Windows","Path":null,"Children":[{"Depth":1,"ItemType":"Container","Name":"PSModule","Path":["PSModuleTest-SourceCode-Windows"],"Children":[{"Depth":2,"ItemType":"Block","Name":"PSModule - SourceCode tests","Path":["PSModuleTest-SourceCode-Windows","PSModule"],"Children":[[{"Depth":3,"ItemType":"Block","Name":"General tests","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests"],"Children":[[{"Depth":4,"ItemType":"Test","Name":"Should use '[System.Environment]::ProcessorCount' instead of '$env:NUMBER_OF_PROCESSORS' (ID: NumberOfProcessors)","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests","General tests"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:08.8473617+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":1149421,"DiscoveryDuration":0,"UserDuration":563957,"FrameworkDuration":585464},{"Depth":4,"ItemType":"Test","Name":"Should not contain '-Verbose' unless it is disabled using ':$false' qualifier after it (ID: Verbose)","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests","General tests"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:08.9615276+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":134940,"DiscoveryDuration":0,"UserDuration":90728,"FrameworkDuration":44212},{"Depth":4,"ItemType":"Test","Name":"Should use '$null = ...' instead of '... | Out-Null' (ID: OutNull)","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests","General tests"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:08.9751332+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":123736,"DiscoveryDuration":0,"UserDuration":81899,"FrameworkDuration":41837},{"Depth":4,"ItemType":"Test","Name":"Should not use ternary operations for compatibility reasons (ID: NoTernary)","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests","General tests"],"Result":"Skipped","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:08.9876563+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":76730,"DiscoveryDuration":0,"UserDuration":0,"FrameworkDuration":76730},{"Depth":4,"ItemType":"Test","Name":"all powershell keywords are lowercase (ID: LowercaseKeywords)","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests","General tests"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:08.9954268+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":396747,"DiscoveryDuration":0,"UserDuration":313119,"FrameworkDuration":83628}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":4,"SkippedCount":1,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":5,"Executed":true,"ExecutedAt":"2025-04-17T07:28:08.81687+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":2421783,"DiscoveryDuration":0,"UserDuration":1057384,"FrameworkDuration":1364399},{"Depth":3,"ItemType":"Block","Name":"functions","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests"],"Children":[[{"Depth":4,"ItemType":"Block","Name":"Generic","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests","functions"],"Children":[[{"Depth":5,"ItemType":"Test","Name":"Should contain one function or filter (ID: FunctionCount)","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests","functions","Generic"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:09.1105097+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":251570,"DiscoveryDuration":0,"UserDuration":183835,"FrameworkDuration":67735},{"Depth":5,"ItemType":"Test","Name":"Should have matching filename and function/filter name (ID: FunctionName)","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests","functions","Generic"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:09.1357799+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":288523,"DiscoveryDuration":0,"UserDuration":246000,"FrameworkDuration":42523},{"Depth":5,"ItemType":"Test","Name":"Should have [CmdletBinding()] attribute (ID: CmdletBinding)","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests","functions","Generic"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:09.1647516+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":652737,"DiscoveryDuration":0,"UserDuration":608171,"FrameworkDuration":44566},{"Depth":5,"ItemType":"Test","Name":"Should have a param() block (ID: ParamBlock)","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests","functions","Generic"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:09.2301473+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":246918,"DiscoveryDuration":0,"UserDuration":203187,"FrameworkDuration":43731}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":4,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":4,"Executed":true,"ExecutedAt":"2025-04-17T07:28:09.0616432+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":1962773,"DiscoveryDuration":0,"UserDuration":1420753,"FrameworkDuration":542020},{"Depth":4,"ItemType":"Block","Name":"public functions","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests","functions"],"Children":[{"Depth":5,"ItemType":"Test","Name":"All public functions/filters have tests (ID: FunctionTest)","Path":["PSModuleTest-SourceCode-Windows","PSModule","PSModule - SourceCode tests","functions","public functions"],"Result":"Passed","FailedCount":null,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":null,"SkippedCount":null,"InconclusiveCount":null,"NotRunCount":null,"TotalCount":null,"Executed":true,"ExecutedAt":"2025-04-17T07:28:09.2725803+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":726150,"DiscoveryDuration":0,"UserDuration":657649,"FrameworkDuration":68501}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":1,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":1,"Executed":true,"ExecutedAt":"2025-04-17T07:28:09.2579569+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":2893019,"DiscoveryDuration":0,"UserDuration":2203895,"FrameworkDuration":689124}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":5,"SkippedCount":0,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":5,"Executed":true,"ExecutedAt":"2025-04-17T07:28:09.0590669+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":5379641,"DiscoveryDuration":0,"UserDuration":3267012,"FrameworkDuration":2112629}]],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":9,"SkippedCount":1,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":10,"Executed":true,"ExecutedAt":"2025-04-17T07:28:08.8020098+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":5566571,"DiscoveryDuration":0,"UserDuration":3285889,"FrameworkDuration":2280682}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":null,"FailedContainersCount":null,"PassedCount":9,"SkippedCount":1,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":10,"Executed":true,"ExecutedAt":"2025-04-17T07:28:08.6830269+00:00","Version":null,"PSVersion":null,"Plugins":null,"PluginConfiguration":null,"PluginData":null,"Duration":11549909,"DiscoveryDuration":2041719,"UserDuration":3783677,"FrameworkDuration":5724513}],"Result":"Passed","FailedCount":0,"FailedBlocksCount":0,"FailedContainersCount":0,"PassedCount":9,"SkippedCount":1,"InconclusiveCount":0,"NotRunCount":0,"TotalCount":10,"Executed":true,"ExecutedAt":"2025-04-17T07:28:08.2021683+00:00","Version":"5.7.1","PSVersion":"7.4.7","Plugins":null,"PluginConfiguration":null,"PluginData":null,"Configuration":{"Run":{"Path":["D:\\a\\Path\\Path\\src"],"SkipRun":false,"ExcludePath":[],"ScriptBlock":[],"Throw":false,"SkipRemainingOnFailure":"None","Exit":false,"TestExtension":".Tests.ps1","PassThru":true,"Container":[{"Path":"D:\\a\\_actions\\PSModule\\Test-PSModule\\v3\\scripts\\tests\\SourceCode\\PSModule\\PSModule.Tests.ps1","Data":{"Path":"D:\\a\\Path\\Path\\src","TestsPath":"D:\\a\\Path\\Path\\tests","Verbose":false,"Debug":false}}]},"Debug":{"ReturnRawResultObject":false,"WriteDebugMessages":false,"WriteDebugMessagesFrom":["Discovery","Skip","Mock","CodeCoverage"],"ShowFullErrors":false,"ShowNavigationMarkers":false},"Should":{"ErrorAction":"Stop"},"TestResult":{"OutputPath":"D:\\a\\Path\\Path/TestResult/PSModuleTest-SourceCode-Windows-TestResult-Report.xml","Enabled":true,"OutputFormat":"NUnitXml","OutputEncoding":"UTF8","TestSuiteName":"PSModuleTest-SourceCode-Windows"},"Output":{"Verbosity":"Detailed","RenderMode":"Ansi","CIFormat":"GithubActions","StackTraceVerbosity":"Filtered","CILogLevel":"Error"},"CodeCoverage":{"Path":[],"OutputPath":"D:\\a\\Path\\Path/CodeCoverage/PSModuleTest-SourceCode-Windows-CodeCoverage-Report.xml","UseBreakpoints":true,"RecursePaths":true,"OutputEncoding":"UTF8","CoveragePercentTarget":75.0,"Enabled":false,"SingleHitBreakpoints":true,"OutputFormat":"JaCoCo","ExcludeTests":true},"TestDrive":{"Enabled":true},"Filter":{"Tag":[],"ExcludeTag":[],"FullName":[],"Line":[],"ExcludeLine":[]},"TestRegistry":{"Enabled":true}},"Duration":11549909,"DiscoveryDuration":2041719,"UserDuration":3783677,"FrameworkDuration":5724513} diff --git a/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-SourceCode-Windows-TestResults/PSModuleTest-SourceCode-Windows-TestResult-Report.xml b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-SourceCode-Windows-TestResults/PSModuleTest-SourceCode-Windows-TestResult-Report.xml new file mode 100644 index 00000000..7586cb1c --- /dev/null +++ b/.github/actions/Get-PesterTestResults/tests/TestResults/PSModuleTest-SourceCode-Windows-TestResults/PSModuleTest-SourceCode-Windows-TestResult-Report.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.github/actions/Install-PSModuleHelpers/action.yml b/.github/actions/Install-PSModuleHelpers/action.yml new file mode 100644 index 00000000..f3d6bd29 --- /dev/null +++ b/.github/actions/Install-PSModuleHelpers/action.yml @@ -0,0 +1,15 @@ +name: Install-PSModuleHelpers +description: Installs the PSModule helpers. +author: PSModule +branding: + icon: upload-cloud + color: white + +runs: + using: composite + steps: + - name: Install-PSModuleHelpers + shell: pwsh + run: | + # Install-PSModuleHelpers + ${{ github.action_path }}/src/main.ps1 diff --git a/.github/actions/Install-PSModuleHelpers/src/Helpers/Helpers.psd1 b/.github/actions/Install-PSModuleHelpers/src/Helpers/Helpers.psd1 new file mode 100644 index 00000000..c3dc67a1 --- /dev/null +++ b/.github/actions/Install-PSModuleHelpers/src/Helpers/Helpers.psd1 @@ -0,0 +1,4 @@ +@{ + RootModule = 'Helpers.psm1' + ModuleVersion = '999.0.0' +} diff --git a/.github/actions/Install-PSModuleHelpers/src/Helpers/Helpers.psm1 b/.github/actions/Install-PSModuleHelpers/src/Helpers/Helpers.psm1 new file mode 100644 index 00000000..dc2bbcdf --- /dev/null +++ b/.github/actions/Install-PSModuleHelpers/src/Helpers/Helpers.psm1 @@ -0,0 +1,1351 @@ +[CmdletBinding()] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', + Justification = 'Want to just write to the console, not the pipeline.' +)] +param() + +function Convert-VersionSpec { + <# + .SYNOPSIS + Converts legacy version parameters into a NuGet version range string. + + .DESCRIPTION + This function takes minimum, maximum, or required version parameters + and constructs a NuGet-compatible version range string. + + - If `RequiredVersion` is specified, the output is an exact match range. + - If both `MinimumVersion` and `MaximumVersion` are provided, + an inclusive range is returned. + - If only `MinimumVersion` is provided, it returns a minimum-inclusive range. + - If only `MaximumVersion` is provided, it returns an upper-bound range. + - If no parameters are provided, `$null` is returned. + + .EXAMPLE + Convert-VersionSpec -MinimumVersion "1.0.0" -MaximumVersion "2.0.0" + + Output: + ```powershell + [1.0.0,2.0.0] + ``` + + Returns an inclusive version range from 1.0.0 to 2.0.0. + + .EXAMPLE + Convert-VersionSpec -RequiredVersion "1.5.0" + + Output: + ```powershell + [1.5.0] + ``` + + Returns an exact match for version 1.5.0. + + .EXAMPLE + Convert-VersionSpec -MinimumVersion "1.0.0" + + Output: + ```powershell + [1.0.0, ] + ``` + + Returns a minimum-inclusive version range starting at 1.0.0. + + .EXAMPLE + Convert-VersionSpec -MaximumVersion "2.0.0" + + Output: + ```powershell + (, 2.0.0] + ``` + + Returns an upper-bound range up to version 2.0.0. + + .OUTPUTS + string + + .NOTES + The NuGet version range string based on the provided parameters. + The returned string follows NuGet versioning syntax. + + .LINK + https://psmodule.io/Convert/Functions/Convert-VersionSpec + #> + [OutputType([string])] + [CmdletBinding()] + param( + # The minimum version for the range. If specified alone, the range is open-ended upwards. + [Parameter()] + [string] $MinimumVersion, + + # The maximum version for the range. If specified alone, the range is open-ended downwards. + [Parameter()] + [string] $MaximumVersion, + + # Specifies an exact required version. If set, an exact version range is returned. + [Parameter()] + [string] $RequiredVersion + ) + + if ($RequiredVersion) { + # Use exact match in bracket notation. + return "[$RequiredVersion]" + } elseif ($MinimumVersion -and $MaximumVersion) { + # Both bounds provided; both are inclusive. + return "[$MinimumVersion,$MaximumVersion]" + } elseif ($MinimumVersion) { + # Only a minimum is provided. Use a minimum-inclusive range. + return "[$MinimumVersion, ]" + } elseif ($MaximumVersion) { + # Only a maximum is provided; lower bound open. + return "(, $MaximumVersion]" + } else { + return $null + } +} + +function Import-PSModule { + <# + .SYNOPSIS + Imports a build PS module. + + .DESCRIPTION + Imports a build PS module. + + .EXAMPLE + Import-PSModule -SourceFolderPath $ModuleFolderPath -ModuleName $moduleName + + Imports a module located at $ModuleFolderPath with the name $moduleName. + #> + [CmdletBinding()] + param( + # Path to the folder where the module source code is located. + [Parameter(Mandatory)] + [string] $Path + ) + + $moduleName = Split-Path -Path $Path -Leaf + $manifestFilePath = Join-Path -Path $Path "$moduleName.psd1" + + Write-Host " - Manifest file path: [$manifestFilePath]" + Resolve-PSModuleDependency -ManifestFilePath $manifestFilePath + + Write-Host ' - List installed modules' + Get-InstalledPSResource | Format-Table -AutoSize | Out-String + + Write-Host " - Importing module [$moduleName] v999" + Import-Module $Path + + Write-Host ' - List loaded modules' + $availableModules = Get-Module -ListAvailable -Refresh -Verbose:$false + $availableModules | Select-Object Name, Version, Path | Sort-Object Name | Format-Table -AutoSize | Out-String + Write-Host ' - List commands' + $commands = Get-Command -Module $moduleName -ListImported + Get-Command -Module $moduleName -ListImported | Format-Table -AutoSize | Out-String + + if ($moduleName -notin $commands.Source) { + throw 'Module not found' + } +} + +function Resolve-PSModuleDependency { + <# + .SYNOPSIS + Resolves module dependencies from a manifest file using Install-PSResource. + + .DESCRIPTION + Reads a module manifest (PSD1) and for each required module converts the old + Install-Module parameters (MinimumVersion, MaximumVersion, RequiredVersion) + into a single NuGet version range string for Install-PSResource's –Version parameter. + (Note: If RequiredVersion is set, that value takes precedence.) + + .EXAMPLE + Resolve-PSModuleDependency -ManifestFilePath 'C:\MyModule\MyModule.psd1' + Installs all modules defined in the manifest file, following PSModuleInfo structure. + + .NOTES + Should later be adapted to support both pre-reqs, and dependencies. + Should later be adapted to take 4 parameters sets: specific version ("requiredVersion" | "GUID"), latest version ModuleVersion, + and latest version within a range MinimumVersion - MaximumVersion. + #> + [CmdletBinding()] + param( + # The path to the manifest file. + [Parameter(Mandatory)] + [string] $ManifestFilePath + ) + + Write-Host 'Resolving dependencies' + $manifest = Import-PowerShellDataFile -Path $ManifestFilePath + Write-Host " - Reading [$ManifestFilePath]" + Write-Host " - Found [$($manifest.RequiredModules.Count)] module(s) to install" + + foreach ($requiredModule in $manifest.RequiredModules) { + # Build parameters for Install-PSResource (new version spec). + $psResourceParams = @{ + TrustRepository = $true + } + # Build parameters for Import-Module (legacy version spec). + $importParams = @{ + Force = $true + Verbose = $false + } + + if ($requiredModule -is [string]) { + $psResourceParams.Name = $requiredModule + $importParams.Name = $requiredModule + } else { + $psResourceParams.Name = $requiredModule.ModuleName + $importParams.Name = $requiredModule.ModuleName + + # Convert legacy version info for Install-PSResource. + $versionSpec = Convert-VersionSpec ` + -MinimumVersion $requiredModule.ModuleVersion ` + -MaximumVersion $requiredModule.MaximumVersion ` + -RequiredVersion $requiredModule.RequiredVersion + + if ($versionSpec) { + $psResourceParams.Version = $versionSpec + } + + # For Import-Module, keep the original version parameters. + if ($requiredModule.ModuleVersion) { + $importParams.MinimumVersion = $requiredModule.ModuleVersion + } + if ($requiredModule.RequiredVersion) { + $importParams.RequiredVersion = $requiredModule.RequiredVersion + } + if ($requiredModule.MaximumVersion) { + $importParams.MaximumVersion = $requiredModule.MaximumVersion + } + } + + Write-Host " - [$($psResourceParams.Name)] - Installing module with Install-PSResource using version spec: $($psResourceParams.Version)" + $VerbosePreferenceOriginal = $VerbosePreference + $VerbosePreference = 'SilentlyContinue' + $retryCount = 5 + $retryDelay = 10 + for ($i = 0; $i -lt $retryCount; $i++) { + try { + Install-PSResource @psResourceParams + break + } catch { + Write-Warning "Installation of $($psResourceParams.Name) failed with error: $_" + if ($i -eq $retryCount - 1) { + throw + } + Write-Warning "Retrying in $retryDelay seconds..." + Start-Sleep -Seconds $retryDelay + } + } + $VerbosePreference = $VerbosePreferenceOriginal + + Write-Host " - [$($importParams.Name)] - Importing module with legacy version spec" + $VerbosePreferenceOriginal = $VerbosePreference + $VerbosePreference = 'SilentlyContinue' + Import-Module @importParams + $VerbosePreference = $VerbosePreferenceOriginal + Write-Host " - [$($importParams.Name)] - Done" + } + Write-Host ' - Resolving dependencies - Done' +} + +function Show-FileContent { + <# + .SYNOPSIS + Prints the content of a file with line numbers in front of each line. + + .DESCRIPTION + Prints the content of a file with line numbers in front of each line. + + .EXAMPLE + $Path = 'C:\Utilities\Show-FileContent.ps1' + Show-FileContent -Path $Path + + Shows the content of the file with line numbers in front of each line. + #> + [CmdletBinding()] + param ( + # The path to the file to show the content of. + [Parameter(Mandatory)] + [string] $Path + ) + + $content = Get-Content -Path $Path + $lineNumber = 1 + $columnSize = $content.Count.ToString().Length + # Foreach line print the line number in front of the line with [ ] around it. + # The linenumber should dynamically adjust to the number of digits with the length of the file. + foreach ($line in $content) { + $lineNumberFormatted = $lineNumber.ToString().PadLeft($columnSize) + Write-Host "[$lineNumberFormatted] $line" + $lineNumber++ + } +} + +function Install-PSModule { + <# + .SYNOPSIS + Installs a build PS module. + + .DESCRIPTION + Installs a build PS module. + + .EXAMPLE + Install-PSModule -SourceFolderPath $ModuleFolderPath -ModuleName $moduleName + + Installs a module located at $ModuleFolderPath with the name $moduleName. + #> + [CmdletBinding()] + param( + # Path to the folder where the module source code is located. + [Parameter(Mandatory)] + [string] $Path, + + # Return the path of the installed module + [Parameter()] + [switch] $PassThru + ) + + $moduleName = Split-Path -Path $Path -Leaf + $manifestFilePath = Join-Path -Path $Path "$moduleName.psd1" + Write-Verbose " - Manifest file path: [$manifestFilePath]" -Verbose + Write-Host '::group::Resolving dependencies' + Resolve-PSModuleDependency -ManifestFilePath $manifestFilePath + Write-Host '::endgroup::' + # Install into a version folder that matches the manifest's ModuleVersion so PowerShell + # accepts the module. Fall back to the 999.0.0 placeholder only when the manifest is + # unstamped (e.g. a build that opted out of version resolution). Validate the version as a + # real [version] so a malformed manifest cannot inject path separators/traversal into the + # install path. + $manifestVersion = (Import-PowerShellDataFile -Path $manifestFilePath).ModuleVersion + if ([string]::IsNullOrWhiteSpace($manifestVersion)) { + $moduleVersion = '999.0.0' + } else { + $parsedVersion = $null + if (-not [version]::TryParse($manifestVersion, [ref] $parsedVersion)) { + throw "ModuleVersion '$manifestVersion' in [$manifestFilePath] is not a valid version." + } + $moduleVersion = $parsedVersion.ToString() + } + $PSModulePath = $env:PSModulePath -split [System.IO.Path]::PathSeparator | Select-Object -First 1 + $moduleInstallRoot = Join-Path -Path $PSModulePath -ChildPath $moduleName + $moduleInstallPath = Join-Path -Path $moduleInstallRoot -ChildPath $moduleVersion + $codePath = New-Item -Path $moduleInstallPath -ItemType Directory -Force | + Select-Object -ExpandProperty FullName + Copy-Item -Path "$Path/*" -Destination $codePath -Recurse -Force + Write-Host '::group::Importing module' + # Import the freshly-installed copy explicitly by its manifest path (with -Force) so it is + # not shadowed by another version of the same module that may already be loaded or present + # on $env:PSModulePath. + $installedManifestPath = Join-Path -Path $codePath -ChildPath "$moduleName.psd1" + Import-Module -Name $installedManifestPath -Force -Global -Verbose + Write-Host '::endgroup::' + if ($PassThru) { + return $codePath + } +} + +function Get-ModuleManifest { + <# + .SYNOPSIS + Get the module manifest. + + .DESCRIPTION + Get the module manifest as a path, file info, content, or hashtable. + + .EXAMPLE + Get-PSModuleManifest -Path 'src/PSModule/PSModule.psd1' -As Hashtable + #> + [OutputType([string], [System.IO.FileInfo], [System.Collections.Hashtable], [System.Collections.Specialized.OrderedDictionary])] + [CmdletBinding()] + param( + # Path to the module manifest file. + [Parameter(Mandatory)] + [string] $Path, + + # The format of the output. + [Parameter()] + [ValidateSet('FileInfo', 'Content', 'Hashtable')] + [string] $As = 'Hashtable' + ) + + if (-not (Test-Path -Path $Path)) { + Write-Warning 'No manifest file found.' + return $null + } + Write-Verbose "Found manifest file [$Path]" + + switch ($As) { + 'FileInfo' { + return Get-Item -Path $Path + } + 'Content' { + return Get-Content -Path $Path + } + 'Hashtable' { + $manifest = [System.Collections.Specialized.OrderedDictionary]@{} + $psData = [System.Collections.Specialized.OrderedDictionary]@{} + $privateData = [System.Collections.Specialized.OrderedDictionary]@{} + $tempManifest = Import-PowerShellDataFile -Path $Path + if ($tempManifest.ContainsKey('PrivateData')) { + $tempPrivateData = $tempManifest.PrivateData + if ($tempPrivateData.ContainsKey('PSData')) { + $tempPSData = $tempPrivateData.PSData + $tempPrivateData.Remove('PSData') + } + } + + $psdataOrder = @( + 'Tags' + 'LicenseUri' + 'ProjectUri' + 'IconUri' + 'ReleaseNotes' + 'Prerelease' + 'RequireLicenseAcceptance' + 'ExternalModuleDependencies' + ) + foreach ($key in $psdataOrder) { + if (($null -ne $tempPSData) -and ($tempPSData.ContainsKey($key))) { + $psData.$key = $tempPSData.$key + } + } + if ($psData.Count -gt 0) { + $privateData.PSData = $psData + } else { + $privateData.Remove('PSData') + } + foreach ($key in $tempPrivateData.Keys) { + $privateData.$key = $tempPrivateData.$key + } + + $manifestOrder = @( + 'RootModule' + 'ModuleVersion' + 'CompatiblePSEditions' + 'GUID' + 'Author' + 'CompanyName' + 'Copyright' + 'Description' + 'PowerShellVersion' + 'PowerShellHostName' + 'PowerShellHostVersion' + 'DotNetFrameworkVersion' + 'ClrVersion' + 'ProcessorArchitecture' + 'RequiredModules' + 'RequiredAssemblies' + 'ScriptsToProcess' + 'TypesToProcess' + 'FormatsToProcess' + 'NestedModules' + 'FunctionsToExport' + 'CmdletsToExport' + 'VariablesToExport' + 'AliasesToExport' + 'DscResourcesToExport' + 'ModuleList' + 'FileList' + 'HelpInfoURI' + 'DefaultCommandPrefix' + 'PrivateData' + ) + foreach ($key in $manifestOrder) { + if ($tempManifest.ContainsKey($key)) { + $manifest.$key = $tempManifest.$key + } + } + if ($privateData.Count -gt 0) { + $manifest.PrivateData = $privateData + } else { + $manifest.Remove('PrivateData') + } + + return $manifest + } + } +} + +filter Set-ModuleManifest { + <# + .SYNOPSIS + Sets the values of a module manifest file. + + .DESCRIPTION + This function sets the values of a module manifest file. + Very much like the Update-ModuleManifest function, but allows values to be missing. + + .EXAMPLE + Set-ModuleManifest -Path 'C:\MyModule\MyModule.psd1' -ModuleVersion '1.0.0' + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', + Justification = 'Function does not change state.' + )] + [CmdletBinding()] + param( + # Path to the module manifest file. + [Parameter( + Mandatory, + ValueFromPipeline, + ValueFromPipelineByPropertyName + )] + [string] $Path, + + #Script module or binary module file associated with this manifest. + [Parameter()] + [AllowNull()] + [string] $RootModule, + + #Version number of this module. + [Parameter()] + [AllowNull()] + [Version] $ModuleVersion, + + # Supported PSEditions. + [Parameter()] + [AllowNull()] + [string[]] $CompatiblePSEditions, + + # ID used to uniquely identify this module. + [Parameter()] + [AllowNull()] + [guid] $GUID, + + # Author of this module. + [Parameter()] + [AllowNull()] + [string] $Author, + + # Company or vendor of this module. + [Parameter()] + [AllowNull()] + [string] $CompanyName, + + # Copyright statement for this module. + [Parameter()] + [AllowNull()] + [string] $Copyright, + + # Description of the functionality provided by this module. + [Parameter()] + [AllowNull()] + [string] $Description, + + # Minimum version of the PowerShell engine required by this module. + [Parameter()] + [AllowNull()] + [Version] $PowerShellVersion, + + # Name of the PowerShell host required by this module. + [Parameter()] + [AllowNull()] + [string] $PowerShellHostName, + + # Minimum version of the PowerShell host required by this module. + [Parameter()] + [AllowNull()] + [version] $PowerShellHostVersion, + + # Minimum version of Microsoft .NET Framework required by this module. + # This prerequisite is valid for the PowerShell Desktop edition only. + [Parameter()] + [AllowNull()] + [Version] $DotNetFrameworkVersion, + + # Minimum version of the common language runtime (CLR) required by this module. + # This prerequisite is valid for the PowerShell Desktop edition only. + [Parameter()] + [AllowNull()] + [Version] $ClrVersion, + + # Processor architecture (None,X86, Amd64) required by this module + [Parameter()] + [AllowNull()] + [System.Reflection.ProcessorArchitecture] $ProcessorArchitecture, + + # Modules that must be imported into the global environment prior to importing this module. + [Parameter()] + [AllowNull()] + [Object[]] $RequiredModules, + + # Assemblies that must be loaded prior to importing this module. + [Parameter()] + [AllowNull()] + [string[]] $RequiredAssemblies, + + # Script files (.ps1) that are run in the caller's environment prior to importing this module. + [Parameter()] + [AllowNull()] + [string[]] $ScriptsToProcess, + + # Type files (.ps1xml) to be loaded when importing this module. + [Parameter()] + [AllowNull()] + [string[]] $TypesToProcess, + + # Format files (.ps1xml) to be loaded when importing this module. + [Parameter()] + [AllowNull()] + [string[]] $FormatsToProcess, + + # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess. + [Parameter()] + [AllowNull()] + [Object[]] $NestedModules, + + # Functions to export from this module, for best performance, do not use wildcards and do not + # delete the entry, use an empty array if there are no functions to export. + [Parameter()] + [AllowNull()] + [string[]] $FunctionsToExport, + + # Cmdlets to export from this module, for best performance, do not use wildcards and do not + # delete the entry, use an empty array if there are no cmdlets to export. + [Parameter()] + [AllowNull()] + [string[]] $CmdletsToExport, + + # Variables to export from this module. + [Parameter()] + [AllowNull()] + [string[]] $VariablesToExport, + + # Aliases to export from this module, for best performance, do not use wildcards and do not + # delete the entry, use an empty array if there are no aliases to export. + [Parameter()] + [AllowNull()] + [string[]] $AliasesToExport, + + # DSC resources to export from this module. + [Parameter()] + [AllowNull()] + [string[]] $DscResourcesToExport, + + # List of all modules packaged with this module. + [Parameter()] + [AllowNull()] + [Object[]] $ModuleList, + + # List of all files packaged with this module. + [Parameter()] + [AllowNull()] + [string[]] $FileList, + + # Tags applied to this module. These help with module discovery in online galleries. + [Parameter()] + [AllowNull()] + [string[]] $Tags, + + # A URL to the license for this module. + [Parameter()] + [AllowNull()] + [uri] $LicenseUri, + + # A URL to the main site for this project. + [Parameter()] + [AllowNull()] + [uri] $ProjectUri, + + # A URL to an icon representing this module. + [Parameter()] + [AllowNull()] + [uri] $IconUri, + + # ReleaseNotes of this module. + [Parameter()] + [AllowNull()] + [string] $ReleaseNotes, + + # Prerelease string of this module. + [Parameter()] + [AllowNull()] + [string] $Prerelease, + + # Flag to indicate whether the module requires explicit user acceptance for install/update/save. + [Parameter()] + [AllowNull()] + [bool] $RequireLicenseAcceptance, + + # External dependent modules of this module. + [Parameter()] + [AllowNull()] + [string[]] $ExternalModuleDependencies, + + # HelpInfo URI of this module. + [Parameter()] + [AllowNull()] + [String] $HelpInfoURI, + + # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. + [Parameter()] + [AllowNull()] + [string] $DefaultCommandPrefix, + + # Private data to pass to the module specified in RootModule/ModuleToProcess. + # This may also contain a PSData hashtable with additional module metadata used by PowerShell. + [Parameter()] + [AllowNull()] + [object] $PrivateData + ) + + $outManifest = [ordered]@{} + $outPSData = [ordered]@{} + $outPrivateData = [ordered]@{} + + $tempManifest = Get-ModuleManifest -Path $Path + if ($tempManifest.Keys.Contains('PrivateData')) { + $tempPrivateData = $tempManifest.PrivateData + if ($tempPrivateData.Keys.Contains('PSData')) { + $tempPSData = $tempPrivateData.PSData + $tempPrivateData.Remove('PSData') + } + } + + $psdataOrder = @( + 'Tags' + 'LicenseUri' + 'ProjectUri' + 'IconUri' + 'ReleaseNotes' + 'Prerelease' + 'RequireLicenseAcceptance' + 'ExternalModuleDependencies' + ) + foreach ($key in $psdataOrder) { + if (($null -ne $tempPSData) -and $tempPSData.Keys.Contains($key)) { + $outPSData[$key] = $tempPSData[$key] + } + if ($PSBoundParameters.Keys.Contains($key)) { + if ($null -eq $PSBoundParameters[$key]) { + $outPSData.Remove($key) + } else { + $outPSData[$key] = $PSBoundParameters[$key] + } + } + } + + if ($outPSData.Count -gt 0) { + $outPrivateData.PSData = $outPSData + } else { + $outPrivateData.Remove('PSData') + } + foreach ($key in $tempPrivateData.Keys) { + $outPrivateData[$key] = $tempPrivateData[$key] + } + foreach ($key in $PrivateData.Keys) { + $outPrivateData[$key] = $PrivateData[$key] + } + + $manifestOrder = @( + 'RootModule' + 'ModuleVersion' + 'CompatiblePSEditions' + 'GUID' + 'Author' + 'CompanyName' + 'Copyright' + 'Description' + 'PowerShellVersion' + 'PowerShellHostName' + 'PowerShellHostVersion' + 'DotNetFrameworkVersion' + 'ClrVersion' + 'ProcessorArchitecture' + 'RequiredModules' + 'RequiredAssemblies' + 'ScriptsToProcess' + 'TypesToProcess' + 'FormatsToProcess' + 'NestedModules' + 'FunctionsToExport' + 'CmdletsToExport' + 'VariablesToExport' + 'AliasesToExport' + 'DscResourcesToExport' + 'ModuleList' + 'FileList' + 'HelpInfoURI' + 'DefaultCommandPrefix' + 'PrivateData' + ) + foreach ($key in $manifestOrder) { + if ($tempManifest.Keys.Contains($key)) { + $outManifest[$key] = $tempManifest[$key] + } + if ($PSBoundParameters.Keys.Contains($key)) { + if ($null -eq $PSBoundParameters[$key]) { + $outManifest.Remove($key) + } else { + $outManifest[$key] = $PSBoundParameters[$key] + } + } + } + if ($outPrivateData.Count -gt 0) { + $outManifest['PrivateData'] = $outPrivateData + } else { + $outManifest.Remove('PrivateData') + } + + $sectionsToSort = @( + 'CompatiblePSEditions', + 'RequiredAssemblies', + 'ScriptsToProcess', + 'TypesToProcess', + 'FormatsToProcess', + 'FunctionsToExport', + 'CmdletsToExport', + 'VariablesToExport', + 'AliasesToExport', + 'DscResourcesToExport', + 'ModuleList', + 'FileList' + ) + + foreach ($section in $sectionsToSort) { + if ($outManifest.Contains($section) -and $null -ne $outManifest[$section]) { + $outManifest[$section] = @($outManifest[$section] | Sort-Object) + } + } + + $objectSectionsToSort = @('RequiredModules', 'NestedModules') + foreach ($section in $objectSectionsToSort) { + if ($outManifest.Contains($section) -and $null -ne $outManifest[$section]) { + $sortedObjects = $outManifest[$section] | Sort-Object -Property { + if ($_ -is [hashtable]) { + $_['ModuleName'] + } elseif ($_ -is [Microsoft.PowerShell.Commands.ModuleSpecification]) { + $_.Name + } elseif ($_ -is [string]) { + $_ + } else { + throw "Unsupported type '$($_.GetType().Name)' in module manifest." + } + } + + $formattedModules = foreach ($item in $sortedObjects) { + if ($item -is [Microsoft.PowerShell.Commands.ModuleSpecification]) { + $hash = [ordered]@{} + $hash['ModuleName'] = $item.Name + if ($item.RequiredVersion) { + $hash['RequiredVersion'] = $item.RequiredVersion.ToString() + } elseif ($item.Version) { + $hash['ModuleVersion'] = $item.Version.ToString() + } elseif ($item.MaximumVersion) { + $hash['MaximumVersion'] = $item.MaximumVersion.ToString() + } + + if ($hash.Count -eq 1) { + # Simplify if only ModuleName + $hash.ModuleName + } else { + $hash + } + } elseif ($item -is [hashtable]) { + # Recreate as ordered hashtable explicitly + $orderedItem = [ordered]@{} + if ($item.ContainsKey('ModuleName')) { + $orderedItem['ModuleName'] = $item['ModuleName'] + } + if ($item.RequiredVersion) { + $orderedItem['RequiredVersion'] = $item.RequiredVersion + } + if ($item.ModuleVersion) { + $orderedItem['ModuleVersion'] = $item.ModuleVersion + } + if ($item.MaximumVersion) { + $orderedItem['MaximumVersion'] = $item.MaximumVersion + } + $orderedItem + } elseif ($item -is [string]) { + $item + } + } + + $outManifest[$section] = @($formattedModules) + } + } + + + + + if ($outPrivateData.Contains('PSData')) { + if ($outPrivateData.PSData.Contains('ExternalModuleDependencies') -and $null -ne $outPrivateData.PSData.ExternalModuleDependencies) { + $outPrivateData.PSData.ExternalModuleDependencies = @($outPrivateData.PSData.ExternalModuleDependencies | Sort-Object) + } + if ($outPrivateData.PSData.Contains('Tags') -and $null -ne $outPrivateData.PSData.Tags) { + $outPrivateData.PSData.Tags = @($outPrivateData.PSData.Tags | Sort-Object) + } + } + + Remove-Item -Path $Path -Force + Export-PowerShellDataFile -Hashtable $outManifest -Path $Path +} + +function Export-PowerShellDataFile { + <# + .SYNOPSIS + Export a hashtable to a .psd1 file. + + .DESCRIPTION + This function exports a hashtable to a .psd1 file. It also formats the .psd1 file using the Format-ModuleManifest cmdlet. + + .EXAMPLE + Export-PowerShellDataFile -Hashtable @{ Name = 'MyModule'; ModuleVersion = '1.0.0' } -Path 'MyModule.psd1' + #> + [CmdletBinding()] + param ( + # The hashtable to export to a .psd1 file. + [Parameter(Mandatory)] + [object] $Hashtable, + + # The path of the .psd1 file to export. + [Parameter(Mandatory)] + [string] $Path, + + # Force the export, even if the file already exists. + [Parameter()] + [switch] $Force + ) + + $content = Format-Hashtable -Hashtable $Hashtable + $content | Out-File -FilePath $Path -Force:$Force + Format-ModuleManifest -Path $Path +} + +function Format-ModuleManifest { + <# + .SYNOPSIS + Formats a module manifest file. + + .DESCRIPTION + This function formats a module manifest file, by removing comments and empty lines, + and then formatting the file using the `Invoke-Formatter` function. + + .EXAMPLE + Format-ModuleManifest -Path 'C:\MyModule\MyModule.psd1' + #> + [CmdletBinding()] + param( + # Path to the module manifest file. + [Parameter(Mandatory)] + [string] $Path + ) + + $Utf8BomEncoding = New-Object System.Text.UTF8Encoding $true + + $manifestContent = Get-Content -Path $Path + $manifestContent = $manifestContent | ForEach-Object { $_ -replace '#.*' } + $manifestContent = $manifestContent | ForEach-Object { $_.TrimEnd() } + $manifestContent = $manifestContent | Where-Object { -not [string]::IsNullOrEmpty($_) } + [System.IO.File]::WriteAllLines($Path, $manifestContent, $Utf8BomEncoding) + $manifestContent = Get-Content -Path $Path -Raw + + $content = Invoke-Formatter -ScriptDefinition $manifestContent + + # Ensure exactly one empty line at the end + $content = $content.TrimEnd([System.Environment]::NewLine) + [System.Environment]::NewLine + + [System.IO.File]::WriteAllText($Path, $content, $Utf8BomEncoding) +} + +filter Format-Hashtable { + <# + .SYNOPSIS + Converts a hashtable to its PowerShell code representation. + + .DESCRIPTION + Recursively converts a hashtable to its PowerShell code representation. + This function is useful for exporting hashtables to `.psd1` files, + making it easier to store and retrieve structured data. + + .EXAMPLE + $hashtable = @{ + Key1 = 'Value1' + Key2 = @{ + NestedKey1 = 'NestedValue1' + NestedKey2 = 'NestedValue2' + } + Key3 = @(1, 2, 3) + Key4 = $true + } + Format-Hashtable -Hashtable $hashtable + + Output: + ```powershell + @{ + Key1 = 'Value1' + Key2 = @{ + NestedKey1 = 'NestedValue1' + NestedKey2 = 'NestedValue2' + } + Key3 = @( + 1 + 2 + 3 + ) + Key4 = $true + } + ``` + + .OUTPUTS + string + + .NOTES + A string representation of the given hashtable. + Useful for serialization and exporting hashtables to files. + + .LINK + https://psmodule.io/Hashtable/Functions/Format-Hashtable + #> + [OutputType([string])] + [CmdletBinding()] + param ( + # The hashtable to convert to a PowerShell code representation. + [Parameter( + Mandatory, + ValueFromPipeline, + ValueFromPipelineByPropertyName + )] + [System.Collections.IDictionary] $Hashtable, + + # The indentation level for formatting nested structures. + [Parameter()] + [int] $IndentLevel = 1 + ) + + # If the hashtable is empty, return '@{}' immediately. + if ($Hashtable.Count -eq 0) { + return '@{}' + } + + $indent = ' ' + $lines = @() + $lines += '@{' + $levelIndent = $indent * $IndentLevel + + # Compute maximum key length at this level to align the '=' characters + $maxKeyLength = ($Hashtable.Keys | ForEach-Object { $_.ToString().Length } | Measure-Object -Maximum).Maximum + + foreach ($key in $Hashtable.Keys) { + # Pad each key to the maximum length so the '=' lines up. + $paddedKey = $key.ToString().PadRight($maxKeyLength) + Write-Verbose "Processing key: [$key]" + $value = $Hashtable[$key] + Write-Verbose "Processing value: [$value]" + if ($null -eq $value) { + Write-Verbose "Value type: `$null" + $lines += "$levelIndent$paddedKey = `$null" + continue + } + Write-Verbose "Value type: [$($value.GetType().Name)]" + if ($value -is [System.Collections.IDictionary]) { + # Nested hashtable + $nestedString = Format-Hashtable -Hashtable $value -IndentLevel ($IndentLevel + 1) + $lines += "$levelIndent$paddedKey = $nestedString" + } elseif ($value -is [System.Management.Automation.PSCustomObject]) { + # PSCustomObject => Convert to hashtable & recurse + $nestedString = $value | ConvertTo-Hashtable | Format-Hashtable -IndentLevel ($IndentLevel + 1) + $lines += "$levelIndent$paddedKey = $nestedString" + } elseif ( $value -is [bool] -or $value -is [System.Management.Automation.SwitchParameter] ) { + $boolValue = [bool]$value + $lines += "$levelIndent$paddedKey = `$$($boolValue.ToString().ToLower())" + } elseif ($value -is [int] -or $value -is [long] -or $value -is [double] -or $value -is [decimal]) { + $lines += "$levelIndent$paddedKey = $value" + } elseif ($value -is [System.Collections.IList]) { + # This covers normal arrays, ArrayList, List, etc. + if ($value.Count -eq 0) { + $lines += "$levelIndent$paddedKey = @()" + } else { + $lines += "$levelIndent$paddedKey = @(" + $arrayIndent = $levelIndent + $indent + + foreach ($nestedValue in $value) { + Write-Verbose "Processing array element: [$nestedValue]" + Write-Verbose "Element type: [$($nestedValue.GetType().Name)]" + + if (($nestedValue -is [System.Collections.IDictionary])) { + # Nested hashtable + $nestedString = Format-Hashtable -Hashtable $nestedValue -IndentLevel ($IndentLevel + 2) + $lines += "$arrayIndent$nestedString" + } elseif ($nestedValue -is [System.Management.Automation.PSCustomObject]) { + # PSCustomObject => Convert to hashtable & recurse + $nestedString = $nestedValue | ConvertTo-Hashtable | Format-Hashtable -IndentLevel ($IndentLevel + 2) + $lines += "$arrayIndent$nestedString" + } elseif ( $nestedValue -is [bool] -or $nestedValue -is [System.Management.Automation.SwitchParameter] ) { + $boolValue = [bool]$nestedValue + $lines += "$arrayIndent`$$($boolValue.ToString().ToLower())" + } elseif ($nestedValue -is [int] -or $nestedValue -is [long] -or $nestedValue -is [double] -or $nestedValue -is [decimal]) { + $lines += "$arrayIndent$nestedValue" + } else { + # Fallback => treat as string (escape single-quotes) + $escapedElement = $nestedValue -replace "('+)", "''" + $lines += "$arrayIndent'$escapedElement'" + } + } + + $lines += ($levelIndent + ')') + } + } else { + # Fallback: treat as string (escaping single-quotes) + $escapedValue = $value -replace "('+)", "''" + $lines += "$levelIndent$paddedKey = '$escapedValue'" + } + } + + $levelIndent = $indent * ($IndentLevel - 1) + $lines += "$levelIndent}" + + return $lines -join [Environment]::NewLine +} + +function Add-PSModulePath { + <# + .SYNOPSIS + Adds a path to the PSModulePath environment variable. + + .DESCRIPTION + Adds a path to the PSModulePath environment variable. + For Linux and macOS, the path delimiter is ':' and for Windows it is ';'. + + .EXAMPLE + Add-PSModulePath -Path 'C:\Users\user\Documents\WindowsPowerShell\Modules' + + Adds the path 'C:\Users\user\Documents\WindowsPowerShell\Modules' to the PSModulePath environment variable. + #> + [CmdletBinding()] + param( + # Path to the folder where the module source code is located. + [Parameter(Mandatory)] + [string] $Path + ) + $PSModulePathSeparator = [System.IO.Path]::PathSeparator + + $env:PSModulePath += "$PSModulePathSeparator$Path" + + Write-Verbose 'PSModulePath:' + $env:PSModulePath.Split($PSModulePathSeparator) | ForEach-Object { + Write-Verbose " - [$_]" + } +} + +function Set-GitHubLogGroup { + <# + .SYNOPSIS + Encapsulates commands with a log group in GitHub Actions + + .DESCRIPTION + DSL approach for GitHub Action commands. + Allows for collapsing of code in IDE for code that belong together. + + .EXAMPLE + Set-GitHubLogGroup -Name 'MyGroup' -ScriptBlock { + Write-Host 'Hello, World!' + } + + Creates a new log group named 'MyGroup' and writes 'Hello, World!' to the output. + + .EXAMPLE + LogGroup 'MyGroup' { + Write-Host 'Hello, World!' + } + + Uses the alias 'LogGroup' to create a new log group named 'MyGroup' and writes 'Hello, World!' to the output. + + .NOTES + [GitHub - Grouping log lines](https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#grouping-log-lines) + + .LINK + https://psmodule.io/GitHub/Functions/Commands/Set-GitHubLogGroup + #> + [Alias('LogGroup')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Does not change state' + )] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', Scope = 'Function', + Justification = 'Intended for logging in Github Runners which does support Write-Host' + )] + [CmdletBinding()] + param( + # The name of the log group + [Parameter(Mandatory)] + [string] $Name, + + # The script block to execute + [Parameter(Mandatory)] + [scriptblock] $ScriptBlock + ) + + Write-Host "::group::$Name" + . $ScriptBlock + Write-Host '::endgroup::' +} + +function Import-TestData { + <# + .SYNOPSIS + Exposes caller-provided TestData as environment variables for later steps in the job. + + .DESCRIPTION + Reads the `PSMODULE_TEST_DATA` environment variable, which is expected to contain a single-line + JSON object with optional `secrets` and `variables` maps. Each entry is validated and written to + the file referenced by `GITHUB_ENV` so it becomes available as `$env:` in subsequent steps + of the same job. Values under `secrets` are masked in the logs via `::add-mask::`; values under + `variables` are not. When no test data is provided the function is a no-op. + + .EXAMPLE + Import-TestData + + Reads `$env:PSMODULE_TEST_DATA` and exposes its `secrets` and `variables` entries as environment + variables for the following steps in the job. + #> + [CmdletBinding()] + param() + + if ([string]::IsNullOrWhiteSpace($env:PSMODULE_TEST_DATA)) { + Write-Verbose 'No test data was provided by the calling workflow.' + return + } + if ([string]::IsNullOrWhiteSpace($env:GITHUB_ENV)) { + throw 'Import-TestData requires the GITHUB_ENV environment file, which is only available inside GitHub Actions.' + } + try { + $data = $env:PSMODULE_TEST_DATA | ConvertFrom-Json -ErrorAction Stop + } catch { + throw "The 'TestData' secret must be valid JSON with 'secrets' and/or 'variables' maps." + } + if ($null -eq $data -or $data -isnot [pscustomobject]) { + throw "The 'TestData' secret must be a JSON object with 'secrets' and/or 'variables' maps." + } + $allowedTopLevelKeys = @('secrets', 'variables') + foreach ($propertyName in $data.PSObject.Properties.Name) { + if ($allowedTopLevelKeys -notcontains $propertyName) { + throw "The 'TestData' secret only supports 'secrets' and 'variables' maps." + } + } + $reservedNames = @('CI', 'HOME', 'PATH', 'PWD', 'SHELL', 'PSMODULE_TEST_DATA') + $reservedPrefixes = @('GITHUB_', 'RUNNER_', 'ACTIONS_') + function Assert-EnvironmentName { + <# + .SYNOPSIS + Validates that a TestData key can safely be written to GITHUB_ENV. + #> + param([string] $Name) + if ($Name -notmatch '^[A-Za-z_][A-Za-z0-9_]*$') { + throw 'TestData keys must be valid environment variable names.' + } + $normalized = $Name.ToUpperInvariant() + if ($reservedNames -contains $normalized) { + throw 'TestData keys must not override reserved environment variables.' + } + foreach ($prefix in $reservedPrefixes) { + if ($normalized.StartsWith($prefix)) { + throw 'TestData keys must not override reserved environment variables.' + } + } + } + function Assert-Map { + <# + .SYNOPSIS + Validates that a TestData section is a JSON object map. + #> + param( + [object] $Map, + [string] $Name + ) + if ($null -eq $Map) { return } + if ($Map -isnot [pscustomobject]) { + throw "The 'TestData.$Name' value must be a JSON object." + } + } + function Get-EnvironmentValue { + <# + .SYNOPSIS + Converts a scalar TestData value to an environment variable value. + #> + param( + [object] $Value, + [string] $Name + ) + if ($null -eq $Value) { return '' } + if ( + $Value -is [pscustomobject] -or + ($Value -is [System.Collections.IEnumerable] -and $Value -isnot [string]) + ) { + throw "Values in 'TestData.$Name' must be scalar values." + } + return [string]$Value + } + function Add-EnvFromMap { + <# + .SYNOPSIS + Writes validated TestData entries to GITHUB_ENV. + #> + param( + [object] $Map, + [string] $Name, + [switch] $Mask + ) + Assert-Map -Map $Map -Name $Name + if ($null -eq $Map) { return } + $count = 0 + foreach ($item in $Map.PSObject.Properties) { + $entryName = $item.Name + Assert-EnvironmentName -Name $entryName + $value = Get-EnvironmentValue -Value $item.Value -Name $Name + if ($Mask) { + foreach ($line in ($value -split "`n")) { + $line = $line.TrimEnd("`r") + if ($line.Length -gt 0) { + Write-Host "::add-mask::$line" + } + } + } + do { + $delimiter = "GHENV_$([guid]::NewGuid().ToString('N'))" + } while ($value.Contains($delimiter)) + Add-Content -Path $env:GITHUB_ENV -Value "$entryName<<$delimiter" -Encoding utf8 -ErrorAction Stop + Add-Content -Path $env:GITHUB_ENV -Value $value -Encoding utf8 -ErrorAction Stop + Add-Content -Path $env:GITHUB_ENV -Value $delimiter -Encoding utf8 -ErrorAction Stop + $count++ + } + if ($count -gt 0) { + if ($Mask) { + Write-Host "Exposed $count secret value(s) as environment variables." + } else { + Write-Host "Exposed $count variable value(s) as environment variables." + } + } + } + + Assert-Map -Map $data.secrets -Name 'secrets' + Assert-Map -Map $data.variables -Name 'variables' + + $secretNames = @() + if ($null -ne $data.secrets) { + $secretNames = @($data.secrets.PSObject.Properties.Name) + } + $variableNames = @() + if ($null -ne $data.variables) { + $variableNames = @($data.variables.PSObject.Properties.Name) + } + $secretNameSet = [System.Collections.Generic.HashSet[string]]::new( + [System.StringComparer]::OrdinalIgnoreCase + ) + foreach ($secretName in $secretNames) { + [void] $secretNameSet.Add($secretName) + } + foreach ($variableName in $variableNames) { + if ($secretNameSet.Contains($variableName)) { + throw 'TestData keys must not be duplicated across secrets and variables.' + } + } + + Add-EnvFromMap -Map $data.secrets -Name 'secrets' -Mask + Add-EnvFromMap -Map $data.variables -Name 'variables' +} + diff --git a/.github/actions/Install-PSModuleHelpers/src/Helpers/PSScriptAnalyzer.Tests.psd1 b/.github/actions/Install-PSModuleHelpers/src/Helpers/PSScriptAnalyzer.Tests.psd1 new file mode 100644 index 00000000..9f7bc652 --- /dev/null +++ b/.github/actions/Install-PSModuleHelpers/src/Helpers/PSScriptAnalyzer.Tests.psd1 @@ -0,0 +1,55 @@ +@{ + Rules = @{ + PSAlignAssignmentStatement = @{ + Enable = $true + CheckHashtable = $true + } + PSAvoidLongLines = @{ + Enable = $true + MaximumLineLength = 150 + } + PSAvoidSemicolonsAsLineTerminators = @{ + Enable = $true + } + PSPlaceCloseBrace = @{ + Enable = $true + NewLineAfter = $false + IgnoreOneLineBlock = $true + NoEmptyLineBefore = $false + } + PSPlaceOpenBrace = @{ + Enable = $true + OnSameLine = $true + NewLineAfter = $true + IgnoreOneLineBlock = $true + } + PSProvideCommentHelp = @{ + Enable = $true + ExportedOnly = $false + BlockComment = $true + VSCodeSnippetCorrection = $false + Placement = 'begin' + } + PSUseConsistentIndentation = @{ + Enable = $true + IndentationSize = 4 + PipelineIndentation = 'IncreaseIndentationForFirstPipeline' + Kind = 'space' + } + PSUseConsistentWhitespace = @{ + Enable = $true + CheckInnerBrace = $true + CheckOpenBrace = $true + CheckOpenParen = $true + CheckOperator = $true + CheckPipe = $true + CheckPipeForRedundantWhitespace = $true + CheckSeparator = $true + CheckParameter = $true + IgnoreAssignmentOperatorInsideHashTable = $true + } + } + ExcludeRules = @( + 'PSUseToExportFieldsInManifest' + ) +} diff --git a/.github/actions/Install-PSModuleHelpers/src/main.ps1 b/.github/actions/Install-PSModuleHelpers/src/main.ps1 new file mode 100644 index 00000000..7c77749c --- /dev/null +++ b/.github/actions/Install-PSModuleHelpers/src/main.ps1 @@ -0,0 +1,16 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', + Justification = 'Wriite to the GitHub Actions log, not the pipeline.' +)] +[CmdletBinding()] +param() + +$PSModulePath = $env:PSModulePath -split [System.IO.Path]::PathSeparator | Select-Object -First 1 +Remove-Module -Name Helpers -Force -ErrorAction SilentlyContinue +Get-Command -Module Helpers | ForEach-Object { Remove-Item -Path function:$_ -Force } +Get-Item -Path "$PSModulePath/Helpers/999.0.0" -ErrorAction SilentlyContinue | Remove-Item -Recurse -Force +$modulePath = New-Item -Path "$PSModulePath/Helpers/999.0.0" -ItemType Directory -Force | Select-Object -ExpandProperty FullName +Copy-Item -Path "$PSScriptRoot/Helpers/*" -Destination $modulePath -Recurse -Force +Write-Host '::group::Importing helpers' +Import-Module -Name Helpers -Verbose +Write-Host '::endgroup::' diff --git a/.github/actions/Install-PSModuleHelpers/tests/Import-TestData.Tests.ps1 b/.github/actions/Install-PSModuleHelpers/tests/Import-TestData.Tests.ps1 new file mode 100644 index 00000000..0e4a4a6e --- /dev/null +++ b/.github/actions/Install-PSModuleHelpers/tests/Import-TestData.Tests.ps1 @@ -0,0 +1,127 @@ +[CmdletBinding()] +param() + +$ErrorActionPreference = 'Stop' + +$repoRoot = Split-Path -Path $PSScriptRoot -Parent +$helpersManifestPath = Join-Path -Path $repoRoot -ChildPath 'src/Helpers/Helpers.psd1' +$testRoot = Join-Path -Path ([System.IO.Path]::GetTempPath()) -ChildPath "Import-TestData-$([guid]::NewGuid())" + +$assert = { + param( + [bool] $Condition, + [string] $Message + ) + + if (-not $Condition) { + throw $Message + } +} + +$assertThrows = { + param( + [scriptblock] $ScriptBlock, + [string] $Pattern, + [string] $Message + ) + + $threw = $false + try { + & $ScriptBlock 6> $null + } catch { + $threw = $_.Exception.Message -like $Pattern + } + if (-not $threw) { + throw $Message + } +} + +$originalTestData = $env:PSMODULE_TEST_DATA +$originalGitHubEnv = $env:GITHUB_ENV + +try { + New-Item -Path $testRoot -ItemType Directory -Force | Out-Null + + Remove-Module -Name Helpers -Force -ErrorAction SilentlyContinue + Import-Module -Name $helpersManifestPath -Force + + $githubEnvPath = Join-Path -Path $testRoot -ChildPath 'github_env' + + # Secrets and variables are written to GITHUB_ENV, and nothing leaks to the success/pipeline stream. + Set-Content -Path $githubEnvPath -Value '' -NoNewline -Encoding utf8 + $env:GITHUB_ENV = $githubEnvPath + $env:PSMODULE_TEST_DATA = '{"secrets":{"MY_SECRET":"not-a-real-secret"},"variables":{"MY_VARIABLE":"plain-text-value"}}' + + $pipelineOutput = Import-TestData 3> $null 4> $null 5> $null 6> $null + + & $assert ($null -eq $pipelineOutput) 'Import-TestData must not write workflow commands or status messages to the success/pipeline output stream.' + + $envContent = Get-Content -Path $githubEnvPath -Raw + & $assert ($envContent -match 'MY_SECRET<<') 'Expected the secret to be written to GITHUB_ENV using heredoc syntax.' + & $assert ($envContent -like '*not-a-real-secret*') 'Expected the secret value to be written to GITHUB_ENV.' + & $assert ($envContent -match 'MY_VARIABLE<<') 'Expected the variable to be written to GITHUB_ENV using heredoc syntax.' + & $assert ($envContent -like '*plain-text-value*') 'Expected the variable value to be written to GITHUB_ENV.' + + # The mask command is emitted on the information stream (never the success stream). + Set-Content -Path $githubEnvPath -Value '' -NoNewline -Encoding utf8 + $env:PSMODULE_TEST_DATA = '{"secrets":{"MY_SECRET":"not-a-real-secret"}}' + $information = Import-TestData 6>&1 | Out-String + & $assert ($information -match '::add-mask::not-a-real-secret') 'Expected the secret to be masked via ::add-mask:: on the information stream.' + + # A no-op when no test data is provided; nothing on the success/pipeline stream. + $env:PSMODULE_TEST_DATA = '' + $noopOutput = Import-TestData 3> $null 4> $null 5> $null 6> $null + & $assert ($null -eq $noopOutput) 'The no-op path must not emit anything to the success/pipeline output stream.' + + # Representative validation failure paths. + $env:GITHUB_ENV = $githubEnvPath + + $env:PSMODULE_TEST_DATA = 'not-json' + & $assertThrows { Import-TestData } '*valid JSON*' 'Expected invalid JSON to be rejected.' + + $env:PSMODULE_TEST_DATA = '{"unexpected":{"A":"1"}}' + & $assertThrows { Import-TestData } "*only supports 'secrets' and 'variables'*" 'Expected unknown top-level keys to be rejected.' + + $env:PSMODULE_TEST_DATA = '{"variables":{"1INVALID":"x"}}' + & $assertThrows { Import-TestData } '*valid environment variable names*' 'Expected invalid env var names to be rejected.' + + $env:PSMODULE_TEST_DATA = '{"variables":{"GITHUB_TOKEN":"x"}}' + & $assertThrows { Import-TestData } '*reserved environment variables*' 'Expected reserved env var names to be rejected.' + + $env:PSMODULE_TEST_DATA = '{"secrets":{"DUP":"a"},"variables":{"DUP":"b"}}' + & $assertThrows { Import-TestData } '*duplicated across secrets and variables*' 'Expected duplicate keys to be rejected.' + + # A non-scalar value is rejected, and the error names the section ('secrets'), not the entry key. + # Regression guard for the case-insensitive $name/$Name clobber in Add-EnvFromMap. + $env:PSMODULE_TEST_DATA = '{"secrets":{"MY_SECRET":[1,2]}}' + & $assertThrows { Import-TestData } '*TestData.secrets*scalar*' 'Non-scalar value must be rejected naming the section.' + + # A failed write to GITHUB_ENV is terminating even when the caller's ErrorActionPreference is Continue. + $env:PSMODULE_TEST_DATA = '{"variables":{"MY_VARIABLE":"plain-text-value"}}' + $env:GITHUB_ENV = Join-Path -Path $testRoot -ChildPath 'missing-dir/github_env' + $previousEap = $ErrorActionPreference + $ErrorActionPreference = 'Continue' + try { + & $assertThrows { Import-TestData } '*missing-dir*' 'Expected an unwritable GITHUB_ENV path to raise a terminating error.' + } finally { + $ErrorActionPreference = $previousEap + } + + # Missing GITHUB_ENV fails fast with a clear message instead of a generic parameter-binding error. + $env:PSMODULE_TEST_DATA = '{"variables":{"MY_VARIABLE":"plain-text-value"}}' + $env:GITHUB_ENV = '' + $clearError = $false + try { + Import-TestData 6> $null + } catch { + $clearError = $_.Exception.Message -like '*GITHUB_ENV*' + } + & $assert $clearError 'Expected a clear error mentioning GITHUB_ENV when the environment file is not available.' +} finally { + $env:PSMODULE_TEST_DATA = $originalTestData + $env:GITHUB_ENV = $originalGitHubEnv + Remove-Module -Name Helpers -Force -ErrorAction SilentlyContinue + if (Test-Path -Path $testRoot) { + Remove-Item -Path $testRoot -Recurse -Force + } +} diff --git a/.github/actions/Install-PSModuleHelpers/tests/Install-PSModule.Tests.ps1 b/.github/actions/Install-PSModuleHelpers/tests/Install-PSModule.Tests.ps1 new file mode 100644 index 00000000..0de12551 --- /dev/null +++ b/.github/actions/Install-PSModuleHelpers/tests/Install-PSModule.Tests.ps1 @@ -0,0 +1,132 @@ +[CmdletBinding()] +param() + +$ErrorActionPreference = 'Stop' + +$repoRoot = Split-Path -Path $PSScriptRoot -Parent +$helpersManifestPath = Join-Path -Path $repoRoot -ChildPath 'src/Helpers/Helpers.psd1' +$originalPSModulePath = $env:PSModulePath +$testRoot = Join-Path -Path ([System.IO.Path]::GetTempPath()) -ChildPath "Install-PSModule-$([guid]::NewGuid())" + +$assert = { + param( + [bool] $Condition, + [string] $Message + ) + + if (-not $Condition) { + throw $Message + } +} + +try { + $testPSModulePath = Join-Path -Path $testRoot -ChildPath 'PSModules' + New-Item -Path $testPSModulePath -ItemType Directory -Force | Out-Null + $env:PSModulePath = $testPSModulePath + [System.IO.Path]::PathSeparator + $originalPSModulePath + + Remove-Module -Name Helpers -Force -ErrorAction SilentlyContinue + Import-Module -Name $helpersManifestPath -Force + + $realVersionSourcePath = Join-Path -Path $testRoot -ChildPath 'RealVersionModule' + New-Item -Path $realVersionSourcePath -ItemType Directory -Force | Out-Null + "function Get-RealVersionValue { 'real-1.2.3' }" | + Set-Content -Path (Join-Path -Path $realVersionSourcePath -ChildPath 'RealVersionModule.psm1') + @' +@{ + RootModule = 'RealVersionModule.psm1' + ModuleVersion = '1.2.3' + GUID = '11111111-1111-1111-1111-111111111111' + Author = 'Test' + FunctionsToExport = @('Get-RealVersionValue') +} +'@ | Set-Content -Path (Join-Path -Path $realVersionSourcePath -ChildPath 'RealVersionModule.psd1') + + $realVersionInstalledPath = Install-PSModule -Path $realVersionSourcePath -PassThru + $realVersionInstallRoot = Join-Path -Path $testPSModulePath -ChildPath 'RealVersionModule' + $expectedRealVersionPath = Join-Path -Path $realVersionInstallRoot -ChildPath '1.2.3' + $unexpectedPlaceholderPath = Join-Path -Path $realVersionInstallRoot -ChildPath '999.0.0' + $realVersionManifestPath = Join-Path -Path $expectedRealVersionPath -ChildPath 'RealVersionModule.psd1' + $returnedRealVersionPath = [System.IO.Path]::GetFullPath($realVersionInstalledPath) + $expectedRealVersionFullPath = [System.IO.Path]::GetFullPath($expectedRealVersionPath) + + & $assert ($returnedRealVersionPath -eq $expectedRealVersionFullPath) 'Expected Install-PSModule to return the real version path.' + & $assert (Test-Path -Path $realVersionManifestPath) 'Expected the module to be installed under version 1.2.3.' + & $assert (-not (Test-Path -Path $unexpectedPlaceholderPath)) 'Did not expect stamped modules to be installed under 999.0.0.' + & $assert ((Get-RealVersionValue) -eq 'real-1.2.3') 'Expected the real-version module command to be imported.' + + Remove-Module -Name RealVersionModule -Force -ErrorAction SilentlyContinue + + $shadowInstallRoot = Join-Path -Path $testPSModulePath -ChildPath 'ShadowModule' + $oldShadowInstallPath = Join-Path -Path $shadowInstallRoot -ChildPath '999.0.0' + New-Item -Path $oldShadowInstallPath -ItemType Directory -Force | Out-Null + "function Get-ShadowValue { 'old-999' }" | + Set-Content -Path (Join-Path -Path $oldShadowInstallPath -ChildPath 'ShadowModule.psm1') + @' +@{ + RootModule = 'ShadowModule.psm1' + ModuleVersion = '999.0.0' + GUID = '22222222-2222-2222-2222-222222222222' + Author = 'Test' + FunctionsToExport = @('Get-ShadowValue') +} +'@ | Set-Content -Path (Join-Path -Path $oldShadowInstallPath -ChildPath 'ShadowModule.psd1') + + $shadowSourcePath = Join-Path -Path $testRoot -ChildPath 'ShadowModule' + New-Item -Path $shadowSourcePath -ItemType Directory -Force | Out-Null + "function Get-ShadowValue { 'new-2.0.0' }" | + Set-Content -Path (Join-Path -Path $shadowSourcePath -ChildPath 'ShadowModule.psm1') + @' +@{ + RootModule = 'ShadowModule.psm1' + ModuleVersion = '2.0.0' + GUID = '33333333-3333-3333-3333-333333333333' + Author = 'Test' + FunctionsToExport = @('Get-ShadowValue') +} +'@ | Set-Content -Path (Join-Path -Path $shadowSourcePath -ChildPath 'ShadowModule.psd1') + + $oldShadowManifestPath = Join-Path -Path $oldShadowInstallPath -ChildPath 'ShadowModule.psd1' + Import-Module -Name $oldShadowManifestPath -Force + & $assert ((Get-ShadowValue) -eq 'old-999') 'Expected the fixture to preload the placeholder module.' + + $shadowInstalledPath = Install-PSModule -Path $shadowSourcePath -PassThru + $expectedShadowPath = Join-Path -Path $shadowInstallRoot -ChildPath '2.0.0' + $shadowCommand = Get-Command -Name Get-ShadowValue + $returnedShadowPath = [System.IO.Path]::GetFullPath($shadowInstalledPath) + $expectedShadowFullPath = [System.IO.Path]::GetFullPath($expectedShadowPath) + + & $assert ($returnedShadowPath -eq $expectedShadowFullPath) 'Expected the shadowed module under version 2.0.0.' + & $assert ((Get-ShadowValue) -eq 'new-2.0.0') 'Expected the real-version command to replace the preloaded 999.0.0 command.' + & $assert ($shadowCommand.Version.ToString() -eq '2.0.0') 'Expected command resolution to point at version 2.0.0.' + + Remove-Module -Name ShadowModule -Force -ErrorAction SilentlyContinue + + $badSourcePath = Join-Path -Path $testRoot -ChildPath 'BadModule' + New-Item -Path $badSourcePath -ItemType Directory -Force | Out-Null + "function Get-BadValue { 'bad' }" | + Set-Content -Path (Join-Path -Path $badSourcePath -ChildPath 'BadModule.psm1') + @' +@{ + RootModule = 'BadModule.psm1' + ModuleVersion = '1.0/bad' + GUID = '44444444-4444-4444-4444-444444444444' + Author = 'Test' + FunctionsToExport = @('Get-BadValue') +} +'@ | Set-Content -Path (Join-Path -Path $badSourcePath -ChildPath 'BadModule.psd1') + + $invalidVersionRejected = $false + try { + Install-PSModule -Path $badSourcePath + } catch { + $invalidVersionRejected = $_.Exception.Message -like '*is not a valid version*' + } + + & $assert $invalidVersionRejected 'Expected malformed ModuleVersion values to be rejected.' +} finally { + $env:PSModulePath = $originalPSModulePath + Remove-Module -Name Helpers, RealVersionModule, ShadowModule, BadModule -Force -ErrorAction SilentlyContinue + if (Test-Path -Path $testRoot) { + Remove-Item -Path $testRoot -Recurse -Force + } +} diff --git a/.github/actions/Install-PSModuleHelpers/tests/README.md b/.github/actions/Install-PSModuleHelpers/tests/README.md new file mode 100644 index 00000000..43816d34 --- /dev/null +++ b/.github/actions/Install-PSModuleHelpers/tests/README.md @@ -0,0 +1,3 @@ +# Placeholder for tests + +Location for tests of the action. diff --git a/.github/actions/Publish-PSModule/action.yml b/.github/actions/Publish-PSModule/action.yml new file mode 100644 index 00000000..f38abad1 --- /dev/null +++ b/.github/actions/Publish-PSModule/action.yml @@ -0,0 +1,82 @@ +name: Publish-PSModule +description: Publish a pre-versioned PowerShell module artifact to the PowerShell Gallery and GitHub Releases. +author: PSModule + +inputs: + Name: + description: Name of the module to publish. + required: false + ModulePath: + description: Path to the folder containing the / module subdirectory from Build-PSModule. A module artifact must exist before invoking this action. + required: false + default: outputs/module + APIKey: + description: PowerShell Gallery API Key. + required: true + AutoCleanup: + description: Control whether to automatically delete the prerelease tags after the stable release is created. + required: false + default: 'true' + WhatIf: + description: If specified, the action will only log the changes it would make, but will not actually create or delete any releases or tags. + required: false + default: 'false' + WorkingDirectory: + description: The working directory where the script will run from. + required: false + default: '.' + UsePRTitleAsReleaseName: + description: When enabled, uses the pull request title as the name for the GitHub release. If not set, the version string is used. + required: false + default: 'false' + UsePRBodyAsReleaseNotes: + description: When enabled, uses the pull request body as the release notes for the GitHub release. If not set, the release notes are auto-generated. + required: false + default: 'true' + UsePRTitleAsNotesHeading: + description: When enabled along with UsePRBodyAsReleaseNotes, the release notes will begin with the pull request title as a H1 heading followed by the pull request body. The title will reference the pull request number. + required: false + default: 'true' + ArtifactName: + description: Name of the uploaded artifact to download. Must match the name used in the upstream upload-artifact step. + required: false + default: module + +runs: + using: composite + steps: + - name: Install-PSModuleHelpers + uses: ./_wf/.github/actions/Install-PSModuleHelpers + + - name: Update Microsoft.PowerShell.PSResourceGet + shell: pwsh + run: | + Install-PSResource -Name Microsoft.PowerShell.PSResourceGet -Repository PSGallery -TrustRepository + + - name: Download module artifact + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: ${{ inputs.ArtifactName }} + path: ${{ inputs.ModulePath }} + + - name: Publish Module + shell: pwsh + working-directory: ${{ inputs.WorkingDirectory }} + env: + PSMODULE_PUBLISH_PSMODULE_INPUT_Name: ${{ inputs.Name }} + PSMODULE_PUBLISH_PSMODULE_INPUT_ModulePath: ${{ inputs.ModulePath }} + PSMODULE_PUBLISH_PSMODULE_INPUT_APIKey: ${{ inputs.APIKey }} + PSMODULE_PUBLISH_PSMODULE_INPUT_WhatIf: ${{ inputs.WhatIf }} + PSMODULE_PUBLISH_PSMODULE_INPUT_UsePRBodyAsReleaseNotes: ${{ inputs.UsePRBodyAsReleaseNotes }} + PSMODULE_PUBLISH_PSMODULE_INPUT_UsePRTitleAsReleaseName: ${{ inputs.UsePRTitleAsReleaseName }} + PSMODULE_PUBLISH_PSMODULE_INPUT_UsePRTitleAsNotesHeading: ${{ inputs.UsePRTitleAsNotesHeading }} + run: ${{ github.action_path }}/src/publish.ps1 + + - name: Cleanup Prereleases + if: env.PSMODULE_PUBLISH_PSMODULE_CONTEXT_IsPrerelease != 'true' && (inputs.AutoCleanup == 'true' || inputs.WhatIf == 'true') + shell: pwsh + working-directory: ${{ inputs.WorkingDirectory }} + env: + PSMODULE_PUBLISH_PSMODULE_INPUT_WhatIf: ${{ inputs.WhatIf }} + PSMODULE_PUBLISH_PSMODULE_CONTEXT_ReleaseTag: ${{ env.PSMODULE_PUBLISH_PSMODULE_CONTEXT_ReleaseTag }} + run: ${{ github.action_path }}/src/cleanup.ps1 diff --git a/.github/actions/Publish-PSModule/src/cleanup.ps1 b/.github/actions/Publish-PSModule/src/cleanup.ps1 new file mode 100644 index 00000000..b7e64ce7 --- /dev/null +++ b/.github/actions/Publish-PSModule/src/cleanup.ps1 @@ -0,0 +1,79 @@ +[CmdletBinding()] +param() + +$PSStyle.OutputRendering = 'Ansi' + +Import-Module -Name 'Helpers' -Force + +#region Load inputs +LogGroup 'Load inputs' { + $whatIf = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_WhatIf -eq 'true' + + $githubEventJson = Get-Content -Raw $env:GITHUB_EVENT_PATH + $githubEvent = $githubEventJson | ConvertFrom-Json + $pull_request = $githubEvent.pull_request + if (-not $pull_request) { + throw 'GitHub event does not contain pull_request data. This script must be run from a pull_request event.' + } + $prHeadRef = $pull_request.head.ref + $prereleaseName = $prHeadRef -replace '[^a-zA-Z0-9]' + + if ([string]::IsNullOrWhiteSpace($prereleaseName)) { + Write-Host "No prerelease tag derivable from PR head ref [$prHeadRef]. Nothing to cleanup." + exit 0 + } + + Write-Host "PR head ref: [$prHeadRef]" + Write-Host "Prerelease name: [$prereleaseName]" + Write-Host "WhatIf: [$whatIf]" + + $publishedReleaseTag = $env:PSMODULE_PUBLISH_PSMODULE_CONTEXT_ReleaseTag + if (-not [string]::IsNullOrWhiteSpace($publishedReleaseTag)) { + Write-Host "Published tag: [$publishedReleaseTag] (excluded from cleanup)" + } +} +#endregion Load inputs + +#region Find prereleases to cleanup +LogGroup "Find prereleases to cleanup for [$prereleaseName]" { + $releaseListOutput = gh release list --json 'createdAt,isDraft,isLatest,isPrerelease,name,publishedAt,tagName' + if ($LASTEXITCODE -ne 0) { + Write-Error 'Failed to list releases for the repository.' + exit $LASTEXITCODE + } + $releases = $releaseListOutput | ConvertFrom-Json + + $prereleasesToCleanup = $releases | Where-Object { + $_.isPrerelease -eq $true -and $_.tagName -like "*$prereleaseName*" -and $_.tagName -ne $publishedReleaseTag + } + $tagsToDelete = @($prereleasesToCleanup | ForEach-Object { $_.tagName } | Where-Object { -not [string]::IsNullOrWhiteSpace($_) }) + + if ($tagsToDelete.Count -eq 0) { + Write-Host "No prereleases found to cleanup for [$prereleaseName]." + return + } + + Write-Host "Found $($tagsToDelete.Count) prereleases to cleanup:" + $tagsToDelete | ForEach-Object { Write-Host " - $_" } +} +#endregion Find prereleases to cleanup + +#region Delete prereleases +LogGroup "Delete prereleases for [$prereleaseName]" { + foreach ($tag in $tagsToDelete) { + Write-Host "Deleting prerelease: [$tag]" + if ($whatIf) { + Write-Host "WhatIf: gh release delete $tag --cleanup-tag --yes" + } else { + gh release delete $tag --cleanup-tag --yes + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to delete release [$tag]." + exit $LASTEXITCODE + } + Write-Host "Successfully deleted release [$tag]." + } + } + + Write-Host "::notice::Cleaned up $($tagsToDelete.Count) prerelease(s) for [$prereleaseName]." +} +#endregion Delete prereleases diff --git a/.github/actions/Publish-PSModule/src/publish.ps1 b/.github/actions/Publish-PSModule/src/publish.ps1 new file mode 100644 index 00000000..6b08e27f --- /dev/null +++ b/.github/actions/Publish-PSModule/src/publish.ps1 @@ -0,0 +1,285 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseDeclaredVarsMoreThanAssignments', 'apiKey', + Justification = 'Variable is used in script blocks.' +)] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseDeclaredVarsMoreThanAssignments', 'usePRBodyAsReleaseNotes', + Justification = 'Variable is used in script blocks.' +)] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseDeclaredVarsMoreThanAssignments', 'usePRTitleAsReleaseName', + Justification = 'Variable is used in script blocks.' +)] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseDeclaredVarsMoreThanAssignments', 'usePRTitleAsNotesHeading', + Justification = 'Variable is used in script blocks.' +)] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseDeclaredVarsMoreThanAssignments', 'prNumber', + Justification = 'Variable is used in script blocks.' +)] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseDeclaredVarsMoreThanAssignments', 'prHeadRef', + Justification = 'Variable is used in script blocks.' +)] +[CmdletBinding()] +param() + +$PSStyle.OutputRendering = 'Ansi' + +Import-Module -Name 'Helpers' -Force + +#region Load inputs +LogGroup 'Load inputs' { + $env:GITHUB_REPOSITORY_NAME = $env:GITHUB_REPOSITORY -replace '.+/' + + $name = if ([string]::IsNullOrEmpty($env:PSMODULE_PUBLISH_PSMODULE_INPUT_Name)) { + $env:GITHUB_REPOSITORY_NAME + } else { + $env:PSMODULE_PUBLISH_PSMODULE_INPUT_Name + } + # Normalize to an absolute path anchored at the workspace root so that + # the resolved location agrees with where actions/download-artifact writes + # the artifact (workspace-root-relative), regardless of WorkingDirectory. + $modulePathInput = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_ModulePath + $modulePathCandidate = if ([System.IO.Path]::IsPathRooted($modulePathInput)) { + Join-Path -Path $modulePathInput -ChildPath $name + } else { + Join-Path -Path $env:GITHUB_WORKSPACE -ChildPath $modulePathInput -AdditionalChildPath $name + } + if (-not (Test-Path -Path $modulePathCandidate -PathType Container)) { + Write-Error ("Module directory not found at [$modulePathCandidate]. " + + 'Ensure the artifact contains a // subdirectory layout.') + exit 1 + } + $modulePath = Resolve-Path -Path $modulePathCandidate | Select-Object -ExpandProperty Path + $apiKey = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_APIKey + $whatIf = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_WhatIf -eq 'true' + $usePRBodyAsReleaseNotes = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_UsePRBodyAsReleaseNotes -eq 'true' + $usePRTitleAsReleaseName = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_UsePRTitleAsReleaseName -eq 'true' + $usePRTitleAsNotesHeading = $env:PSMODULE_PUBLISH_PSMODULE_INPUT_UsePRTitleAsNotesHeading -eq 'true' + + Write-Host "Module name: [$name]" + Write-Host "Module path: [$modulePath]" + Write-Host "WhatIf: [$whatIf]" +} +#endregion Load inputs + +#region Load PR information +LogGroup 'Load PR information' { + $githubEventJson = Get-Content -Raw $env:GITHUB_EVENT_PATH + $githubEvent = $githubEventJson | ConvertFrom-Json + $pull_request = $githubEvent.pull_request + if (-not $pull_request) { + throw 'GitHub event does not contain pull_request data. This script must be run from a pull_request event.' + } + $prNumber = $pull_request.number + $prHeadRef = $pull_request.head.ref +} +#endregion Load PR information + +#region Resolve version from manifest +# The manifest was stamped with the final version during Build-PSModule. This step is read-only +# to preserve artifact integrity (the tested artifact is identical to the published artifact). +LogGroup 'Resolve version from manifest' { + Add-PSModulePath -Path (Split-Path -Path $modulePath -Parent) + $manifestFilePath = Join-Path -Path $modulePath -ChildPath "$name.psd1" + Write-Host "Module manifest file path: [$manifestFilePath]" + if (-not (Test-Path -Path $manifestFilePath)) { + Write-Error "Module manifest file not found at [$manifestFilePath]" + exit 1 + } + + Show-FileContent -Path $manifestFilePath + + $manifest = Test-ModuleManifest -Path $manifestFilePath -ErrorAction SilentlyContinue -WarningAction SilentlyContinue + if ($manifest) { + Write-Host "Manifest validated: [$($manifest.Name)] v[$($manifest.Version)]" + } else { + Write-Host '::warning::Test-ModuleManifest returned warnings (e.g. unresolved RequiredModules). Continuing with data-file validation.' + } + + try { + $manifestData = Import-PowerShellDataFile -Path $manifestFilePath + } catch { + Write-Error "Failed to import manifest data file [$manifestFilePath]: $($_.Exception.Message)" + exit 1 + } + $moduleVersion = $manifestData.ModuleVersion + if (-not ($moduleVersion -match '^\d+\.\d+\.\d+$')) { + Write-Error ("ModuleVersion [$moduleVersion] must be in Major.Minor.Patch format. " + + 'Ensure Build-PSModule has stamped the artifact with a final version.') + exit 1 + } + if ($moduleVersion -eq '999.0.0') { + Write-Error ('ModuleVersion is the placeholder [999.0.0]. ' + + 'The artifact was not stamped with a real version by the build step.') + exit 1 + } + $prerelease = $manifestData.PrivateData.PSData.Prerelease + if ([string]::IsNullOrWhiteSpace($prerelease)) { + $prerelease = '' + $createPrerelease = $false + } else { + if ($prerelease -notmatch '^[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*$') { + Write-Error ("Prerelease label [$prerelease] is not a valid SemVer prerelease identifier. " + + 'It must contain only alphanumerics, hyphens, and dots as separators.') + exit 1 + } + $createPrerelease = $true + } + + $releaseTag = if ($createPrerelease) { "$moduleVersion-$prerelease" } else { $moduleVersion } + + [PSCustomObject]@{ + ModuleVersion = $moduleVersion + Prerelease = $prerelease + CreatePrerelease = $createPrerelease + ReleaseTag = $releaseTag + PRNumber = $prNumber + PRHeadRef = $prHeadRef + } | Format-List | Out-String + + # Expose publish context to subsequent steps so the cleanup step can gate on release type. + $envLine = "PSMODULE_PUBLISH_PSMODULE_CONTEXT_IsPrerelease=$($createPrerelease.ToString().ToLower())" + $envLine | Out-File -Path $env:GITHUB_ENV -Append -Encoding utf8NoBOM + "PSMODULE_PUBLISH_PSMODULE_CONTEXT_ReleaseTag=$releaseTag" | Out-File -Path $env:GITHUB_ENV -Append -Encoding utf8NoBOM +} +#endregion Resolve version from manifest + +#region Install module dependencies +LogGroup 'Install module dependencies' { + Resolve-PSModuleDependency -ManifestFilePath $manifestFilePath +} +#endregion Install module dependencies + +#region Publish to PSGallery +LogGroup 'Publish to PSGallery' { + $releaseType = if ($createPrerelease) { 'New prerelease' } else { 'New release' } + $publishPSVersion = if ($createPrerelease) { "$moduleVersion-$prerelease" } else { $moduleVersion } + $psGalleryReleaseLink = "https://www.powershellgallery.com/packages/$name/$publishPSVersion" + + Write-Host 'Publish module to PowerShell Gallery using API key from environment.' + if ($whatIf) { + Write-Host "Publish-PSResource -Path $modulePath -Repository PSGallery -ApiKey ***" + } else { + try { + Publish-PSResource -Path $modulePath -Repository PSGallery -ApiKey $apiKey + } catch { + Write-Error $_.Exception.Message + exit 1 + } + } + + if ($whatIf) { + Write-Host ( + "gh pr comment $prNumber -b " + + "'✅ $releaseType`: PowerShell Gallery - [$name $publishPSVersion]($psGalleryReleaseLink)'" + ) + } else { + Write-Host "::notice title=✅ $releaseType`: PowerShell Gallery - $name $publishPSVersion::$psGalleryReleaseLink" + gh pr comment $prNumber -b "✅ $releaseType`: PowerShell Gallery - [$name $publishPSVersion]($psGalleryReleaseLink)" + if ($LASTEXITCODE -ne 0) { + Write-Error 'Failed to comment on the pull request.' + exit $LASTEXITCODE + } + } +} +#endregion Publish to PSGallery + +#region Create GitHub release with module artifact attached +# A zip of the published module is uploaded so the GitHub Release page exposes the exact bytes +# that were tested and pushed to the PowerShell Gallery. +LogGroup 'Create GitHub release' { + $releaseCreateCommand = @('release', 'create', $releaseTag) + $notesFilePath = $null + + if ($usePRTitleAsReleaseName -and $pull_request.title) { + $releaseCreateCommand += @('--title', $pull_request.title) + Write-Host "Using PR title as release name: [$($pull_request.title)]" + } else { + $releaseCreateCommand += @('--title', $releaseTag) + } + + # Build release notes content. Uses temp file to avoid escaping issues with special characters. + # Precedence rules for the three UsePR* parameters: + # 1. UsePRTitleAsNotesHeading + UsePRBodyAsReleaseNotes: Creates "# Title (#PR)\n\nBody" format. + # 2. UsePRBodyAsReleaseNotes only: Uses PR body as-is. + # 3. Fallback: Auto-generates notes via GitHub's --generate-notes. + if ($usePRTitleAsNotesHeading -and $usePRBodyAsReleaseNotes -and $pull_request.title -and $pull_request.body) { + $notes = "# $($pull_request.title) (#$prNumber)`n`n$($pull_request.body)" + $notesFilePath = [System.IO.Path]::GetTempFileName() + Set-Content -Path $notesFilePath -Value $notes -Encoding utf8 + $releaseCreateCommand += @('--notes-file', $notesFilePath) + Write-Host 'Using PR title as H1 heading with link and body as release notes' + } elseif ($usePRBodyAsReleaseNotes -and $pull_request.body) { + $notesFilePath = [System.IO.Path]::GetTempFileName() + Set-Content -Path $notesFilePath -Value $pull_request.body -Encoding utf8 + $releaseCreateCommand += @('--notes-file', $notesFilePath) + Write-Host 'Using PR body as release notes' + } else { + $releaseCreateCommand += @('--generate-notes') + } + + if ($createPrerelease) { + $releaseCreateCommand += @('--target', $prHeadRef, '--prerelease') + } + + if ($whatIf) { + Write-Host "WhatIf: gh $($releaseCreateCommand -join ' ')" + $releaseURL = "https://github.com/$env:GITHUB_REPOSITORY/releases/tag/$releaseTag" + } else { + try { + $releaseURL = gh @releaseCreateCommand + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to create the release [$releaseTag]." + exit $LASTEXITCODE + } + } finally { + if ($notesFilePath -and (Test-Path -Path $notesFilePath)) { + Remove-Item -Path $notesFilePath -Force + } + } + } + + # Attach the built module as a release artifact so consumers can download the exact + # bytes that were tested and published to the PowerShell Gallery. + $zipFileName = "$name-$publishPSVersion.zip" + $zipPath = Join-Path -Path ([System.IO.Path]::GetTempPath()) -ChildPath $zipFileName + if (Test-Path -Path $zipPath) { + Remove-Item -Path $zipPath -Force + } + if ($whatIf) { + Write-Host "WhatIf: Compress-Archive -Path $modulePath -DestinationPath $zipPath -Force" + Write-Host "WhatIf: gh release upload $releaseTag $zipPath --clobber" + } else { + Write-Host "Compressing module to [$zipPath]" + Compress-Archive -Path $modulePath -DestinationPath $zipPath -Force + try { + gh release upload $releaseTag $zipPath --clobber + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to upload module artifact to release [$releaseTag]." + exit $LASTEXITCODE + } + Write-Host "::notice title=📦 Attached module artifact to release::$zipFileName" + } finally { + if (Test-Path -Path $zipPath) { + Remove-Item -Path $zipPath -Force + } + } + } + + if ($whatIf) { + Write-Host "gh pr comment $prNumber -b '✅ $($releaseType): GitHub - $name $releaseTag'" + } else { + gh pr comment $prNumber -b "✅ $releaseType`: GitHub - [$name $releaseTag]($releaseURL)" + if ($LASTEXITCODE -ne 0) { + Write-Error 'Failed to comment on the pull request.' + exit $LASTEXITCODE + } + } + Write-Host "::notice title=✅ $releaseType`: GitHub - $name $releaseTag::$releaseURL" +} +#endregion Create GitHub release + +Write-Host "Publishing complete. Version: [$releaseTag]" diff --git a/.github/actions/Publish-PSModule/tests/outputs/module-prerelease/PSModuleTest/PSModuleTest.psd1 b/.github/actions/Publish-PSModule/tests/outputs/module-prerelease/PSModuleTest/PSModuleTest.psd1 new file mode 100644 index 00000000..5bf46071 --- /dev/null +++ b/.github/actions/Publish-PSModule/tests/outputs/module-prerelease/PSModuleTest/PSModuleTest.psd1 @@ -0,0 +1,38 @@ +@{ + RootModule = 'PSModuleTest.psm1' + ModuleVersion = '2.0.0' + CompatiblePSEditions = @( + 'Core' + 'Desktop' + ) + GUID = '20b37221-db1c-43db-9cca-f22b33123548' + Author = 'PSModule' + CompanyName = 'PSModule' + Copyright = '(c) 2024 PSModule. All rights reserved.' + Description = 'Process a module from source code to published module.' + PowerShellVersion = '5.1' + FunctionsToExport = @( + 'Get-PSModuleTest' + 'New-PSModuleTest' + 'Set-PSModuleTest' + 'Test-PSModuleTest' + ) + CmdletsToExport = @() + VariablesToExport = @() + AliasesToExport = @() + PrivateData = @{ + PSData = @{ + Prerelease = 'preview1' + Tags = @( + 'workflow' + 'powershell' + 'powershell-module' + 'PSEdition_Desktop' + 'PSEdition_Core' + ) + LicenseUri = 'https://github.com/PSModule/Process-PSModule/blob/main/LICENSE' + ProjectUri = 'https://github.com/PSModule/Process-PSModule' + IconUri = 'https://raw.githubusercontent.com/PSModule/Process-PSModule/main/icon/icon.png' + } + } +} diff --git a/.github/actions/Publish-PSModule/tests/outputs/module-prerelease/PSModuleTest/PSModuleTest.psm1 b/.github/actions/Publish-PSModule/tests/outputs/module-prerelease/PSModuleTest/PSModuleTest.psm1 new file mode 100644 index 00000000..c13668d3 --- /dev/null +++ b/.github/actions/Publish-PSModule/tests/outputs/module-prerelease/PSModuleTest/PSModuleTest.psm1 @@ -0,0 +1 @@ +# Placeholder module file for testing diff --git a/.github/actions/Publish-PSModule/tests/outputs/module-unstamped/PSModuleTest/PSModuleTest.psd1 b/.github/actions/Publish-PSModule/tests/outputs/module-unstamped/PSModuleTest/PSModuleTest.psd1 new file mode 100644 index 00000000..f25d5c71 --- /dev/null +++ b/.github/actions/Publish-PSModule/tests/outputs/module-unstamped/PSModuleTest/PSModuleTest.psd1 @@ -0,0 +1,37 @@ +@{ + RootModule = 'PSModuleTest.psm1' + ModuleVersion = '999.0.0' + CompatiblePSEditions = @( + 'Core' + 'Desktop' + ) + GUID = '20b37221-db1c-43db-9cca-f22b33123548' + Author = 'PSModule' + CompanyName = 'PSModule' + Copyright = '(c) 2024 PSModule. All rights reserved.' + Description = 'Process a module from source code to published module.' + PowerShellVersion = '5.1' + FunctionsToExport = @( + 'Get-PSModuleTest' + 'New-PSModuleTest' + 'Set-PSModuleTest' + 'Test-PSModuleTest' + ) + CmdletsToExport = @() + VariablesToExport = @() + AliasesToExport = @() + PrivateData = @{ + PSData = @{ + Tags = @( + 'workflow' + 'powershell' + 'powershell-module' + 'PSEdition_Desktop' + 'PSEdition_Core' + ) + LicenseUri = 'https://github.com/PSModule/Process-PSModule/blob/main/LICENSE' + ProjectUri = 'https://github.com/PSModule/Process-PSModule' + IconUri = 'https://raw.githubusercontent.com/PSModule/Process-PSModule/main/icon/icon.png' + } + } +} diff --git a/.github/actions/Publish-PSModule/tests/outputs/module-unstamped/PSModuleTest/PSModuleTest.psm1 b/.github/actions/Publish-PSModule/tests/outputs/module-unstamped/PSModuleTest/PSModuleTest.psm1 new file mode 100644 index 00000000..c13668d3 --- /dev/null +++ b/.github/actions/Publish-PSModule/tests/outputs/module-unstamped/PSModuleTest/PSModuleTest.psm1 @@ -0,0 +1 @@ +# Placeholder module file for testing diff --git a/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/PSModuleTest.psd1 b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/PSModuleTest.psd1 new file mode 100644 index 00000000..9ba2a60e --- /dev/null +++ b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/PSModuleTest.psd1 @@ -0,0 +1,75 @@ +@{ + RootModule = 'PSModuleTest.psm1' + ModuleVersion = '1.2.3' + CompatiblePSEditions = @( + 'Core' + 'Desktop' + ) + GUID = '20b37221-db1c-43db-9cca-f22b33123548' + Author = 'PSModule' + CompanyName = 'PSModule' + Copyright = '(c) 2024 PSModule. All rights reserved.' + Description = 'Process a module from source code to published module.' + PowerShellVersion = '5.1' + ProcessorArchitecture = 'None' + RequiredModules = @( + @{ + ModuleVersion = '1.0' + ModuleName = 'PSSemVer' + } + 'Utilities' + ) + RequiredAssemblies = 'assemblies/LsonLib.dll' + ScriptsToProcess = 'scripts/loader.ps1' + TypesToProcess = @( + 'types/DirectoryInfo.Types.ps1xml' + 'types/FileInfo.Types.ps1xml' + ) + FormatsToProcess = @( + 'formats/CultureInfo.Format.ps1xml' + 'formats/Mygciview.Format.ps1xml' + ) + NestedModules = @( + 'modules/OtherPSModule.psm1' + ) + FunctionsToExport = @( + 'Get-PSModuleTest' + 'New-PSModuleTest' + 'Set-PSModuleTest' + 'Test-PSModuleTest' + ) + CmdletsToExport = @() + VariablesToExport = @() + AliasesToExport = '*' + ModuleList = @( + 'modules/OtherPSModule.psm1' + ) + FileList = @( + 'PSModuleTest.psd1' + 'PSModuleTest.psm1' + 'assemblies/LsonLib.dll' + 'data/Config.psd1' + 'data/Settings.psd1' + 'formats/CultureInfo.Format.ps1xml' + 'formats/Mygciview.Format.ps1xml' + 'modules/OtherPSModule.psm1' + 'scripts/loader.ps1' + 'types/DirectoryInfo.Types.ps1xml' + 'types/FileInfo.Types.ps1xml' + ) + PrivateData = @{ + PSData = @{ + Tags = @( + 'workflow' + 'powershell' + 'powershell-module' + 'PSEdition_Desktop' + 'PSEdition_Core' + ) + LicenseUri = 'https://github.com/PSModule/Process-PSModule/blob/main/LICENSE' + ProjectUri = 'https://github.com/PSModule/Process-PSModule' + IconUri = 'https://raw.githubusercontent.com/PSModule/Process-PSModule/main/icon/icon.png' + } + } +} + diff --git a/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/PSModuleTest.psm1 b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/PSModuleTest.psm1 new file mode 100644 index 00000000..143fe324 --- /dev/null +++ b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/PSModuleTest.psm1 @@ -0,0 +1,382 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidLongLines', '', Justification = 'Contains long links.')] +[CmdletBinding()] +param() + +$scriptName = $MyInvocation.MyCommand.Name +Write-Verbose "[$scriptName] Importing module" + +#region - Data import +Write-Verbose "[$scriptName] - [data] - Processing folder" +$dataFolder = (Join-Path $PSScriptRoot 'data') +Write-Verbose "[$scriptName] - [data] - [$dataFolder]" +Get-ChildItem -Path "$dataFolder" -Recurse -Force -Include '*.psd1' -ErrorAction SilentlyContinue | ForEach-Object { + Write-Verbose "[$scriptName] - [data] - [$($_.Name)] - Importing" + New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force + Write-Verbose "[$scriptName] - [data] - [$($_.Name)] - Done" +} + +Write-Verbose "[$scriptName] - [data] - Done" +#endregion - Data import + +#region - From /init +Write-Verbose "[$scriptName] - [/init] - Processing folder" + +#region - From /init/initializer.ps1 +Write-Verbose "[$scriptName] - [/init/initializer.ps1] - Importing" + +Write-Verbose '-------------------------------' -Verbose +Write-Verbose '--- THIS IS AN INITIALIZER ---' -Verbose +Write-Verbose '-------------------------------' -Verbose + +Write-Verbose "[$scriptName] - [/init/initializer.ps1] - Done" +#endregion - From /init/initializer.ps1 + +Write-Verbose "[$scriptName] - [/init] - Done" +#endregion - From /init + +#region - From /classes +Write-Verbose "[$scriptName] - [/classes] - Processing folder" + +#region - From /classes/Book.ps1 +Write-Verbose "[$scriptName] - [/classes/Book.ps1] - Importing" + +class Book { + # Class properties + [string] $Title + [string] $Author + [string] $Synopsis + [string] $Publisher + [datetime] $PublishDate + [int] $PageCount + [string[]] $Tags + # Default constructor + Book() { $this.Init(@{}) } + # Convenience constructor from hashtable + Book([hashtable]$Properties) { $this.Init($Properties) } + # Common constructor for title and author + Book([string]$Title, [string]$Author) { + $this.Init(@{Title = $Title; Author = $Author }) + } + # Shared initializer method + [void] Init([hashtable]$Properties) { + foreach ($Property in $Properties.Keys) { + $this.$Property = $Properties.$Property + } + } + # Method to calculate reading time as 2 minutes per page + [timespan] GetReadingTime() { + if ($this.PageCount -le 0) { + throw 'Unable to determine reading time from page count.' + } + $Minutes = $this.PageCount * 2 + return [timespan]::new(0, $Minutes, 0) + } + # Method to calculate how long ago a book was published + [timespan] GetPublishedAge() { + if ( + $null -eq $this.PublishDate -or + $this.PublishDate -eq [datetime]::MinValue + ) { throw 'PublishDate not defined' } + + return (Get-Date) - $this.PublishDate + } + # Method to return a string representation of the book + [string] ToString() { + return "$($this.Title) by $($this.Author) ($($this.PublishDate.Year))" + } +} + +Write-Verbose "[$scriptName] - [/classes/Book.ps1] - Done" +#endregion - From /classes/Book.ps1 +#region - From /classes/BookList.ps1 +Write-Verbose "[$scriptName] - [/classes/BookList.ps1] - Importing" + +class BookList { + # Static property to hold the list of books + static [System.Collections.Generic.List[Book]] $Books + # Static method to initialize the list of books. Called in the other + # static methods to avoid needing to explicit initialize the value. + static [void] Initialize() { [BookList]::Initialize($false) } + static [bool] Initialize([bool]$force) { + if ([BookList]::Books.Count -gt 0 -and -not $force) { + return $false + } + + [BookList]::Books = [System.Collections.Generic.List[Book]]::new() + + return $true + } + # Ensure a book is valid for the list. + static [void] Validate([book]$Book) { + $Prefix = @( + 'Book validation failed: Book must be defined with the Title,' + 'Author, and PublishDate properties, but' + ) -join ' ' + if ($null -eq $Book) { throw "$Prefix was null" } + if ([string]::IsNullOrEmpty($Book.Title)) { + throw "$Prefix Title wasn't defined" + } + if ([string]::IsNullOrEmpty($Book.Author)) { + throw "$Prefix Author wasn't defined" + } + if ([datetime]::MinValue -eq $Book.PublishDate) { + throw "$Prefix PublishDate wasn't defined" + } + } + # Static methods to manage the list of books. + # Add a book if it's not already in the list. + static [void] Add([Book]$Book) { + [BookList]::Initialize() + [BookList]::Validate($Book) + if ([BookList]::Books.Contains($Book)) { + throw "Book '$Book' already in list" + } + + $FindPredicate = { + param([Book]$b) + + $b.Title -eq $Book.Title -and + $b.Author -eq $Book.Author -and + $b.PublishDate -eq $Book.PublishDate + }.GetNewClosure() + if ([BookList]::Books.Find($FindPredicate)) { + throw "Book '$Book' already in list" + } + + [BookList]::Books.Add($Book) + } + # Clear the list of books. + static [void] Clear() { + [BookList]::Initialize() + [BookList]::Books.Clear() + } + # Find a specific book using a filtering scriptblock. + static [Book] Find([scriptblock]$Predicate) { + [BookList]::Initialize() + return [BookList]::Books.Find($Predicate) + } + # Find every book matching the filtering scriptblock. + static [Book[]] FindAll([scriptblock]$Predicate) { + [BookList]::Initialize() + return [BookList]::Books.FindAll($Predicate) + } + # Remove a specific book. + static [void] Remove([Book]$Book) { + [BookList]::Initialize() + [BookList]::Books.Remove($Book) + } + # Remove a book by property value. + static [void] RemoveBy([string]$Property, [string]$Value) { + [BookList]::Initialize() + $Index = [BookList]::Books.FindIndex({ + param($b) + $b.$Property -eq $Value + }.GetNewClosure()) + if ($Index -ge 0) { + [BookList]::Books.RemoveAt($Index) + } + } +} + +Write-Verbose "[$scriptName] - [/classes/BookList.ps1] - Done" +#endregion - From /classes/BookList.ps1 + +Write-Verbose "[$scriptName] - [/classes] - Done" +#endregion - From /classes + +#region - From /private +Write-Verbose "[$scriptName] - [/private] - Processing folder" + +#region - From /private/Get-InternalPSModule.ps1 +Write-Verbose "[$scriptName] - [/private/Get-InternalPSModule.ps1] - Importing" + +Function Get-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Verbose "[$scriptName] - [/private/Get-InternalPSModule.ps1] - Done" +#endregion - From /private/Get-InternalPSModule.ps1 +#region - From /private/Set-InternalPSModule.ps1 +Write-Verbose "[$scriptName] - [/private/Set-InternalPSModule.ps1] - Importing" + +Function Set-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Verbose "[$scriptName] - [/private/Set-InternalPSModule.ps1] - Done" +#endregion - From /private/Set-InternalPSModule.ps1 + +Write-Verbose "[$scriptName] - [/private] - Done" +#endregion - From /private + +#region - From /public +Write-Verbose "[$scriptName] - [/public] - Processing folder" + +#region - From /public/Get-PSModuleTest.ps1 +Write-Verbose "[$scriptName] - [/public/Get-PSModuleTest.ps1] - Importing" + +#Requires -Modules Utilities + +function Get-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Verbose "[$scriptName] - [/public/Get-PSModuleTest.ps1] - Done" +#endregion - From /public/Get-PSModuleTest.ps1 +#region - From /public/New-PSModuleTest.ps1 +Write-Verbose "[$scriptName] - [/public/New-PSModuleTest.ps1] - Importing" + +#Requires -Modules @{ModuleName='PSSemVer'; ModuleVersion='1.0'} + +function New-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Verbose "[$scriptName] - [/public/New-PSModuleTest.ps1] - Done" +#endregion - From /public/New-PSModuleTest.ps1 +#region - From /public/Set-PSModuleTest.ps1 +Write-Verbose "[$scriptName] - [/public/Set-PSModuleTest.ps1] - Importing" + +function Set-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Verbose "[$scriptName] - [/public/Set-PSModuleTest.ps1] - Done" +#endregion - From /public/Set-PSModuleTest.ps1 +#region - From /public/Test-PSModuleTest.ps1 +Write-Verbose "[$scriptName] - [/public/Test-PSModuleTest.ps1] - Importing" + +function Test-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Verbose "[$scriptName] - [/public/Test-PSModuleTest.ps1] - Done" +#endregion - From /public/Test-PSModuleTest.ps1 + +Write-Verbose "[$scriptName] - [/public] - Done" +#endregion - From /public + +#region - From /finally.ps1 +Write-Verbose "[$scriptName] - [/finally.ps1] - Importing" + +Write-Verbose '------------------------------' -Verbose +Write-Verbose '--- THIS IS A LAST LOADER ---' -Verbose +Write-Verbose '------------------------------' -Verbose +Write-Verbose "[$scriptName] - [/finally.ps1] - Done" +#endregion - From /finally.ps1 + +$exports = @{ + Cmdlet = '' + Alias = '*' + Variable = '' + Function = @( + 'Get-PSModuleTest' + 'New-PSModuleTest' + 'Set-PSModuleTest' + 'Test-PSModuleTest' + ) +} +Export-ModuleMember @exports + diff --git a/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/assemblies/LsonLib.dll b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/assemblies/LsonLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..36618070d5c9f5131ec66720aa0565c13e86d23f GIT binary patch literal 43520 zcmeIb3w&HvwLiYjIrDxcGm|ELl4+Zkp_7F41!*a@Z(8VsJ}7-jm?qOUG|7aSq|g_n z3Mf#tDDnfvOHmL}^^c zi+?hD)t2^Rs=JWiT*!8&TC-hU`JU9qT&mF9m1^%w&0DrI)tPV0HAbVMI?ejr`9zBi zi>^05bb&4HFpWutjV7W`A;+h3A3lJ43fEy=M3s^@mEN48$v|TeA^(@-4YcdRE18u4 zm+l(nEPQ$n5G~`xVWKP85Cc92MUXe+TSOxVlpQA{MHFxq2Y@eh;f+1HOM8GH+7FPz z#chS&?oW#7!p1_e(27ja?JyGDQMcoAeP*G%8Vk9OJP27=B4q>mtRN1UMKs4jbmFrI zRDyLg$xAcZiTchX3hHwE_TWRvw~^!AlT9W~ML9HxlUWR*XF|UGFxLfVv}^EZT!R%n_#|JS7w&Gd~XZaOOP;BR!t0ldk|Z zyYnXl8ShJ&=`<1=E39`)P;d$geAVgAkV1s&5D{wl+LILt<7jmh((+ZvpeM@sdrVOrv+%Hbl8d?;KdkL7w*`4H$+b<_y?>f@%lGYPEt0;qR$ zzPXcOI79vkK;B4?@=~#zKxXlS>_> zS%Ap$i5RhmMW4al&-I%zbYWo8OI6G_LXD8GHq}_=s|_|*_-dn#Kto53>Z3-+s1Ez< z=aa9tVRECQuUVsN=TAkwQ-`@()vOU_wGC1ct_TN9!xwy%iDyoMHCWM_HKHnXkXDK& z!t1Cf8l0Ye`|Y=3%p`pETqufuj#FmppbAGD{i0^ZsDX}VX8bz~hy)t$pTPbx9lT*l z?$3T&oI2FqB56;t2`$Y86LfS4+;W6%*kqHRI>84H3qEP(lFTiE;gElco6Rw%d-!$m zE@ND^Z!db$_|&)>zfP1%s;yXCTao@VYJF;4nNjWB^s6X~WGJ9~T*Xi2lWE5txotmy zPSBHe;>Zy4B|ULZ1S6K?L;WZuphqYgtR2%h9z(JAkCv=$Up{Snp zW_FrsconBERxFdggfBe_Ov3)!hQ@@ywrNtxUpwunsXPW9lJv*@^&vA|qv}ob*Up~g z_1CVO2;wXg?{E_b;&2r+jgielB4*)tjuLS%`pZY(K$|cexJ?)$Xj7rWpzic!(V@PM zbl3aDk(7h!@l%ujG%7?gm-!0A>?+aVajR78D(CnLL(AU`g z{VC}(6^GGl$tDl&LOU=ZY`+U-wsIWfQLl#pEQoPaRpx_JxVth7RGv><5{A!C@{1YS z+N|72cO4xR*5;>5-H@+lO^9k>+bUgkAxAw**hQ|aSI)=9_>(ys~)!r z8X^hr(IIfR5pi@BYOyO7Ph%mq>ysW#LZ>4g_Z&5lY(}yr5}5V|8f{xnkAB@bW;)J& z?tAw_-aDue=q(-x&2KGfUKVd0i99CWO>@pXrX+S(NP6-3lH$H(Fq0rFe;x$ZtVv^{ zX--bf3Za6DYQaq4`)F=y~X2DS{>o_xj?c5?mN`3Std)GG|Col^c%l0(N(p%er>D#N~v=4pbRdHJ8kXX6dPK0aI;9L<9>XYSMo0r1rPlWYEH*4`q zt#kcZC&Ff$n~k`oX2Wh7iif6s4xO6$XPMx?Nl(PU>FcmY=2g;_j$53F85-SYD0M%g z?z9c)n0_PTL^zkZKw10GJ`py@>?fI>YU~Iy)MH1D|F8EMB9ipk2|0ak&~9p&cOsUY zKPV4gFjmAXrv2p~>+Q^-%uh_g!9x)%SQ)RZ|8E(J|5R6u$KyPiUGsm9D<Nz127?s9@aR{^O8MtA%C6n=F{bUNHZbx8HWmV}Jx@<^%2sa-49{N!sUX{jn zo-a%pe=z-RPU%V1pRC5zS*_Q-!?6m)qaN119iYK;pRD>k36H(*bw6QvO6%T8?anA3 zUikqdhW$>{wxI!BsFvl~*|d)71~ADJGNpVFLob zY&%hA)d_GP%nqzECKcBB0;g-Rz=}3+JNow9gZ7ax8H1n1^crUuEQrMw{Nzk@Is8Nv zYhF8eKjN9*+dQ9*E;~BmOpg5hpRALxF*b_MRr!8-l1_T#UOY?t0C!9r3piWS>n7G9 z-6ZL06T?Wi*c)QvF=i&@uUQjDdjgpo-A~>S%6mZeh?2*8SAT!SF@?53VBnU;K*LA% zVlIlsoNGiR!?kB7BZ;tD%tbIL!p@+uz2%Sn1(rX7`vThOX2QmV=ERzBMfdoU73hfy z*(<{q0-;G*Q``H_?4>8N?`#rws%Z%GAj?b-NA=}3p(lgm$*Njj9ePsj+wy)e?{G(B z6vXn@Og0%DC#YIv*9S~lg=dT^y)nz>a0y*r{1CXf4%#bd6`V;=KhvSaeVgXZ9EnQ!x0z&x1jm^{98EFQcqBlb9p zc`%uqhsk4(Ux%Q->w{)>9-BKQ0^VQ5{*~%W6k?tz+Xqjf410cDH>Qh=3n51Bo}z>G z?y1cOJB*;M&d(Zz4}8Yv!^Oo#4j;HtKR$3N;RE{&&}T%64;L5DcKE=%`tcd5`G95s zpHU?~TwFZI;RB2Hij?= zTc!3y&dHR$Eb{>PsQ}59=#qi1nTBxBJ`U=vx{_j=tk;eKFWXU&!mPucBdn z2NK!(j<@v{l5%}j8S7grwDpy-%KCoX(bwzfTNM!h)mkDYm{VwZ0sK`{}D_Sl@v}w!RZ=eTAf4 zUscBXmI`fsCHAnsYXY`E_#J&q;b#&RzGxHd;JP4EF~3?(z8r_pc9m!KV%ybhu&S{s zVfAo2pXKH$wa|7$#w8q&<6gj&EwzkSUamNExmltq3=dMbnZF1;(o0|;ho(QDO`zz{ z$C5agVOi=Ow`sqmR$F<>*lb6{5wwv>PKH@2mMe`{m$W4;^d*ONj^M$s+LRa~?3-VQCWZ>UuqjMg3x4!KRs{_!C6 zY~uE4$M9E&n?Hv_kiQYy#T^Z9$mO}wl1wt>O|ZtV-_5EH+tm&=Cvv+|BM`Skw$9cS9#ac|8Ue#G?1`)=-?hTma-g*(lc{w}l>vrE66K`7uZvv5X2ovX2G>y;)} zVI6eDdgr|;FKj|OeF0KRY0Au_At9?)zi`s*U0ezmISo9v2x(dim`)#t{biivF^^XB zDAaxKv@YOoT>!0vvv`hrctfM%_f`SJL)#Mbkd8lR(vgh8OBI~E&<4E_f@F-9oxS1V zoaer=$4c4UQ=@Y2aSme4CwiP`?Mkk3ys=!yEhi>ljwz6_do{11(9eJL7 z&Zck)lt>JJQ!#c5)9Vl(%2fGe(1w-5eigHPYIHsQWY|~l_c>A9wp)-=rci48$`eP^S3Ps6()>Xdh25x$@J$xv+B+p@@01U0MENKM zJOoE6BAN4WL`u=iHftJ-9~{a`V|fv32>8++xbwC+NB7aZe!GHgycoG@G%J${xp@WE zvvTRIkcTdYQqzv3f0*@O#QJB>;iv}vaXN|BSL$>^k~}y^G8vU$n^*h6l*aTQ!V5>w z(IK$nh`1-?Q_t8X`ChsNVHJ;(gWC^BPQ-q^Tn)?HL1pEkWmd*axRRWRJHoA9p0$H( zg~H915TuHnz3gtKUujp_7u3YRgH^~Q!Po9ByIDSI7RPs<3oA>fUc${^;98l4TLCr? z_f6c#Q*I;8@!Yl6<%OHQew9VsO;DvYC;z>)I0+ykEfrZN!!BiO=(4o{w^vqxB9|9+Aww2* z80d1InRT8HS36VeXg^^60E10UK9+qtM+by(b)@+XwA~+&jsGYGd11!uw^3{7V-yl5 zY&prj19z;hh$H#AxDb5#n2-ktCZP-N8yb_DZC2smAWAPAKLHY}@JK1+8p-&TlabkF z6%LoMF01hS5_X|gc)oJueaAKv)LFC<(nQ2(=b2eO`}Tik{&&#vr??Y>#>s7%T%&NsuQbikFabfr_S^du+U$BwTh@o`U^<7p1XxWaT-dX6i-(3M{8N^f$~ zeLQ~ByP~#!|VZ$6A=iSFl_Alq%M>P-1!Oq;jyJzKFQT<)6S$Ldcg~V$! z)<=(1gKCkF!GZkxs45zCi(S?=%mZPB_5T-p2y+ZL$=B9ooQ%#MkA78gM(y(oofuGyL^~`A1G8ABngxfKtwikj%1C9lmPawoqv01++Ap+sv_C@)64sW7NA{1chV0 zr`9~a2w{WrfS)NIFwU{wF>4-QIu?&+n+FUr@EvnmTkby=55yy-2Lj4q@5}MDso#C2 zzX~25;!iF=#G^Hh7kiZ)K^IFu)fhww;blIC(YO|V&YqP*^}dTHVQLbLm-`nTH4!_p zB{G&D!RsR0The|^M{otKyt&H)(dLIxSJi8m{){%?jT|+XoK%`i8t{zG9mHJ+CTi|tBd4!McOeYzk}z})5ZAoC9=s7Ccpmh^6>5(2 zd^gq28CGC|n}yfmL29q-IyW2c zSM@-}-`GSAxT@$KW5>4PJJNzcuZyeFkC*Xr?cq9m;jTRA-K@$JJGt`E zx$N_Cs^SHiiv5jLg^j<>+$>oahe3l0Do&SSR#A@};%A6!>Y0PT1j*YAu6c>eWX|O> z1m*r^vKHVn-s|jF4^rZIX{Q2bzcTcZDl3~`Rok$vL_4H^8;g%X{XW)r!b#>%tN{28 zt+iVch0=FxdzIlWZ2YEwFAav??BA%VpD)tSAiuuCl)LOb)T}|kSHq_NSctj$oYUz) zqOv9x+8N-xg!R<#_;@TdDBc(x@cf9CXMsS%nJQJFa^#(mUVB*l{Knf5h{2*)ZxF&T zPbGbp+Nd||cYjb7Tm$LffN3-n^^a@tjn@djDdYEG`@n0t@M5Wctd#%CkrV7gJ6KKB z4;KP4JBz=_jIH2sA?0MLL%VoU`61N7m&?b+J^2rF((AME5)lH_`vVV<>w&1#tRTXp zY^dQEPew7X1%Oro#ka$gKJ2LYCa8Cbi)hkLIbH_)S=0wz5l`@bp@C_s_z~R3Rp&p- zSO~^kY^fuhwV}pFI~kpv@>{acQM0x&Vd0FXZ1y-`XXYJKWv7sj3xye<0td&jm7@0ei?{ch=u>her zLSwi8VcA5h?7o(#B3ECVVk4VnQ99X(cvC5k_q8k_*1}AByxXrg5P<^;)i-r zGlb`{HI-&{C4MDBNjNo#EqnF7U~x_n6wQpcJZrQHro2J5rA0Ae;ot?HA=K{#T%>y+ z0~$|Nc=-EY+%H(*@O$0T?*f=RxfEYp|65}K9W%7i%tYu(znT6Edg6%;hiv^WatLN) zInILdU=jiWVKV`95Z4d;=cAMP2NKw*9O@|(%)~NhG+%>cb?7&EpdfRIXoB@!9mv#} z8HcY0@>hj-<5|gL)(AmO=r>$TljD@@<$Thb>&VF#{_%#;ZuGmyto@r*$efOH&d67D z(aBt7?&O3-$D6s6%h9iIt{r+BJNMAF!%j0Z zbMa-!x0+(eZXAuw+PCoC^*Y}$>H85#50$>RFzY{|{lFt>$u?DTf&tbh-in!LD1R_% zKAC6P>0vZ&MafUr!zYxVus-k;Ecwg)geOkemM3o6u*!_ejLFPy{tVFOzcOex0QNFC z3IJaUfhDZZ{NOz^5MXzof;7B`v*0~{0G%d4X1&mvJ2SYK&Lr$cXcPzHI?Y?ThPjLL z;D$DHUzq*k@QbVPCC#K#X&A2!`kgZRr*$ zGyO{bPD7eqi&XZ}AvH`Q=OL8jky`STN!_bzaN@+f8l1EFK?1Gi&vG~iUjc>EMYbbI z=eiGOOxR{yM|BC0Vd)w*hFzuH3@(*6IwPEYPR&6)w%0ggPK|9IlBKcD{$YkP$!a-Y z!(*GhQBK*&*bbm6?y)_Y=~cv@isS^J%%yW7M~!VR$Hc@DyQa~T;eU126VOyH;AnXo z?&(d47`rhO@zCIc8k?e;BNP{u^j|CbGnLYx#g_Eve5F6XN@D$4z-|VjKc=lR{b3PX z|7l3V7#ssj`g8f9`f~y6KOJ|aKQ=^Ie=ZRHIU)LUK}r90qCXcZ{aI{Df6iC>^KLim z&jNNc5dHDuwM_prm|ofcOe6>B&*g*a&jqaiOx%_JSj@8iTp;>$LiFc?lK$&Oe=bz| zv)GdUoUiof2Qt>51?*-Z`lncbnzQokIR-`rfB2bY+myzp#>q{SC&C!~D?1&40Zb}m zFT;2IaUYpPdSy?cy=!xkDfYpn3$Y>}d)`X=~nGd3}^f|bYB&bKDk?|7lV{qNXIIg9*&|cAzaZGW9(IoFtxjy(p zTXn~B4xf!d&gaQ^tnZUiAAMQiX?{+(c(+EA^i3@2eDo=AYY0Cc<72o|;3z+*AC>eG zfsYBzhrE}e?s9>rN&YL|^#LEvuXr5aq4_S|WBBmh9Zrvp^u^DiiNgO&lK&YW=N}F- z42Btg7#u=0v*K3NYLHqJrF6Q`*9yGS!;}wrS?ALPo+3Hlid+}-Vcuqml^#xqeOp2E z9pr>)VuX2KB&7=lzUJZ5B3kXEyG2&e&zv6#F#M?Gd^)@ot$tn7hoYQLM!0m2Nc=^J z(+>ikLsy1)zoi#2L??N^7WUD#LixPV92FRlwtPFzwRTmC6y$S%@b6`DpBuD?7f2P? z8uJA+kiS26t&s(05n~Ss7SPzw1&cD4s-(L@*BUuI%p$e{3wxPM5)ph4us!~3jZS#e za56?$(i%ue0qYR#69L9*=vu+{2N@ed|03Am!ip!YdG!&&wg8)t9q(sE z>&u|ad`i*tQq~17jJ-g8Xi-DOc<+4p>?>pe!<37a&S=<`v9W@s>21L-5NtAq3@*Ez znDTV|oDpNEOW7GT-0=C{Z&U_W_g!9*1l$u~xG=)-gF%Lq@RJ{_`?8hEK#8&jIll`t z{9uq_wz9@mIzmbr?g=o=R*t}AQtPdSFOLe31$;49iJW^P;{z7;R!l(p$NsT_)9Blt zDS*H5Gu$4TA^GzF{~S0AaFOTiz(jh%T!QpR%;kVXE6xKP;bm^?;$s1yMq3Ozi>myEXQa zIAe!2c2&hNV9#sp615vDAu&aPo0$Z#wy4-UoY_?Zp|0b)SS!220 zRn*RtDcz#5Kx_1FP(H0Omgl1jIbhPmbYFn6O9i`%w)yV|kS+T_z91Cf?XE;9I9OvaNqZe^O0bH)rm-JY%nS~pUpm;l zU^TtwU}pzwC?#{}je#FktO^dL84k8CIE=P9SX*#7UEyF`gCpo(2iq1LNrxP4S8x=) z;b2z`KtINg)-v~C)BO04t`F608-q6@0%M-#*EEY>F z?`u{?=u~PF?4Z#Y91840UG_|%E;Ny@&{(E<D0wR%2&cjld3S><+6rG?@+ycF=es zFbh~EFJ&O%&5CnEQ)!CE)>qCnPNOv%>$aAMPNN=;J!P#Aolg4%J7}1dt-!t|*u%y_ z{CLqc8w+kmM43j1R9Ub+l6IASC)gD#QT{mC8=CIatE<=@n&DuNM_rh4kN>JtnbBqT zhGyE726;Xln&n`N1Gk1|JJ_S~TSIf`u+oKIjouNO%MHipVehNaTSM~{LJ#9q{!Gl1 z5#D0Oc)u?&GdQ1`1XFQo0j<(yd(4@^1$3!kSJ56sqO)kfE-RRy3!P>2^cKu7h0dm* z=(3TXuZI>pWg|TYLrds4Qg(&J)+O|N#ZzN%IoO9mdDASe%2EGNXem9RvEO=r5n4u7 zv$^ab@yJ;&uYQSsZ!|`K6u8sl`(fhNuA{vg zW4o-Qq4T-k!^GaRfzk>Ku=i}Bg&Je;*+3gK#@@4mc4&;f=e@L7W9&UGbhpOXds^s_ z!ic@6h5n>5_MR-gr7`xNRyr3?1FQ>sPaAb>jJ+pE`viL`SV*Mti(+()(Hc3P#e-+IP{FQUB)L!562chKDqRvYf5LxLS7juTz9cOmO?ka)az zQ)H3Cc*GTG-`NV|QQSi##hnfkN2zUelg2pmT}t-~rh04#J>g)thIUe533K5dn;hOn zQv_2zwwsn~jC*W1wP}odY&YG_4?23DzMLKr?E0Z|qSL~c)0dWU8CzlqR*MG(V@sSF z?xVoDT*kBL-0&Wnr7+A7=Y-!+Yc%#y#q#hKbcKVh4_`^QI9N7(75zXk)uIp3YYuj6 z=!2A6&JwsqTf} z<9_%E-K{b1ha2cMjj`o#q**Ju9$Vt#@J)2BgWcr4nLh7eUivs4a)7Wo4?+bsDexNYe?3(bc^oGVBs@NCaPczPwdMNvN_%`Zsu-n3)qWunbclgtE z$icoCzMbB1um{6;P~B>q%Xh+`p>s9%P{pC}owUWlei8mG-QZwPgzuue9qhN^&(SX( z?D_EL=_LnyC44uHJl~e^R`?4v#lft|J#?X9%GUo%eH!C_xR3U0j4l5qI=F_p93-~< zmudf6g|X$oN^fb5$HN2EwvNlL3Vhw)j9(4CMKI+(-=H5j*sY-l={3RFdt#Aq(yH}b zPkGNnbgjnNdmf@sXpFt*A$mkGwK6_HhjkgxG6yKKL2=<(=G)XP*j0$1Rgv$|D#30H zyq*{y`7UkIn3)_N`5x`k^*DZhpY~~trGKA3t1*`TeY#)QJ8X`L{E!X_rabwF^qj`n zf-V`I966L7x>&S@1D>L}P51$JBXhtUO+gHbj0&3ol^Jt_pl7I63k--5}VF zw7Ozid2GyoW@3nR!9DmA{PoJRfg6_4pY5gd+3(<>d5ct z0>N&iz45ll)6}N1|EdW3pP@dDooaPNo~55TSRwKUT9hSxcogG#h}r~u%J@EZf?uH9 zHFiln4eYZUnQ{-lS;J-D6YQzr3s|YXKtEBK@e!OlEtQ=bZwB^=F8gt0d*lVGX=N^I zo_>L91yj;rpc%T1r5~X~8e{24=-f>u=|^a*#(oA}j?mQ_drq)B1yhk*v8*DrpfKfW-RYzBn?Vdl;Eo|-Y0y+ z;+!#IhC8J6T0f_+^_wVtNpcQJ&i^cY)vCnP{j)IzS;J>V|Npss*5OFph9-7%RGRH( zr`f_PjrZVX^aiy?I7h+$wl(P%qp}ib!m+z(NZQnCH@B?xPPU@dQ?E*IJ`&_wZuouZ zY0~|oty`{2vn-qcKhmPvk&-4#&(8!{lh0tkXfR*0dyr}Vk@WFfq%^rpY;sp{a82Cy zKR&mAL{E2Jw?uauTRN~tV1OmvH2>VRTdRL0eSEtOEZyS~pOnbsPP@JFAJNBM*KM&{ z@dTxh^7j8SS(EcILM>V(49K_Ch2ycMG*hPxqL`ed_l$1bz0=WtN zV0416$9{hd*Uh*>xUR!>J>I{>aNUe6gzGw7*W;K#4A;%LLb$HObv>lTaNUe6gzGw7 z*Fz@nzs3Q*I8)E*(SUfL0$7P17KXD0E)uw0;97xMf$e}puu5Ud?E?1*d;rj(pG!Ju z%!rPrIG{npj9+0^A8qh#S4B(Xlaam;>zL8TQp{>2sWCc-CSsRiF-;TtI_ff8@a}7I zAP3kRV|Yt=E8w$ua&8CBXK1@nZlK%zX}V41wt>%c)B*l)BIhpCXY|ldAghN~`Kyc$ zV(C}Q&hQUK!>gs%9wS&W&Det@X}nu7Bie#pg8!(P47kca8E-*ePwYYIuLJu8e$3b< zG`oammzI8)dBnKhxY1K*-faBVGr_zM@N~0H__v`g`^+nZ@(SU(SJHbWeS@TLkn}B* zzD3fz1YRMs_6oc~;4K0lK-=;D$Dq&`tjCdK;Lpr3{I=xR5$}9(ju&4)WZT{?Hosr2 zaX&a$p_H|{T`YFB?6BM}wI0;g+w9ryx!T}e^gTvX#burc#d^2P4$JNIo#2(8+v&$a z=1^DhF{B@l-UfJ&{|kWJYq!&*@fv;H$C?m&v*>)ea22B2w0g6djEju z)6syinD=UwE(83n=X~V+$ zWA}LviX9G$|2$=U-t!nr|26z3;5rYW*yj)QdV;x46K=~i&srbznF9Dw#dP1xLirct zPo4{X_lX^D7I>e*Pg6Gwy5eq*-LC=+*rv*MQnmjL>JWt<>zvwf}Hv@0_ z_86z*i6LnI(5UstP42Y-{=MK2VEn%VSV{i{SVeCE4kZKc3PzF-uuf>wLQ^j^O%z5x z*8iZKA^Ec;f1c!DDfw3m{FuO-1>Pa>E`eVb_<+Fg3H+hJM+H7EaGb&X8w7R={ENyl zIsb10M_VuW8xg}^0Zh`tNF&}g{seF=Jr9_nKLbuCGunvniZh%m@EplsNde@nmz-9C zTd4s#Ma1hy+DUEER(d};zhB^|1zN_n^r6^Tf!`JQJA_he3VX&%^LnuS{vIxk|_@eJUB9GyyEX0 z#r$WT^lQKiPvUf+!2JRbNd94gvucG#V4uMK0uKm0ERa%6vtQr=frkasXwFXwoF(u= zf%^p>5O`Q1jS)(Lvjko!aKFF<0uKwMu|g?umcR=I?iYAK;9-GOCzJxeK!<3QG1?f1 zAMlxE%rO=k=NapbON|d0pD-RYUNhb@=9xM3Ci717^X3oD|1f`LK5IU2zG=Q~Myz4h zNmjiz)tYZDwJxyQt)12t)(zGtt*=@STd!MQ&qc}vsOM?VA3QN{ zvv<4q)86lSf8%}L`?B|KZva1kFx)rJH_JEQceZbtFX!v^UFLhAZ=dfb-zR-{`kwIp z*;nbW@sIVN;&1d%_BZ>_^!qUX`te4Q$5jyXUj(BmirJ87!UV=t5_4}AM%56^z15V$ zb5pP9eOQ&%g%~~%XLwD;Re=8zxdw1^^utch5$k^;y;W#BBex*^)8Kxda7Yz%>dAmV!8sKZyDRwf2RJ>@0LtG3n)E09#+FHc#p=Su+iXMu z@*4QtOXN3B2aMwV4zw~57ifraCSZ;69>7t?Y`|J$E?V$3eoZC_ZqoptLj(!ZAMu^g zAofz;1DF71f{qxc0KQ~o0ADj20ADvw1$@Jp2*?L;67&}2Cb5h=h1+dr07GU2V8lEX zFlJ5!tTZPBCd{eukZMp?(NIuU(Qr`0XFyp+CxNnxQlPA&F`yhm<3Txu(x4nd6F@nH z>Onb#8bLXPnm{>(CV{e=P6K5%HG{I6rh~GYW`MGqW`eSsW`VMr=74fIe(7xn-m(;F zH(i4@+f8&U_7M-$s}wQ5V%%$f#eC5GuK7*tKdl$6A)cRkzwZ0C?}xr$_@485`go

62(tSI^{0G^4vc*P3I!kY>Fm(SqKt)(a=mIl1ktvmL#; zbF=LQpo`|UixSzwc3^Jyz_xDdW)_pn@+Y&1)21l4xb@eed8$h~(*4UPo;EOVGV)kU z+#JPEA4rCyY%`YR+j={4GigzAX?7_N>Tl!5w6xITV!mr}`$p<4w&n{RNEA2H%I(FT zTxa9F?OoZ<_EsA$S-#kKR<0{oK+)!0Ps`liLLt}Hvn1P<-JEM%wWW~Dwk>LdVjV3l z?Op9X?b!||Q*$1KRpX*k=8WTzx%**;R=$z%(mVA7a%RqKoZZ$&v%9-h9kPhgt1_U>HCw+nW!ZOazg zvt2!Ndpml1b>^}{8;6cXo4fLb++1`#Ey#8NYBzN$*{Jjd^TPIX*=dkK{K)p?XkKn( z@8-?9!kj|>5^2!N9?oWm70QCbXUv?~(gJ_cMHrfm=N8(xG0s7*y(3qU!H0~t**)-z zjlC#3tGC^SDN$^+62$=Vr6TZM-Ck@jBcEL?<~lcaY+u#hU=ofJD44{(()Zl;n>z@!d4bc!b~&8u=|h8U#~_%eo1sbEF+5{1l| zIk}}}8&4$c=FWI11#)Mi_-~BvD{`IrZ8?Ir++X&X)V6BWeu98b(tH)>Xm&?O{t~## zHswYO3i(c5A|{hyE2h!8_IyE`@`cW9kIscvbPD#;DJNEQyyE!Du}SVNh&r2T4kAfm z`^sFl(7J_|WP7$q>_Vj6jAVzps&`>1r!w=v1qskPg$a6a$;uWhR#)Xm|Np zIAf2+;EuA)6}e4%xk%!(;A-PoNw~13`JR=%-QD>D;_CcMTXPa3O3}HLHM_7GlYLhY zuUAXCn8+ZzZCN+RM<`e-vFS@WnidmDPbo83CR2RRZdggn{}bbhqtvQA>G^L_*QPwJ z%N6p}b4lJ-2#$0yCQ&vS4M6*-k-E$!tfI+$ze5_T?~WcSj^MGItPA$V?UZ$o`G zoaXelcQEG2!0=&wqq>P#uy&YOWI4Vnk7Y*=vn=I%wgAFiTNV{D(0j7*FIKlVCv&$1 zQ9LkcIS$Gd)Ob^s#PR1+kc9No7S6)5vq&wxJjL3o(4$O=Ru<{J9<2O$4M}QmL%Y4a)%(fw=p5N0yh@Eva20WM#xf+d~Q?QE(p(RT#>^JLTVgvBwy6o z-O=9Kj;!vM`IqW6WJ%vIE9eCktwKF4tf-)F3p#svB*WoYHs64iJ&kaNvax=4;0&HU zU1<3e2otdNT?AlkV=x>)nyHzulfyRVrfuzoe3zsLX|;Z`ZFIHX_CtH{>IdF;ve|LS z-i46OYW(t(^*af2lg^kqsimb=J&{WX&&^}ii0QJsw}+Nsp|mu2sl#v;r}1o_zeGs+ zVfa!`vAGn22ay6giu1F)N>#~Kd0DcmEU5}dWhdn*TjX>%Kl`x5F|rlc@hn|(I@{8v zoPTJmcq8wd{Uv14% zE8bD&sEtxcZJ{iF87`~y3fKWm0ox=L1*CJR$CP>GrKlZPH}#^l5nl|9V%LuRDeR7> zh?dL&?IzF_aG#Exo!Ix?jXVFF?Qm2jlU*e}nz{*j^{6!wcbYi3zQ@r9KR^BMS_sX9 zh#qJ~4u52R6I$DWRwM1l3J_^(U`|_c<>?Z@6w*1ocfLg0)+XAHfu5}I82sem;Bw0~ z&C^DFb5L161sUzyzAPL1ESo=|XR?s{UR+sF;`=7(ryTC(T$!c^6dS>XOO>ABw{mcP z+)o=p*@L#^gx6s8S*GgqZDJd?6L?M?oM#c-3gQ==!F@o>-j#LUfk)@cG8sAaRx31P zPiAjrncVUe-l4OnHt1BFVC>yo#=Xgw+zyQI?bHblY`0EaUC84R(MX1Pp1b$m@>1d{ z7mM$7K?||W$%9*FBP8ZU0^1W7?7Mz&LM&iFuvth`v;$1B(u9gUl(;hn3blu08)|OG z)gy*rGjekgnT1~p-OOcMG#55O7tCWzKw~c+Od~cA8zu{`oaS0=!jiO<4D=3A@er}4 z*-qL9>Q>}-f5Gq+x5YN#G4_u79pZzoP{UWK^TE^&=Ln`28}0=mj$4U~TtVa;xdF(uFA(vs)3i@rQ&*q`0L zh87rvFFdiwV%G^jm6RJW5tmQ7te;u{k#{FARKh&r@RYNj3=7{E2=b)OV~s2>ElH!k zZ8!aH*w!sW(FfhLPf zt@+fP&kfuJ!}D5*ClVEkjJ_*Z0xeDSog$1`^7P8_iwV_4sumDxvB;L)jH`g99V^O9 z#}t-L_VOu(e&u;a&2yVTr_Ja3&gR9R7(?SgQ^8RQ+X;FcQoI~*L!BmESULN7!2r+jvQJTzTjFg}%XjfoSa&0#%AHcS8-gz2wn&}FM z{~XRP)AwC>d=uKF|A&ld;oE)DB08@Z#^vsy8uf^<5@}xH@x08dOd3(@ya8p_PIz`b zuIWUrAGmSMk?xsieWmj+Pkk(R!C%Nqk>N=hM!*XYAHvBP1JgGoaj}s|`H)WZ?Ex9* z^nHv=apD8`NbiuuZX*^n@Io1#SD^^qZo?Z%M!S~HPKq?joe7-kaBnWixczeN%R z`E61P(%lZJl2@m0X?3etw*NMey0OQg&p@g;_(5w9RgzbCPLNc=o5 zW(9DI`87odTB0OLNyD#6Bx|i?LBYgw(5gz@Km!eoS$-pcE9Ui^W@47lZze`2M*937 z%QQ{c$O?cc;PqR;BYv$AYlW;pAU4t;6tyfDWW_*WngPEz1{;_r4qutESitWKSY}Mv z#?TdJED#v(4=J7k0|BlX;3_byq$m30iRG57R3r(VrG&a9L*+zT+G+Xy9>}gYPxjXY z5=}8BMe$c0Kx==ZW&(e;2mSiP2!1vx7VrCcqVLhlkQ<4n{1u710cx?GVtG45)+mlG-Ug6Z+Y9i`=_z^IR#7w;7$q&q-(njnwrj3^UD zQ8(TjQ+*WgRrNq**9vitjVMF2v}Oi%o)CZ)GSEqiyXp7CYnK?NKcw!uAR5&LQC$!X z*%ITu0aXVHRf%(iT_~h$g>-i}v?jUyIYn=qxvd%}6?VnBN0U29eG#jGooZ z>^f!u?vL?9iRC_=pv4EnJBeOr6CrjaQdp9K-!mpVf=d5E(gC;>j@%`U8klY{fj+;* z8mZ=`#k^J`&Aph8`~6YLh$_E}njDo9SsZ(e#^BQ)GR$bg?~V5gm2(S_3C{sR)aC#2 z-fDkX=mKa8`$7N}@By~~6T8Pp0Ow2Nz42a@fff7}hqOx!LZ%vjA%{Uo)Ir1xffCtK z?p$^^0m({)5B7nRa2gdx_yQ6ke*gi)LL3SpVD{aGh{Z$pWo3tYsc0qY*$(wV#4=_S z@3nm5gMvljbCQ75sYJ+w1o#+H9ymN0n=~K91JsTR6e(HTaalaoS2DP}?x#bC-DA))H@RG$I z_<(s5#dvz*1l-8)LHaHni8p2LLJCt9rXY^bW*}H;n1NBu41*h;1O-NMbVsu>!o84& zKM03kd1D3PuTW?qgT)NaWw46Dn!s0gY*;;P%HgZ~_T$VwdHRTMApC%u2>^V>%Gndi z!;dKj{qR%EgJ1vLU5~CAwf)&UKX=8)PpLgCKYG(+H|~2TcC)fby!4mfeCs!#>3i#r zrzSiZZ(08AUC%sy-lwO|dbRWC?Y)&}U-7LsKDWYu$A}&E-@In)sxRNuQr!RGlRcm!7^t}4ry7-{-qxXlW};40eqwUf#H3r5UD zpZh|lFAB0LxKfsH6ecw37_M4}syYU6N`)Zgr*YNeY6=lLU1s$dl8A7U_F*bWjO67; zVitpu*r;Z&vKZlY3EZNN(`g3v44N3!$%;f+z(;uvfPojQ#N5G{8DuC!N${wH<2T?? z636eiX#yFliB!m;-~pLPAq;DR0B|fa0O6v@6|RCu9ULhc|KOtt;=MuXqW@A9)nvdlSyYoD$AtM1 ziy{z&1}lDy2b789yzA+f|Mo+XcFYGRGzMQlIJ^1 zlYq~GJ&{5eRUqu~xVF6nJW=2Q9Esn%<4X8}G_JjzdqE-vvjZE%3|KKyXZLnp1?RdZ zr7*MB&WAJtl5)f-*p0FgUIm+pI?<=^j>?hDGHtU=1B=Nb3QH;eUM-i_+okouu&Q$0 zfN?CcfG6seyD@9HsbNGR1?FdhCc8RE)o7wgS4T>Djf@Qm*SrohLJkE|z_EVQHINd1 z;?GSikRvq47AqjQcyE(i>DxOBtjO{0!7NprLh2iC5k^MagbeQR-a$Ub}x0Ewvm^a zMFVtx4t_WiPkw$W&L^Dl?E=oK!w>yAC-G9>xhu6I-eFrDdLl&9og-CYBj-iQcg(<^EW@dp~?7e`sNLPEv$IE&iC=>ZkrJM*z%Xh9KL7a_5S#EFR#D*nuVjc z&&uEa>yJM8(72OUeC*OOuYK>DuWbA33kUZ6>?8E~SBz(uFW;X!{VNxq@~5vq@Vimd z9^3TN%nPmWeE-j%&irxrSDzbw<<(z3`I(P==$gkGF8f;hU%yi~eT>okVDKW==X&Eq z@~a>`SB`{=Yrci+HlEVwt-R}ohWGqAuz2nbTQ>iB*T$c|%`KQWeM5I4&&Mx{8!pLT z!iS`ApoGsLT^Z&ljEeA?Ee}&Vj z67EiY_JA8}nVT=n>*!d5g97R+2f3V_QDmC8$AL$soBIEy{~ik%V#J|DedV<|W)j|o z56ow}g}BxnCVWeWG4)AXh=uqb*h*>voR4oEt)xY=U)_THQv5x$WkUE(&x=QS;amEC z5sxJKTaa?c%;J3WNHPHC;WEILH;flx$C5X>7GYPB&n57uj=0t;z1LVoIlo_5o6SN% z_j*1EF$Q!hZFdjk)Fw1dXt(+|1sln*0sl5G{>_Cne(|Ta!?AfRpE0hoZrSVHF5AIO zXMdV86&a4^^H9R?x_R5ZyG+l;$mb2|#VFx{-c(j^HR|z6j#9fOVNbQmx$p!2_?{Jh zSr#1BD^lLn#y8mkl{V%48?lSaThRnrwWzlk{5MMtZfQ4OtFVTfv6YX_c4>WiUW)F* zAY36_@y$xO65AXMTurfJC + + + + System.Globalization.CultureInfo + + System.Globalization.CultureInfo + + + + + 16 + + + 16 + + + + + + + + LCID + + + Name + + + DisplayName + + + + + + + + diff --git a/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/formats/Mygciview.Format.ps1xml b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/formats/Mygciview.Format.ps1xml new file mode 100644 index 00000000..4c972c2c --- /dev/null +++ b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/formats/Mygciview.Format.ps1xml @@ -0,0 +1,65 @@ + + + + + mygciview + + System.IO.DirectoryInfo + System.IO.FileInfo + + + PSParentPath + + + + + + 7 + Left + + + + 26 + Right + + + + 26 + Right + + + + 14 + Right + + + + Left + + + + + + + + ModeWithoutHardLink + + + LastWriteTime + + + CreationTime + + + Length + + + Name + + + + + + + + diff --git a/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/modules/OtherPSModule.psm1 b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/modules/OtherPSModule.psm1 new file mode 100644 index 00000000..9e4353ba --- /dev/null +++ b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/modules/OtherPSModule.psm1 @@ -0,0 +1,19 @@ +Function Get-OtherPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .DESCRIPTION + A longer description of the function. + + .EXAMPLE + Get-OtherPSModule -Name 'World' + #> + [CmdletBinding()] + param( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/scripts/loader.ps1 b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/scripts/loader.ps1 new file mode 100644 index 00000000..29ad42f6 --- /dev/null +++ b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/scripts/loader.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------' -Verbose +Write-Verbose '--- THIS IS A LOADER ---' -Verbose +Write-Verbose '-------------------------' -Verbose diff --git a/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/types/DirectoryInfo.Types.ps1xml b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/types/DirectoryInfo.Types.ps1xml new file mode 100644 index 00000000..aef538b2 --- /dev/null +++ b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/types/DirectoryInfo.Types.ps1xml @@ -0,0 +1,21 @@ + + + + System.IO.FileInfo + + + Status + Success + + + + + System.IO.DirectoryInfo + + + Status + Success + + + + diff --git a/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/types/FileInfo.Types.ps1xml b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/types/FileInfo.Types.ps1xml new file mode 100644 index 00000000..4cfaf6b8 --- /dev/null +++ b/.github/actions/Publish-PSModule/tests/outputs/module/PSModuleTest/types/FileInfo.Types.ps1xml @@ -0,0 +1,14 @@ + + + + System.IO.FileInfo + + + Age + + ((Get-Date) - ($this.CreationTime)).Days + + + + + diff --git a/.github/actions/Resolve-PSModuleVersion/action.yml b/.github/actions/Resolve-PSModuleVersion/action.yml new file mode 100644 index 00000000..d5d5136a --- /dev/null +++ b/.github/actions/Resolve-PSModuleVersion/action.yml @@ -0,0 +1,76 @@ +name: Resolve-PSModuleVersion +description: Resolves the next module version from settings, PR labels, GitHub releases, and the PowerShell Gallery. +author: PSModule +branding: + icon: tag + color: white + +inputs: + Settings: + description: The complete settings object as a JSON string (output of Get-PSModuleSettings). + required: true + Name: + description: Name of the module. When empty, the repository name is used. + required: false + WorkingDirectory: + description: The working directory where the script will run from. + required: false + default: '.' + Debug: + description: Enable debug output. + required: false + default: 'false' + Verbose: + description: Enable verbose output. + required: false + default: 'false' + EventPath: + description: Path to the GitHub event JSON file. Defaults to the standard GitHub event path. Override for testing. + required: false + default: '' + EventJson: + description: GitHub event payload as a JSON string. When set, overrides reading from the event file. Use for testing. + required: false + default: '' + +outputs: + Version: + description: The Major.Minor.Patch portion of the resolved version. + value: ${{ steps.resolve.outputs.Version }} + Prerelease: + description: The prerelease tag, empty when not a prerelease. + value: ${{ steps.resolve.outputs.Prerelease }} + FullVersion: + description: The full version string including version prefix and prerelease tag (for example v1.4.0-alpha001). + value: ${{ steps.resolve.outputs.FullVersion }} + ReleaseType: + description: The resolved release type - Release, Prerelease, or None. + value: ${{ steps.resolve.outputs.ReleaseType }} + CreateRelease: + description: 'true when a release or prerelease should be created from this run.' + value: ${{ steps.resolve.outputs.CreateRelease }} + +runs: + using: composite + steps: + - name: Install-PSModuleHelpers + uses: ./_wf/.github/actions/Install-PSModuleHelpers + + - name: Install PSSemVer + shell: pwsh + run: | + Install-PSResource -Name PSSemVer -Repository PSGallery -TrustRepository + + - name: Resolve module version + id: resolve + shell: pwsh + working-directory: ${{ inputs.WorkingDirectory }} + env: + GH_TOKEN: ${{ github.token }} + PSMODULE_RESOLVE_PSMODULEVERSION_INPUT_Settings: ${{ inputs.Settings }} + PSMODULE_RESOLVE_PSMODULEVERSION_INPUT_Name: ${{ inputs.Name }} + PSMODULE_RESOLVE_PSMODULEVERSION_INPUT_EventJson: ${{ inputs.EventJson }} + PSMODULE_ACTION_PATH: ${{ github.action_path }} + GITHUB_EVENT_PATH: ${{ inputs.EventPath || github.event_path }} + run: | + & "$env:PSMODULE_ACTION_PATH/src/main.ps1" diff --git a/.github/actions/Resolve-PSModuleVersion/src/Resolve-PSModuleVersion.Helpers.psm1 b/.github/actions/Resolve-PSModuleVersion/src/Resolve-PSModuleVersion.Helpers.psm1 new file mode 100644 index 00000000..4935a795 --- /dev/null +++ b/.github/actions/Resolve-PSModuleVersion/src/Resolve-PSModuleVersion.Helpers.psm1 @@ -0,0 +1,675 @@ +function Split-CommaSeparatedList { + <# + .SYNOPSIS + Splits a comma-separated string into a trimmed, non-empty array. + + .EXAMPLE + Split-CommaSeparatedList -Value 'Major, Minor, Patch' + + Returns @('Major', 'Minor', 'Patch'). + #> + [CmdletBinding()] + [OutputType([string[]])] + param( + # The comma-separated string to split. + [Parameter()] + [string] $Value + ) + + ($Value -split ',') | ForEach-Object { $_.Trim() } | Where-Object { $_ } +} + +function Read-ActionInput { + <# + .SYNOPSIS + Reads and validates action inputs from environment variables. + + .DESCRIPTION + Reads the module name and settings JSON from GitHub Actions environment variables. + Falls back to the repository name when the module name input is not provided. + + .OUTPUTS + PSCustomObject with Name and SettingsJson properties. + + .EXAMPLE + $actionInput = Read-ActionInput + #> + [CmdletBinding()] + [OutputType([PSCustomObject])] + param() + + LogGroup 'Load inputs' { + $env:GITHUB_REPOSITORY_NAME = $env:GITHUB_REPOSITORY -replace '.+/' + + $name = if ([string]::IsNullOrEmpty($env:PSMODULE_RESOLVE_PSMODULEVERSION_INPUT_Name)) { + $env:GITHUB_REPOSITORY_NAME + } else { + $env:PSMODULE_RESOLVE_PSMODULEVERSION_INPUT_Name + } + Write-Host "Module name: [$name]" + + $settingsJson = $env:PSMODULE_RESOLVE_PSMODULEVERSION_INPUT_Settings + if ([string]::IsNullOrWhiteSpace($settingsJson)) { + throw 'Settings input is required.' + } + + [PSCustomObject]@{ + Name = $name + SettingsJson = $settingsJson + } + } +} + +function Get-PublishConfiguration { + <# + .SYNOPSIS + Parses the settings JSON into a publish configuration object. + + .DESCRIPTION + Extracts publish module settings including auto-patching flags, version prefix, + release type, and label classification arrays. + + .OUTPUTS + PSCustomObject with publish configuration properties. + + .EXAMPLE + $config = Get-PublishConfiguration -SettingsJson $actionInput.SettingsJson + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', + Justification = 'Parameter is used inside LogGroup script block.')] + [CmdletBinding()] + [OutputType([PSCustomObject])] + param( + # The JSON string containing the module settings. + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string] $SettingsJson + ) + + LogGroup 'Resolve configuration' { + $settings = $SettingsJson | ConvertFrom-Json + $publishModule = $settings.Publish.Module + + $config = [PSCustomObject]@{ + AutoPatching = [bool]$publishModule.AutoPatching + IncrementalPrerelease = [bool]$publishModule.IncrementalPrerelease + DatePrereleaseFormat = [string]$publishModule.DatePrereleaseFormat + VersionPrefix = [string]$publishModule.VersionPrefix + ReleaseType = [string]$publishModule.ReleaseType + IgnoreLabels = Split-CommaSeparatedList ([string]$publishModule.IgnoreLabels) + MajorLabels = Split-CommaSeparatedList ([string]$publishModule.MajorLabels) + MinorLabels = Split-CommaSeparatedList ([string]$publishModule.MinorLabels) + PatchLabels = Split-CommaSeparatedList ([string]$publishModule.PatchLabels) + } + + Write-Host '-------------------------------------------------' + Write-Host ([PSCustomObject]@{ + AutoPatching = $config.AutoPatching + IncrementalPrerelease = $config.IncrementalPrerelease + DatePrereleaseFormat = $config.DatePrereleaseFormat + VersionPrefix = $config.VersionPrefix + ReleaseType = $config.ReleaseType + IgnoreLabels = $config.IgnoreLabels -join ', ' + MajorLabels = $config.MajorLabels -join ', ' + MinorLabels = $config.MinorLabels -join ', ' + PatchLabels = $config.PatchLabels -join ', ' + } | Format-List | Out-String) + Write-Host '-------------------------------------------------' + + $config + } +} + +function Get-GitHubPullRequest { + <# + .SYNOPSIS + Reads and validates the GitHub pull request from the event payload. + + .DESCRIPTION + Loads the GitHub event from the input override or from the event path file. On a + pull_request event it returns the pull request head ref and labels. On any other + event (for example workflow_dispatch or schedule) there is no pull request, so it + returns $null and the caller resolves the current version without a version bump. + + .OUTPUTS + PSCustomObject with HeadRef, Labels, and IsOpen properties for a pull_request event, or + $null when the event has no pull request (non-PR events). IsOpen is $true only while the + pull request is open (under review); it is $false once the PR is merged or closed. + + .EXAMPLE + $pullRequest = Get-GitHubPullRequest + #> + [CmdletBinding()] + [OutputType([PSCustomObject])] + param() + + LogGroup 'Event information' { + $eventJsonInput = $env:PSMODULE_RESOLVE_PSMODULEVERSION_INPUT_EventJson + $githubEvent = if (-not [string]::IsNullOrWhiteSpace($eventJsonInput)) { + $eventJsonInput | ConvertFrom-Json + } else { + Get-Content $env:GITHUB_EVENT_PATH | ConvertFrom-Json + } + + $pr = $githubEvent.pull_request + if (-not $pr) { + Write-Host 'GitHub event does not contain pull_request data (non-PR event, e.g. workflow_dispatch or schedule).' + Write-Host 'No pull request context is available; the caller keeps the current version without a bump.' + return $null + } + + $labels = @() + $labels += $pr.labels.name + + # A pull request is OPEN while it is under review (opened/reopened/synchronize/labeled). + # Once it is merged or closed its state becomes 'closed'. Only an open pull request may + # resolve to a prerelease; a merged/closed PR - like a push to the default branch - never + # does. Default to not-open when state is missing so we never accidentally prerelease. + $isOpen = $pr.state -eq 'open' + + Write-Host '-------------------------------------------------' + Write-Host ([PSCustomObject]@{ + PRHeadRef = $pr.head.ref + State = $pr.state + IsOpen = $isOpen + Labels = $labels -join ', ' + } | Format-List | Out-String) + Write-Host '-------------------------------------------------' + + [PSCustomObject]@{ + HeadRef = $pr.head.ref + Labels = $labels + IsOpen = $isOpen + } + } +} + +function Resolve-ReleaseDecision { + <# + .SYNOPSIS + Determines whether to publish a release and what kind of version bump to apply. + + .DESCRIPTION + Evaluates the PR labels against the configured label categories and release type + to produce a complete release decision. A prerelease - whether a published prerelease or + a non-published preview - is only ever resolved for an OPEN pull request, so the artifact + built during review can never masquerade as a stable release before the merge decision is + made. Once a PR is merged or closed (and likewise for a push to the default branch, which + the workflow treats the same as a merged PR) the outcome is final: a full release, or the + current version unchanged - never a prerelease. + + .OUTPUTS + PSCustomObject with ShouldPublish, CreateRelease, CreatePrerelease, MajorRelease, + MinorRelease, PatchRelease, HasVersionBump, and PrereleaseName properties. + + .EXAMPLE + $decision = Resolve-ReleaseDecision -Configuration $config -PullRequest $pullRequest + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', + Justification = 'Parameter is used inside LogGroup script block.')] + [CmdletBinding()] + [OutputType([PSCustomObject])] + param( + # The publish configuration object. + [Parameter(Mandatory)] + [PSCustomObject] $Configuration, + + # The pull request data object. + [Parameter(Mandatory)] + [PSCustomObject] $PullRequest + ) + + LogGroup 'Determine release configuration' { + $prereleaseName = $PullRequest.HeadRef -replace '[^a-zA-Z0-9]' + $labels = $PullRequest.Labels + $releaseType = $Configuration.ReleaseType + $isOpenPullRequest = [bool]$PullRequest.IsOpen + + $validReleaseTypes = @('Release', 'Prerelease', 'None') + if ([string]::IsNullOrWhiteSpace($releaseType)) { + throw "Settings.Publish.Module.ReleaseType is required. Valid values are: $($validReleaseTypes -join ', ')" + } + if ($releaseType -notin $validReleaseTypes) { + throw "Invalid ReleaseType: [$releaseType]. Valid values are: $($validReleaseTypes -join ', ')" + } + + $ignoreRelease = ($labels | Where-Object { $Configuration.IgnoreLabels -contains $_ }).Count -gt 0 + + # Always evaluate the version-bump labels so the resolved version reflects what WOULD be + # created, regardless of whether this run publishes. ReleaseType (and the prerelease label + # that drives it) only controls whether and how we publish - never the version increment. + $majorRelease = ($labels | Where-Object { $Configuration.MajorLabels -contains $_ }).Count -gt 0 + $minorRelease = ($labels | Where-Object { $Configuration.MinorLabels -contains $_ }).Count -gt 0 -and -not $majorRelease + $patchRelease = ( + (($labels | Where-Object { $Configuration.PatchLabels -contains $_ }).Count -gt 0) -or $Configuration.AutoPatching + ) -and -not $majorRelease -and -not $minorRelease + $hasVersionBump = $majorRelease -or $minorRelease -or $patchRelease + + # A prerelease - whether a published prerelease or a non-published preview - only makes + # sense while a pull request is OPEN. It lets the artifact built during review carry a + # prerelease tag so it can never be mistaken for a stable release before the merge decision + # is made. Once the change lands on the default branch the outcome is final: a merged pull + # request publishes a full release (or, when nothing warrants one, nothing at all), and a + # push to the default branch is treated the same as a merged pull request. A merge or push + # therefore never resolves to a prerelease. + if ($isOpenPullRequest) { + # Open pull request: always carry a prerelease tag. ReleaseType 'Prerelease' (the + # prerelease label) publishes it; otherwise it is a non-published preview. An ignore + # label only suppresses publishing - the reviewed artifact still stays a prerelease. + $createRelease = $false + $createPrerelease = $true + $shouldPublish = ($releaseType -eq 'Prerelease') -and -not $ignoreRelease + if (-not $hasVersionBump) { + Write-Host 'No version bump label and AutoPatching disabled; previewing a patch version.' + $patchRelease = $true + $hasVersionBump = $true + } + } else { + # Merged/closed pull request or a push to the default branch: never a prerelease. + $createPrerelease = $false + $createRelease = ($releaseType -eq 'Release') -and -not $ignoreRelease -and $hasVersionBump + $shouldPublish = $createRelease + if (-not $createRelease) { + Write-Host 'No open pull request and nothing to release; keeping the current version.' + $majorRelease = $false + $minorRelease = $false + $patchRelease = $false + $hasVersionBump = $false + } + } + + Write-Host '-------------------------------------------------' + Write-Host ([PSCustomObject]@{ + ReleaseType = $releaseType + IsOpenPullRequest = $isOpenPullRequest + ShouldPublish = $shouldPublish + CreateRelease = $createRelease + CreatePrerelease = $createPrerelease + Major = $majorRelease + Minor = $minorRelease + Patch = $patchRelease + } | Format-List | Out-String) + Write-Host '-------------------------------------------------' + + [PSCustomObject]@{ + ShouldPublish = $shouldPublish + CreateRelease = $createRelease + CreatePrerelease = $createPrerelease + MajorRelease = $majorRelease + MinorRelease = $minorRelease + PatchRelease = $patchRelease + HasVersionBump = $hasVersionBump + PrereleaseName = $prereleaseName + } + } +} + +function Get-GitHubRelease { + <# + .SYNOPSIS + Retrieves all releases from the current GitHub repository. + + .OUTPUTS + Array of release objects. + + .EXAMPLE + $releases = Get-GitHubRelease + #> + [CmdletBinding()] + [OutputType([array])] + param() + + LogGroup 'Get releases - GitHub' { + $releasesJson = gh release list --json 'createdAt,isDraft,isLatest,isPrerelease,name,publishedAt,tagName' + if ($LASTEXITCODE -ne 0) { + Write-Error 'Failed to list releases for the repo.' + exit $LASTEXITCODE + } + $releases = $releasesJson | ConvertFrom-Json + + Write-Host '-------------------------------------------------' + Write-Host ($releases | Select-Object -Property name, isPrerelease, isLatest, publishedAt | + Format-Table | Out-String) + Write-Host '-------------------------------------------------' + + $releases + } +} + +function Get-LatestGitHubVersion { + <# + .SYNOPSIS + Extracts the latest stable version from a GitHub releases list. + + .OUTPUTS + PSSemVer representing the latest GitHub release version. + + .EXAMPLE + $ghVersion = Get-LatestGitHubVersion -Releases $releases + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', + Justification = 'Parameter is used inside LogGroup script block.')] + [CmdletBinding()] + [OutputType([object])] + param( + # The GitHub releases array to search. + [Parameter(Mandatory)] + [array] $Releases + ) + + LogGroup 'Get latest version - GitHub' { + $latestRelease = $Releases | Where-Object { $_.isLatest -eq $true } + $tagName = [string]$latestRelease.tagName + + $version = if (-not [string]::IsNullOrEmpty($tagName)) { + New-PSSemVer -Version $tagName + } else { + Write-Warning "Could not find the latest GitHub release. Using '0.0.0'." + New-PSSemVer -Version '0.0.0' + } + + Write-Host "GitHub version: [$($version.ToString())]" + $version + } +} + +function Get-LatestPSGalleryVersion { + <# + .SYNOPSIS + Finds the latest stable version of a module in the PowerShell Gallery. + + .DESCRIPTION + Queries the PowerShell Gallery for the latest published version of the module. + Retries up to five times with a ten-second delay between attempts. + + .OUTPUTS + PSSemVer representing the latest PSGallery version. + + .EXAMPLE + $psGalleryVersion = Get-LatestPSGalleryVersion -ModuleName 'MyModule' + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', + Justification = 'Parameter is used inside LogGroup script block.')] + [CmdletBinding()] + [OutputType([object])] + param( + # The name of the module to find in the PowerShell Gallery. + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string] $ModuleName + ) + + LogGroup 'Get latest version - PSGallery' { + $retryCount = 5 + $retryDelaySeconds = 10 + $latest = $null + + for ($i = 1; $i -le $retryCount; $i++) { + try { + Write-Host "Finding module [$ModuleName] in the PowerShell Gallery." + $latest = Find-PSResource -Name $ModuleName -Repository PSGallery -Verbose:$false + Write-Host ($latest | Format-Table | Out-String) + break + } catch { + if ($i -eq $retryCount) { + Write-Warning "Failed to find the module [$ModuleName] in the PowerShell Gallery." + Write-Warning $_.Exception.Message + } + Start-Sleep -Seconds $retryDelaySeconds + } + } + + $version = if ($latest.Version) { + New-PSSemVer -Version ($latest.Version).ToString() + } else { + Write-Warning "Could not find module online. Using '0.0.0'." + New-PSSemVer -Version '0.0.0' + } + + Write-Host "PSGallery version: [$($version.ToString())]" + $version + } +} + +function Get-LatestPublishedVersion { + <# + .SYNOPSIS + Returns the highest version between GitHub and the PowerShell Gallery. + + .OUTPUTS + PSSemVer representing the highest known published version. + + .EXAMPLE + $latestVersion = Get-LatestPublishedVersion -GitHubVersion $ghVersion -PSGalleryVersion $psGalleryVersion + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', + Justification = 'Parameter is used inside LogGroup script block.')] + [CmdletBinding()] + [OutputType([object])] + param( + # The latest version found in GitHub releases. + [Parameter(Mandatory)] + [object] $GitHubVersion, + + # The latest version found in the PowerShell Gallery. + [Parameter(Mandatory)] + [object] $PSGalleryVersion + ) + + LogGroup 'Latest version' { + $latestVersion = New-PSSemVer -Version ( + $PSGalleryVersion, $GitHubVersion | Sort-Object -Descending | Select-Object -First 1 + ) + Write-Host "Latest version: [$($latestVersion.ToString())]" + $latestVersion + } +} + +function Get-NextPrereleaseNumber { + <# + .SYNOPSIS + Calculates the next incremental prerelease number across GitHub and PSGallery. + + .DESCRIPTION + Queries both GitHub releases and the PowerShell Gallery for existing prereleases + matching the base version and prerelease name, then returns the next number + zero-padded to three digits. + + .OUTPUTS + String. A zero-padded three-digit number (e.g. '001'). + + .EXAMPLE + $number = Get-NextPrereleaseNumber -ModuleName 'MyModule' -BaseVersion '1.2.3' -PrereleaseName 'mybranch' -Releases $releases + #> + [CmdletBinding()] + [OutputType([string])] + param( + # The module name to query in the PowerShell Gallery. + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string] $ModuleName, + + # The base version string without prerelease (e.g. '1.2.3'). + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string] $BaseVersion, + + # The sanitized prerelease name derived from the branch name. + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string] $PrereleaseName, + + # The GitHub releases list. + [Parameter(Mandatory)] + [array] $Releases + ) + + $params = @{ + Name = $ModuleName + Version = '*' + Prerelease = $true + Repository = 'PSGallery' + Verbose = $false + ErrorAction = 'SilentlyContinue' + } + $matchingPSGalleryPrereleases = Find-PSResource @params | + Where-Object { "$($_.Version.Major).$($_.Version.Minor).$($_.Version.Build)" -eq $BaseVersion } | + Where-Object { $_.Prerelease -like "$PrereleaseName*" } + + $latestPSGalleryNumber = $matchingPSGalleryPrereleases.Prerelease | ForEach-Object { + [long]($_ -replace $PrereleaseName) + } | Sort-Object | Select-Object -Last 1 + Write-Host "PSGallery prerelease: [$latestPSGalleryNumber]" + + $matchingGHPrereleases = $Releases | + Where-Object { $_.tagName -like "*$BaseVersion*" } | + Where-Object { $_.tagName -like "*$PrereleaseName*" } + + $latestGHNumber = $matchingGHPrereleases.tagName | ForEach-Object { + $tagWithoutDots = $_ -replace '\.' + [long](($tagWithoutDots -split $PrereleaseName, 2)[-1]) + } | Sort-Object | Select-Object -Last 1 + Write-Host "GitHub prerelease: [$latestGHNumber]" + + if ($null -eq $latestPSGalleryNumber) { $latestPSGalleryNumber = 0 } + if ($null -eq $latestGHNumber) { $latestGHNumber = 0 } + + $nextNumber = [Math]::Max($latestPSGalleryNumber, $latestGHNumber) + 1 + ([string]$nextNumber).PadLeft(3, '0') +} + +function Get-NextModuleVersion { + <# + .SYNOPSIS + Calculates the next module version based on the release decision. + + .DESCRIPTION + Increments the current version according to the version bump type (major, minor, or patch), + then optionally appends a prerelease suffix with support for date-based and incremental numbering. + + .OUTPUTS + PSSemVer representing the resolved next version. + + .EXAMPLE + $newVersion = Get-NextModuleVersion -LatestVersion $latestVersion -Decision $decision ` + -Configuration $config -ModuleName 'MyModule' -Releases $releases + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', + Justification = 'Parameter is used inside LogGroup script block.')] + [CmdletBinding()] + [OutputType([object])] + param( + # The current latest published version. + [Parameter(Mandatory)] + [object] $LatestVersion, + + # The release decision object. + [Parameter(Mandatory)] + [PSCustomObject] $Decision, + + # The publish configuration object. + [Parameter(Mandatory)] + [PSCustomObject] $Configuration, + + # The name of the module. + [Parameter(Mandatory)] + [ValidateNotNullOrEmpty()] + [string] $ModuleName, + + # The GitHub releases list, used for incremental prerelease calculation. + [Parameter(Mandatory)] + [array] $Releases + ) + + LogGroup 'Calculate new version' { + $newVersion = New-PSSemVer -Version $LatestVersion + $newVersion.Prefix = $Configuration.VersionPrefix + + if ($Decision.MajorRelease) { + Write-Host 'Incrementing major version.' + $newVersion.BumpMajor() + } elseif ($Decision.MinorRelease) { + Write-Host 'Incrementing minor version.' + $newVersion.BumpMinor() + } elseif ($Decision.PatchRelease) { + Write-Host 'Incrementing patch version.' + $newVersion.BumpPatch() + } + Write-Host "Partial new version: [$newVersion]" + + if ($Decision.CreatePrerelease -and $Decision.HasVersionBump) { + $prereleaseName = $Decision.PrereleaseName + Write-Host "Adding a prerelease tag using the branch name [$prereleaseName]." + $newVersion.Prerelease = $prereleaseName + + if (-not [string]::IsNullOrEmpty($Configuration.DatePrereleaseFormat)) { + Write-Host "Using date-based prerelease format: [$($Configuration.DatePrereleaseFormat)]." + $newVersion.Prerelease += "$(Get-Date -Format $Configuration.DatePrereleaseFormat)" + } + + if ($Configuration.IncrementalPrerelease -or -not $Decision.ShouldPublish) { + $baseVersionString = "$($newVersion.Major).$($newVersion.Minor).$($newVersion.Patch)" + $params = @{ + ModuleName = $ModuleName + BaseVersion = $baseVersionString + PrereleaseName = $prereleaseName + Releases = $Releases + } + $newVersion.Prerelease += Get-NextPrereleaseNumber @params + } + } + + Write-Host "New version: [$($newVersion.ToString())]" + $newVersion + } +} + +function Write-ActionOutput { + <# + .SYNOPSIS + Emits the resolved version and release type as GitHub Actions step outputs. + + .EXAMPLE + Write-ActionOutput -Decision $decision -NewVersion $newVersion + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', + Justification = 'Parameter is used inside LogGroup script block.')] + [CmdletBinding()] + param( + # The release decision object. + [Parameter(Mandatory)] + [PSCustomObject] $Decision, + + # The resolved next version. + [Parameter(Mandatory)] + [object] $NewVersion + ) + + LogGroup 'Emit outputs' { + $versionString = "$($NewVersion.Major).$($NewVersion.Minor).$($NewVersion.Patch)" + $prereleaseString = [string]$NewVersion.Prerelease + $fullVersionString = $NewVersion.ToString() + + $resolvedReleaseType = if ($Decision.ShouldPublish) { + if ($Decision.CreateRelease) { 'Release' } else { 'Prerelease' } + } else { + 'None' + } + + Add-Content -Path $env:GITHUB_OUTPUT -Value "Version=$versionString" + Add-Content -Path $env:GITHUB_OUTPUT -Value "Prerelease=$prereleaseString" + Add-Content -Path $env:GITHUB_OUTPUT -Value "FullVersion=$fullVersionString" + Add-Content -Path $env:GITHUB_OUTPUT -Value "ReleaseType=$resolvedReleaseType" + Add-Content -Path $env:GITHUB_OUTPUT -Value "CreateRelease=$($Decision.ShouldPublish.ToString().ToLower())" + + Write-Host '-------------------------------------------------' + Write-Host ([PSCustomObject]@{ + Version = $versionString + Prerelease = $prereleaseString + FullVersion = $fullVersionString + ReleaseType = $resolvedReleaseType + CreateRelease = $Decision.ShouldPublish + } | Format-List | Out-String) + Write-Host '-------------------------------------------------' + } +} diff --git a/.github/actions/Resolve-PSModuleVersion/src/main.ps1 b/.github/actions/Resolve-PSModuleVersion/src/main.ps1 new file mode 100644 index 00000000..2883767f --- /dev/null +++ b/.github/actions/Resolve-PSModuleVersion/src/main.ps1 @@ -0,0 +1,45 @@ +[CmdletBinding()] +param() + +$PSStyle.OutputRendering = 'Ansi' + +Import-Module -Name 'Helpers' -Force +Import-Module -Name "$PSScriptRoot/Resolve-PSModuleVersion.Helpers.psm1" -Force + +$actionInput = Read-ActionInput +$config = Get-PublishConfiguration -SettingsJson $actionInput.SettingsJson +$pullRequest = Get-GitHubPullRequest + +$decision = if ($null -eq $pullRequest) { + # Non-PR event (for example workflow_dispatch or schedule): there are no pull request + # labels to determine a version bump, so keep the current published version and publish + # nothing. For a module that has never been released this floors at 0.0.0. + [PSCustomObject]@{ + ShouldPublish = $false + CreateRelease = $false + CreatePrerelease = $false + MajorRelease = $false + MinorRelease = $false + PatchRelease = $false + HasVersionBump = $false + PrereleaseName = '' + } +} else { + Resolve-ReleaseDecision -Configuration $config -PullRequest $pullRequest +} + +$releases = Get-GitHubRelease +$ghVersion = Get-LatestGitHubVersion -Releases $releases +$psGalleryVersion = Get-LatestPSGalleryVersion -ModuleName $actionInput.Name +$latestVersion = Get-LatestPublishedVersion -GitHubVersion $ghVersion -PSGalleryVersion $psGalleryVersion + +$params = @{ + LatestVersion = $latestVersion + Decision = $decision + Configuration = $config + ModuleName = $actionInput.Name + Releases = $releases +} +$newVersion = Get-NextModuleVersion @params + +Write-ActionOutput -Decision $decision -NewVersion $newVersion diff --git a/.github/actions/Resolve-PSModuleVersion/tests/Resolve-PSModuleVersion.Helpers.Tests.Data.psd1 b/.github/actions/Resolve-PSModuleVersion/tests/Resolve-PSModuleVersion.Helpers.Tests.Data.psd1 new file mode 100644 index 00000000..0b514d8e --- /dev/null +++ b/.github/actions/Resolve-PSModuleVersion/tests/Resolve-PSModuleVersion.Helpers.Tests.Data.psd1 @@ -0,0 +1,598 @@ +@{ + ReleaseDecision = @( + @{ + Name = 'Merged PR with a patch label publishes a stable release' + ReleaseType = 'Release' + AutoPatching = $false + IsOpen = $false + HeadRef = 'feat/test-patch' + Labels = @('patch') + Expected = @{ + ShouldPublish = $true + CreateRelease = $true + CreatePrerelease = $false + MajorRelease = $false + MinorRelease = $false + PatchRelease = $true + HasVersionBump = $true + PrereleaseName = 'feattestpatch' + } + } + @{ + Name = 'Merged PR with a minor label publishes a stable release' + ReleaseType = 'Release' + AutoPatching = $false + IsOpen = $false + HeadRef = 'feat/test-minor' + Labels = @('minor') + Expected = @{ + ShouldPublish = $true + CreateRelease = $true + CreatePrerelease = $false + MajorRelease = $false + MinorRelease = $true + PatchRelease = $false + HasVersionBump = $true + PrereleaseName = 'feattestminor' + } + } + @{ + Name = 'Merged PR with a major label publishes a stable release' + ReleaseType = 'Release' + AutoPatching = $false + IsOpen = $false + HeadRef = 'feat/test-major' + Labels = @('major') + Expected = @{ + ShouldPublish = $true + CreateRelease = $true + CreatePrerelease = $false + MajorRelease = $true + MinorRelease = $false + PatchRelease = $false + HasVersionBump = $true + PrereleaseName = 'feattestmajor' + } + } + @{ + Name = 'Merged PR with AutoPatching and no label publishes a stable release' + ReleaseType = 'Release' + AutoPatching = $true + IsOpen = $false + HeadRef = 'feat/test-autopatch' + Labels = @() + Expected = @{ + ShouldPublish = $true + CreateRelease = $true + CreatePrerelease = $false + MajorRelease = $false + MinorRelease = $false + PatchRelease = $true + HasVersionBump = $true + PrereleaseName = 'feattestautopatch' + } + } + @{ + Name = 'Merged PR with an ignore label keeps the current version' + ReleaseType = 'Release' + AutoPatching = $false + IsOpen = $false + HeadRef = 'feat/test-ignore' + Labels = @('patch', 'skip-release') + Expected = @{ + ShouldPublish = $false + CreateRelease = $false + CreatePrerelease = $false + MajorRelease = $false + MinorRelease = $false + PatchRelease = $false + HasVersionBump = $false + PrereleaseName = 'feattestignore' + } + } + @{ + Name = 'Merged PR with ReleaseType None keeps the current version' + ReleaseType = 'None' + AutoPatching = $true + IsOpen = $false + HeadRef = 'auto-update-20260712' + Labels = @('patch') + Expected = @{ + ShouldPublish = $false + CreateRelease = $false + CreatePrerelease = $false + MajorRelease = $false + MinorRelease = $false + PatchRelease = $false + HasVersionBump = $false + PrereleaseName = 'autoupdate20260712' + } + } + @{ + Name = 'Open PR with ReleaseType None previews a patch prerelease' + ReleaseType = 'None' + AutoPatching = $false + IsOpen = $true + HeadRef = 'feat/test-none' + Labels = @('patch') + Expected = @{ + ShouldPublish = $false + CreateRelease = $false + CreatePrerelease = $true + MajorRelease = $false + MinorRelease = $false + PatchRelease = $true + HasVersionBump = $true + PrereleaseName = 'feattestnone' + } + } + @{ + Name = 'Open PR with ReleaseType None previews a minor prerelease' + ReleaseType = 'None' + AutoPatching = $false + IsOpen = $true + HeadRef = 'feat/none-minor' + Labels = @('minor') + Expected = @{ + ShouldPublish = $false + CreateRelease = $false + CreatePrerelease = $true + MajorRelease = $false + MinorRelease = $true + PatchRelease = $false + HasVersionBump = $true + PrereleaseName = 'featnoneminor' + } + } + @{ + Name = 'Open PR with ReleaseType None previews a major prerelease' + ReleaseType = 'None' + AutoPatching = $false + IsOpen = $true + HeadRef = 'feat/none-major' + Labels = @('major') + Expected = @{ + ShouldPublish = $false + CreateRelease = $false + CreatePrerelease = $true + MajorRelease = $true + MinorRelease = $false + PatchRelease = $false + HasVersionBump = $true + PrereleaseName = 'featnonemajor' + } + } + @{ + Name = 'Open PR with ReleaseType Prerelease publishes a prerelease' + ReleaseType = 'Prerelease' + AutoPatching = $false + IsOpen = $true + HeadRef = 'feat/add-prerelease-support' + Labels = @('minor') + Expected = @{ + ShouldPublish = $true + CreateRelease = $false + CreatePrerelease = $true + MajorRelease = $false + MinorRelease = $true + PatchRelease = $false + HasVersionBump = $true + PrereleaseName = 'feataddprereleasesupport' + } + } + @{ + Name = 'Open PR with an ignore label still previews a prerelease' + ReleaseType = 'None' + AutoPatching = $false + IsOpen = $true + HeadRef = 'feat/preview-with-ignore' + Labels = @('patch', 'skip-release') + Expected = @{ + ShouldPublish = $false + CreateRelease = $false + CreatePrerelease = $true + MajorRelease = $false + MinorRelease = $false + PatchRelease = $true + HasVersionBump = $true + PrereleaseName = 'featpreviewwithignore' + } + } + @{ + Name = 'Merged PR with no bump label and no AutoPatching keeps the current version' + ReleaseType = 'Release' + AutoPatching = $false + IsOpen = $false + HeadRef = 'feat/no-label' + Labels = @() + Expected = @{ + ShouldPublish = $false + CreateRelease = $false + CreatePrerelease = $false + MajorRelease = $false + MinorRelease = $false + PatchRelease = $false + HasVersionBump = $false + PrereleaseName = 'featnolabel' + } + } + ) + + NextModuleVersion = @( + @{ + Name = 'Patch bump - Release' + LatestVersion = '1.0.1' + VersionPrefix = 'v' + IncrementalPrerelease = $false + DatePrereleaseFormat = '' + ExpectedVersion = '1.0.2' + ExpectedPrerelease = '' + ExpectedPrefix = 'v' + Decision = @{ + ShouldPublish = $true + CreateRelease = $true + CreatePrerelease = $false + MajorRelease = $false + MinorRelease = $false + PatchRelease = $true + HasVersionBump = $true + PrereleaseName = 'feattestpatch' + } + } + @{ + Name = 'Minor bump - Release' + LatestVersion = '1.0.1' + VersionPrefix = 'v' + IncrementalPrerelease = $false + DatePrereleaseFormat = '' + ExpectedVersion = '1.1.0' + ExpectedPrerelease = '' + ExpectedPrefix = 'v' + Decision = @{ + ShouldPublish = $true + CreateRelease = $true + CreatePrerelease = $false + MajorRelease = $false + MinorRelease = $true + PatchRelease = $false + HasVersionBump = $true + PrereleaseName = 'feattestminor' + } + } + @{ + Name = 'Major bump - Release' + LatestVersion = '1.2.3' + VersionPrefix = 'v' + IncrementalPrerelease = $false + DatePrereleaseFormat = '' + ExpectedVersion = '2.0.0' + ExpectedPrerelease = '' + ExpectedPrefix = 'v' + Decision = @{ + ShouldPublish = $true + CreateRelease = $true + CreatePrerelease = $false + MajorRelease = $true + MinorRelease = $false + PatchRelease = $false + HasVersionBump = $true + PrereleaseName = 'feattestmajor' + } + } + @{ + Name = 'ReleaseType None - prerelease with incremental counter' + LatestVersion = '1.0.1' + VersionPrefix = 'v' + IncrementalPrerelease = $false + DatePrereleaseFormat = '' + ExpectedVersion = '1.0.2' + ExpectedPrerelease = 'feattestnone001' + ExpectedPrefix = 'v' + Decision = @{ + ShouldPublish = $false + CreateRelease = $false + CreatePrerelease = $true + MajorRelease = $false + MinorRelease = $false + PatchRelease = $true + HasVersionBump = $true + PrereleaseName = 'feattestnone' + } + } + @{ + Name = 'Prerelease type with IncrementalPrerelease' + LatestVersion = '1.0.1' + VersionPrefix = 'v' + IncrementalPrerelease = $true + DatePrereleaseFormat = '' + ExpectedVersion = '1.1.0' + ExpectedPrerelease = 'feataddprereleasesupport001' + ExpectedPrefix = 'v' + Decision = @{ + ShouldPublish = $true + CreateRelease = $false + CreatePrerelease = $true + MajorRelease = $false + MinorRelease = $true + PatchRelease = $false + HasVersionBump = $true + PrereleaseName = 'feataddprereleasesupport' + } + } + @{ + Name = 'Ignore label falls back to prerelease with counter' + LatestVersion = '1.0.1' + VersionPrefix = 'v' + IncrementalPrerelease = $false + DatePrereleaseFormat = '' + ExpectedVersion = '1.0.2' + ExpectedPrerelease = 'feattestignore001' + ExpectedPrefix = 'v' + Decision = @{ + ShouldPublish = $false + CreateRelease = $true + CreatePrerelease = $true + MajorRelease = $false + MinorRelease = $false + PatchRelease = $true + HasVersionBump = $true + PrereleaseName = 'feattestignore' + } + } + @{ + Name = 'No version prefix' + LatestVersion = '2.0.0' + VersionPrefix = '' + IncrementalPrerelease = $false + DatePrereleaseFormat = '' + ExpectedVersion = '2.0.1' + ExpectedPrerelease = '' + ExpectedPrefix = '' + Decision = @{ + ShouldPublish = $true + CreateRelease = $true + CreatePrerelease = $false + MajorRelease = $false + MinorRelease = $false + PatchRelease = $true + HasVersionBump = $true + PrereleaseName = 'main' + } + } + @{ + Name = 'AutoPatch - Release with no label' + LatestVersion = '1.0.1' + VersionPrefix = 'v' + IncrementalPrerelease = $false + DatePrereleaseFormat = '' + ExpectedVersion = '1.0.2' + ExpectedPrerelease = '' + ExpectedPrefix = 'v' + Decision = @{ + ShouldPublish = $true + CreateRelease = $true + CreatePrerelease = $false + MajorRelease = $false + MinorRelease = $false + PatchRelease = $true + HasVersionBump = $true + PrereleaseName = 'feattestautopatch' + } + } + @{ + Name = 'Prerelease without IncrementalPrerelease but ShouldPublish true' + LatestVersion = '1.0.0' + VersionPrefix = 'v' + IncrementalPrerelease = $false + DatePrereleaseFormat = '' + ExpectedVersion = '1.0.1' + ExpectedPrerelease = 'dev' + ExpectedPrefix = 'v' + Decision = @{ + ShouldPublish = $true + CreateRelease = $false + CreatePrerelease = $true + MajorRelease = $false + MinorRelease = $false + PatchRelease = $true + HasVersionBump = $true + PrereleaseName = 'dev' + } + } + ) + + EndToEnd = @( + @{ + Name = 'Merged PR patch bump produces stable release version' + LatestVersion = '1.0.1' + ReleaseType = 'Release' + AutoPatching = $false + IsOpen = $false + IncrementalPrerelease = $false + VersionPrefix = 'v' + HeadRef = 'feat/test-patch' + Labels = @('patch') + ExpectedShouldPublish = $true + ExpectedReleaseType = 'Release' + ExpectedVersion = '1.0.2' + ExpectedPrerelease = '' + ExpectedFullVersion = 'v1.0.2' + } + @{ + Name = 'Merged PR minor bump produces stable release version' + LatestVersion = '1.0.1' + ReleaseType = 'Release' + AutoPatching = $false + IsOpen = $false + IncrementalPrerelease = $false + VersionPrefix = 'v' + HeadRef = 'feat/test-minor' + Labels = @('minor') + ExpectedShouldPublish = $true + ExpectedReleaseType = 'Release' + ExpectedVersion = '1.1.0' + ExpectedPrerelease = '' + ExpectedFullVersion = 'v1.1.0' + } + @{ + Name = 'Merged PR major bump produces stable release version' + LatestVersion = '1.0.1' + ReleaseType = 'Release' + AutoPatching = $false + IsOpen = $false + IncrementalPrerelease = $false + VersionPrefix = 'v' + HeadRef = 'feat/test-major' + Labels = @('major') + ExpectedShouldPublish = $true + ExpectedReleaseType = 'Release' + ExpectedVersion = '2.0.0' + ExpectedPrerelease = '' + ExpectedFullVersion = 'v2.0.0' + } + @{ + Name = 'Merged PR auto-patch with no label produces stable release version' + LatestVersion = '1.0.1' + ReleaseType = 'Release' + AutoPatching = $true + IsOpen = $false + IncrementalPrerelease = $false + VersionPrefix = 'v' + HeadRef = 'feat/test-autopatch' + Labels = @() + ExpectedShouldPublish = $true + ExpectedReleaseType = 'Release' + ExpectedVersion = '1.0.2' + ExpectedPrerelease = '' + ExpectedFullVersion = 'v1.0.2' + } + @{ + Name = 'Merged PR with an ignore label keeps the current version' + LatestVersion = '1.0.1' + ReleaseType = 'Release' + AutoPatching = $false + IsOpen = $false + IncrementalPrerelease = $false + VersionPrefix = 'v' + HeadRef = 'feat/test-ignore' + Labels = @('patch', 'skip-release') + ExpectedShouldPublish = $false + ExpectedReleaseType = 'None' + ExpectedVersion = '1.0.1' + ExpectedPrerelease = '' + ExpectedFullVersion = 'v1.0.1' + } + @{ + Name = 'Merged PR with ReleaseType None keeps the current version' + LatestVersion = '1.0.1' + ReleaseType = 'None' + AutoPatching = $true + IsOpen = $false + IncrementalPrerelease = $false + VersionPrefix = 'v' + HeadRef = 'auto-update-20260712' + Labels = @('patch') + ExpectedShouldPublish = $false + ExpectedReleaseType = 'None' + ExpectedVersion = '1.0.1' + ExpectedPrerelease = '' + ExpectedFullVersion = 'v1.0.1' + } + @{ + Name = 'Open PR with ReleaseType None previews a patch prerelease' + LatestVersion = '1.0.1' + ReleaseType = 'None' + AutoPatching = $false + IsOpen = $true + IncrementalPrerelease = $false + VersionPrefix = 'v' + HeadRef = 'feat/test-none' + Labels = @('patch') + ExpectedShouldPublish = $false + ExpectedReleaseType = 'None' + ExpectedVersion = '1.0.2' + ExpectedPrerelease = 'feattestnone001' + ExpectedFullVersion = 'v1.0.2-feattestnone001' + } + @{ + Name = 'Open PR with ReleaseType None previews a minor prerelease' + LatestVersion = '1.0.1' + ReleaseType = 'None' + AutoPatching = $false + IsOpen = $true + IncrementalPrerelease = $false + VersionPrefix = 'v' + HeadRef = 'feat/none-minor' + Labels = @('minor') + ExpectedShouldPublish = $false + ExpectedReleaseType = 'None' + ExpectedVersion = '1.1.0' + ExpectedPrerelease = 'featnoneminor001' + ExpectedFullVersion = 'v1.1.0-featnoneminor001' + } + @{ + Name = 'Open PR with ReleaseType None previews a major prerelease' + LatestVersion = '1.0.1' + ReleaseType = 'None' + AutoPatching = $false + IsOpen = $true + IncrementalPrerelease = $false + VersionPrefix = 'v' + HeadRef = 'feat/none-major' + Labels = @('major') + ExpectedShouldPublish = $false + ExpectedReleaseType = 'None' + ExpectedVersion = '2.0.0' + ExpectedPrerelease = 'featnonemajor001' + ExpectedFullVersion = 'v2.0.0-featnonemajor001' + } + @{ + Name = 'Open PR with ReleaseType Prerelease publishes a prerelease' + LatestVersion = '1.0.1' + ReleaseType = 'Prerelease' + AutoPatching = $false + IsOpen = $true + IncrementalPrerelease = $true + VersionPrefix = 'v' + HeadRef = 'feat/add-prerelease-support' + Labels = @('minor') + ExpectedShouldPublish = $true + ExpectedReleaseType = 'Prerelease' + ExpectedVersion = '1.1.0' + ExpectedPrerelease = 'feataddprereleasesupport001' + ExpectedFullVersion = 'v1.1.0-feataddprereleasesupport001' + } + @{ + Name = 'Open PR with an ignore label still previews a prerelease' + LatestVersion = '1.0.1' + ReleaseType = 'None' + AutoPatching = $false + IsOpen = $true + IncrementalPrerelease = $false + VersionPrefix = 'v' + HeadRef = 'feat/preview-with-ignore' + Labels = @('patch', 'skip-release') + ExpectedShouldPublish = $false + ExpectedReleaseType = 'None' + ExpectedVersion = '1.0.2' + ExpectedPrerelease = 'featpreviewwithignore001' + ExpectedFullVersion = 'v1.0.2-featpreviewwithignore001' + } + @{ + Name = 'Merged PR with no bump and no AutoPatching keeps the current version' + LatestVersion = '1.0.1' + ReleaseType = 'Release' + AutoPatching = $false + IsOpen = $false + IncrementalPrerelease = $false + VersionPrefix = 'v' + HeadRef = 'feat/no-label' + Labels = @() + ExpectedShouldPublish = $false + ExpectedReleaseType = 'None' + ExpectedVersion = '1.0.1' + ExpectedPrerelease = '' + ExpectedFullVersion = 'v1.0.1' + } + ) +} diff --git a/.github/actions/Resolve-PSModuleVersion/tests/Resolve-PSModuleVersion.Helpers.Tests.ps1 b/.github/actions/Resolve-PSModuleVersion/tests/Resolve-PSModuleVersion.Helpers.Tests.ps1 new file mode 100644 index 00000000..27f3a07b --- /dev/null +++ b/.github/actions/Resolve-PSModuleVersion/tests/Resolve-PSModuleVersion.Helpers.Tests.ps1 @@ -0,0 +1,280 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } + +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '', + Justification = 'Variables are used across Pester BeforeAll/It blocks.')] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', + Justification = 'Parameters in LogGroup mock are required by the caller signature.')] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSProvideCommentHelp', '', + Justification = 'LogGroup is a test helper mock, not a public function.')] +param() + +# Load test data at script scope so it is available during Pester discovery (-ForEach) +$TestData = Import-PowerShellDataFile -Path "$PSScriptRoot/Resolve-PSModuleVersion.Helpers.Tests.Data.psd1" + +BeforeAll { + # Install PSSemVer for version handling + if (-not (Get-Module -ListAvailable -Name PSSemVer)) { + Install-PSResource -Name PSSemVer -Repository PSGallery -TrustRepository -Scope CurrentUser + } + Import-Module -Name PSSemVer -Force + + # Mock LogGroup so module functions execute their blocks without console decoration + function LogGroup { + param([string]$Name, [scriptblock]$ScriptBlock) + & $ScriptBlock + } + + # Import the module under test + Import-Module -Name "$PSScriptRoot/../scripts/Resolve-PSModuleVersion.Helpers.psm1" -Force +} + +Describe 'Resolve-ReleaseDecision' { + BeforeAll { + $baseConfig = [PSCustomObject]@{ + AutoPatching = $false + IncrementalPrerelease = $false + DatePrereleaseFormat = '' + VersionPrefix = 'v' + ReleaseType = 'Release' + IgnoreLabels = @('skip-release') + MajorLabels = @('major') + MinorLabels = @('minor') + PatchLabels = @('patch') + } + } + + Context '' -ForEach $TestData.ReleaseDecision { + BeforeAll { + $config = [PSCustomObject]@{ + AutoPatching = $AutoPatching + IncrementalPrerelease = $baseConfig.IncrementalPrerelease + DatePrereleaseFormat = $baseConfig.DatePrereleaseFormat + VersionPrefix = $baseConfig.VersionPrefix + ReleaseType = $ReleaseType + IgnoreLabels = $baseConfig.IgnoreLabels + MajorLabels = $baseConfig.MajorLabels + MinorLabels = $baseConfig.MinorLabels + PatchLabels = $baseConfig.PatchLabels + } + $pullRequest = [PSCustomObject]@{ + HeadRef = $HeadRef + Labels = $Labels + IsOpen = $IsOpen + } + $result = Resolve-ReleaseDecision -Configuration $config -PullRequest $pullRequest + } + + It 'ShouldPublish is ' { + $result.ShouldPublish | Should -Be $Expected.ShouldPublish + } + It 'CreateRelease is ' { + $result.CreateRelease | Should -Be $Expected.CreateRelease + } + It 'CreatePrerelease is ' { + $result.CreatePrerelease | Should -Be $Expected.CreatePrerelease + } + It 'MajorRelease is ' { + $result.MajorRelease | Should -Be $Expected.MajorRelease + } + It 'MinorRelease is ' { + $result.MinorRelease | Should -Be $Expected.MinorRelease + } + It 'PatchRelease is ' { + $result.PatchRelease | Should -Be $Expected.PatchRelease + } + It 'HasVersionBump is ' { + $result.HasVersionBump | Should -Be $Expected.HasVersionBump + } + It 'PrereleaseName is ' { + $result.PrereleaseName | Should -Be $Expected.PrereleaseName + } + } +} + +Describe 'Get-NextModuleVersion' { + BeforeAll { + Mock -CommandName Find-PSResource -ModuleName 'Resolve-PSModuleVersion.Helpers' -MockWith { @() } + $emptyReleases = @([PSCustomObject]@{ tagName = 'v0.0.0'; isLatest = $false; isPrerelease = $false }) + } + + Context '' -ForEach $TestData.NextModuleVersion { + BeforeAll { + $config = [PSCustomObject]@{ + AutoPatching = $false + IncrementalPrerelease = $IncrementalPrerelease + DatePrereleaseFormat = $DatePrereleaseFormat + VersionPrefix = $VersionPrefix + ReleaseType = 'Release' + IgnoreLabels = @() + MajorLabels = @('major') + MinorLabels = @('minor') + PatchLabels = @('patch') + } + $decisionObj = [PSCustomObject]$Decision + $latestVer = New-PSSemVer -Version $LatestVersion + $result = Get-NextModuleVersion -LatestVersion $latestVer -Decision $decisionObj ` + -Configuration $config -ModuleName 'TestModule' -Releases $emptyReleases + } + + It 'Version is ' { + "$($result.Major).$($result.Minor).$($result.Patch)" | Should -Be $ExpectedVersion + } + It 'Prerelease is ' { + if ([string]::IsNullOrEmpty($ExpectedPrerelease)) { + $result.Prerelease | Should -BeNullOrEmpty + } else { + $result.Prerelease | Should -Be $ExpectedPrerelease + } + } + It 'Prefix is ' { + $result.Prefix | Should -Be $ExpectedPrefix + } + } +} + +Describe 'End-to-end: Resolve-ReleaseDecision + Get-NextModuleVersion' { + BeforeAll { + Mock -CommandName Find-PSResource -ModuleName 'Resolve-PSModuleVersion.Helpers' -MockWith { @() } + $emptyReleases = @([PSCustomObject]@{ tagName = 'v0.0.0'; isLatest = $false; isPrerelease = $false }) + } + + Context '' -ForEach $TestData.EndToEnd { + BeforeAll { + $config = [PSCustomObject]@{ + AutoPatching = $AutoPatching + IncrementalPrerelease = $IncrementalPrerelease + DatePrereleaseFormat = '' + VersionPrefix = $VersionPrefix + ReleaseType = $ReleaseType + IgnoreLabels = @('skip-release') + MajorLabels = @('major') + MinorLabels = @('minor') + PatchLabels = @('patch') + } + $pullRequest = [PSCustomObject]@{ + HeadRef = $HeadRef + Labels = $Labels + IsOpen = $IsOpen + } + $decision = Resolve-ReleaseDecision -Configuration $config -PullRequest $pullRequest + $latestVer = New-PSSemVer -Version $LatestVersion + $newVersion = Get-NextModuleVersion -LatestVersion $latestVer -Decision $decision ` + -Configuration $config -ModuleName 'TestModule' -Releases $emptyReleases + + # Derive resolved release type the same way Write-ActionOutput does + $resolvedReleaseType = if ($decision.ShouldPublish) { + if ($decision.CreateRelease) { 'Release' } else { 'Prerelease' } + } else { + 'None' + } + } + + It 'ShouldPublish is ' { + $decision.ShouldPublish | Should -Be $ExpectedShouldPublish + } + It 'ReleaseType is ' { + $resolvedReleaseType | Should -Be $ExpectedReleaseType + } + It 'Version is ' { + "$($newVersion.Major).$($newVersion.Minor).$($newVersion.Patch)" | Should -Be $ExpectedVersion + } + It 'Prerelease is ' { + if ([string]::IsNullOrEmpty($ExpectedPrerelease)) { + $newVersion.Prerelease | Should -BeNullOrEmpty + } else { + $newVersion.Prerelease | Should -Be $ExpectedPrerelease + } + } + It 'FullVersion is ' { + $newVersion.ToString() | Should -Be $ExpectedFullVersion + } + } +} + +Describe 'Non-PR event keeps the current version' { + # main.ps1 builds this decision when the event has no pull_request (for example + # workflow_dispatch or schedule): no bump, no prerelease, no publish. Get-NextModuleVersion + # must then return the current published version unchanged, floored at 0.0.0 when nothing + # has ever been released. + BeforeAll { + Mock -CommandName Find-PSResource -ModuleName 'Resolve-PSModuleVersion.Helpers' -MockWith { @() } + $emptyReleases = @([PSCustomObject]@{ tagName = 'v0.0.0'; isLatest = $false; isPrerelease = $false }) + $config = [PSCustomObject]@{ + AutoPatching = $false + IncrementalPrerelease = $true + DatePrereleaseFormat = '' + VersionPrefix = 'v' + ReleaseType = 'None' + IgnoreLabels = @() + MajorLabels = @('major') + MinorLabels = @('minor') + PatchLabels = @('patch') + } + $noReleaseDecision = [PSCustomObject]@{ + ShouldPublish = $false + CreateRelease = $false + CreatePrerelease = $false + MajorRelease = $false + MinorRelease = $false + PatchRelease = $false + HasVersionBump = $false + PrereleaseName = '' + } + } + + It 'keeps the current version with no bump and no prerelease' -ForEach @( + @{ LatestVersion = '1.2.3' } + @{ LatestVersion = '0.0.0' } + ) { + $latestVer = New-PSSemVer -Version $LatestVersion + $result = Get-NextModuleVersion -LatestVersion $latestVer -Decision $noReleaseDecision ` + -Configuration $config -ModuleName 'TestModule' -Releases $emptyReleases + "$($result.Major).$($result.Minor).$($result.Patch)" | Should -Be $LatestVersion + $result.Prerelease | Should -BeNullOrEmpty + } +} + +Describe 'Get-GitHubPullRequest' { + # Covers the non-PR branch: on an event without a pull_request (workflow_dispatch/schedule) + # the function must return $null so the caller keeps the current version, and it must still + # return the head ref + labels on a pull_request event. + AfterEach { + Remove-Item Env:PSMODULE_RESOLVE_PSMODULEVERSION_INPUT_EventJson -ErrorAction SilentlyContinue + } + + It 'returns $null when the event has no pull_request (non-PR event)' { + $env:PSMODULE_RESOLVE_PSMODULEVERSION_INPUT_EventJson = '{ "action": "workflow_dispatch" }' + Get-GitHubPullRequest | Should -BeNullOrEmpty + } + + It 'returns the head ref, labels, and IsOpen true for an open pull_request event' { + $eventJson = @{ + pull_request = @{ + head = @{ ref = 'feat/example' } + state = 'open' + labels = @(@{ name = 'patch' }, @{ name = 'prerelease' }) + } + } | ConvertTo-Json -Depth 5 + $env:PSMODULE_RESOLVE_PSMODULEVERSION_INPUT_EventJson = $eventJson + $result = Get-GitHubPullRequest + $result.HeadRef | Should -Be 'feat/example' + ($result.Labels -join ',') | Should -Be 'patch,prerelease' + $result.IsOpen | Should -BeTrue + } + + It 'returns IsOpen false for a merged/closed pull_request event' { + $eventJson = @{ + action = 'closed' + pull_request = @{ + head = @{ ref = 'feat/example' } + state = 'closed' + merged = $true + labels = @(@{ name = 'patch' }) + } + } | ConvertTo-Json -Depth 5 + $env:PSMODULE_RESOLVE_PSMODULEVERSION_INPUT_EventJson = $eventJson + $result = Get-GitHubPullRequest + $result.HeadRef | Should -Be 'feat/example' + $result.IsOpen | Should -BeFalse + } +} diff --git a/.github/actions/Test-PSModule/action.yml b/.github/actions/Test-PSModule/action.yml new file mode 100644 index 00000000..788c77b8 --- /dev/null +++ b/.github/actions/Test-PSModule/action.yml @@ -0,0 +1,340 @@ +name: Test-PSModule +description: Test a PowerShell module before publishing the module to the PowerShell Gallery. +author: PSModule + +inputs: + Name: + description: The name of the module to test. The name of the repository is used if not specified. + required: false + Settings: + description: The type of tests to run. Can be either 'Module' or 'SourceCode'. + required: true + StepSummary_Mode: + description: | + Controls which tests to show in the GitHub step summary. Allows "Full" (show all tests), "Failed" (only failed tests), or "None" (disable step summary). + required: false + StepSummary_ShowTestOverview: + description: | + Controls whether to show the test overview table in the GitHub step summary. + required: false + StepSummary_ShowConfiguration: + description: | + Controls whether to show the configuration details in the GitHub step summary. + required: false + Run_Path: + description: | + Directories to be searched for tests, paths directly to test files, or combination of both. + required: false + Run_ExcludePath: + description: | + Directories or files to be excluded from the run. + required: false + Run_ScriptBlock: + description: | + ScriptBlocks containing tests to be executed. + required: false + Run_Container: + description: | + ContainerInfo objects containing tests to be executed. + required: false + Run_TestExtension: + description: | + Filter used to identify test files. + required: false + Run_Exit: + description: | + Exit with non-zero exit code when the test run fails. Exit code is always set to `$LASTEXITCODE` even when this option is `$false`. + When used together with Throw, throwing an exception is preferred. + required: false + Run_Throw: + description: | + Throw an exception when test run fails. When used together with Exit, throwing an exception is preferred. + required: false + Run_SkipRun: + description: | + Runs the discovery phase but skips run. Use it with PassThru to get object populated with all tests. + required: false + Run_SkipRemainingOnFailure: + description: | + Skips remaining tests after failure for selected scope, options are None, Run, Container and Block. + required: false + Filter_Tag: + description: | + Tags of Describe, Context or It to be run. + required: false + Filter_ExcludeTag: + description: | + Tags of Describe, Context or It to be excluded from the run. + required: false + Filter_Line: + description: | + Filter by file and scriptblock start line, useful to run parsed tests programmatically to avoid problems with expanded names. + Example: 'C:\tests\file1.Tests.ps1:37' + required: false + Filter_ExcludeLine: + description: | + Exclude by file and scriptblock start line, takes precedence over Line. + required: false + Filter_FullName: + description: | + Full name of test with -like wildcards, joined by dot. Example: '*.describe Get-Item.test1' + required: false + CodeCoverage_Enabled: + description: | + Enable CodeCoverage. + required: false + CodeCoverage_OutputFormat: + description: | + Format to use for code coverage report. Possible values: JaCoCo, CoverageGutters, Cobertura + required: false + CodeCoverage_OutputPath: + description: | + Path relative to the current directory where code coverage report is saved. + required: false + CodeCoverage_OutputEncoding: + description: | + Encoding of the output file. + required: false + CodeCoverage_Path: + description: | + Directories or files to be used for code coverage, by default the Path(s) from general settings are used, unless overridden here. + required: false + CodeCoverage_ExcludeTests: + description: | + Exclude tests from code coverage. This uses the TestFilter from general configuration. + required: false + CodeCoverage_RecursePaths: + description: | + Will recurse through directories in the Path option. + required: false + CodeCoverage_CoveragePercentTarget: + description: | + Target percent of code coverage that you want to achieve. + required: false + CodeCoverage_UseBreakpoints: + description: | + EXPERIMENTAL: When false, use Profiler based tracer to do CodeCoverage instead of using breakpoints. + required: false + CodeCoverage_SingleHitBreakpoints: + description: | + Remove breakpoint when it is hit. + required: false + TestResult_Enabled: + description: | + Enable TestResult. + required: false + TestResult_OutputFormat: + description: | + Format to use for test result report. Possible values: NUnitXml, NUnit2.5, NUnit3 or JUnitXml + required: false + TestResult_OutputPath: + description: | + Path relative to the current directory where test result report is saved. + required: false + TestResult_OutputEncoding: + description: | + Encoding of the output file. + required: false + TestResult_TestSuiteName: + description: | + Set the name assigned to the root 'test-suite' element. + required: false + Should_ErrorAction: + description: | + Controls if Should throws on error. Use 'Stop' to throw on error, or 'Continue' to fail at the end of the test. + required: false + Debug_ShowFullErrors: + description: | + Show full errors including Pester internal stack. This property is deprecated, and if set to true it will override Output.StackTraceVerbosity to 'Full'. + required: false + Debug_WriteDebugMessages: + description: | + Write Debug messages to screen. + required: false + Debug_WriteDebugMessagesFrom: + description: | + Write Debug messages from a given source, WriteDebugMessages must be set to true for this to work. + You can use like wildcards to get messages from multiple sources, as well as * to get everything. + required: false + Debug_ShowNavigationMarkers: + description: | + Write paths after every block and test, for easy navigation in VSCode. + required: false + Debug_ReturnRawResultObject: + description: | + Returns unfiltered result object, this is for development only. Do not rely on this object for additional properties, + non-public properties will be renamed without previous notice. + required: false + Output_Verbosity: + description: | + The verbosity of output, options are None, Normal, Detailed and Diagnostic. + required: false + Output_StackTraceVerbosity: + description: | + The verbosity of stacktrace output, options are None, FirstLine, Filtered and Full. + required: false + Output_CIFormat: + description: | + The CI format of error output in build logs, options are None, Auto, AzureDevops and GithubActions. + required: false + Output_CILogLevel: + description: | + The CI log level in build logs, options are Error and Warning. + required: false + Output_RenderMode: + description: | + The mode used to render console output, options are Auto, Ansi, ConsoleColor and Plaintext. + required: false + TestDrive_Enabled: + description: | + Enable TestDrive. + required: false + TestRegistry_Enabled: + description: | + Enable TestRegistry. + required: false + Debug: + description: Enable debug output. + required: false + default: 'false' + Verbose: + description: Enable verbose output. + required: false + default: 'false' + Version: + description: Specifies the version of the GitHub module to be installed. The value must be an exact version. + required: false + Prerelease: + description: Allow prerelease versions if available. + required: false + default: 'false' + WorkingDirectory: + description: The working directory to use for the action. This is the root folder where tests and outputs are expected. + required: false + default: '.' + +outputs: + Outcome: + description: | + The outcome of the test run. + value: ${{ steps.test.outcome }} + Conclusion: + description: | + The conclusion of the test run. + value: ${{ steps.test.conclusion }} + Executed: + description: | + Whether tests were executed. + value: ${{ steps.test.outputs.Executed }} + Result: + description: | + Overall result of the Pester test run (e.g., Passed, Failed). + value: ${{ steps.test.outputs.Result }} + FailedCount: + description: | + Number of failed tests. + value: ${{ steps.test.outputs.FailedCount }} + FailedBlocksCount: + description: | + Number of failed blocks. + value: ${{ steps.test.outputs.FailedBlocksCount }} + FailedContainersCount: + description: | + Number of failed containers. + value: ${{ steps.test.outputs.FailedContainersCount }} + PassedCount: + description: | + Number of passed tests. + value: ${{ steps.test.outputs.PassedCount }} + SkippedCount: + description: | + Number of skipped tests. + value: ${{ steps.test.outputs.SkippedCount }} + InconclusiveCount: + description: | + Number of inconclusive tests. + value: ${{ steps.test.outputs.InconclusiveCount }} + NotRunCount: + description: | + Number of tests not run. + value: ${{ steps.test.outputs.NotRunCount }} + TotalCount: + description: | + Total count of tests. + value: ${{ steps.test.outputs.TotalCount }} + +runs: + using: composite + steps: + - name: Install-PSModuleHelpers + uses: ./_wf/.github/actions/Install-PSModuleHelpers + + - name: Get test paths + shell: pwsh + id: paths + working-directory: ${{ inputs.WorkingDirectory }} + env: + PSMODULE_TEST_PSMODULE_INPUT_Name: ${{ inputs.Name }} + PSMODULE_TEST_PSMODULE_INPUT_Settings: ${{ inputs.Settings }} + run: | + # Get test paths + ${{ github.action_path }}/src/main.ps1 + + - name: Invoke-Pester + uses: PSModule/Invoke-Pester@4ff33199141fdf22568990b6107fe3148ae93a1c # v5.1.0 + id: test + env: + LocalTestPath: ${{ steps.paths.outputs.LocalTestPath }} + WorkingDirectory: ${{ inputs.WorkingDirectory }} + with: + Debug: ${{ inputs.Debug }} + Verbose: ${{ inputs.Verbose }} + GitHubVersion: ${{ inputs.Version }} + GitHubPrerelease: ${{ inputs.Prerelease }} + WorkingDirectory: ${{ inputs.WorkingDirectory }} + Path: ${{ steps.paths.outputs.TestPath }} + StepSummary_Mode: ${{ inputs.StepSummary_Mode }} + StepSummary_ShowTestOverview: ${{ inputs.StepSummary_ShowTestOverview }} + StepSummary_ShowConfiguration: ${{ inputs.StepSummary_ShowConfiguration }} + Run_Path: ${{ steps.paths.outputs.CodePath }} + Run_ExcludePath: ${{ inputs.Run_ExcludePath }} + Run_ScriptBlock: ${{ inputs.Run_ScriptBlock }} + Run_Container: ${{ inputs.Run_Container }} + Run_TestExtension: ${{ inputs.Run_TestExtension }} + Run_Exit: ${{ inputs.Run_Exit }} + Run_Throw: ${{ inputs.Run_Throw }} + Run_SkipRun: ${{ inputs.Run_SkipRun }} + Run_SkipRemainingOnFailure: ${{ inputs.Run_SkipRemainingOnFailure }} + Filter_Tag: ${{ inputs.Filter_Tag }} + Filter_ExcludeTag: ${{ inputs.Filter_ExcludeTag }} + Filter_Line: ${{ inputs.Filter_Line }} + Filter_ExcludeLine: ${{ inputs.Filter_ExcludeLine }} + Filter_FullName: ${{ inputs.Filter_FullName }} + CodeCoverage_Enabled: ${{ inputs.CodeCoverage_Enabled }} + CodeCoverage_OutputFormat: ${{ inputs.CodeCoverage_OutputFormat }} + CodeCoverage_OutputPath: ${{ inputs.CodeCoverage_OutputPath }} + CodeCoverage_OutputEncoding: ${{ inputs.CodeCoverage_OutputEncoding }} + CodeCoverage_Path: ${{ inputs.CodeCoverage_Path }} + CodeCoverage_ExcludeTests: ${{ inputs.CodeCoverage_ExcludeTests }} + CodeCoverage_RecursePaths: ${{ inputs.CodeCoverage_RecursePaths }} + CodeCoverage_CoveragePercentTarget: ${{ inputs.CodeCoverage_CoveragePercentTarget }} + CodeCoverage_UseBreakpoints: ${{ inputs.CodeCoverage_UseBreakpoints }} + CodeCoverage_SingleHitBreakpoints: ${{ inputs.CodeCoverage_SingleHitBreakpoints }} + TestResult_Enabled: ${{ inputs.TestResult_Enabled }} + TestResult_OutputFormat: ${{ inputs.TestResult_OutputFormat }} + TestResult_OutputPath: ${{ inputs.TestResult_OutputPath }} + TestResult_OutputEncoding: ${{ inputs.TestResult_OutputEncoding }} + TestResult_TestSuiteName: PSModuleTest-${{ inputs.Settings }}-${{ runner.os }} + Should_ErrorAction: ${{ inputs.Should_ErrorAction }} + Debug_ShowFullErrors: ${{ inputs.Debug_ShowFullErrors }} + Debug_WriteDebugMessages: ${{ inputs.Debug_WriteDebugMessages }} + Debug_WriteDebugMessagesFrom: ${{ inputs.Debug_WriteDebugMessagesFrom }} + Debug_ShowNavigationMarkers: ${{ inputs.Debug_ShowNavigationMarkers }} + Debug_ReturnRawResultObject: ${{ inputs.Debug_ReturnRawResultObject }} + Output_Verbosity: ${{ inputs.Output_Verbosity }} + Output_StackTraceVerbosity: ${{ inputs.Output_StackTraceVerbosity }} + Output_CIFormat: ${{ inputs.Output_CIFormat }} + Output_CILogLevel: ${{ inputs.Output_CILogLevel }} + Output_RenderMode: ${{ inputs.Output_RenderMode }} + TestDrive_Enabled: ${{ inputs.TestDrive_Enabled }} + TestRegistry_Enabled: ${{ inputs.TestRegistry_Enabled }} diff --git a/.github/actions/Test-PSModule/src/main.ps1 b/.github/actions/Test-PSModule/src/main.ps1 new file mode 100644 index 00000000..1706791f --- /dev/null +++ b/.github/actions/Test-PSModule/src/main.ps1 @@ -0,0 +1,38 @@ +[CmdletBinding()] +param() + +$env:GITHUB_REPOSITORY_NAME = $env:GITHUB_REPOSITORY -replace '.+/' +$moduleName = if ([string]::IsNullOrEmpty($env:PSMODULE_TEST_PSMODULE_INPUT_Name)) { + $env:GITHUB_REPOSITORY_NAME +} else { + $env:PSMODULE_TEST_PSMODULE_INPUT_Name +} +$settings = $env:PSMODULE_TEST_PSMODULE_INPUT_Settings +$testPath = Resolve-Path -Path "$PSScriptRoot/tests/$settings" | Select-Object -ExpandProperty Path + +$localTestPath = Resolve-Path -Path 'tests' | Select-Object -ExpandProperty Path +switch ($settings) { + 'Module' { + $modulePath = Resolve-Path -Path "outputs/module/$moduleName" | Select-Object -ExpandProperty Path + $codePath = Install-PSModule -Path $modulePath -PassThru + } + 'SourceCode' { + $codePath = Resolve-Path -Path 'src' | Select-Object -ExpandProperty Path + } + default { + throw "Invalid test type: [$settings]" + } +} + +[pscustomobject]@{ + ModuleName = $moduleName + Settings = $settings + CodePath = $codePath + LocalTestPath = $localTestPath + TestPath = $testPath +} | Format-List | Out-String + +"ModuleName=$moduleName" >> $env:GITHUB_OUTPUT +"CodePath=$codePath" >> $env:GITHUB_OUTPUT +"LocalTestPath=$localTestPath" >> $env:GITHUB_OUTPUT +"TestPath=$testPath" >> $env:GITHUB_OUTPUT diff --git a/.github/actions/Test-PSModule/src/tests/Module/Module.Configuration.ps1 b/.github/actions/Test-PSModule/src/tests/Module/Module.Configuration.ps1 new file mode 100644 index 00000000..de7fdea7 --- /dev/null +++ b/.github/actions/Test-PSModule/src/tests/Module/Module.Configuration.ps1 @@ -0,0 +1,11 @@ +@{ + TestResult = @{ + Enabled = $true + } + CodeCoverage = @{ + Enabled = $true + } + Output = @{ + Verbosity = 'Detailed' + } +} diff --git a/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Container.ps1 b/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Container.ps1 new file mode 100644 index 00000000..05395f66 --- /dev/null +++ b/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Container.ps1 @@ -0,0 +1,6 @@ +@{ + Path = Get-ChildItem -Path $PSScriptRoot -Filter *.Tests.ps1 | Select-Object -ExpandProperty FullName + Data = @{ + Path = $env:PSMODULE_INVOKE_PESTER_INPUT_Run_Path + } +} diff --git a/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1 b/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1 new file mode 100644 index 00000000..ac41caa0 --- /dev/null +++ b/.github/actions/Test-PSModule/src/tests/Module/PSModule/PSModule.Tests.ps1 @@ -0,0 +1,137 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSReviewUnusedParameter', 'Path', + Justification = 'Path is used to specify the path to the module to test.' +)] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', + Justification = 'Log outputs to GitHub Actions logs.' +)] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseDeclaredVarsMoreThanAssignments', '', + Justification = 'Variables are set in BeforeAll and consumed in Describe/It blocks.' +)] +[CmdLetBinding()] +param( + [Parameter(Mandatory)] + [string] $Path +) + +# Discovery-phase variables — must be set at script scope (outside BeforeAll) so that +# Pester's -Skip and -ForEach parameters can reference them during test discovery. +$moduleName = Split-Path -Path (Split-Path -Path $Path -Parent) -Leaf +$moduleManifestPath = Join-Path -Path $Path -ChildPath "$moduleName.psd1" +$moduleRootPath = Join-Path -Path $Path -ChildPath "$moduleName.psm1" + +# Discover public classes and enums from the compiled module source. +# The class exporter region is injected by Build-PSModule when classes/public contains types. +$moduleContent = if (Test-Path -Path $moduleRootPath) { Get-Content -Path $moduleRootPath -Raw } else { '' } +$hasClassExporter = $moduleContent -match '#region\s+Class exporter' + +# Extract expected class and enum names from the class exporter block. +$expectedClassNames = @() +$expectedEnumNames = @() +if ($hasClassExporter) { + # Match $ExportableClasses = @( ... ) block + if ($moduleContent -match '\$ExportableClasses\s*=\s*@\(([\s\S]*?)\)') { + $expectedClassNames = @([regex]::Matches($Matches[1], '\[([^\]]+)\]') | ForEach-Object { $_.Groups[1].Value }) + } + # Match $ExportableEnums = @( ... ) block + if ($moduleContent -match '\$ExportableEnums\s*=\s*@\(([\s\S]*?)\)') { + $expectedEnumNames = @([regex]::Matches($Matches[1], '\[([^\]]+)\]') | ForEach-Object { $_.Groups[1].Value }) + } +} + + +# Run-phase setup — recompute from $Path so that It/Context blocks can use these variables. +# Pester v5 Discovery and Run are separate executions. The script-scope variables above drive +# -Skip and -ForEach during Discovery. This BeforeAll recomputes the same values for the Run +# phase, where It blocks actually execute. The duplication is intentional and required. +BeforeAll { + $moduleName = Split-Path -Path (Split-Path -Path $Path -Parent) -Leaf + $moduleManifestPath = Join-Path -Path $Path -ChildPath "$moduleName.psd1" + $moduleRootPath = Join-Path -Path $Path -ChildPath "$moduleName.psm1" + + $moduleContent = if (Test-Path -Path $moduleRootPath) { Get-Content -Path $moduleRootPath -Raw } else { '' } + $hasClassExporter = $moduleContent -match '#region\s+Class exporter' + + $expectedClassNames = @() + $expectedEnumNames = @() + if ($hasClassExporter) { + if ($moduleContent -match '\$ExportableClasses\s*=\s*@\(([\s\S]*?)\)') { + $expectedClassNames = @([regex]::Matches($Matches[1], '\[([^\]]+)\]') | ForEach-Object { $_.Groups[1].Value }) + } + if ($moduleContent -match '\$ExportableEnums\s*=\s*@\(([\s\S]*?)\)') { + $expectedEnumNames = @([regex]::Matches($Matches[1], '\[([^\]]+)\]') | ForEach-Object { $_.Groups[1].Value }) + } + } + Write-Host "Has class exporter: $hasClassExporter" + Write-Host "Expected classes: $($expectedClassNames -join ', ')" + Write-Host "Expected enums: $($expectedEnumNames -join ', ')" +} + +Describe 'PSModule - Module tests' { + Context 'Module' { + It 'The module should be importable' { + { Import-Module -Name $moduleManifestPath -Force } | Should -Not -Throw + } + } + + Context 'Module Manifest' { + It 'Module Manifest exists' { + $result = Test-Path -Path $moduleManifestPath + $result | Should -Be $true + Write-Host "$($result | Format-List | Out-String)" + } + It 'Module version folder matches the manifest version' { + $manifest = Import-PowerShellDataFile -Path $moduleManifestPath + $moduleVersionFolder = Split-Path -Path (Split-Path -Path $moduleManifestPath -Parent) -Leaf + + $moduleVersionFolder | Should -Be $manifest.ModuleVersion.ToString() + } + It 'Module Manifest is valid' { + $result = Test-ModuleManifest -Path $moduleManifestPath + $result | Should -Not -Be $null + Write-Host "$($result | Format-List | Out-String)" + } + } + + Context 'Framework - Type accelerator registration' -Skip:(-not $hasClassExporter) { + BeforeAll { + Import-Module -Name $moduleManifestPath -Force + } + It 'Should register public enum [<_>] as a type accelerator' -ForEach $expectedEnumNames -AllowNullOrEmptyForEach { + $registered = [psobject].Assembly.GetType('System.Management.Automation.TypeAccelerators')::Get + $registered.Keys | Should -Contain $_ -Because 'the framework registers public enums as type accelerators' + } + + It 'Should register public class [<_>] as a type accelerator' -ForEach $expectedClassNames -AllowNullOrEmptyForEach { + $registered = [psobject].Assembly.GetType('System.Management.Automation.TypeAccelerators')::Get + $registered.Keys | Should -Contain $_ -Because 'the framework registers public classes as type accelerators' + } + } + + Context 'Framework - Module OnRemove cleanup' -Skip:(-not $hasClassExporter) { + BeforeAll { + Import-Module -Name $moduleManifestPath -Force + } + It 'Should clean up type accelerators when the module is removed' { + # Capture type names before removal + $typeNames = @(@($expectedEnumNames) + @($expectedClassNames) | Where-Object { $_ }) + $typeNames | Should -Not -BeNullOrEmpty -Because 'there should be types to verify cleanup for' + + try { + # Remove the module to trigger the OnRemove hook + Remove-Module -Name $moduleName -Force + + # Verify type accelerators are cleaned up + $typeAccelerators = [psobject].Assembly.GetType('System.Management.Automation.TypeAccelerators')::Get + foreach ($typeName in $typeNames) { + $typeAccelerators.Keys | Should -Not -Contain $typeName -Because "the OnRemove hook should remove type accelerator [$typeName]" + } + } finally { + # Re-import the module for any subsequent tests + Import-Module -Name $moduleManifestPath -Force + } + } + } +} diff --git a/.github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Container.ps1 b/.github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Container.ps1 new file mode 100644 index 00000000..dbfef337 --- /dev/null +++ b/.github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Container.ps1 @@ -0,0 +1,7 @@ +@{ + Path = Get-ChildItem -Path $PSScriptRoot -Filter *.Tests.ps1 | Select-Object -ExpandProperty FullName + Data = @{ + Path = $env:PSMODULE_INVOKE_PESTER_INPUT_Run_Path + TestsPath = $env:LocalTestPath + } +} diff --git a/.github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Tests.ps1 b/.github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Tests.ps1 new file mode 100644 index 00000000..18bf974e --- /dev/null +++ b/.github/actions/Test-PSModule/src/tests/SourceCode/PSModule/PSModule.Tests.ps1 @@ -0,0 +1,388 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSReviewUnusedParameter', '', + Justification = 'Parameters are used in the test.' +)] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseDeclaredVarsMoreThanAssignments', 'functionBearingPublicFiles', + Justification = 'Variables are used in the test.' +)] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseDeclaredVarsMoreThanAssignments', 'functionBearingFiles', + Justification = 'Variables are used in the test.' +)] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidUsingWriteHost', '', + Justification = 'Logging to Github Actions.' +)] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSAvoidLongLines', '', + Justification = 'Consistent formatting of ternary operator usage' +)] +[CmdLetBinding()] +param( + # The path to the 'src' folder of the repo. + [Parameter(Mandatory)] + [string] $Path, + + # The path to the 'tests' folder of the repo. + [Parameter(Mandatory)] + [string] $TestsPath +) + +BeforeAll { + $scriptFiles = Get-ChildItem -Path $Path -Include *.psm1, *.ps1 -Recurse -File + Write-Host "::group:: - Script files [$($scriptFiles.Count)]" + $scriptFiles | ForEach-Object { + Write-Host " - $($_.FullName)" + } + Write-Host '::endgroup::' + $functionsPath = Join-Path -Path $Path -ChildPath 'functions' + $functionFiles = (Test-Path -Path $functionsPath) ? (Get-ChildItem -Path $functionsPath -File -Filter '*.ps1' -Recurse) : $null + Write-Host "::group:: - Function files [$($functionFiles.Count)]" + $functionFiles | ForEach-Object { + Write-Host " - $($_.FullName)" + } + Write-Host '::endgroup::' + $privateFunctionsPath = Join-Path -Path $functionsPath -ChildPath 'private' + $privateFunctionFiles = (Test-Path -Path $privateFunctionsPath) ? (Get-ChildItem -Path $privateFunctionsPath -File -Filter '*.ps1' -Recurse) : $null + Write-Host "::group:: - Private [$($privateFunctionFiles.Count)]" + $privateFunctionFiles | ForEach-Object { + Write-Host " - $($_.FullName)" + } + Write-Host '::endgroup::' + $publicFunctionsPath = Join-Path -Path $functionsPath -ChildPath 'public' + $publicFunctionFiles = (Test-Path -Path $publicFunctionsPath) ? (Get-ChildItem -Path $publicFunctionsPath -File -Filter '*.ps1' -Recurse) : $null + Write-Host "::group:: - Public [$($publicFunctionFiles.Count)]" + $publicFunctionFiles | ForEach-Object { + Write-Host " - $($_.FullName)" + } + Write-Host '::endgroup::' + $variablesPath = Join-Path -Path $Path -ChildPath 'variables' + $variableFiles = (Test-Path -Path $variablesPath) ? (Get-ChildItem -Path $variablesPath -File -Filter '*.ps1' -Recurse) : $null + Write-Host "::group:: - Variable files [$($variableFiles.Count)]" + $variableFiles | ForEach-Object { + Write-Host " - $($_.FullName)" + } + Write-Host '::endgroup::' + $privateVariablesPath = Join-Path -Path $variablesPath -ChildPath 'private' + $privateVariableFiles = (Test-Path -Path $privateVariablesPath) ? (Get-ChildItem -Path $privateVariablesPath -File -Filter '*.ps1' -Recurse) : $null + Write-Host "::group:: - Private [$($privateVariableFiles.Count)]" + $privateVariableFiles | ForEach-Object { + Write-Host " - $($_.FullName)" + } + Write-Host '::endgroup::' + $publicVariablesPath = Join-Path -Path $variablesPath -ChildPath 'public' + $publicVariableFiles = (Test-Path -Path $publicVariablesPath) ? (Get-ChildItem -Path $publicVariablesPath -File -Filter '*.ps1' -Recurse) : $null + Write-Host "::group:: - Public [$($publicVariableFiles.Count)]" + $publicVariableFiles | ForEach-Object { + Write-Host " - $($_.FullName)" + } + Write-Host '::endgroup::' + $classPath = Join-Path -Path $Path -ChildPath 'classes' + $classFiles = (Test-Path -Path $classPath) ? (Get-ChildItem -Path $classPath -File -Filter '*.ps1' -Recurse) : $null + Write-Host "::group:: - Class [$($classFiles.Count)]" + $classFiles | ForEach-Object { + Write-Host " - $($_.FullName)" + } + Write-Host '::endgroup::' + $privateClassPath = Join-Path -Path $classPath -ChildPath 'private' + $privateClassFiles = (Test-Path -Path $privateClassPath) ? (Get-ChildItem -Path $privateClassPath -File -Filter '*.ps1' -Recurse) : $null + Write-Host "::group:: - Private [$($privateClassFiles.Count)]" + $privateClassFiles | ForEach-Object { + Write-Host " - $($_.FullName)" + } + Write-Host '::endgroup::' + $publicClassPath = Join-Path -Path $classPath -ChildPath 'public' + $publicClassFiles = (Test-Path -Path $publicClassPath) ? (Get-ChildItem -Path $publicClassPath -File -Filter '*.ps1' -Recurse) : $null + Write-Host "::group:: - Public [$($publicClassFiles.Count)]" + $publicClassFiles | ForEach-Object { + Write-Host " - $($_.FullName)" + } + Write-Host '::endgroup::' + $testFiles = Get-ChildItem -Path $TestsPath -Include *.Tests.ps1 -Recurse -File + Write-Host "::group:: - Test files [$($testFiles.Count)]" + $testFiles | ForEach-Object { + Write-Host " - $($_.FullName)" + } + Write-Host '::endgroup::' +} + +Describe 'PSModule - SourceCode tests' { + Context 'General tests' { + It "Should use '[System.Environment]::ProcessorCount' instead of '`$env:NUMBER_OF_PROCESSORS' (ID: NumberOfProcessors)" { + $issues = @('') + $scriptFiles | ForEach-Object { + Select-String -Path $_.FullName -Pattern '\$env:NUMBER_OF_PROCESSORS' -AllMatches | ForEach-Object { + $filePath = $_.FullName + $relativePath = $filePath.Replace($Path, '').Trim('\').Trim('/') + $skipTest = Select-String -Path $filePath -Pattern '#SkipTest:NumberOfProcessors:(?.+)' -AllMatches + if ($skipTest.Matches.Count -gt 0) { + $skipReason = $skipTest.Matches.Groups | Where-Object { $_.Name -eq 'Reason' } | Select-Object -ExpandProperty Value + Write-Host "::warning title=Skipping NumberOfProcessors test:: - $relativePath - $skipReason" + } else { + $issues += " - $($_.Path):L$($_.LineNumber)" + } + } + } + $issues -join [Environment]::NewLine | + Should -BeNullOrEmpty -Because 'the script should use [System.Environment]::ProcessorCount instead of $env:NUMBER_OF_PROCESSORS' + } + It "Should not contain '-Verbose' unless it is disabled using ':`$false' qualifier after it (ID: Verbose)" { + $issues = @('') + $scriptFiles | ForEach-Object { + $filePath = $_.FullName + $relativePath = $filePath.Replace($Path, '').Trim('\').Trim('/') + $skipTest = Select-String -Path $filePath -Pattern '#SkipTest:Verbose:(?.+)' -AllMatches + if ($skipTest.Matches.Count -gt 0) { + $skipReason = $skipTest.Matches.Groups | Where-Object { $_.Name -eq 'Reason' } | Select-Object -ExpandProperty Value + Write-Host "::warning title=Skipping Verbose test:: - $relativePath - $skipReason" + } else { + Select-String -Path $filePath -Pattern '\s(-Verbose(?::\$true)?)\b(?!:\$false)' -AllMatches | ForEach-Object { + $issues += " - $relativePath`:L$($_.LineNumber) - $($_.Line)" + } + } + } + $issues -join [Environment]::NewLine | + Should -BeNullOrEmpty -Because "the script should not contain '-Verbose' unless it is disabled using ':`$false' qualifier after it." + } + It "Should use '`$null = ...' instead of '... | Out-Null' (ID: OutNull)" { + $issues = @('') + $scriptFiles | ForEach-Object { + $filePath = $_.FullName + $relativePath = $filePath.Replace($Path, '').Trim('\').Trim('/') + $skipTest = Select-String -Path $filePath -Pattern '#SkipTest:OutNull:(?.+)' -AllMatches + if ($skipTest.Matches.Count -gt 0) { + $skipReason = $skipTest.Matches.Groups | Where-Object { $_.Name -eq 'Reason' } | Select-Object -ExpandProperty Value + Write-Host "::warning title=Skipping OutNull test:: - $relativePath - $skipReason" + } else { + Select-String -Path $filePath -Pattern 'Out-Null' -AllMatches | ForEach-Object { + $issues += " - $relativePath`:L$($_.LineNumber) - $($_.Line)" + } + } + } + $issues -join [Environment]::NewLine | + Should -BeNullOrEmpty -Because "the script should use '`$null = ...' instead of '... | Out-Null'" + } + It 'Should not use ternary operations for compatibility reasons (ID: NoTernary)' -Skip { + $issues = @('') + $scriptFiles | ForEach-Object { + $filePath = $_.FullName + $relativePath = $filePath.Replace($Path, '').Trim('\').Trim('/') + $skipTest = Select-String -Path $filePath -Pattern '#SkipTest:NoTernary:(?.+)' -AllMatches + if ($skipTest.Matches.Count -gt 0) { + $skipReason = $skipTest.Matches.Groups | Where-Object { $_.Name -eq 'Reason' } | Select-Object -ExpandProperty Value + Write-Host "::warning title=Skipping NoTernary test:: - $relativePath - $skipReason" + } else { + Select-String -Path $filePath -Pattern '(?.+)' -AllMatches + if ($skipTest.Matches.Count -gt 0) { + $skipReason = $skipTest.Matches.Groups | Where-Object { $_.Name -eq 'Reason' } | Select-Object -ExpandProperty Value + Write-Host "::warning title=Skipping LowercaseKeywords test:: - $relativePath - $skipReason" + } else { + $errors = $null + $tokens = $null + [System.Management.Automation.Language.Parser]::ParseFile($FilePath, [ref]$tokens, [ref]$errors) + + foreach ($token in $tokens) { + $keyword = $token.Text + $lineNumber = $token.Extent.StartLineNumber + $columnNumber = $token.Extent.StartColumnNumber + if (($token.TokenFlags -match 'Keyword') -and ($keyword -cne $keyword.ToLower())) { + $issues += " - $relativePath`:L$lineNumber`:C$columnNumber - $keyword" + } + } + } + } + $issues -join [Environment]::NewLine | Should -BeNullOrEmpty -Because 'all powershell keywords should be lowercase' + } + } + + # Context 'classes' { + # } + + Context 'functions' { + Context 'Generic' { + BeforeAll { + $functionBearingFiles = $functionFiles | Where-Object { + $Ast = [System.Management.Automation.Language.Parser]::ParseFile($_.FullName, [ref]$null, [ref]$null) + $tokens = $Ast.FindAll( { $args[0] -is [System.Management.Automation.Language.FunctionDefinitionAst] } , $true ) + $tokens.count -ne 0 + } + } + # It 'has synopsis for all functions' {} + # It 'has description for all functions' {} + # It 'has examples for all functions' {} + # It 'comment based doc is indented with 8 spaces' {} + # It 'boolean parameters in CmdletBinding() attribute are written without assignments' {} + # I.e. [CmdletBinding(ShouldProcess)] instead of [CmdletBinding(ShouldProcess = $true)] + # It 'has [OutputType()] attribute' {} + # Parameters + # It 'comment based doc block start is indented with 4 spaces' {} + # It 'has parameter description for all functions' {} + # It 'parameters have [Parameter()] attribute' {} + # It 'boolean parameters to the [Parameter()] attribute are written without assignments' {} + # I.e. [Parameter(Mandatory)] instead of [Parameter(Mandatory = $true)] + # It 'datatype for parameters are written on the same line as the parameter name' {} + # It 'datatype for parameters and parameter name are separated by a single space' {} + # It 'parameters are separated by a blank line' {} + It 'Should contain one function or filter (ID: FunctionCount)' { + $issues = @('') + $functionBearingFiles | ForEach-Object { + $filePath = $_.FullName + $relativePath = $filePath.Replace($Path, '').Trim('\').Trim('/') + $skipTest = Select-String -Path $filePath -Pattern '#SkipTest:FunctionCount:(?.+)' -AllMatches + if ($skipTest.Matches.Count -gt 0) { + $skipReason = $skipTest.Matches.Groups | Where-Object { $_.Name -eq 'Reason' } | Select-Object -ExpandProperty Value + Write-Host "::warning title=Skipping FunctionCount test:: - $relativePath - $skipReason" + } else { + $Ast = [System.Management.Automation.Language.Parser]::ParseFile($filePath, [ref]$null, [ref]$null) + $tokens = $Ast.FindAll( { $args[0] -is [System.Management.Automation.Language.FunctionDefinitionAst] } , $true ) + if ($tokens.count -ne 1) { + $issues += " - $relativePath - $($tokens.Name)" + } + } + } + $issues -join [Environment]::NewLine | + Should -BeNullOrEmpty -Because 'the script should contain one function or filter' + } + It 'Should have matching filename and function/filter name (ID: FunctionName)' { + $issues = @('') + $functionBearingFiles | ForEach-Object { + $filePath = $_.FullName + $fileName = $_.BaseName + $relativePath = $filePath.Replace($Path, '').Trim('\').Trim('/') + $skipTest = Select-String -Path $filePath -Pattern '#SkipTest:FunctionName:(?.+)' -AllMatches + if ($skipTest.Matches.Count -gt 0) { + $skipReason = $skipTest.Matches.Groups | Where-Object { $_.Name -eq 'Reason' } | Select-Object -ExpandProperty Value + Write-Host "::warning title=Skipping FunctionName test:: - $relativePath - $skipReason" + } else { + $Ast = [System.Management.Automation.Language.Parser]::ParseFile($filePath, [ref]$null, [ref]$null) + $tokens = $Ast.FindAll( { $args[0] -is [System.Management.Automation.Language.FunctionDefinitionAst] } , $true ) + if ($tokens.Name -ne $fileName) { + $issues += " - $relativePath - $($tokens.Name)" + } + } + } + $issues -join [Environment]::NewLine | + Should -BeNullOrEmpty -Because 'the script files should be called the same as the function they contain' + } + It 'Should have [CmdletBinding()] attribute (ID: CmdletBinding)' { + $issues = @('') + $functionBearingFiles | ForEach-Object { + $found = $false + $filePath = $_.FullName + $relativePath = $filePath.Replace($Path, '').Trim('\').Trim('/') + $skipTest = Select-String -Path $filePath -Pattern '#SkipTest:CmdletBinding:(?.+)' -AllMatches + if ($skipTest.Matches.Count -gt 0) { + $skipReason = $skipTest.Matches.Groups | Where-Object { $_.Name -eq 'Reason' } | Select-Object -ExpandProperty Value + Write-Host "::warning title=Skipping CmdletBinding test:: - $relativePath - $skipReason" + } else { + $scriptAst = [System.Management.Automation.Language.Parser]::ParseFile($filePath, [ref]$null, [ref]$null) + $tokens = $scriptAst.FindAll({ $true }, $true) + foreach ($token in $tokens) { + if ($token.TypeName.Name -eq 'CmdletBinding') { + $found = $true + } + } + if (-not $found) { + $issues += " - $relativePath" + } + } + } + $issues -join [Environment]::NewLine | + Should -BeNullOrEmpty -Because 'the script should have [CmdletBinding()] attribute' + } + It 'Should have a param() block (ID: ParamBlock)' { + $issues = @('') + $functionBearingFiles | ForEach-Object { + $found = $false + $filePath = $_.FullName + $relativePath = $filePath.Replace($Path, '').Trim('\').Trim('/') + $skipTest = Select-String -Path $filePath -Pattern '#SkipTest:ParamBlock:(?.+)' -AllMatches + if ($skipTest.Matches.Count -gt 0) { + $skipReason = $skipTest.Matches.Groups | Where-Object { $_.Name -eq 'Reason' } | Select-Object -ExpandProperty Value + Write-Host "::warning title=Skipping ParamBlock test:: - $relativePath - $skipReason" + } else { + $scriptAst = [System.Management.Automation.Language.Parser]::ParseFile($filePath, [ref]$null, [ref]$null) + $tokens = $scriptAst.FindAll({ $args[0] -is [System.Management.Automation.Language.ParamBlockAst] }, $true) + foreach ($token in $tokens) { + if ($token.count -eq 1) { + $found = $true + } + } + if (-not $found) { + $issues += " - $relativePath" + } + } + } + $issues -join [Environment]::NewLine | + Should -BeNullOrEmpty -Because 'the script should have a param() block' + } + } + Context 'public functions' { + BeforeAll { + $functionBearingPublicFiles = $publicFunctionFiles | Where-Object { + $Ast = [System.Management.Automation.Language.Parser]::ParseFile($_.FullName, [ref]$null, [ref]$null) + $tokens = $Ast.FindAll( { $args[0] -is [System.Management.Automation.Language.FunctionDefinitionAst] } , $true ) + $tokens.count -ne 0 + } + } + It 'All public functions/filters have tests (ID: FunctionTest)' { + $issues = @('') + + # Get commands used in tests from the files in 'tests' folder. + $testFiles = Get-ChildItem -Path $TestsPath -Recurse -File -Filter '*.ps1' + $functionsInTestFiles = $testFiles | ForEach-Object { + $ast = [System.Management.Automation.Language.Parser]::ParseFile($_.FullName, [ref]$null, [ref]$null) + $ast.FindAll( + { + param($node) + $node -is [System.Management.Automation.Language.CommandAst] -and + $node.GetCommandName() -ne $null + }, + $true + ) | ForEach-Object { + $_.GetCommandName() + } | Sort-Object -Unique + } + + # Get all the functions in the public function files and check if they have a test. + $functionBearingPublicFiles | ForEach-Object { + $filePath = $_.FullName + $relativePath = $filePath.Replace($Path, '').Trim('\').Trim('/') + $skipTest = Select-String -Path $filePath -Pattern '#SkipTest:FunctionTest:(?.+)' -AllMatches + if ($skipTest.Matches.Count -gt 0) { + $skipReason = $skipTest.Matches.Groups | Where-Object { $_.Name -eq 'Reason' } | Select-Object -ExpandProperty Value + Write-Host "::warning title=Skipping FunctionTest test:: - $relativePath - $skipReason" + } else { + $Ast = [System.Management.Automation.Language.Parser]::ParseFile($filePath, [ref]$null, [ref]$null) + $tokens = $Ast.FindAll( { $args[0] -is [System.Management.Automation.Language.FunctionDefinitionAst] } , $true ) + $functionName = $tokens.Name + # If the file contains a function and the function name is not in the test files, add it as an issue. + if ($functionName.count -eq 1 -and $functionsInTestFiles -notcontains $functionName) { + $issues += " - $relativePath - $functionName" + } + } + } + $issues -join [Environment]::NewLine | + Should -BeNullOrEmpty -Because 'a test should exist for each of the functions in the module' + } + } + # Context 'private functions' {} + } + + # Context 'variables' { + # } +} diff --git a/.github/actions/Test-PSModule/src/tests/SourceCode/SourceCode.Configuration.ps1 b/.github/actions/Test-PSModule/src/tests/SourceCode/SourceCode.Configuration.ps1 new file mode 100644 index 00000000..e76f767f --- /dev/null +++ b/.github/actions/Test-PSModule/src/tests/SourceCode/SourceCode.Configuration.ps1 @@ -0,0 +1,8 @@ +@{ + TestResult = @{ + Enabled = $true + } + Output = @{ + Verbosity = 'Detailed' + } +} diff --git a/.github/actions/Test-PSModule/tests/outputEnumOnlyTestRepo/outputs/module/PSModuleEnumOnly/PSModuleEnumOnly.psd1 b/.github/actions/Test-PSModule/tests/outputEnumOnlyTestRepo/outputs/module/PSModuleEnumOnly/PSModuleEnumOnly.psd1 new file mode 100644 index 00000000..d9689588 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputEnumOnlyTestRepo/outputs/module/PSModuleEnumOnly/PSModuleEnumOnly.psd1 @@ -0,0 +1,36 @@ +@{ + RootModule = 'PSModuleEnumOnly.psm1' + ModuleVersion = '999.0.0' + CompatiblePSEditions = @( + 'Core' + 'Desktop' + ) + GUID = 'b1c8c046-2253-4f30-8e08-e98a222a954a' + Author = 'PSModule' + CompanyName = 'PSModule' + Copyright = '(c) 2024 PSModule. All rights reserved.' + Description = 'Fixture module with enum type accelerators and no class type accelerators.' + PowerShellVersion = '5.1' + ProcessorArchitecture = 'None' + FunctionsToExport = @() + CmdletsToExport = @() + VariablesToExport = @() + AliasesToExport = @() + FileList = @( + 'PSModuleEnumOnly.psd1' + 'PSModuleEnumOnly.psm1' + ) + PrivateData = @{ + PSData = @{ + Tags = @( + 'workflow' + 'powershell' + 'powershell-module' + 'PSEdition_Desktop' + 'PSEdition_Core' + ) + LicenseUri = 'https://github.com/PSModule/Test-PSModule/blob/main/LICENSE' + ProjectUri = 'https://github.com/PSModule/Test-PSModule' + } + } +} \ No newline at end of file diff --git a/.github/actions/Test-PSModule/tests/outputEnumOnlyTestRepo/outputs/module/PSModuleEnumOnly/PSModuleEnumOnly.psm1 b/.github/actions/Test-PSModule/tests/outputEnumOnlyTestRepo/outputs/module/PSModuleEnumOnly/PSModuleEnumOnly.psm1 new file mode 100644 index 00000000..35724786 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputEnumOnlyTestRepo/outputs/module/PSModuleEnumOnly/PSModuleEnumOnly.psm1 @@ -0,0 +1,48 @@ +[CmdletBinding()] +param() + +enum ModuleLifecycle { + Loaded + Removed +} + +#region Class exporter +$TypeAcceleratorsClass = [psobject].Assembly.GetType( + 'System.Management.Automation.TypeAccelerators' +) +$ExistingTypeAccelerators = $TypeAcceleratorsClass::Get +$ExportableEnums = @( + [ModuleLifecycle] +) +$ExportableEnums | ForEach-Object { Write-Verbose "Exporting enum '$($_.FullName)'." } +foreach ($Type in $ExportableEnums) { + if ($Type.FullName -in $ExistingTypeAccelerators.Keys) { + Write-Verbose "Enum already exists [$($Type.FullName)]. Skipping." + } else { + Write-Verbose "Importing enum '$Type'." + $TypeAcceleratorsClass::Add($Type.FullName, $Type) + } +} +$ExportableClasses = @( +) +$ExportableClasses | ForEach-Object { Write-Verbose "Exporting class '$($_.FullName)'." } +foreach ($Type in $ExportableClasses) { + if ($Type.FullName -in $ExistingTypeAccelerators.Keys) { + Write-Verbose "Class already exists [$($Type.FullName)]. Skipping." + } else { + Write-Verbose "Importing class '$Type'." + $TypeAcceleratorsClass::Add($Type.FullName, $Type) + } +} + +$MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = { + $CurrentTypeAccelerators = $TypeAcceleratorsClass::Get + foreach ($Type in ($ExportableEnums + $ExportableClasses)) { + if ($CurrentTypeAccelerators[$Type.FullName] -eq $Type) { + $null = $TypeAcceleratorsClass::Remove($Type.FullName) + } + } +}.GetNewClosure() +#endregion Class exporter + +Export-ModuleMember -Function @() -Alias @() -Variable @() \ No newline at end of file diff --git a/.github/actions/Test-PSModule/tests/outputEnumOnlyTestRepo/tests/.gitkeep b/.github/actions/Test-PSModule/tests/outputEnumOnlyTestRepo/tests/.gitkeep new file mode 100644 index 00000000..93172870 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputEnumOnlyTestRepo/tests/.gitkeep @@ -0,0 +1 @@ +Tracks the fixture tests directory required by the action setup step. \ No newline at end of file diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/Get-PSModuleTest.md b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/Get-PSModuleTest.md new file mode 100644 index 00000000..346f9b93 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/Get-PSModuleTest.md @@ -0,0 +1,72 @@ +--- +external help file: PSModuleTest-help.xml +Module Name: PSModuleTest +online version: +schema: 2.0.0 +--- + +# Get-PSModuleTest + +## SYNOPSIS +Performs tests on a module. + +## SYNTAX + +```powershell +Get-PSModuleTest [-Name] [-ProgressAction ] [] +``` + +## DESCRIPTION +{{ Fill in the Description }} + +## EXAMPLES + +### EXAMPLE 1 +```powershell +Test-PSModule -Name 'World' +``` + +"Hello, World!" + +## PARAMETERS + +### -Name +Name of the person to greet. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ProgressAction +{{ Fill ProgressAction Description }} + +```yaml +Type: ActionPreference +Parameter Sets: (All) +Aliases: proga + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/New-PSModuleTest.md b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/New-PSModuleTest.md new file mode 100644 index 00000000..e3ce5e7e --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/New-PSModuleTest.md @@ -0,0 +1,72 @@ +--- +external help file: PSModuleTest-help.xml +Module Name: PSModuleTest +online version: +schema: 2.0.0 +--- + +# New-PSModuleTest + +## SYNOPSIS +Performs tests on a module. + +## SYNTAX + +```powershell +New-PSModuleTest [-Name] [-ProgressAction ] [] +``` + +## DESCRIPTION +{{ Fill in the Description }} + +## EXAMPLES + +### EXAMPLE 1 +```powershell +Test-PSModule -Name 'World' +``` + +"Hello, World!" + +## PARAMETERS + +### -Name +Name of the person to greet. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ProgressAction +{{ Fill ProgressAction Description }} + +```yaml +Type: ActionPreference +Parameter Sets: (All) +Aliases: proga + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/Set-PSModuleTest.md b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/Set-PSModuleTest.md new file mode 100644 index 00000000..6504d6f4 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/Set-PSModuleTest.md @@ -0,0 +1,72 @@ +--- +external help file: PSModuleTest-help.xml +Module Name: PSModuleTest +online version: +schema: 2.0.0 +--- + +# Set-PSModuleTest + +## SYNOPSIS +Performs tests on a module. + +## SYNTAX + +```powershell +Set-PSModuleTest [-Name] [-ProgressAction ] [] +``` + +## DESCRIPTION +{{ Fill in the Description }} + +## EXAMPLES + +### EXAMPLE 1 +```powershell +Test-PSModule -Name 'World' +``` + +"Hello, World!" + +## PARAMETERS + +### -Name +Name of the person to greet. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ProgressAction +{{ Fill ProgressAction Description }} + +```yaml +Type: ActionPreference +Parameter Sets: (All) +Aliases: proga + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/Test-PSModuleTest.md b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/Test-PSModuleTest.md new file mode 100644 index 00000000..59fc9f86 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/docs/PSModuleTest/Test-PSModuleTest.md @@ -0,0 +1,72 @@ +--- +external help file: PSModuleTest-help.xml +Module Name: PSModuleTest +online version: +schema: 2.0.0 +--- + +# Test-PSModuleTest + +## SYNOPSIS +Performs tests on a module. + +## SYNTAX + +```powershell +Test-PSModuleTest [-Name] [-ProgressAction ] [] +``` + +## DESCRIPTION +{{ Fill in the Description }} + +## EXAMPLES + +### EXAMPLE 1 +```powershell +Test-PSModule -Name 'World' +``` + +"Hello, World!" + +## PARAMETERS + +### -Name +Name of the person to greet. + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ProgressAction +{{ Fill ProgressAction Description }} + +```yaml +Type: ActionPreference +Parameter Sets: (All) +Aliases: proga + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +## OUTPUTS + +## NOTES + +## RELATED LINKS diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/PSModuleTest.psd1 b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/PSModuleTest.psd1 new file mode 100644 index 00000000..d248c5a9 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/PSModuleTest.psd1 @@ -0,0 +1,75 @@ +@{ + RootModule = 'PSModuleTest.psm1' + ModuleVersion = '3.0.11' + CompatiblePSEditions = @( + 'Core' + 'Desktop' + ) + GUID = '20b37221-db1c-43db-9cca-f22b33123548' + Author = 'PSModule' + CompanyName = 'PSModule' + Copyright = '(c) 2024 PSModule. All rights reserved.' + Description = 'Process a module from source code to published module.' + PowerShellVersion = '5.1' + ProcessorArchitecture = 'None' + RequiredModules = @( + @{ + ModuleVersion = '1.1.5' + ModuleName = 'PSSemVer' + } + 'Utilities' + ) + RequiredAssemblies = 'assemblies/LsonLib.dll' + ScriptsToProcess = 'scripts/loader.ps1' + TypesToProcess = @( + 'types/DirectoryInfo.Types.ps1xml' + 'types/FileInfo.Types.ps1xml' + ) + FormatsToProcess = @( + 'formats/CultureInfo.Format.ps1xml' + 'formats/Mygciview.Format.ps1xml' + ) + NestedModules = @( + 'modules/OtherPSModule.psm1' + ) + FunctionsToExport = @( + 'Get-PSModuleTest' + 'New-PSModuleTest' + 'Set-PSModuleTest' + 'Test-PSModuleTest' + ) + CmdletsToExport = @() + VariablesToExport = @() + AliasesToExport = '*' + ModuleList = @( + 'modules/OtherPSModule.psm1' + ) + FileList = @( + 'PSModuleTest.psd1' + 'PSModuleTest.psm1' + 'assemblies/LsonLib.dll' + 'data/Config.psd1' + 'data/Settings.psd1' + 'formats/CultureInfo.Format.ps1xml' + 'formats/Mygciview.Format.ps1xml' + 'modules/OtherPSModule.psm1' + 'scripts/loader.ps1' + 'types/DirectoryInfo.Types.ps1xml' + 'types/FileInfo.Types.ps1xml' + ) + PrivateData = @{ + PSData = @{ + Tags = @( + 'workflow' + 'powershell' + 'powershell-module' + 'PSEdition_Desktop' + 'PSEdition_Core' + ) + LicenseUri = 'https://github.com/PSModule/Process-PSModule/blob/main/LICENSE' + ProjectUri = 'https://github.com/PSModule/Process-PSModule' + IconUri = 'https://raw.githubusercontent.com/PSModule/Process-PSModule/main/icon/icon.png' + } + } +} + diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1 b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1 new file mode 100644 index 00000000..62a7268a --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/PSModuleTest.psm1 @@ -0,0 +1,434 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidLongLines', '', Justification = 'Contains long links.')] +[CmdletBinding()] +param() + +$scriptName = $MyInvocation.MyCommand.Name +Write-Debug "[$scriptName] Importing module" + +#region - Data import +Write-Debug "[$scriptName] - [data] - Processing folder" +$dataFolder = (Join-Path $PSScriptRoot 'data') +Write-Debug "[$scriptName] - [data] - [$dataFolder]" +Get-ChildItem -Path "$dataFolder" -Recurse -Force -Include '*.psd1' -ErrorAction SilentlyContinue | ForEach-Object { + Write-Debug "[$scriptName] - [data] - [$($_.Name)] - Importing" + New-Variable -Name $_.BaseName -Value (Import-PowerShellDataFile -Path $_.FullName) -Force + Write-Debug "[$scriptName] - [data] - [$($_.Name)] - Done" +} + +Write-Debug "[$scriptName] - [data] - Done" +#endregion - Data import + +#region - From /init +Write-Debug "[$scriptName] - [/init] - Processing folder" + +#region - From /init/initializer.ps1 +Write-Debug "[$scriptName] - [/init/initializer.ps1] - Importing" + +Write-Verbose '-------------------------------' +Write-Verbose '--- THIS IS AN INITIALIZER ---' +Write-Verbose '-------------------------------' + +Write-Debug "[$scriptName] - [/init/initializer.ps1] - Done" +#endregion - From /init/initializer.ps1 + +Write-Debug "[$scriptName] - [/init] - Done" +#endregion - From /init + +#region - From /classes +Write-Debug "[$scriptName] - [/classes] - Processing folder" + +#region - From /classes/Book.ps1 +Write-Debug "[$scriptName] - [/classes/Book.ps1] - Importing" + +class Book { + # Class properties + [string] $Title + [string] $Author + [string] $Synopsis + [string] $Publisher + [datetime] $PublishDate + [int] $PageCount + [string[]] $Tags + # Default constructor + Book() { $this.Init(@{}) } + # Convenience constructor from hashtable + Book([hashtable]$Properties) { $this.Init($Properties) } + # Common constructor for title and author + Book([string]$Title, [string]$Author) { + $this.Init(@{Title = $Title; Author = $Author }) + } + # Shared initializer method + [void] Init([hashtable]$Properties) { + foreach ($Property in $Properties.Keys) { + $this.$Property = $Properties.$Property + } + } + # Method to calculate reading time as 2 minutes per page + [timespan] GetReadingTime() { + if ($this.PageCount -le 0) { + throw 'Unable to determine reading time from page count.' + } + $Minutes = $this.PageCount * 2 + return [timespan]::new(0, $Minutes, 0) + } + # Method to calculate how long ago a book was published + [timespan] GetPublishedAge() { + if ( + $null -eq $this.PublishDate -or + $this.PublishDate -eq [datetime]::MinValue + ) { throw 'PublishDate not defined' } + + return (Get-Date) - $this.PublishDate + } + # Method to return a string representation of the book + [string] ToString() { + return "$($this.Title) by $($this.Author) ($($this.PublishDate.Year))" + } +} + +Write-Debug "[$scriptName] - [/classes/Book.ps1] - Done" +#endregion - From /classes/Book.ps1 +#region - From /classes/BookList.ps1 +Write-Debug "[$scriptName] - [/classes/BookList.ps1] - Importing" + +class BookList { + # Static property to hold the list of books + static [System.Collections.Generic.List[Book]] $Books + # Static method to initialize the list of books. Called in the other + # static methods to avoid needing to explicit initialize the value. + static [void] Initialize() { [BookList]::Initialize($false) } + static [bool] Initialize([bool]$force) { + if ([BookList]::Books.Count -gt 0 -and -not $force) { + return $false + } + + [BookList]::Books = [System.Collections.Generic.List[Book]]::new() + + return $true + } + # Ensure a book is valid for the list. + static [void] Validate([book]$Book) { + $Prefix = @( + 'Book validation failed: Book must be defined with the Title,' + 'Author, and PublishDate properties, but' + ) -join ' ' + if ($null -eq $Book) { throw "$Prefix was null" } + if ([string]::IsNullOrEmpty($Book.Title)) { + throw "$Prefix Title wasn't defined" + } + if ([string]::IsNullOrEmpty($Book.Author)) { + throw "$Prefix Author wasn't defined" + } + if ([datetime]::MinValue -eq $Book.PublishDate) { + throw "$Prefix PublishDate wasn't defined" + } + } + # Static methods to manage the list of books. + # Add a book if it's not already in the list. + static [void] Add([Book]$Book) { + [BookList]::Initialize() + [BookList]::Validate($Book) + if ([BookList]::Books.Contains($Book)) { + throw "Book '$Book' already in list" + } + + $FindPredicate = { + param([Book]$b) + + $b.Title -eq $Book.Title -and + $b.Author -eq $Book.Author -and + $b.PublishDate -eq $Book.PublishDate + }.GetNewClosure() + if ([BookList]::Books.Find($FindPredicate)) { + throw "Book '$Book' already in list" + } + + [BookList]::Books.Add($Book) + } + # Clear the list of books. + static [void] Clear() { + [BookList]::Initialize() + [BookList]::Books.Clear() + } + # Find a specific book using a filtering scriptblock. + static [Book] Find([scriptblock]$Predicate) { + [BookList]::Initialize() + return [BookList]::Books.Find($Predicate) + } + # Find every book matching the filtering scriptblock. + static [Book[]] FindAll([scriptblock]$Predicate) { + [BookList]::Initialize() + return [BookList]::Books.FindAll($Predicate) + } + # Remove a specific book. + static [void] Remove([Book]$Book) { + [BookList]::Initialize() + [BookList]::Books.Remove($Book) + } + # Remove a book by property value. + static [void] RemoveBy([string]$Property, [string]$Value) { + [BookList]::Initialize() + $Index = [BookList]::Books.FindIndex({ + param($b) + $b.$Property -eq $Value + }.GetNewClosure()) + if ($Index -ge 0) { + [BookList]::Books.RemoveAt($Index) + } + } +} + +Write-Debug "[$scriptName] - [/classes/BookList.ps1] - Done" +#endregion - From /classes/BookList.ps1 + +Write-Debug "[$scriptName] - [/classes] - Done" +#endregion - From /classes + +#region - From /private +Write-Debug "[$scriptName] - [/private] - Processing folder" + +#region - From /private/Get-InternalPSModule.ps1 +Write-Debug "[$scriptName] - [/private/Get-InternalPSModule.ps1] - Importing" + +function Get-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Debug "[$scriptName] - [/private/Get-InternalPSModule.ps1] - Done" +#endregion - From /private/Get-InternalPSModule.ps1 +#region - From /private/Set-InternalPSModule.ps1 +Write-Debug "[$scriptName] - [/private/Set-InternalPSModule.ps1] - Importing" + +function Set-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +Write-Debug "[$scriptName] - [/private/Set-InternalPSModule.ps1] - Done" +#endregion - From /private/Set-InternalPSModule.ps1 + +Write-Debug "[$scriptName] - [/private] - Done" +#endregion - From /private + +#region - From /public +Write-Debug "[$scriptName] - [/public] - Processing folder" + +#region - From /public/Get-PSModuleTest.ps1 +Write-Debug "[$scriptName] - [/public/Get-PSModuleTest.ps1] - Importing" + +#Requires -Modules Utilities + +function Get-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Debug 'Debug message' + Write-Verbose 'Verbose message' + Write-Output "Hello, $Name!" +} + +Write-Debug "[$scriptName] - [/public/Get-PSModuleTest.ps1] - Done" +#endregion - From /public/Get-PSModuleTest.ps1 +#region - From /public/New-PSModuleTest.ps1 +Write-Debug "[$scriptName] - [/public/New-PSModuleTest.ps1] - Importing" + +#Requires -Modules @{ModuleName='PSSemVer'; ModuleVersion='1.0'} + +function New-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Debug 'Debug message' + Write-Verbose 'Verbose message' + Write-Output "Hello, $Name!" +} + +Write-Debug "[$scriptName] - [/public/New-PSModuleTest.ps1] - Done" +#endregion - From /public/New-PSModuleTest.ps1 +#region - From /public/Set-PSModuleTest.ps1 +Write-Debug "[$scriptName] - [/public/Set-PSModuleTest.ps1] - Importing" + +function Set-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding(SupportsShouldProcess)] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Debug 'Debug message' + Write-Verbose 'Verbose message' + if ($PSCmdlet.ShouldProcess($Name, 'Set-PSModuleTest')) { + Write-Output "Hello, $Name!" + } +} + +Write-Debug "[$scriptName] - [/public/Set-PSModuleTest.ps1] - Done" +#endregion - From /public/Set-PSModuleTest.ps1 +#region - From /public/Test-PSModuleTest.ps1 +Write-Debug "[$scriptName] - [/public/Test-PSModuleTest.ps1] - Importing" + +function Test-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Debug 'Debug message' + Write-Verbose 'Verbose message' + Write-Output "Hello, $Name!" +} + +Write-Debug "[$scriptName] - [/public/Test-PSModuleTest.ps1] - Done" +#endregion - From /public/Test-PSModuleTest.ps1 + +Write-Debug "[$scriptName] - [/public] - Done" +#endregion - From /public + +#region - From /finally.ps1 +Write-Debug "[$scriptName] - [/finally.ps1] - Importing" + +Write-Verbose '------------------------------' +Write-Verbose '--- THIS IS A LAST LOADER ---' +Write-Verbose '------------------------------' +Write-Debug "[$scriptName] - [/finally.ps1] - Done" +#endregion - From /finally.ps1 + +#region Class exporter +# Get the internal TypeAccelerators class to use its static methods. +$TypeAcceleratorsClass = [psobject].Assembly.GetType( + 'System.Management.Automation.TypeAccelerators' +) +# Ensure none of the types would clobber an existing type accelerator. +# If a type accelerator with the same name already exists, skip adding it. +$ExistingTypeAccelerators = $TypeAcceleratorsClass::Get +# Define the types to export with type accelerators. +$ExportableEnums = @( +) +$ExportableEnums | ForEach-Object { Write-Verbose "Exporting enum '$($_.FullName)'." } +foreach ($Type in $ExportableEnums) { + if ($Type.FullName -in $ExistingTypeAccelerators.Keys) { + Write-Verbose "Enum already exists [$($Type.FullName)]. Skipping." + } else { + Write-Verbose "Importing enum '$Type'." + $TypeAcceleratorsClass::Add($Type.FullName, $Type) + } +} +$ExportableClasses = @( + [Book] + [BookList] +) +$ExportableClasses | ForEach-Object { Write-Verbose "Exporting class '$($_.FullName)'." } +foreach ($Type in $ExportableClasses) { + if ($Type.FullName -in $ExistingTypeAccelerators.Keys) { + Write-Verbose "Class already exists [$($Type.FullName)]. Skipping." + } else { + Write-Verbose "Importing class '$Type'." + $TypeAcceleratorsClass::Add($Type.FullName, $Type) + } +} + +# Remove type accelerators when the module is removed. +$MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = { + foreach ($Type in ($ExportableEnums + $ExportableClasses)) { + $null = $TypeAcceleratorsClass::Remove($Type.FullName) + } +}.GetNewClosure() +#endregion Class exporter + +$exports = @{ + Cmdlet = '' + Alias = '*' + Variable = '' + Function = @( + 'Get-PSModuleTest' + 'New-PSModuleTest' + 'Set-PSModuleTest' + 'Test-PSModuleTest' + ) +} +Export-ModuleMember @exports + diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/assemblies/LsonLib.dll b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/assemblies/LsonLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..36618070d5c9f5131ec66720aa0565c13e86d23f GIT binary patch literal 43520 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 + + + + System.Globalization.CultureInfo + + System.Globalization.CultureInfo + + + + + 16 + + + 16 + + + + + + + + LCID + + + Name + + + DisplayName + + + + + + + + diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/formats/Mygciview.Format.ps1xml b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/formats/Mygciview.Format.ps1xml new file mode 100644 index 00000000..4c972c2c --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/formats/Mygciview.Format.ps1xml @@ -0,0 +1,65 @@ + + + + + mygciview + + System.IO.DirectoryInfo + System.IO.FileInfo + + + PSParentPath + + + + + + 7 + Left + + + + 26 + Right + + + + 26 + Right + + + + 14 + Right + + + + Left + + + + + + + + ModeWithoutHardLink + + + LastWriteTime + + + CreationTime + + + Length + + + Name + + + + + + + + diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1 b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1 new file mode 100644 index 00000000..9e4353ba --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/modules/OtherPSModule.psm1 @@ -0,0 +1,19 @@ +Function Get-OtherPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .DESCRIPTION + A longer description of the function. + + .EXAMPLE + Get-OtherPSModule -Name 'World' + #> + [CmdletBinding()] + param( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1 b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1 new file mode 100644 index 00000000..973735ad --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/scripts/loader.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------' +Write-Verbose '--- THIS IS A LOADER ---' +Write-Verbose '-------------------------' diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/types/DirectoryInfo.Types.ps1xml b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/types/DirectoryInfo.Types.ps1xml new file mode 100644 index 00000000..aef538b2 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/types/DirectoryInfo.Types.ps1xml @@ -0,0 +1,21 @@ + + + + System.IO.FileInfo + + + Status + Success + + + + + System.IO.DirectoryInfo + + + Status + Success + + + + diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/types/FileInfo.Types.ps1xml b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/types/FileInfo.Types.ps1xml new file mode 100644 index 00000000..4cfaf6b8 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/outputs/module/PSModuleTest/types/FileInfo.Types.ps1xml @@ -0,0 +1,14 @@ + + + + System.IO.FileInfo + + + Age + + ((Get-Date) - ($this.CreationTime)).Days + + + + + diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/tests/Environments/Environment.Tests.ps1 b/.github/actions/Test-PSModule/tests/outputTestRepo/tests/Environments/Environment.Tests.ps1 new file mode 100644 index 00000000..211be946 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/tests/Environments/Environment.Tests.ps1 @@ -0,0 +1,15 @@ +Describe 'Environment Variables are available' { + It 'Should be available [<_>]' -ForEach @( + 'TEST_APP_ENT_CLIENT_ID', + 'TEST_APP_ENT_PRIVATE_KEY', + 'TEST_APP_ORG_CLIENT_ID', + 'TEST_APP_ORG_PRIVATE_KEY', + 'TEST_USER_ORG_FG_PAT', + 'TEST_USER_USER_FG_PAT', + 'TEST_USER_PAT' + ) { + $name = $_ + Write-Verbose "Environment variable: [$name]" -Verbose + Get-ChildItem env: | Where-Object { $_.Name -eq $name } | Should -Not -BeNullOrEmpty + } +} diff --git a/.github/actions/Test-PSModule/tests/outputTestRepo/tests/MyTests/PSModuleTest.Tests.ps1 b/.github/actions/Test-PSModule/tests/outputTestRepo/tests/MyTests/PSModuleTest.Tests.ps1 new file mode 100644 index 00000000..7a49dadb --- /dev/null +++ b/.github/actions/Test-PSModule/tests/outputTestRepo/tests/MyTests/PSModuleTest.Tests.ps1 @@ -0,0 +1,44 @@ +[CmdletBinding()] +param( + # Path to the module to test. + [Parameter()] + [string] $Path +) + +Write-Verbose "Path to the module: [$Path]" -Verbose +Describe 'PSModuleTest.Tests.ps1' { + Context 'Function: Test-PSModuleTest' { + It 'Should be able to call the function' { + Write-Verbose (Test-PSModuleTest -Name 'World' | Out-String) -Verbose + Test-PSModuleTest -Name 'World' | Should -Be 'Hello, World!' + } + } + + Context 'Function: Get-PSModuleTest' { + It 'Should be able to call the function' { + Write-Verbose (Get-PSModuleTest -Name 'World' | Out-String) -Verbose + Get-PSModuleTest -Name 'World' | Should -Be 'Hello, World!' + } + } + + Context 'Function: New-PSModuleTest' { + It 'Should be able to call the function' { + Write-Verbose (New-PSModuleTest -Name 'World' | Out-String) -Verbose + New-PSModuleTest -Name 'World' | Should -Be 'Hello, World!' + } + } + + Context 'Function: Set-PSModuleTest' { + It 'Should be able to call the function' { + Write-Verbose (Set-PSModuleTest -Name 'World' | Out-String) -Verbose + Set-PSModuleTest -Name 'World' | Should -Be 'Hello, World!' + } + } + + Context 'Variables' { + It "Exports a variable for SolarSystems that contains 'Solar System'" { + Write-Verbose ($SolarSystems | Out-String) -Verbose + $SolarSystems[0].Name | Should -Be 'Solar System' + } + } +} diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/README.md b/.github/actions/Test-PSModule/tests/srcTestRepo/README.md new file mode 100644 index 00000000..b459e352 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/README.md @@ -0,0 +1,3 @@ +# Test module + +This is a test readme. diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/icon/icon.png b/.github/actions/Test-PSModule/tests/srcTestRepo/icon/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..be83fd5fd3914846c735d44415569b86c254ccad GIT binary patch literal 5882 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 OgRD;4;a-^H$^Qd{UB>JH literal 0 HcmV?d00001 diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/mkdocs.yml b/.github/actions/Test-PSModule/tests/srcTestRepo/mkdocs.yml new file mode 100644 index 00000000..df5e17ad --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/mkdocs.yml @@ -0,0 +1,75 @@ +site_name: -{{ REPO_NAME }}- +theme: + name: material + language: en + font: + text: Roboto + code: Sono + logo: Assets/icon.png + favicon: Assets/icon.png + palette: + # Palette toggle for automatic mode + - media: "(prefers-color-scheme)" + toggle: + icon: material/link + name: Switch to dark mode + # Palette toggle for dark mode + - media: '(prefers-color-scheme: dark)' + scheme: slate + toggle: + primary: black + accent: green + icon: material/toggle-switch-off-outline + name: Switch to light mode + # Palette toggle for light mode + - media: '(prefers-color-scheme: light)' + scheme: default + toggle: + primary: indigo + accent: green + icon: material/toggle-switch + name: Switch to system preference + icon: + repo: material/github + features: + - navigation.instant + - navigation.instant.progress + - navigation.indexes + - navigation.top + - navigation.tracking + - navigation.expand + - search.suggest + - search.highlight + +repo_name: -{{ REPO_OWNER }}-/-{{ REPO_NAME }}- +repo_url: https://github.com/-{{ REPO_OWNER }}-/-{{ REPO_NAME }}- + +plugins: + - search + +markdown_extensions: + - toc: + permalink: true # Adds a link icon to headings + - attr_list + - admonition + - md_in_html + - pymdownx.details # Enables collapsible admonitions + +extra: + social: + - icon: fontawesome/brands/discord + link: https://discord.gg/jedJWCPAhD + name: -{{ REPO_OWNER }}- on Discord + - icon: fontawesome/brands/github + link: https://github.com/-{{ REPO_OWNER }}-/ + name: -{{ REPO_OWNER }}- on GitHub + consent: + title: Cookie consent + description: >- + We use cookies to recognize your repeated visits and preferences, as well + as to measure the effectiveness of our documentation and whether users + find what they're searching for. With your consent, you're helping us to + make our documentation better. + actions: + - accept + - reject diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/assemblies/LsonLib.dll b/.github/actions/Test-PSModule/tests/srcTestRepo/src/assemblies/LsonLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..36618070d5c9f5131ec66720aa0565c13e86d23f GIT binary patch literal 43520 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 + + + + System.Globalization.CultureInfo + + System.Globalization.CultureInfo + + + + + 16 + + + 16 + + + + + + + + LCID + + + Name + + + DisplayName + + + + + + + + diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/formats/Mygciview.Format.ps1xml b/.github/actions/Test-PSModule/tests/srcTestRepo/src/formats/Mygciview.Format.ps1xml new file mode 100644 index 00000000..4c972c2c --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/formats/Mygciview.Format.ps1xml @@ -0,0 +1,65 @@ + + + + + mygciview + + System.IO.DirectoryInfo + System.IO.FileInfo + + + PSParentPath + + + + + + 7 + Left + + + + 26 + Right + + + + 26 + Right + + + + 14 + Right + + + + Left + + + + + + + + ModeWithoutHardLink + + + LastWriteTime + + + CreationTime + + + Length + + + Name + + + + + + + + diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/private/Get-InternalPSModule.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/private/Get-InternalPSModule.ps1 new file mode 100644 index 00000000..89f053cb --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/private/Get-InternalPSModule.ps1 @@ -0,0 +1,18 @@ +function Get-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/private/Set-InternalPSModule.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/private/Set-InternalPSModule.ps1 new file mode 100644 index 00000000..cf870ba6 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/private/Set-InternalPSModule.ps1 @@ -0,0 +1,22 @@ +function Set-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 new file mode 100644 index 00000000..57257f1d --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 @@ -0,0 +1,23 @@ +#Requires -Modules Utilities +#Requires -Modules @{ ModuleName = 'PSSemVer'; RequiredVersion = '1.1.4' } +#Requires -Modules @{ ModuleName = 'DynamicParams'; ModuleVersion = '1.1.8' } +#Requires -Modules @{ ModuleName = 'Store'; ModuleVersion = '0.3.1' } + +function Get-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 new file mode 100644 index 00000000..5fa16bc3 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 @@ -0,0 +1,37 @@ +#Requires -Modules @{ModuleName='PSSemVer'; ModuleVersion='1.1.4'} + +function New-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + + .NOTES + Testing if a module can have a [Markdown based link](https://example.com). + !"#¤%&/()=?`´^¨*'-_+§½{[]}<>|@£$€¥¢:;.," + \[This is a test\] + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [Alias('New-PSModuleTestAlias1')] + [Alias('New-PSModuleTestAlias2')] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +New-Alias New-PSModuleTestAlias3 New-PSModuleTest +New-Alias -Name New-PSModuleTestAlias4 -Value New-PSModuleTest + + +Set-Alias New-PSModuleTestAlias5 New-PSModuleTest diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/PSModule/PSModule.md b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/PSModule/PSModule.md new file mode 100644 index 00000000..79741cf4 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/PSModule/PSModule.md @@ -0,0 +1 @@ +# This is PSModule diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 new file mode 100644 index 00000000..a87ac117 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 @@ -0,0 +1,22 @@ +function Set-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/SomethingElse.md b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/SomethingElse.md new file mode 100644 index 00000000..d9f7e9ee --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/SomethingElse/SomethingElse.md @@ -0,0 +1 @@ +# This is SomethingElse diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/Test-PSModuleTest.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/Test-PSModuleTest.ps1 new file mode 100644 index 00000000..26be2b9b --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/Test-PSModuleTest.ps1 @@ -0,0 +1,18 @@ +function Test-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/completers.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/completers.ps1 new file mode 100644 index 00000000..6b1adbb7 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/functions/public/completers.ps1 @@ -0,0 +1,8 @@ +Register-ArgumentCompleter -CommandName New-PSModuleTest -ParameterName Name -ScriptBlock { + param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) + $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters + + 'Alice', 'Bob', 'Charlie' | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) + } +} diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/header.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/header.ps1 new file mode 100644 index 00000000..cc1fde9a --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/header.ps1 @@ -0,0 +1,3 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidLongLines', '', Justification = 'Contains long links.')] +[CmdletBinding()] +param() diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/init/initializer.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/init/initializer.ps1 new file mode 100644 index 00000000..28396fb0 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/init/initializer.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------------' +Write-Verbose '--- THIS IS AN INITIALIZER ---' +Write-Verbose '-------------------------------' diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/modules/OtherPSModule.psm1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/modules/OtherPSModule.psm1 new file mode 100644 index 00000000..5d6af8ea --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/modules/OtherPSModule.psm1 @@ -0,0 +1,19 @@ +function Get-OtherPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .DESCRIPTION + A longer description of the function. + + .EXAMPLE + Get-OtherPSModule -Name 'World' + #> + [CmdletBinding()] + param( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/scripts/loader.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/scripts/loader.ps1 new file mode 100644 index 00000000..973735ad --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/scripts/loader.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------' +Write-Verbose '--- THIS IS A LOADER ---' +Write-Verbose '-------------------------' diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/types/DirectoryInfo.Types.ps1xml b/.github/actions/Test-PSModule/tests/srcTestRepo/src/types/DirectoryInfo.Types.ps1xml new file mode 100644 index 00000000..aef538b2 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/types/DirectoryInfo.Types.ps1xml @@ -0,0 +1,21 @@ + + + + System.IO.FileInfo + + + Status + Success + + + + + System.IO.DirectoryInfo + + + Status + Success + + + + diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/types/FileInfo.Types.ps1xml b/.github/actions/Test-PSModule/tests/srcTestRepo/src/types/FileInfo.Types.ps1xml new file mode 100644 index 00000000..4cfaf6b8 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/types/FileInfo.Types.ps1xml @@ -0,0 +1,14 @@ + + + + System.IO.FileInfo + + + Age + + ((Get-Date) - ($this.CreationTime)).Days + + + + + diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/variables/private/PrivateVariables.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/variables/private/PrivateVariables.ps1 new file mode 100644 index 00000000..f1fc2c3b --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/variables/private/PrivateVariables.ps1 @@ -0,0 +1,47 @@ +$script:HabitablePlanets = @( + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + }, + @{ + Name = 'Mars' + Mass = 0.642 + Diameter = 6792 + DayLength = 24.7 + }, + @{ + Name = 'Proxima Centauri b' + Mass = 1.17 + Diameter = 11449 + DayLength = 5.15 + }, + @{ + Name = 'Kepler-442b' + Mass = 2.34 + Diameter = 11349 + DayLength = 5.7 + }, + @{ + Name = 'Kepler-452b' + Mass = 5.0 + Diameter = 17340 + DayLength = 20.0 + } +) + +$script:InhabitedPlanets = @( + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + }, + @{ + Name = 'Mars' + Mass = 0.642 + Diameter = 6792 + DayLength = 24.7 + } +) diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/variables/public/Moons.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/variables/public/Moons.ps1 new file mode 100644 index 00000000..dd0f33ca --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/variables/public/Moons.ps1 @@ -0,0 +1,6 @@ +$script:Moons = @( + @{ + Planet = 'Earth' + Name = 'Moon' + } +) diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/variables/public/Planets.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/variables/public/Planets.ps1 new file mode 100644 index 00000000..5927bc51 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/variables/public/Planets.ps1 @@ -0,0 +1,20 @@ +$script:Planets = @( + @{ + Name = 'Mercury' + Mass = 0.330 + Diameter = 4879 + DayLength = 4222.6 + }, + @{ + Name = 'Venus' + Mass = 4.87 + Diameter = 12104 + DayLength = 2802.0 + }, + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + } +) diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/src/variables/public/SolarSystems.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/src/variables/public/SolarSystems.ps1 new file mode 100644 index 00000000..acbcedfd --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/src/variables/public/SolarSystems.ps1 @@ -0,0 +1,17 @@ +$script:SolarSystems = @( + @{ + Name = 'Solar System' + Planets = $script:Planets + Moons = $script:Moons + }, + @{ + Name = 'Alpha Centauri' + Planets = @() + Moons = @() + }, + @{ + Name = 'Sirius' + Planets = @() + Moons = @() + } +) diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/tests/Environment.Tests.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/tests/Environment.Tests.ps1 new file mode 100644 index 00000000..211be946 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/tests/Environment.Tests.ps1 @@ -0,0 +1,15 @@ +Describe 'Environment Variables are available' { + It 'Should be available [<_>]' -ForEach @( + 'TEST_APP_ENT_CLIENT_ID', + 'TEST_APP_ENT_PRIVATE_KEY', + 'TEST_APP_ORG_CLIENT_ID', + 'TEST_APP_ORG_PRIVATE_KEY', + 'TEST_USER_ORG_FG_PAT', + 'TEST_USER_USER_FG_PAT', + 'TEST_USER_PAT' + ) { + $name = $_ + Write-Verbose "Environment variable: [$name]" -Verbose + Get-ChildItem env: | Where-Object { $_.Name -eq $name } | Should -Not -BeNullOrEmpty + } +} diff --git a/.github/actions/Test-PSModule/tests/srcTestRepo/tests/PSModuleTest.Tests.ps1 b/.github/actions/Test-PSModule/tests/srcTestRepo/tests/PSModuleTest.Tests.ps1 new file mode 100644 index 00000000..7a49dadb --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcTestRepo/tests/PSModuleTest.Tests.ps1 @@ -0,0 +1,44 @@ +[CmdletBinding()] +param( + # Path to the module to test. + [Parameter()] + [string] $Path +) + +Write-Verbose "Path to the module: [$Path]" -Verbose +Describe 'PSModuleTest.Tests.ps1' { + Context 'Function: Test-PSModuleTest' { + It 'Should be able to call the function' { + Write-Verbose (Test-PSModuleTest -Name 'World' | Out-String) -Verbose + Test-PSModuleTest -Name 'World' | Should -Be 'Hello, World!' + } + } + + Context 'Function: Get-PSModuleTest' { + It 'Should be able to call the function' { + Write-Verbose (Get-PSModuleTest -Name 'World' | Out-String) -Verbose + Get-PSModuleTest -Name 'World' | Should -Be 'Hello, World!' + } + } + + Context 'Function: New-PSModuleTest' { + It 'Should be able to call the function' { + Write-Verbose (New-PSModuleTest -Name 'World' | Out-String) -Verbose + New-PSModuleTest -Name 'World' | Should -Be 'Hello, World!' + } + } + + Context 'Function: Set-PSModuleTest' { + It 'Should be able to call the function' { + Write-Verbose (Set-PSModuleTest -Name 'World' | Out-String) -Verbose + Set-PSModuleTest -Name 'World' | Should -Be 'Hello, World!' + } + } + + Context 'Variables' { + It "Exports a variable for SolarSystems that contains 'Solar System'" { + Write-Verbose ($SolarSystems | Out-String) -Verbose + $SolarSystems[0].Name | Should -Be 'Solar System' + } + } +} diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/README.md b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/README.md new file mode 100644 index 00000000..b459e352 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/README.md @@ -0,0 +1,3 @@ +# Test module + +This is a test readme. diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/icon/icon.png b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/icon/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..be83fd5fd3914846c735d44415569b86c254ccad GIT binary patch literal 5882 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 OgRD;4;a-^H$^Qd{UB>JH literal 0 HcmV?d00001 diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/mkdocs.yml b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/mkdocs.yml new file mode 100644 index 00000000..df5e17ad --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/mkdocs.yml @@ -0,0 +1,75 @@ +site_name: -{{ REPO_NAME }}- +theme: + name: material + language: en + font: + text: Roboto + code: Sono + logo: Assets/icon.png + favicon: Assets/icon.png + palette: + # Palette toggle for automatic mode + - media: "(prefers-color-scheme)" + toggle: + icon: material/link + name: Switch to dark mode + # Palette toggle for dark mode + - media: '(prefers-color-scheme: dark)' + scheme: slate + toggle: + primary: black + accent: green + icon: material/toggle-switch-off-outline + name: Switch to light mode + # Palette toggle for light mode + - media: '(prefers-color-scheme: light)' + scheme: default + toggle: + primary: indigo + accent: green + icon: material/toggle-switch + name: Switch to system preference + icon: + repo: material/github + features: + - navigation.instant + - navigation.instant.progress + - navigation.indexes + - navigation.top + - navigation.tracking + - navigation.expand + - search.suggest + - search.highlight + +repo_name: -{{ REPO_OWNER }}-/-{{ REPO_NAME }}- +repo_url: https://github.com/-{{ REPO_OWNER }}-/-{{ REPO_NAME }}- + +plugins: + - search + +markdown_extensions: + - toc: + permalink: true # Adds a link icon to headings + - attr_list + - admonition + - md_in_html + - pymdownx.details # Enables collapsible admonitions + +extra: + social: + - icon: fontawesome/brands/discord + link: https://discord.gg/jedJWCPAhD + name: -{{ REPO_OWNER }}- on Discord + - icon: fontawesome/brands/github + link: https://github.com/-{{ REPO_OWNER }}-/ + name: -{{ REPO_OWNER }}- on GitHub + consent: + title: Cookie consent + description: >- + We use cookies to recognize your repeated visits and preferences, as well + as to measure the effectiveness of our documentation and whether users + find what they're searching for. With your consent, you're helping us to + make our documentation better. + actions: + - accept + - reject diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/assemblies/LsonLib.dll b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/assemblies/LsonLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..36618070d5c9f5131ec66720aa0565c13e86d23f GIT binary patch literal 43520 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 + + + + System.Globalization.CultureInfo + + System.Globalization.CultureInfo + + + + + 16 + + + 16 + + + + + + + + LCID + + + Name + + + DisplayName + + + + + + + + diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/formats/Mygciview.Format.ps1xml b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/formats/Mygciview.Format.ps1xml new file mode 100644 index 00000000..4c972c2c --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/formats/Mygciview.Format.ps1xml @@ -0,0 +1,65 @@ + + + + + mygciview + + System.IO.DirectoryInfo + System.IO.FileInfo + + + PSParentPath + + + + + + 7 + Left + + + + 26 + Right + + + + 26 + Right + + + + 14 + Right + + + + Left + + + + + + + + ModeWithoutHardLink + + + LastWriteTime + + + CreationTime + + + Length + + + Name + + + + + + + + diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Get-InternalPSModule.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Get-InternalPSModule.ps1 new file mode 100644 index 00000000..89f053cb --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Get-InternalPSModule.ps1 @@ -0,0 +1,18 @@ +function Get-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Set-InternalPSModule.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Set-InternalPSModule.ps1 new file mode 100644 index 00000000..cf870ba6 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/private/Set-InternalPSModule.ps1 @@ -0,0 +1,22 @@ +function Set-InternalPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 new file mode 100644 index 00000000..57257f1d --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/Get-PSModuleTest.ps1 @@ -0,0 +1,23 @@ +#Requires -Modules Utilities +#Requires -Modules @{ ModuleName = 'PSSemVer'; RequiredVersion = '1.1.4' } +#Requires -Modules @{ ModuleName = 'DynamicParams'; ModuleVersion = '1.1.8' } +#Requires -Modules @{ ModuleName = 'Store'; ModuleVersion = '0.3.1' } + +function Get-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 new file mode 100644 index 00000000..5fa16bc3 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/New-PSModuleTest.ps1 @@ -0,0 +1,37 @@ +#Requires -Modules @{ModuleName='PSSemVer'; ModuleVersion='1.1.4'} + +function New-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + + .NOTES + Testing if a module can have a [Markdown based link](https://example.com). + !"#¤%&/()=?`´^¨*'-_+§½{[]}<>|@£$€¥¢:;.," + \[This is a test\] + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [Alias('New-PSModuleTestAlias1')] + [Alias('New-PSModuleTestAlias2')] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} + +New-Alias New-PSModuleTestAlias3 New-PSModuleTest +New-Alias -Name New-PSModuleTestAlias4 -Value New-PSModuleTest + + +Set-Alias New-PSModuleTestAlias5 New-PSModuleTest diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/PSModule.md b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/PSModule.md new file mode 100644 index 00000000..79741cf4 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/PSModule/PSModule.md @@ -0,0 +1 @@ +# This is PSModule diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 new file mode 100644 index 00000000..a87ac117 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/Set-PSModuleTest.ps1 @@ -0,0 +1,22 @@ +function Set-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [Diagnostics.CodeAnalysis.SuppressMessageAttribute( + 'PSUseShouldProcessForStateChangingFunctions', '', Scope = 'Function', + Justification = 'Reason for suppressing' + )] + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/SomethingElse.md b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/SomethingElse.md new file mode 100644 index 00000000..d9f7e9ee --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/SomethingElse/SomethingElse.md @@ -0,0 +1 @@ +# This is SomethingElse diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/Test-PSModuleTest.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/Test-PSModuleTest.ps1 new file mode 100644 index 00000000..26be2b9b --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/Test-PSModuleTest.ps1 @@ -0,0 +1,18 @@ +function Test-PSModuleTest { + <# + .SYNOPSIS + Performs tests on a module. + + .EXAMPLE + Test-PSModule -Name 'World' + + "Hello, World!" + #> + [CmdletBinding()] + param ( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/completers.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/completers.ps1 new file mode 100644 index 00000000..6b1adbb7 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/functions/public/completers.ps1 @@ -0,0 +1,8 @@ +Register-ArgumentCompleter -CommandName New-PSModuleTest -ParameterName Name -ScriptBlock { + param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters) + $null = $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters + + 'Alice', 'Bob', 'Charlie' | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) + } +} diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/header.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/header.ps1 new file mode 100644 index 00000000..cc1fde9a --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/header.ps1 @@ -0,0 +1,3 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidLongLines', '', Justification = 'Contains long links.')] +[CmdletBinding()] +param() diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/init/initializer.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/init/initializer.ps1 new file mode 100644 index 00000000..28396fb0 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/init/initializer.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------------' +Write-Verbose '--- THIS IS AN INITIALIZER ---' +Write-Verbose '-------------------------------' diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/manifest.psd1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/manifest.psd1 new file mode 100644 index 00000000..77348f13 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/manifest.psd1 @@ -0,0 +1,3 @@ +@{ + Author = 'Author' +} diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/modules/OtherPSModule.psm1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/modules/OtherPSModule.psm1 new file mode 100644 index 00000000..5d6af8ea --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/modules/OtherPSModule.psm1 @@ -0,0 +1,19 @@ +function Get-OtherPSModule { + <# + .SYNOPSIS + Performs tests on a module. + + .DESCRIPTION + A longer description of the function. + + .EXAMPLE + Get-OtherPSModule -Name 'World' + #> + [CmdletBinding()] + param( + # Name of the person to greet. + [Parameter(Mandatory)] + [string] $Name + ) + Write-Output "Hello, $Name!" +} diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/scripts/loader.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/scripts/loader.ps1 new file mode 100644 index 00000000..973735ad --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/scripts/loader.ps1 @@ -0,0 +1,3 @@ +Write-Verbose '-------------------------' +Write-Verbose '--- THIS IS A LOADER ---' +Write-Verbose '-------------------------' diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/types/DirectoryInfo.Types.ps1xml b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/types/DirectoryInfo.Types.ps1xml new file mode 100644 index 00000000..aef538b2 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/types/DirectoryInfo.Types.ps1xml @@ -0,0 +1,21 @@ + + + + System.IO.FileInfo + + + Status + Success + + + + + System.IO.DirectoryInfo + + + Status + Success + + + + diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/types/FileInfo.Types.ps1xml b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/types/FileInfo.Types.ps1xml new file mode 100644 index 00000000..4cfaf6b8 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/types/FileInfo.Types.ps1xml @@ -0,0 +1,14 @@ + + + + System.IO.FileInfo + + + Age + + ((Get-Date) - ($this.CreationTime)).Days + + + + + diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/private/PrivateVariables.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/private/PrivateVariables.ps1 new file mode 100644 index 00000000..f1fc2c3b --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/private/PrivateVariables.ps1 @@ -0,0 +1,47 @@ +$script:HabitablePlanets = @( + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + }, + @{ + Name = 'Mars' + Mass = 0.642 + Diameter = 6792 + DayLength = 24.7 + }, + @{ + Name = 'Proxima Centauri b' + Mass = 1.17 + Diameter = 11449 + DayLength = 5.15 + }, + @{ + Name = 'Kepler-442b' + Mass = 2.34 + Diameter = 11349 + DayLength = 5.7 + }, + @{ + Name = 'Kepler-452b' + Mass = 5.0 + Diameter = 17340 + DayLength = 20.0 + } +) + +$script:InhabitedPlanets = @( + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + }, + @{ + Name = 'Mars' + Mass = 0.642 + Diameter = 6792 + DayLength = 24.7 + } +) diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Moons.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Moons.ps1 new file mode 100644 index 00000000..dd0f33ca --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Moons.ps1 @@ -0,0 +1,6 @@ +$script:Moons = @( + @{ + Planet = 'Earth' + Name = 'Moon' + } +) diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Planets.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Planets.ps1 new file mode 100644 index 00000000..5927bc51 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/public/Planets.ps1 @@ -0,0 +1,20 @@ +$script:Planets = @( + @{ + Name = 'Mercury' + Mass = 0.330 + Diameter = 4879 + DayLength = 4222.6 + }, + @{ + Name = 'Venus' + Mass = 4.87 + Diameter = 12104 + DayLength = 2802.0 + }, + @{ + Name = 'Earth' + Mass = 5.97 + Diameter = 12756 + DayLength = 24.0 + } +) diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/public/SolarSystems.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/public/SolarSystems.ps1 new file mode 100644 index 00000000..acbcedfd --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/src/variables/public/SolarSystems.ps1 @@ -0,0 +1,17 @@ +$script:SolarSystems = @( + @{ + Name = 'Solar System' + Planets = $script:Planets + Moons = $script:Moons + }, + @{ + Name = 'Alpha Centauri' + Planets = @() + Moons = @() + }, + @{ + Name = 'Sirius' + Planets = @() + Moons = @() + } +) diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tests/Environments/Environment.Tests.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tests/Environments/Environment.Tests.ps1 new file mode 100644 index 00000000..211be946 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tests/Environments/Environment.Tests.ps1 @@ -0,0 +1,15 @@ +Describe 'Environment Variables are available' { + It 'Should be available [<_>]' -ForEach @( + 'TEST_APP_ENT_CLIENT_ID', + 'TEST_APP_ENT_PRIVATE_KEY', + 'TEST_APP_ORG_CLIENT_ID', + 'TEST_APP_ORG_PRIVATE_KEY', + 'TEST_USER_ORG_FG_PAT', + 'TEST_USER_USER_FG_PAT', + 'TEST_USER_PAT' + ) { + $name = $_ + Write-Verbose "Environment variable: [$name]" -Verbose + Get-ChildItem env: | Where-Object { $_.Name -eq $name } | Should -Not -BeNullOrEmpty + } +} diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tests/MyTests/PSModuleTest.Tests.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tests/MyTests/PSModuleTest.Tests.ps1 new file mode 100644 index 00000000..7a49dadb --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tests/MyTests/PSModuleTest.Tests.ps1 @@ -0,0 +1,44 @@ +[CmdletBinding()] +param( + # Path to the module to test. + [Parameter()] + [string] $Path +) + +Write-Verbose "Path to the module: [$Path]" -Verbose +Describe 'PSModuleTest.Tests.ps1' { + Context 'Function: Test-PSModuleTest' { + It 'Should be able to call the function' { + Write-Verbose (Test-PSModuleTest -Name 'World' | Out-String) -Verbose + Test-PSModuleTest -Name 'World' | Should -Be 'Hello, World!' + } + } + + Context 'Function: Get-PSModuleTest' { + It 'Should be able to call the function' { + Write-Verbose (Get-PSModuleTest -Name 'World' | Out-String) -Verbose + Get-PSModuleTest -Name 'World' | Should -Be 'Hello, World!' + } + } + + Context 'Function: New-PSModuleTest' { + It 'Should be able to call the function' { + Write-Verbose (New-PSModuleTest -Name 'World' | Out-String) -Verbose + New-PSModuleTest -Name 'World' | Should -Be 'Hello, World!' + } + } + + Context 'Function: Set-PSModuleTest' { + It 'Should be able to call the function' { + Write-Verbose (Set-PSModuleTest -Name 'World' | Out-String) -Verbose + Set-PSModuleTest -Name 'World' | Should -Be 'Hello, World!' + } + } + + Context 'Variables' { + It "Exports a variable for SolarSystems that contains 'Solar System'" { + Write-Verbose ($SolarSystems | Out-String) -Verbose + $SolarSystems[0].Name | Should -Be 'Solar System' + } + } +} diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tools/1-build.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tools/1-build.ps1 new file mode 100644 index 00000000..e762395b --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tools/1-build.ps1 @@ -0,0 +1 @@ +"1 - Build script executed." diff --git a/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tools/2-build.ps1 b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tools/2-build.ps1 new file mode 100644 index 00000000..d2575a02 --- /dev/null +++ b/.github/actions/Test-PSModule/tests/srcWithManifestTestRepo/tools/2-build.ps1 @@ -0,0 +1 @@ +"2 - Build script executed." diff --git a/.github/workflows/AfterAll-ModuleLocal.yml b/.github/workflows/AfterAll-ModuleLocal.yml index c17ab029..32293453 100644 --- a/.github/workflows/AfterAll-ModuleLocal.yml +++ b/.github/workflows/AfterAll-ModuleLocal.yml @@ -31,8 +31,16 @@ jobs: persist-credentials: false fetch-depth: 0 + - name: Checkout Process-PSModule + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + repository: ${{ job.workflow_repository }} + ref: ${{ job.workflow_sha }} + path: _wf + persist-credentials: false + - name: Install-PSModuleHelpers - uses: PSModule/Install-PSModuleHelpers@8bfb84d557755c67d9b5643efe573bdcae4c1a4a # v1.0.9 + uses: ./_wf/.github/actions/Install-PSModuleHelpers - name: Expose caller-provided test data shell: pwsh diff --git a/.github/workflows/BeforeAll-ModuleLocal.yml b/.github/workflows/BeforeAll-ModuleLocal.yml index 7ba1c7fc..ca86e503 100644 --- a/.github/workflows/BeforeAll-ModuleLocal.yml +++ b/.github/workflows/BeforeAll-ModuleLocal.yml @@ -31,8 +31,16 @@ jobs: persist-credentials: false fetch-depth: 0 + - name: Checkout Process-PSModule + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + repository: ${{ job.workflow_repository }} + ref: ${{ job.workflow_sha }} + path: _wf + persist-credentials: false + - name: Install-PSModuleHelpers - uses: PSModule/Install-PSModuleHelpers@8bfb84d557755c67d9b5643efe573bdcae4c1a4a # v1.0.9 + uses: ./_wf/.github/actions/Install-PSModuleHelpers - name: Expose caller-provided test data shell: pwsh diff --git a/.github/workflows/Build-Docs.yml b/.github/workflows/Build-Docs.yml index 5df14f06..65499b9a 100644 --- a/.github/workflows/Build-Docs.yml +++ b/.github/workflows/Build-Docs.yml @@ -23,6 +23,14 @@ jobs: persist-credentials: false fetch-depth: 0 + - name: Checkout Process-PSModule + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + repository: ${{ job.workflow_repository }} + ref: ${{ job.workflow_sha }} + path: _wf + persist-credentials: false + - name: Download module artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: @@ -30,7 +38,7 @@ jobs: path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/module - name: Document module - uses: PSModule/Document-PSModule@349090c346feca4a7e5f51b6e57278a13ad52657 # v1.0.18 + uses: ./_wf/.github/actions/Document-PSModule with: Name: ${{ fromJson(inputs.Settings).Name }} WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }} diff --git a/.github/workflows/Build-Module.yml b/.github/workflows/Build-Module.yml index fbc8893a..e1e402e0 100644 --- a/.github/workflows/Build-Module.yml +++ b/.github/workflows/Build-Module.yml @@ -29,8 +29,16 @@ jobs: persist-credentials: false fetch-depth: 0 + - name: Checkout Process-PSModule + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + repository: ${{ job.workflow_repository }} + ref: ${{ job.workflow_sha }} + path: _wf + persist-credentials: false + - name: Build module - uses: PSModule/Build-PSModule@672aaa7a91a379c4c6cd14494d03ab5e87e13c52 # v5.0.0 + uses: ./_wf/.github/actions/Build-PSModule with: Name: ${{ fromJson(inputs.Settings).Name }} Version: ${{ fromJson(inputs.Settings).Module.Version != '' && fromJson(inputs.Settings).Module.Version || '999.0.0' }} diff --git a/.github/workflows/Build-Site.yml b/.github/workflows/Build-Site.yml index 27d13905..52fd05ba 100644 --- a/.github/workflows/Build-Site.yml +++ b/.github/workflows/Build-Site.yml @@ -22,8 +22,16 @@ jobs: persist-credentials: false fetch-depth: 0 + - name: Checkout Process-PSModule + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + repository: ${{ job.workflow_repository }} + ref: ${{ job.workflow_sha }} + path: _wf + persist-credentials: false + - name: Install-PSModuleHelpers - uses: PSModule/Install-PSModuleHelpers@8bfb84d557755c67d9b5643efe573bdcae4c1a4a # v1.0.9 + uses: ./_wf/.github/actions/Install-PSModuleHelpers - name: Download docs artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 diff --git a/.github/workflows/Get-CodeCoverage.yml b/.github/workflows/Get-CodeCoverage.yml index 23051be1..a0816e36 100644 --- a/.github/workflows/Get-CodeCoverage.yml +++ b/.github/workflows/Get-CodeCoverage.yml @@ -16,8 +16,16 @@ jobs: name: Get-CodeCoverage runs-on: ubuntu-latest steps: + - name: Checkout Process-PSModule + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + repository: ${{ job.workflow_repository }} + ref: ${{ job.workflow_sha }} + path: _wf + persist-credentials: false + - name: Get-CodeCoverage - uses: PSModule/Get-PesterCodeCoverage@a8280e9a8941438f8fc63a4531c3431e4d49015f # v1.0.4 + uses: ./_wf/.github/actions/Get-PesterCodeCoverage id: Get-CodeCoverage with: CodeCoveragePercentTarget: ${{ fromJson(inputs.Settings).Test.CodeCoverage.PercentTarget }} diff --git a/.github/workflows/Get-TestResults.yml b/.github/workflows/Get-TestResults.yml index beabfae4..c86bb711 100644 --- a/.github/workflows/Get-TestResults.yml +++ b/.github/workflows/Get-TestResults.yml @@ -16,8 +16,16 @@ jobs: name: Get-TestResults runs-on: ubuntu-latest steps: + - name: Checkout Process-PSModule + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + repository: ${{ job.workflow_repository }} + ref: ${{ job.workflow_sha }} + path: _wf + persist-credentials: false + - name: Get-TestResults - uses: PSModule/Get-PesterTestResults@616387914e439d7b648e3cfaaf73542f5723ff42 # v1.0.8 + uses: ./_wf/.github/actions/Get-PesterTestResults id: Get-TestResults with: SourceCodeTestSuites: ${{ toJSON(fromJson(inputs.Settings).TestSuites.SourceCode) }} diff --git a/.github/workflows/Plan.yml b/.github/workflows/Plan.yml index 8a8e0fec..442e14fe 100644 --- a/.github/workflows/Plan.yml +++ b/.github/workflows/Plan.yml @@ -72,8 +72,16 @@ jobs: persist-credentials: false fetch-depth: 0 + - name: Checkout Process-PSModule + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + repository: ${{ job.workflow_repository }} + ref: ${{ job.workflow_sha }} + path: _wf + persist-credentials: false + - name: Get-Settings - uses: PSModule/Get-PSModuleSettings@1e3d156786c56e6fbd839a1ba5ab21ff8858090e # v1.5.0 + uses: ./_wf/.github/actions/Get-PSModuleSettings id: Get-Settings with: SettingsPath: ${{ inputs.SettingsPath }} @@ -85,7 +93,7 @@ jobs: ImportantFilePatterns: ${{ inputs.ImportantFilePatterns }} - name: Resolve-Version - uses: PSModule/Resolve-PSModuleVersion@6a59a88d3a3b1e7710c4d1d91fcc684cd4da3667 # v1.1.5 + uses: ./_wf/.github/actions/Resolve-PSModuleVersion id: Resolve-Version env: GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/Publish-Module.yml b/.github/workflows/Publish-Module.yml index 6886b427..e46b3b1c 100644 --- a/.github/workflows/Publish-Module.yml +++ b/.github/workflows/Publish-Module.yml @@ -29,8 +29,16 @@ jobs: persist-credentials: false fetch-depth: 0 + - name: Checkout Process-PSModule + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + repository: ${{ job.workflow_repository }} + ref: ${{ job.workflow_sha }} + path: _wf + persist-credentials: false + - name: Publish module - uses: PSModule/Publish-PSModule@03c0f8b53d0367c85a0f121f98af9b40c817b0e3 # v3.0.0 + uses: ./_wf/.github/actions/Publish-PSModule env: GH_TOKEN: ${{ github.token }} with: diff --git a/.github/workflows/Test-Module.yml b/.github/workflows/Test-Module.yml index e78be898..a648679b 100644 --- a/.github/workflows/Test-Module.yml +++ b/.github/workflows/Test-Module.yml @@ -25,6 +25,14 @@ jobs: with: persist-credentials: false + - name: Checkout Process-PSModule + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + repository: ${{ job.workflow_repository }} + ref: ${{ job.workflow_sha }} + path: _wf + persist-credentials: false + - name: Download module artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: @@ -32,7 +40,7 @@ jobs: path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/module - name: Test-Module - uses: PSModule/Test-PSModule@902c5e50774e6606ccf41c125a1fe89f783c1149 # v3.0.14 + uses: ./_wf/.github/actions/Test-PSModule with: Name: ${{ fromJson(inputs.Settings).Name }} Debug: ${{ fromJson(inputs.Settings).Debug }} diff --git a/.github/workflows/Test-ModuleLocal.yml b/.github/workflows/Test-ModuleLocal.yml index 95933dd1..b80c6ed8 100644 --- a/.github/workflows/Test-ModuleLocal.yml +++ b/.github/workflows/Test-ModuleLocal.yml @@ -36,6 +36,14 @@ jobs: persist-credentials: false fetch-depth: 0 + - name: Checkout Process-PSModule + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + repository: ${{ job.workflow_repository }} + ref: ${{ job.workflow_sha }} + path: _wf + persist-credentials: false + - name: Download module artifact uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: @@ -43,7 +51,7 @@ jobs: path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/module - name: Install-PSModuleHelpers - uses: PSModule/Install-PSModuleHelpers@8bfb84d557755c67d9b5643efe573bdcae4c1a4a # v1.0.9 + uses: ./_wf/.github/actions/Install-PSModuleHelpers - name: Expose caller-provided test data shell: pwsh diff --git a/.github/workflows/Test-SourceCode.yml b/.github/workflows/Test-SourceCode.yml index d15f235d..a4192f6f 100644 --- a/.github/workflows/Test-SourceCode.yml +++ b/.github/workflows/Test-SourceCode.yml @@ -26,8 +26,16 @@ jobs: persist-credentials: false fetch-depth: 0 + - name: Checkout Process-PSModule + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + repository: ${{ job.workflow_repository }} + ref: ${{ job.workflow_sha }} + path: _wf + persist-credentials: false + - name: Test-SourceCode - uses: PSModule/Test-PSModule@902c5e50774e6606ccf41c125a1fe89f783c1149 # v3.0.14 + uses: ./_wf/.github/actions/Test-PSModule with: Debug: ${{ fromJson(inputs.Settings).Debug }} Prerelease: ${{ fromJson(inputs.Settings).Prerelease }} From aecf28eb619bbd094d775b5c1e41153b042f17bc Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Wed, 15 Jul 2026 02:56:18 +0200 Subject: [PATCH 2/4] docs: describe bundled workflow actions --- DEPENDENCIES.md | 87 ++++++++++++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 33 deletions(-) diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md index b9ceb303..7f92d5e8 100644 --- a/DEPENDENCIES.md +++ b/DEPENDENCIES.md @@ -15,7 +15,8 @@ action those workflows call. - [Non-PowerShell toolchains](#non-powershell-toolchains) - [Dependency reference](#dependency-reference) - [Reusable workflows](#reusable-workflows) - - [PSModule actions](#psmodule-actions) + - [Bundled PSModule actions](#bundled-psmodule-actions) + - [External PSModule actions](#external-psmodule-actions) - [Third-party actions](#third-party-actions) - [PowerShell modules](#powershell-modules) - [Python packages](#python-packages) @@ -31,20 +32,22 @@ Process-PSModule depends on several distinct kinds of artifact. The tree tracks | Layer | Type | What it is | Examples | | --- | --- | --- | --- | | 1 | Reusable workflows | GitHub Actions workflows called with `uses: ./...` | `workflow.yml` and 15 stage workflows | -| 2 | PSModule actions | Composite actions maintained in the PSModule organization | `GitHub-Script`, `Build-PSModule`, `Invoke-Pester` | -| 3 | Third-party actions | Actions maintained outside the PSModule organization | `actions/checkout`, `actions/deploy-pages` | -| 4 | Container image | A Docker action that runs a published image | `super-linter/super-linter` | -| 5 | PowerShell modules (framework) | Runtime modules that power the PSModule actions | `GitHub`, `Context`, `Sodium` | -| 6 | PowerShell modules (tooling) | Runtime modules that provide build, test, lint, and docs tools | `Pester`, `PSScriptAnalyzer`, `Microsoft.PowerShell.PlatyPS` | -| 7 | PowerShell module (bundled) | A module vendored inside an action instead of installed from a registry | `Helpers` | -| 8 | Python packages | `pip` packages installed to build the documentation site | `mkdocs-material` and MkDocs plugins | +| 2 | Bundled PSModule actions | Composite actions maintained in `.github/actions/` | `Build-PSModule`, `Get-PSModuleSettings`, `Test-PSModule` | +| 3 | External PSModule actions | Composite actions consumed from separate PSModule repositories | `GitHub-Script`, `Invoke-Pester`, `Invoke-ScriptAnalyzer` | +| 4 | Third-party actions | Actions maintained outside the PSModule organization | `actions/checkout`, `actions/deploy-pages` | +| 5 | Container image | A Docker action that runs a published image | `super-linter/super-linter` | +| 6 | PowerShell modules (framework) | Runtime modules that power the PSModule actions | `GitHub`, `Context`, `Sodium` | +| 7 | PowerShell modules (tooling) | Runtime modules that provide build, test, lint, and docs tools | `Pester`, `PSScriptAnalyzer`, `Microsoft.PowerShell.PlatyPS` | +| 8 | PowerShell module (bundled) | A module vendored inside an action instead of installed from a registry | `Helpers` | +| 9 | Python packages | `pip` packages installed to build the documentation site | `mkdocs-material` and MkDocs plugins | ## Where the tree stops Each layer has a defined boundary so the tree stays finite and stable: - **Reusable workflows** — the 15 stage workflows called by `workflow.yml`. They do not call further workflows. -- **PSModule actions** — expanded fully; the leaves are `GitHub-Script` and `Install-PSModuleHelpers`. +- **Bundled PSModule actions** — expanded fully; the leaves are the bundled `Install-PSModuleHelpers` action and the external actions listed below. +- **External PSModule actions** — treated as leaves at their pinned commits. Their internal steps are not expanded. - **Third-party actions** — treated as leaves at the pinned commit. Their internal steps are not expanded. - **Container image** — the leaf is the `super-linter` image. The many linters bundled inside it are not enumerated. - **PowerShell modules** — expanded through their `RequiredModules` to the leaf modules. `Helpers` is a leaf because it ships inside the action. @@ -82,18 +85,22 @@ flowchart LR w15["Publish-Site"] end - subgraph PSA["PSModule actions"] + subgraph BPSA["Bundled PSModule actions"] aSettings["Get-PSModuleSettings"] aBuild["Build-PSModule"] aTest["Test-PSModule"] - aISA["Invoke-ScriptAnalyzer"] - aIP["Invoke-Pester"] aIH["Install-PSModuleHelpers"] - aGitHubScript["GitHub-Script"] aResults["Get-PesterTestResults"] aCov["Get-PesterCodeCoverage"] aPub["Publish-PSModule"] aDoc["Document-PSModule"] + aVersion["Resolve-PSModuleVersion"] + end + + subgraph EPSA["External PSModule actions"] + aISA["Invoke-ScriptAnalyzer"] + aIP["Invoke-Pester"] + aGitHubScript["GitHub-Script"] end subgraph EXT["Third-party actions"] @@ -112,7 +119,7 @@ flowchart LR PPM --> w1 & w2 & w3 & w4 & w5 & w6 & w7 & w8 & w9 & w10 & w11 & w12 & w13 & w14 & w15 - w1 --> xCheckout & aSettings + w1 --> xCheckout & aSettings & aVersion w2 --> xCheckout & xSL w3 --> xCheckout & aBuild w4 --> xCheckout & aTest @@ -135,17 +142,14 @@ flowchart LR ## Action foundation and PowerShell modules -Most PSModule actions build on two foundations: `GitHub-Script`, which runs a script with the `GitHub` module installed and authenticated, and -`Install-PSModuleHelpers`, which loads a bundled `Helpers` module. The test, lint, and docs actions add their own tooling modules. At the bottom of the -tree, `GitHub` resolves its own `RequiredModules` from the PowerShell Gallery. +The bundled actions use two foundations: the local `Install-PSModuleHelpers` action, which loads the bundled `Helpers` module, and external +`GitHub-Script`, which runs a script with the `GitHub` module installed and authenticated. The test, lint, and docs actions add their own tooling +modules. At the bottom of the tree, `GitHub` resolves its own `RequiredModules` from the PowerShell Gallery. ```mermaid flowchart LR - subgraph PSA["PSModule actions"] - aGitHubScript["GitHub-Script"] + subgraph BPSA["Bundled PSModule actions"] aIH["Install-PSModuleHelpers"] - aIP["Invoke-Pester"] - aISA["Invoke-ScriptAnalyzer"] aDoc["Document-PSModule"] aSettings["Get-PSModuleSettings"] aCov["Get-PesterCodeCoverage"] @@ -153,6 +157,13 @@ flowchart LR aBuild["Build-PSModule"] aPub["Publish-PSModule"] aTest["Test-PSModule"] + aVersion["Resolve-PSModuleVersion"] + end + + subgraph EPSA["External PSModule actions"] + aGitHubScript["GitHub-Script"] + aIP["Invoke-Pester"] + aISA["Invoke-ScriptAnalyzer"] end subgraph EXT["Third-party actions"] @@ -190,6 +201,7 @@ flowchart LR aBuild --> aIH & xUl aPub --> aIH & xDl aTest --> aIH & aIP + aVersion --> aIH mGitHub --> mContext & mUri & mHash & mSodium & mCasing & mTimeSpan mContext --> mSodium @@ -244,7 +256,7 @@ The 15 stage workflows called by `workflow.yml`, in lifecycle order. | Workflow | Stage | Key actions used | | --- | --- | --- | -| Get-Settings | Load configuration | Get-PSModuleSettings | +| Get-Settings | Load configuration and resolve the next version | Get-PSModuleSettings, Resolve-PSModuleVersion | | Lint-Repository | Repository linting | super-linter | | Build-Module | Build the module | Build-PSModule | | Test-SourceCode | Source code tests | Test-PSModule | @@ -260,23 +272,32 @@ The 15 stage workflows called by `workflow.yml`, in lifecycle order. | Build-Site | Build the documentation site | GitHub-Script, Install-PSModuleHelpers, MkDocs | | Publish-Site | Deploy to GitHub Pages | actions/configure-pages, actions/deploy-pages | -### PSModule actions +### Bundled PSModule actions + +Composite actions bundled with Process-PSModule under `.github/actions/`. They are checked out at the invoked reusable workflow revision and called +from `./_wf/.github/actions/`. + +| Action | Purpose | Depends on | +| --- | --- | --- | +| Install-PSModuleHelpers | Load the bundled Helpers module | Helpers (bundled) | +| Get-PSModuleSettings | Read and resolve the settings file | GitHub-Script, powershell-yaml, Hashtable | +| Resolve-PSModuleVersion | Resolve the next module version | Install-PSModuleHelpers, PSSemVer | +| Build-PSModule | Compile source into a module | Install-PSModuleHelpers, actions/upload-artifact | +| Test-PSModule | Run framework and module tests | Install-PSModuleHelpers, Invoke-Pester | +| Get-PesterTestResults | Aggregate test results | GitHub-Script | +| Get-PesterCodeCoverage | Aggregate code coverage | GitHub-Script, Markdown | +| Publish-PSModule | Publish to the PowerShell Gallery | Install-PSModuleHelpers, actions/download-artifact | +| Document-PSModule | Generate documentation | Install-PSModuleHelpers, Microsoft.PowerShell.PlatyPS | + +### External PSModule actions -Composite actions maintained in the [PSModule organization](https://github.com/PSModule). +Composite actions maintained in separate [PSModule organization](https://github.com/PSModule) repositories and consumed at pinned commits. | Action | Purpose | Depends on | | --- | --- | --- | | [GitHub-Script](https://github.com/PSModule/GitHub-Script) | Run PowerShell with the GitHub module installed | GitHub module | -| [Install-PSModuleHelpers](https://github.com/PSModule/Install-PSModuleHelpers) | Load the bundled Helpers module | Helpers (bundled) | -| [Get-PSModuleSettings](https://github.com/PSModule/Get-PSModuleSettings) | Read and resolve the settings file | GitHub-Script, powershell-yaml, Hashtable | -| [Build-PSModule](https://github.com/PSModule/Build-PSModule) | Compile source into a module | Install-PSModuleHelpers, actions/upload-artifact | -| [Test-PSModule](https://github.com/PSModule/Test-PSModule) | Run framework and module tests | Install-PSModuleHelpers, Invoke-Pester | | [Invoke-Pester](https://github.com/PSModule/Invoke-Pester) | Run Pester test suites | GitHub-Script, actions/upload-artifact, Pester, Markdown | | [Invoke-ScriptAnalyzer](https://github.com/PSModule/Invoke-ScriptAnalyzer) | Run PSScriptAnalyzer rules | GitHub-Script, Invoke-Pester, PSScriptAnalyzer | -| [Get-PesterTestResults](https://github.com/PSModule/Get-PesterTestResults) | Aggregate test results | GitHub-Script | -| [Get-PesterCodeCoverage](https://github.com/PSModule/Get-PesterCodeCoverage) | Aggregate code coverage | GitHub-Script, Markdown | -| [Publish-PSModule](https://github.com/PSModule/Publish-PSModule) | Publish to the PowerShell Gallery | Install-PSModuleHelpers, actions/download-artifact | -| [Document-PSModule](https://github.com/PSModule/Document-PSModule) | Generate documentation | Install-PSModuleHelpers, Microsoft.PowerShell.PlatyPS | ### Third-party actions @@ -295,7 +316,7 @@ Actions maintained outside the PSModule organization, treated as leaves at their ### PowerShell modules -Runtime modules installed from the PowerShell Gallery, except `Helpers`, which is bundled inside `Install-PSModuleHelpers`. +Runtime modules installed from the PowerShell Gallery, except `Helpers`, which is bundled in `.github/actions/Install-PSModuleHelpers`. | Module | Owner | Role | Depends on | | --- | --- | --- | --- | From 4e20b097a7615f3d8ec02ec931e6d66cbb47e919 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Wed, 15 Jul 2026 02:57:27 +0200 Subject: [PATCH 3/4] refactor: format TestData structure in workflow files for clarity --- .github/workflows/Workflow-Test-Default.yml | 18 ++++++++---------- .../workflows/Workflow-Test-WithManifest.yml | 18 ++++++++---------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/.github/workflows/Workflow-Test-Default.yml b/.github/workflows/Workflow-Test-Default.yml index f96c41b3..e5b012e5 100644 --- a/.github/workflows/Workflow-Test-Default.yml +++ b/.github/workflows/Workflow-Test-Default.yml @@ -29,17 +29,15 @@ jobs: uses: ./.github/workflows/workflow.yml secrets: APIKey: ${{ secrets.APIKey }} - # Self-test only: a dedicated, NON-SENSITIVE repository secret + variable exist purely to prove - # the TestData plumbing end to end - the "secrets" entry is masked and the "variables" entry is - # not, and both are exposed as $env:. Their known values are asserted (value + length) in - # tests/.../Environment.Tests.ps1. - # Secrets use the direct "${{ secrets.X }}" form (CodeQL-clean; avoids toJSON(secrets.*)), which - # requires single-line secret values with no embedded quotes or backslashes; variables use - # toJSON(vars.X) so any characters are encoded safely. The folded '>-' scalar keeps the whole blob - # on ONE line so GitHub registers a single mask instead of one per line. TestData: >- - { "secrets": { "PSMODULE_TEST_SINGLELINE_SECRET": "${{ secrets.PSMODULE_TEST_SINGLELINE_SECRET }}" }, - "variables": { "PSMODULE_TEST_VARIABLE": ${{ toJSON(vars.PSMODULE_TEST_VARIABLE) }} } } + { + "secrets": { + "PSMODULE_TEST_SINGLELINE_SECRET": "${{ secrets.PSMODULE_TEST_SINGLELINE_SECRET }}" + }, + "variables": { + "PSMODULE_TEST_VARIABLE": ${{ toJSON(vars.PSMODULE_TEST_VARIABLE) }} + } + } with: WorkingDirectory: tests/srcTestRepo ImportantFilePatterns: | diff --git a/.github/workflows/Workflow-Test-WithManifest.yml b/.github/workflows/Workflow-Test-WithManifest.yml index b7242098..4b179d9a 100644 --- a/.github/workflows/Workflow-Test-WithManifest.yml +++ b/.github/workflows/Workflow-Test-WithManifest.yml @@ -29,17 +29,15 @@ jobs: uses: ./.github/workflows/workflow.yml secrets: APIKey: ${{ secrets.APIKey }} - # Self-test only: a dedicated, NON-SENSITIVE repository secret + variable exist purely to prove - # the TestData plumbing end to end - the "secrets" entry is masked and the "variables" entry is - # not, and both are exposed as $env:. Their known values are asserted (value + length) in - # tests/.../Environment.Tests.ps1. - # Secrets use the direct "${{ secrets.X }}" form (CodeQL-clean; avoids toJSON(secrets.*)), which - # requires single-line secret values with no embedded quotes or backslashes; variables use - # toJSON(vars.X) so any characters are encoded safely. The folded '>-' scalar keeps the whole blob - # on ONE line so GitHub registers a single mask instead of one per line. TestData: >- - { "secrets": { "PSMODULE_TEST_SINGLELINE_SECRET": "${{ secrets.PSMODULE_TEST_SINGLELINE_SECRET }}" }, - "variables": { "PSMODULE_TEST_VARIABLE": ${{ toJSON(vars.PSMODULE_TEST_VARIABLE) }} } } + { + "secrets": { + "PSMODULE_TEST_SINGLELINE_SECRET": "${{ secrets.PSMODULE_TEST_SINGLELINE_SECRET }}" + }, + "variables": { + "PSMODULE_TEST_VARIABLE": ${{ toJSON(vars.PSMODULE_TEST_VARIABLE) }} + } + } with: WorkingDirectory: tests/srcWithManifestTestRepo ImportantFilePatterns: | From b41d5a93c69e86345b2aed31efb64614aee8775e Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Wed, 15 Jul 2026 03:17:45 +0200 Subject: [PATCH 4/4] chore: centrally ignore job.workflow_* lint errors and allow Write-Host --- .github/actionlint.yaml | 9 +++++++++ .github/linters/.powershell-psscriptanalyzer.psd1 | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .github/actionlint.yaml diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml new file mode 100644 index 00000000..2a632121 --- /dev/null +++ b/.github/actionlint.yaml @@ -0,0 +1,9 @@ +paths: + .github/workflows/*.yml: + # actionlint does not yet know the `job.workflow_repository` / `job.workflow_sha` contexts + # (https://docs.github.com/actions/reference/contexts-reference#job-context). GitHub Actions + # itself resolves and runs them correctly; this is a central, one-time ignore instead of an + # inline suppression on every `uses: actions/checkout` self-checkout step that reads them. + ignore: + - 'property "workflow_repository" is not defined in object type' + - 'property "workflow_sha" is not defined in object type' diff --git a/.github/linters/.powershell-psscriptanalyzer.psd1 b/.github/linters/.powershell-psscriptanalyzer.psd1 index 09cc3d0c..98e97452 100644 --- a/.github/linters/.powershell-psscriptanalyzer.psd1 +++ b/.github/linters/.powershell-psscriptanalyzer.psd1 @@ -51,6 +51,7 @@ } ExcludeRules = @( 'PSMissingModuleManifestField', # This rule is not applicable until the module is built. - 'PSUseToExportFieldsInManifest' + 'PSUseToExportFieldsInManifest', + 'PSAvoidUsingWriteHost' # All code runs on GitHub-hosted runners with modern hosts that support Write-Host. ) }