Skip to content

Commit 90ce1d5

Browse files
authored
chore: add unowned derived memory leak test (#12075)
1 parent cabdf97 commit 90ce1d5

File tree

1 file changed

+35
-0
lines changed
  • packages/svelte/tests/signals

1 file changed

+35
-0
lines changed

packages/svelte/tests/signals/test.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,16 @@ function test(text: string, fn: (runes: boolean) => any) {
3737
it(`${text} (runes mode)`, run_test(true, fn));
3838
}
3939

40+
test.only = (text: string, fn: (runes: boolean) => any) => {
41+
it.only(`${text} (legacy mode)`, run_test(false, fn));
42+
it.only(`${text} (runes mode)`, run_test(true, fn));
43+
};
44+
45+
test.skip = (text: string, fn: (runes: boolean) => any) => {
46+
it.skip(`${text} (legacy mode)`, run_test(false, fn));
47+
it.skip(`${text} (runes mode)`, run_test(true, fn));
48+
};
49+
4050
describe('signals', () => {
4151
test('effect with state and derived in it', () => {
4252
const log: string[] = [];
@@ -537,4 +547,29 @@ describe('signals', () => {
537547
assert.deepEqual(branch, 'if');
538548
};
539549
});
550+
551+
test('unowned deriveds are not added as reactions', () => {
552+
var count = source(0);
553+
554+
function create_derived() {
555+
return derived(() => $.get(count) * 2);
556+
}
557+
558+
return () => {
559+
let d = create_derived();
560+
assert.equal($.get(d), 0);
561+
assert.equal(count.reactions, null);
562+
assert.equal(d.deps?.length, 1);
563+
564+
set(count, 1);
565+
assert.equal($.get(d), 2);
566+
assert.equal(count.reactions, null);
567+
assert.equal(d.deps?.length, 1);
568+
569+
d = create_derived();
570+
assert.equal($.get(d), 2);
571+
assert.equal(count.reactions, null);
572+
assert.equal(d.deps?.length, 1);
573+
};
574+
});
540575
});

0 commit comments

Comments
 (0)