zscripts-token-savers/tests
Kelly Michels 732a448be5
feat: add zmerge and zpull — fleet-wide PR merging and checkout sync (#79)
* feat: add zmerge and zpull

Two commands that were private-only until now. They turned out to be useful
beyond the fleet they were written for, so they are manifested for publication
and removed from the sanitization denylist's private-only list.

  zmerge   merge every pull request across the org that is genuinely ready -
           MERGEABLE/CLEAN and not a draft - re-checking each one immediately
           before and after every merge, because merging into a default branch
           can conflict a sibling PR in the same repository. Dry run by
           default; -Execute or -e merges.

  zpull    zmerge, then git pull --ff-only in every checkout the merges
           affected. Skips a checkout that is dirty or is not on its default
           branch rather than guessing at it.

WHY THEY COULD BE PUBLISHED NOW. zmerge carried a hardcoded list of sixteen
repository names, which was both the reason it could not be published and a
bug: the org has thirty active repositories, so it scanned about half and
reported "Nothing open to merge" while a ready pull request sat in one it had
never heard of. It asks GitHub now, and the names went with the list.

Get-FleetRepos throws rather than returning an empty list when gh fails,
because a tool that quietly scans nothing prints the same reassuring line as
one that scanned everything and found nothing.

-e is an alias for -Execute on both, the way -s already works for -Scan.

Also: __pycache__/ is gitignored. scripts/plaintext_twins.py creates it on
every run and it was showing up as untracked work.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix: CRLF the new scripts, as .gitattributes pins them

zmerge.ps1, zpull.ps1 and zpull.cmd went in with LF endings. .gitattributes
pins *.ps1 and *.cmd to eol=crlf precisely so CHECKSUMS.txt can hold one hash
per file rather than one per platform - so git handed CI a CRLF checkout while
the manifest carried hashes taken from my LF copies, and the three new files
were the only ones that failed.

Local verification passed and CI did not, which is the tell: the manifest was
generated against bytes that only existed on this machine.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 15:52:18 -05:00
..
fixtures test: add Pester suite for ZHelpers pure logic + ZCONFIG seam (phases 1-2) (#27) 2026-07-26 12:20:32 -05:00
ArgumentParsing.Tests.ps1 perf(tests): run each child-process invocation once (#77) 2026-09-10 15:12:22 -05:00
Checksums.Tests.ps1 chore: point repo URLs at evomedia-net/evo.* (#44) 2026-08-09 11:31:43 -05:00
DeployTag.Tests.ps1 chore(mirror): mirror tagOnDeploy and the zstart gitPull fix, and stop publishing current product names (#72) 2026-09-08 13:40:45 -05:00
Invoke-Coverage.ps1 test(coverage): run the Pester suite with code coverage (#47) 2026-08-13 16:26:19 -05:00
NewProjectArchive.Tests.ps1 chore: point repo URLs at evomedia-net/evo.* (#44) 2026-08-09 11:31:43 -05:00
PlainTextTwins.Tests.ps1 docs(security): security notes, and a twin for every root .md (#78) 2026-09-12 00:35:29 -05:00
sanitization-patterns.psd1 feat: add zmerge and zpull — fleet-wide PR merging and checkout sync (#79) 2026-09-12 15:52:18 -05:00
Sanitization.Tests.ps1 chore(mirror): mirror tagOnDeploy and the zstart gitPull fix, and stop publishing current product names (#72) 2026-09-08 13:40:45 -05:00
StartGitPull.Tests.ps1 chore(mirror): mirror tagOnDeploy and the zstart gitPull fix, and stop publishing current product names (#72) 2026-09-08 13:40:45 -05:00
VerifyPlan.Tests.ps1 chore(mirror): mirror tagOnDeploy and the zstart gitPull fix, and stop publishing current product names (#72) 2026-09-08 13:40:45 -05:00
ZHelpers.Tests.ps1 chore: point repo URLs at evomedia-net/evo.* (#44) 2026-08-09 11:31:43 -05:00