Part 2 of 4 splitting #562 into reviewable PRs.
Parent: #562
Depends on: #567
Scope
Add the changed-folder detector field and the PowerShell wrapper invoked by npm run go-test. No workflow yet consumes the new detector field, so this PR adds no required CI gate.
Files
scripts/build/Detect-Folder-Changes.ps1 — emit new goContractTests JSON field.
scripts/build/Detect-Folder-Changes.Tests.ps1 — Pester coverage for the new field.
scripts/linting/Invoke-GoTest.ps1 — wrapper that runs go test against changed blueprint test directories.
scripts/tests/linting/Invoke-GoTest.Tests.ps1 — Pester coverage for the wrapper.
package.json — add go-test npm script targeting the wrapper.
Acceptance criteria
pwsh ./scripts/Invoke-Pester.ps1 -CI -Path ./scripts/build/Detect-Folder-Changes.Tests.ps1 passes (expect 27/0/0).
pwsh ./scripts/Invoke-Pester.ps1 -CI -Path ./scripts/tests/linting/Invoke-GoTest.Tests.ps1 passes (expect 14/0/0).
npm run go-test with no changes to gated paths exits cleanly (skip behavior).
- Detector emits the new
goContractTests field but no workflow yet consumes it.
Part 2 of 4 splitting #562 into reviewable PRs.
Parent: #562
Depends on: #567
Scope
Add the changed-folder detector field and the PowerShell wrapper invoked by
npm run go-test. No workflow yet consumes the new detector field, so this PR adds no required CI gate.Files
scripts/build/Detect-Folder-Changes.ps1— emit newgoContractTestsJSON field.scripts/build/Detect-Folder-Changes.Tests.ps1— Pester coverage for the new field.scripts/linting/Invoke-GoTest.ps1— wrapper that runsgo testagainst changed blueprint test directories.scripts/tests/linting/Invoke-GoTest.Tests.ps1— Pester coverage for the wrapper.package.json— addgo-testnpm script targeting the wrapper.Acceptance criteria
pwsh ./scripts/Invoke-Pester.ps1 -CI -Path ./scripts/build/Detect-Folder-Changes.Tests.ps1passes (expect 27/0/0).pwsh ./scripts/Invoke-Pester.ps1 -CI -Path ./scripts/tests/linting/Invoke-GoTest.Tests.ps1passes (expect 14/0/0).npm run go-testwith no changes to gated paths exits cleanly (skip behavior).goContractTestsfield but no workflow yet consumes it.