fix(platform): preserve session failures and URL syntax

This commit is contained in:
2026-09-05 06:38:00 +08:00
parent 7e5a950cc7
commit 224df1c21c
6 changed files with 123 additions and 8 deletions
@@ -366,3 +366,20 @@ test('RuntimeSession aggregates event, dispose, and invalidation failures after
[setup.errors.event, setup.errors.dispose, setup.errors.invalidate],
);
});
test('RuntimeSession flattens attach cleanup failures before appending lease invalidation', () => {
const setup = makeLeaseSession();
setup.setFailures('attach', 'dispose', 'invalidate');
const error = caughtError(() => setup.session.handleLogin(fixture('player-login-room.json')));
assert.equal(setup.session.state, 'faulted');
assert.equal(setup.session.fault, error);
assert.equal(setup.gameSession.state, 'idle');
assert.equal(setup.leases[0]?.invalidations, 1);
assert.equal(setup.getModuleDisposals(), 1);
assert.deepEqual(
(error as Error & { errors?: readonly unknown[] }).errors,
[setup.errors.attach, setup.errors.dispose, setup.errors.invalidate],
);
});