test(ship-queue): the merge-key floor test simulates its restamp on a tentative constant, so it holds after the stamp

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This commit is contained in:
garrytanandcapy-ai[bot] committed 2026-11-03 23:17:48 +00:00
1 parent c609700cbb
commit 2eee584333
1 file changed
+10 -9
+10 -9
View File
@@ -389,16 +389,17 @@ describe('merge: direct | train', () => {
const root = path.resolve(import.meta.dir, '..'); const root = path.resolve(import.meta.dir, '..');
const fork = fs.readFileSync(path.join(root, 'VERSION'), 'utf8').trim(); const fork = fs.readFileSync(path.join(root, 'VERSION'), 'utf8').trim();
const stamped = bumpVersion(fork, 'patch')!; const stamped = bumpVersion(fork, 'patch')!;
const templates = ["_KEY_VERSION = '{version}'"]; const tentative = bumpVersion(fork, 'minor')!;
const line = `export const MERGE_KEY_VERSION = '${MERGE_KEY_VERSION}';`; const policy = JSON.parse(fs.readFileSync(path.join(root, '.gstack', 'ship-policy.json'), 'utf8'));
const text = fs.readFileSync(path.join(root, 'lib', 'ship-policy.ts'), 'utf8'); const templates: string[] = policy.stamp_patterns;
expect(text).toContain(line); expect(policy.stamp_paths).toContain('lib/ship-policy.ts');
if (MERGE_KEY_VERSION !== fork && MERGE_KEY_VERSION !== stamped) { expect(templates).toContain("_KEY_VERSION = '{version}'");
expect(tentativeMentions(new Map([['lib/ship-policy.ts', new Set([line])]]), fork, stamped, templates)).toEqual([MERGE_KEY_VERSION]); expect(fs.readFileSync(path.join(root, 'lib', 'ship-policy.ts'), 'utf8')).toContain(`export const MERGE_KEY_VERSION = '${MERGE_KEY_VERSION}';`);
const out = rewriteStamps(text, MERGE_KEY_VERSION, stamped, templates); const line = `export const MERGE_KEY_VERSION = '${tentative}';`;
expect(tentativeMentions(new Map([['lib/ship-policy.ts', new Set([line])]]), fork, stamped, templates)).toEqual([tentative]);
const out = rewriteStamps(line, tentative, stamped, templates);
expect(out.count).toBe(1); expect(out.count).toBe(1);
expect(out.text).toContain(`export const MERGE_KEY_VERSION = '${stamped}';`); expect(out.text).toBe(`export const MERGE_KEY_VERSION = '${stamped}';`);
}
const errs = (min: string, running: string) => validatePolicy({ merge: 'direct', min_gstack_version: min }, { gstackVersion: running }); const errs = (min: string, running: string) => validatePolicy({ merge: 'direct', min_gstack_version: min }, { gstackVersion: running });
expect(errs(MERGE_KEY_VERSION, MERGE_KEY_VERSION)).toEqual([]); expect(errs(MERGE_KEY_VERSION, MERGE_KEY_VERSION)).toEqual([]);
const parts = MERGE_KEY_VERSION.split('.').map(Number); const parts = MERGE_KEY_VERSION.split('.').map(Number);