Skip to content

Commit f0aac15

Browse files
committed
fix test
1 parent 480f55d commit f0aac15

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed

packages/svelte/src/index-server.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import { current_component } from './internal/server/context.js';
33
import { noop } from './internal/shared/utils.js';
44
import * as e from './internal/server/errors.js';
5+
import { STALE_REACTION } from '#client/constants';
56

67
/** @param {() => void} fn */
78
export function onDestroy(fn) {
@@ -42,7 +43,7 @@ export function getAbortSignal() {
4243
if (controller === null) {
4344
const c = (controller = new AbortController());
4445
queueMicrotask(() => {
45-
c.abort();
46+
c.abort(STALE_REACTION);
4647
controller = null;
4748
});
4849
}

packages/svelte/tests/runtime-runes/samples/get-abort-signal/_config.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,24 @@ import { test } from '../../test';
33
export default test({
44
html: `<button>increment</button><p>loading...</p>`,
55

6-
async test({ assert, target }) {
6+
async test({ assert, target, variant, logs }) {
7+
await new Promise((f) => setTimeout(f, 50));
8+
9+
if (variant === 'hydrate') {
10+
assert.deepEqual(logs, ['aborted', { stale: true }]);
11+
}
12+
13+
logs.length = 0;
14+
715
const [button] = target.querySelectorAll('button');
816

9-
await new Promise((f) => setTimeout(f, 50)); // TODO replace with `tick` once `await` lands
17+
await new Promise((f) => setTimeout(f, 50));
1018
assert.htmlEqual(target.innerHTML, '<button>increment</button><p>0</p>');
1119

1220
button.click();
13-
await new Promise((f) => setTimeout(f, 50)); // TODO replace with `tick` once `await` lands
21+
await new Promise((f) => setTimeout(f, 50));
1422
assert.htmlEqual(target.innerHTML, '<button>increment</button><p>2</p>');
23+
24+
assert.deepEqual(logs, ['aborted', { stale: true }]);
1525
}
1626
});

packages/svelte/tests/runtime-runes/samples/get-abort-signal/main.svelte

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,17 @@
44
let count = $state(0);
55
66
let delayed_count = $derived.by(async () => {
7-
const response = await fetch(`data:text/plain;charset=utf-8,${count}`, {
8-
signal: getAbortSignal()
9-
});
7+
let c = count;
108
11-
return await response.json();
9+
const signal = getAbortSignal();
10+
11+
await new Promise((f) => setTimeout(f));
12+
13+
if (signal.aborted) {
14+
console.log('aborted', signal.reason);
15+
}
16+
17+
return c;
1218
});
1319
</script>
1420

0 commit comments

Comments
 (0)