import { test } from 'node:test'; import assert from 'node:assert/strict'; import { join } from 'node:path'; import { readFileSync } from 'node:fs'; import { makeTempMonorepo, makeGameProject, cleanup } from './helpers.mjs'; import { setupLinks } from '../setup-links.mjs'; import { isLink } from '../lib/junction.mjs'; test('setupLinks 为每个子游戏工程建立 assets/framework junction', () => { const mono = makeTempMonorepo(); try { makeGameProject(mono.games, 'doudizhu'); makeGameProject(mono.games, 'niuniu'); const results = setupLinks(mono.games, mono.framework); assert.equal(results.length, 2); for (const r of results) { assert.equal(r.status, 'created'); assert.ok(isLink(r.link)); assert.equal(readFileSync(join(r.link, 'README.md'), 'utf8'), '# framework src\n'); } } finally { cleanup(mono.root); } }); test('setupLinks 二次运行幂等(已存在则 exists)', () => { const mono = makeTempMonorepo(); try { makeGameProject(mono.games, 'doudizhu'); setupLinks(mono.games, mono.framework); const second = setupLinks(mono.games, mono.framework); assert.equal(second[0].status, 'exists'); } finally { cleanup(mono.root); } });