修复AGC的macOS临时路径兼容 (#125)
Project CI / Frontend tests (push) Failing after 21s
Project CI / Repository checks (push) Successful in 1m1s
Project CI / Backend tests (push) Successful in 3m0s
Project CI / Native shell tests (push) Successful in 11m36s

规范化配置回归测试的临时根路径
补充跨平台路径比较技术说明与踩坑记录

Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/125
Co-authored-by: menghao <mh18530625731@163.com>
Co-committed-by: menghao <mh18530625731@163.com>
This commit was merged in pull request #125.
This commit is contained in:
2026-07-31 15:28:05 +08:00
committed by 段舒康
parent 66341fe7a5
commit 26cfd85d25
4 changed files with 34 additions and 19 deletions
@@ -436,6 +436,28 @@ async function runConfigWizardRegressionChecks() {
path.join(os.tmpdir(), 'genarrative-agc-config-check-'),
);
try {
const canonicalTestRoot = fs.realpathSync.native(testRoot);
const realConfigAncestor = path.join(testRoot, 'real-config-ancestor');
const linkedConfigAncestor = path.join(testRoot, 'linked-config-ancestor');
fs.mkdirSync(realConfigAncestor);
fs.symlinkSync(
realConfigAncestor,
linkedConfigAncestor,
process.platform === 'win32' ? 'junction' : 'dir',
);
const missingLinkedConfigDir = path.join(
linkedConfigAncestor,
'missing-appdata',
);
assert.equal(fs.existsSync(missingLinkedConfigDir), false);
assert.equal(
await assertSafeGameCreatorConfigDestination(missingLinkedConfigDir),
path.join(
fs.realpathSync.native(realConfigAncestor),
'missing-appdata',
),
);
const gitRoot = path.join(testRoot, 'tracked-repository');
const trackedConfigDir = path.join(gitRoot, 'runtime-config');
fs.mkdirSync(trackedConfigDir, { recursive: true });
@@ -463,7 +485,7 @@ async function runConfigWizardRegressionChecks() {
const outsideConfigDir = path.join(testRoot, 'outside-appdata');
assert.equal(
await assertSafeGameCreatorConfigDestination(outsideConfigDir),
outsideConfigDir,
path.join(canonicalTestRoot, 'outside-appdata'),
);
await assert.rejects(
assertSafeGameCreatorConfigDestination(outsideConfigDir, {
@@ -476,7 +498,7 @@ async function runConfigWizardRegressionChecks() {
await assertSafeGameCreatorConfigDestination(dedicatedConfigDir, {
requireDedicatedLeaf: true,
}),
dedicatedConfigDir,
path.join(canonicalTestRoot, appIdentifier),
);
const injectedNonGitConfigDir = path.join(testRoot, 'injected-non-git');
@@ -489,7 +511,7 @@ async function runConfigWizardRegressionChecks() {
'fatal: not a git repository (or any of the parent directories): .git\n',
}),
}),
injectedNonGitConfigDir,
path.join(canonicalTestRoot, 'injected-non-git'),
);
await assert.rejects(
assertSafeGameCreatorConfigDestination(
@@ -2,20 +2,6 @@ import type {
ProjectResourceCanvasLayout,
ProjectResourceCanvasPosition,
} from '../../../../packages/shared/src/contracts/gameCreationApp';
import { consumeInitialGameChatMessage } from '../../src/App';
import type {
AgentRuntimeEventRecord,
AgentRuntimeState,
} from '../../src/app/types';
import {
collectGameChatResultImages,
collectGameChatRuntimeEvents,
SupervisorChatOnlyView,
} from '../../src/features/project-workspace/SupervisorChatOnlyView';
import {
RESOURCE_CANVAS_CARD_WIDTH,
RESOURCE_CANVAS_COLUMN_GAP,
} from '../../src/view/project-development/resourceCanvasLayoutModel';
import {
consumeInitialGameChatMessage,
latestGameChatPlayableRevision,
@@ -30,6 +16,10 @@ import {
collectGameChatRuntimeEvents,
SupervisorChatOnlyView,
} from '../../src/features/project-workspace/SupervisorChatOnlyView';
import {
RESOURCE_CANVAS_CARD_WIDTH,
RESOURCE_CANVAS_COLUMN_GAP,
} from '../../src/view/project-development/resourceCanvasLayoutModel';
import {
act,
agentRuntimeUserInputRequest,
@@ -4241,7 +4231,7 @@ export function registerProjectSupervisorSurfaceTests() {
([command]) => command === 'get_local_game_preview_status',
).length,
).toBeGreaterThan(previewStatusReads);
});
}, { timeout: 3000 });
expect(driver.readAuthorization()?.authorizationId).toBe(
steerAuthorizationId,
);