mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-06 11:24:00 +00:00
fix: guard scene director callbacks
This commit is contained in:
1 parent
d2de6258ae
commit
abf2ce1c9a
2 files changed
+15
-1
No files matched your search
@@ -95,7 +95,11 @@ export async function playSceneQueue(
|
|||||||
try {
|
try {
|
||||||
await adapter.releaseScene(toRelease);
|
await adapter.releaseScene(toRelease);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (!runError) throw error;
|
if (runError) {
|
||||||
|
console.warn('[Scenes] Scene release failed:', error);
|
||||||
|
} else {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -200,6 +200,10 @@ test('a cleanup failure rejects for the caller to restore its own controls', asy
|
|||||||
test('a phase failure is preserved when final scene release also throws', async () => {
|
test('a phase failure is preserved when final scene release also throws', async () => {
|
||||||
const phaseError = new Error('travel failed');
|
const phaseError = new Error('travel failed');
|
||||||
const releaseError = new Error('release failed');
|
const releaseError = new Error('release failed');
|
||||||
|
const warnings = [];
|
||||||
|
const origWarn = console.warn;
|
||||||
|
console.warn = (...args) => warnings.push(args);
|
||||||
|
try {
|
||||||
const f = fixture({
|
const f = fixture({
|
||||||
travel: async () => {
|
travel: async () => {
|
||||||
throw phaseError;
|
throw phaseError;
|
||||||
@@ -212,6 +216,12 @@ test('a phase failure is preserved when final scene release also throws', async
|
|||||||
playSceneQueue(buildPlaybackQueue(scenes, 'a', { single: true }), f),
|
playSceneQueue(buildPlaybackQueue(scenes, 'a', { single: true }), f),
|
||||||
(error) => error === phaseError,
|
(error) => error === phaseError,
|
||||||
);
|
);
|
||||||
|
assert.equal(warnings.length, 1);
|
||||||
|
assert.equal(warnings[0][0], '[Scenes] Scene release failed:');
|
||||||
|
assert.equal(warnings[0][1], releaseError);
|
||||||
|
} finally {
|
||||||
|
console.warn = origWarn;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test('a failing inter-scene release releases the active scene only once', async () => {
|
test('a failing inter-scene release releases the active scene only once', async () => {
|
||||||
|
|||||||
Reference in new issue
Block a user