Repository navigation
feat: support structured Manifest.PrivateData in generated module manifests - #265
Merged
Merged
Conversation
* fix(#260): enforce supported Pester version range and improve error handling - `Invoke-NovaTest`, `Test-NovaBuild`, and `% nova test` now only use Pester versions from `5.7.1` to `5.10.0`, failing with a clear error for unsupported `Pester 6.x`. - Updated documentation to reflect the new Pester version requirements. * fix(#260): improve Pester version handling in Nova test workflows - Reuse already loaded supported Pester 5.x version before switching - Ensure early failure with clear error when unsupported Pester 6.x is present * fix(#260): enhance Nova module validation commands and logging - Introduced new functions for command generation and execution - Improved error handling for validation command failures - Updated logging to capture command execution details * fix(#260): improve run.ps1 script content handling in tests - resolve script path and load content once for efficiency - update test assertions to use loaded script content * fix(#260): improve run.ps1 script content handling in tests - resolve script path and load content once for efficiency - update test assertions to use loaded script content * fix(#260): enhance output handling in integration tests - replace output joining with Get-NovaPublicCommandIntegrationOutputText for better formatting - normalize whitespace in output assertions for consistency * fix(#260): add tests for Get-NovaPesterVersionText and Test-NovaPesterModuleVersionSupported - implement default value handling in Get-NovaPesterVersionText - validate null candidate version in Test-NovaPesterModuleVersionSupported
…duleTools into develop * 'develop' of https://github.com/stiwicourage/NovaModuleTools: chore: prepare develop for next prerelease chore(release): 3.3.1 Enforce Pester version range and improve error handling (#262) # Conflicts: # project.json
…dling - Update-NovaModuleTool and % nova update now split self-update failure details and recovery guidance across separate terminal lines for better readability. - Ensure Nova test workflows only use supported Pester 5.x versions, providing clear errors for unsupported Pester 6.x installations.
* #263 feat: Enhance project.json support for Manifest.PrivateData - Added support for `Manifest.PrivateData` in `project.json` to allow arbitrary consumer-defined metadata. - Updated `BuildManifest` to serialize structured `PrivateData` into the generated `.psd1`, preserving nested objects and types. - Implemented validation to reject collisions with reserved `PSData` keys in `PrivateData`. - Created utility functions for converting data to PowerShell literals and updating manifest private data. - Added comprehensive tests for `ConvertTo-PowerShellDataLiteral` and `Update-ManifestPrivateData` to ensure correct functionality. - Updated documentation to reflect changes in `project.json` schema and usage of `PrivateData`. * #263 feat: Add tests for Get-GeneratedManifestPsData and related functions
There was a problem hiding this comment.
Gates Passed
6 Quality Gates Passed
See analysis details in CodeScene
Quality Gate Profile: Pay Down Tech Debt
Install CodeScene MCP: safeguard and uplift AI-generated code. Catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Code Coverage Gates Passed
Overall Coverage: 99.8%
(required = 95%)
New & Changed Code Coverage: 100%
(required = 99%)
Review details by gate
-
Overall Coverage
- Pass/Fail Reason:
The overall coverage gate was checked for all code and meets the goal: 99.8% covered >= threshold = 95% - Action:
You have 296 files with a sum of 4299 covered and 7 uncovered lines of code.
- Pass/Fail Reason:
-
New & Changed Code Coverage
- Pass/Fail Reason:
New or changed code meets coverage goal: 100% covered >= threshold = 99% - Action:
You modified 4 files, and covered 154 added/modified lines of code.
- Pass/Fail Reason:
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
develop -> main:3.4.0.Manifest.PrivateData, which is a SemVer minor change, and also includes user-facing fixes for self-update messaging and supportedPester 5.xresolution.CHANGELOG.mdandRELEASE_NOTE.mdalready describe the branch delta,project.jsonremains on the prerelease track as3.3.2-preview, and.github/workflows/Publish.ymlstill reads the authoritative version fromGet-NovaProjectInfo -Version. Includes #263 feat: Enhance project.json support for Manifest.PrivateData #264 and Enforce Pester version range and improve error handling #262, plus prerelease follow-up around Bug/260 setting max pester version below 6 #261/Setting max pester version below 6 #260.Affected area
novaCLI or command routingproject.jsonhandlingREADME.md,CONTRIBUTING.md, repository workflow docs)docs/*.html)docs/NovaModuleTools/en-US/*.md)src/resources/example/project.json, workflow dependencies, release tooling)Review guidance
src/private/build/BuildManifest.ps1,src/private/build/ConvertToPowerShellDataLiteral.ps1, andsrc/private/build/UpdateManifestPrivateData.ps1. The main change is that Nova now owns structuredPrivateDataserialization instead of relying onNew-ModuleManifest -PrivateDatafor nested data.src/resources/Schema-Project.json,docs/schema/v3/project.json,docs/project-json-reference.html,tests/private/build/*.Tests.ps1, andtests/public/TestNovaBuild.Integration.Tests.ps1.src/private/update/InvokeNovaModuleSelfUpdateWorkflow.ps1plus its mirrored tests.New-ModuleManifest -PrivateDatais not safe for arbitrary nested structured values, so Nova rewrites only the top-levelPrivateDatablock after manifest generation and preserves generatedPrivateData.PSData. Build validation relies on successfulImport-PowerShellDataFile; custom top-levelPrivateDataremains awkward withTest-ModuleManifest.Validation
Invoke-NovaBuildInvoke-NovaTestTest-NovaBuild./scripts/build/Invoke-ScriptAnalyzerCI.ps1./scripts/build/ci/Invoke-NovaModuleToolsCI.ps1% nova build,% nova test,% nova merge,% nova deploy,% nova publish,% nova release,% nova update,% nova notification, or% nova initas relevant)Validation notes:
Documentation and release follow-up
README.mdreviewed and updated if contributor workflow, architecture, CI, release, or automation changedCONTRIBUTING.mdreviewed and updated if contribution expectations or review guidance changedCHANGELOG.mdreviewed and updated if the change matters to users, maintainers, or contributorsRELEASE_NOTE.mdreviewed and updated if the change affects public cmdlet usage, CLI usage, configuration semantics, or migration expectationsdocs/NovaModuleTools/en-US/help updated if a public command or CLI behavior changeddocs/*.htmlupdated if end-user workflows or examples changedsrc/resources/example/reviewed and updated if the real-world project layout, package model, or upload workflow changedMaintainability, compatibility, and risk
Risk, rollout, or rollback notes:
Important
Do not use a public pull request to disclose a vulnerability before coordinated handling.
Use the private reporting path in
SECURITY.mdfor new security issues.