fix legacy invalid turn argument logs
This commit is contained in:
@@ -884,12 +884,13 @@ export const createReservedTurnHandler = async (options: {
|
|||||||
let blockedReason: string | undefined = undefined;
|
let blockedReason: string | undefined = undefined;
|
||||||
|
|
||||||
if (parsedArgs === null) {
|
if (parsedArgs === null) {
|
||||||
|
const failureText = `인자가 올바르지 않습니다. ${resolvedDefinition.name} 실패.`;
|
||||||
definition = fallbackDefinition;
|
definition = fallbackDefinition;
|
||||||
actionArgs = definition.parseArgs({}) ?? {};
|
actionArgs = definition.parseArgs({}) ?? {};
|
||||||
actionKey = definition.key;
|
actionKey = definition.key;
|
||||||
usedFallback = true;
|
usedFallback = true;
|
||||||
blockedReason = '예약된 명령을 실행하지 못했습니다.';
|
blockedReason = failureText;
|
||||||
logs.push(createActionLog('예약된 명령을 실행하지 못했습니다.'));
|
logs.push(createActionLog(failureText));
|
||||||
}
|
}
|
||||||
|
|
||||||
const actionConstraintEnv = {
|
const actionConstraintEnv = {
|
||||||
|
|||||||
@@ -456,7 +456,7 @@ describe('Reserved Turn Execution Integration', () => {
|
|||||||
|
|
||||||
const dirty = world.consumeDirtyState();
|
const dirty = world.consumeDirtyState();
|
||||||
expect(world.getGeneralById(1)!.cityId).toBe(1);
|
expect(world.getGeneralById(1)!.cityId).toBe(1);
|
||||||
expect(dirty.logs.some((log) => log.text.includes('예약된 명령을 실행하지 못했습니다.'))).toBe(true);
|
expect(dirty.logs.some((log) => log.text.includes('인자가 올바르지 않습니다. 이동 실패.'))).toBe(true);
|
||||||
expect(dirty.logs.some((log) => log.text.includes('아무것도 실행하지 않았습니다.'))).toBe(true);
|
expect(dirty.logs.some((log) => log.text.includes('아무것도 실행하지 않았습니다.'))).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -2695,6 +2695,38 @@ integration('nation command resource balance and target boundaries', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
integration('nation command missing argument object parity', () => {
|
||||||
|
it.each(['che_포상', 'che_몰수'] as const)(
|
||||||
|
'%s falls back with the legacy invalid-argument log and no RNG',
|
||||||
|
async (action) => {
|
||||||
|
const request = buildRequest(action);
|
||||||
|
const reference = runReferenceTurnCommandTraceRequest(
|
||||||
|
workspaceRoot!,
|
||||||
|
request as unknown as Record<string, unknown>
|
||||||
|
);
|
||||||
|
const core = await runCoreTurnCommandTrace(request, reference.before);
|
||||||
|
|
||||||
|
expect(reference.execution.outcome).toMatchObject({ completed: false });
|
||||||
|
expect(core.execution.outcome).toMatchObject({
|
||||||
|
requestedAction: action,
|
||||||
|
actionKey: '휴식',
|
||||||
|
usedFallback: true,
|
||||||
|
});
|
||||||
|
expect(reference.rng).toEqual([]);
|
||||||
|
expect(core.rng).toEqual(reference.rng);
|
||||||
|
expect(
|
||||||
|
compareTurnSnapshotDeltas(reference.before, reference.after, core.before, core.after, {
|
||||||
|
ignoredPathPatterns: ignoredLifecyclePaths,
|
||||||
|
})
|
||||||
|
).toEqual([]);
|
||||||
|
expect(semanticLogSignatures(nationCommandLogs(core.after.logs))).toEqual(
|
||||||
|
semanticLogSignatures(addedReferenceLogs(reference.before, reference.after.logs))
|
||||||
|
);
|
||||||
|
},
|
||||||
|
120_000
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
integration('nation seizure NPC public message parity', () => {
|
integration('nation seizure NPC public message parity', () => {
|
||||||
it('matches the legacy fixed-seed RNG and public message side effect', async () => {
|
it('matches the legacy fixed-seed RNG and public message side effect', async () => {
|
||||||
const request = buildRequest(
|
const request = buildRequest(
|
||||||
|
|||||||
Reference in New Issue
Block a user