mirror of
https://github.com/aphrody-labs/PowerShell.git
synced 2026-10-17 20:56:02 +00:00
This regression was introduced by #6523, in `PSModuleInfo.cs`. A circular nested module check was removed because the comment there suggested it happens only with a deprecated workflow module. This causes a `StackOverflow` exception when running into circular nested modules. Circular nested modules could happen for a module that is not well structured. For example, the module folder `test` contains two files: `test.psd1` and `test.psm1`, and `test.psd1` has the following content: @{ ModuleVersion = '0.0.1'; RootModule = 'test'; NestedModules = @('test') } The same value `test` is put in both RootModule and NestedModule, which will end up with a module whose nested module points to itself. There are two changes in this PR: 1. Add back the check for circular nested modules in `PSModuleInfo.cs`. 2. Remove a wrong `Dbg.Assert` in `ModuleCmdletBase.cs` and two checks before it. - For the assertion `Dbg.Assert(newManifestInfo.SessionState == ss`, when facing the example above, the nested module will first be loaded with a different session state, and then when trying to load the root module, the same loaded nested module will be reused for it. So 'newManifestInfo.SessionState' is not `ss`. The assertion will fail in that case. - For the two checks before the assertion, they are not needed anymore based on the comments there.
Testing
The tests are organized by testing language. Thus Pester tests, which are written in the PowerShell language, are in ./powershell and xUnit tests, written in C#, are in ./csharp. The sanity tests for the Full .NET build of PowerShell are in ./fullclr, and the third-party shebang test is in ./shebang.