ReviewOS

also looking at this

stacks/bumpx

fix: synchronize drifted native versions in recursive releases

#2015
Merged chris wants to merge codex/recursive-native-version-drift into main
2 files +26 -2

Review threads live on the whole diff, not on one commit, so none are shown here - a thread's line means something in the branch's final form, and painting it into an intermediate step would put it on code it is not about.

packages/bumpx/test/additional-release-manifests.test.tsmodified+20-0
Changes to packages/bumpx/test/additional-release-manifests.test.ts
@@ -68,3 +68,23 @@ test('additional manifests participate in changed-package dependency propagation
6868 rmSync(root, { recursive: true, force: true })
6969 }
7070})
71
72test('recursive CLI synchronizes native metadata whose starting version differs from the root', () => {
73 const root = fixture()
74 try {
75 mkdirSync(join(root, 'packages/zig'), { recursive: true })
76 writeFileSync(join(root, 'packages/zig/build.zig.zon'), '.{ .version = "0.8.0", }\n')
77 writeFileSync(join(root, 'packages/zig/pantry.json'), '{"version":"0.7.0"}\n')
78 writeFileSync(join(root, 'packages/zig/package.jsonc'), '{/* metadata */ "version":"0.6.0"}\n')
79 writeFileSync(join(root, 'bumpx.config.ts'), `export default {
80 additionalFiles: ['packages/zig/build.zig.zon', 'packages/zig/pantry.json', 'packages/zig/package.jsonc'],
81 }\n`)
82 bump(root)
83 expect(version(root, '.')).toBe('1.0.1')
84 expect(version(root, 'packages/runtime')).toBe('1.0.1')
85 expect(readFileSync(join(root, 'packages/zig/build.zig.zon'), 'utf8')).toContain('.version = "1.0.1"')
86 expect(JSON.parse(readFileSync(join(root, 'packages/zig/pantry.json'), 'utf8')).version).toBe('1.0.1')
87 expect(readFileSync(join(root, 'packages/zig/package.jsonc'), 'utf8')).toContain('"version":"1.0.1"')
88 }
89 finally { rmSync(root, { recursive: true, force: true }) }
90})