From abcefd031880b1a9bb670b753f7db240b60bc4be Mon Sep 17 00:00:00 2001 From: Conduitry Date: Mon, 25 Feb 2019 11:53:36 -0500 Subject: [PATCH 1/3] run vars tests with each generate type --- test/vars/index.js | 70 +++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/test/vars/index.js b/test/vars/index.js index d8da8e4778..66ffd94c70 100644 --- a/test/vars/index.js +++ b/test/vars/index.js @@ -14,47 +14,41 @@ describe('vars', () => { throw new Error('Forgot to remove `solo: true` from test'); } - (solo ? it.only : skip ? it.skip : it)(dir, () => { - const config = loadConfig(`./vars/samples/${dir}/_config.js`); - const filename = `test/vars/samples/${dir}/input.svelte`; - const input = fs.readFileSync(filename, 'utf-8').replace(/\s+$/, ''); - - const expectedError = tryToLoadJson( - `test/vars/samples/${dir}/error.json` - ); - - let result; - let error; - - try { - result = svelte.compile(input, config.options); - config.test(assert, result.vars); - } catch (e) { - error = e; - } - - if (error || expectedError) { - if (error && !expectedError) { - throw error; + for (const generate of ['dom', 'ssr', false]) { + (solo ? it.only : skip ? it.skip : it)(`${dir}, generate: ${generate}`, () => { + const config = loadConfig(`./vars/samples/${dir}/_config.js`); + const filename = `test/vars/samples/${dir}/input.svelte`; + const input = fs.readFileSync(filename, 'utf-8').replace(/\s+$/, ''); + + const expectedError = tryToLoadJson( + `test/vars/samples/${dir}/error.json` + ); + + let result; + let error; + + try { + result = svelte.compile(input, { ...config.options, generate }); + config.test(assert, result.vars); + } catch (e) { + error = e; } - if (expectedError && !error) { - throw new Error(`Expected an error: ${expectedError.message}`); - } - - assert.equal(error.message, expectedError.message); - assert.deepEqual(error.start, expectedError.start); - assert.deepEqual(error.end, expectedError.end); - assert.equal(error.pos, expectedError.pos); - } - }); - }); + if (error || expectedError) { + if (error && !expectedError) { + throw error; + } - it('returns a vars object when options.generate is false', () => { - const { vars } = svelte.compile('', { - generate: false - }); + if (expectedError && !error) { + throw new Error(`Expected an error: ${expectedError.message}`); + } - assert.ok(Array.isArray(vars)); + assert.equal(error.message, expectedError.message); + assert.deepEqual(error.start, expectedError.start); + assert.deepEqual(error.end, expectedError.end); + assert.equal(error.pos, expectedError.pos); + } + }); + } }); }); From e1ff7c7b2a96a3bd00329a3c3632d2d5adb32988 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Mon, 25 Feb 2019 12:02:50 -0500 Subject: [PATCH 2/3] failing tests for #2133 --- test/vars/samples/actions/_config.js | 16 ++++++++++ test/vars/samples/actions/input.svelte | 5 +++ test/vars/samples/animations/_config.js | 16 ++++++++++ test/vars/samples/animations/input.svelte | 7 +++++ test/vars/samples/transitions/_config.js | 36 ++++++++++++++++++++++ test/vars/samples/transitions/input.svelte | 9 ++++++ 6 files changed, 89 insertions(+) create mode 100644 test/vars/samples/actions/_config.js create mode 100644 test/vars/samples/actions/input.svelte create mode 100644 test/vars/samples/animations/_config.js create mode 100644 test/vars/samples/animations/input.svelte create mode 100644 test/vars/samples/transitions/_config.js create mode 100644 test/vars/samples/transitions/input.svelte diff --git a/test/vars/samples/actions/_config.js b/test/vars/samples/actions/_config.js new file mode 100644 index 0000000000..2cda8889c9 --- /dev/null +++ b/test/vars/samples/actions/_config.js @@ -0,0 +1,16 @@ +export default { + test(assert, vars) { + assert.deepEqual(vars, [ + { + export_name: null, + injected: false, + module: false, + mutated: false, + name: 'foo', + reassigned: false, + referenced: true, + writable: true + } + ]); + } +}; diff --git a/test/vars/samples/actions/input.svelte b/test/vars/samples/actions/input.svelte new file mode 100644 index 0000000000..fe614c760c --- /dev/null +++ b/test/vars/samples/actions/input.svelte @@ -0,0 +1,5 @@ + + +
diff --git a/test/vars/samples/animations/_config.js b/test/vars/samples/animations/_config.js new file mode 100644 index 0000000000..2cda8889c9 --- /dev/null +++ b/test/vars/samples/animations/_config.js @@ -0,0 +1,16 @@ +export default { + test(assert, vars) { + assert.deepEqual(vars, [ + { + export_name: null, + injected: false, + module: false, + mutated: false, + name: 'foo', + reassigned: false, + referenced: true, + writable: true + } + ]); + } +}; diff --git a/test/vars/samples/animations/input.svelte b/test/vars/samples/animations/input.svelte new file mode 100644 index 0000000000..7843ab928d --- /dev/null +++ b/test/vars/samples/animations/input.svelte @@ -0,0 +1,7 @@ + + +{#each [] as x (x)} +
+{/each} diff --git a/test/vars/samples/transitions/_config.js b/test/vars/samples/transitions/_config.js new file mode 100644 index 0000000000..e42faf7d19 --- /dev/null +++ b/test/vars/samples/transitions/_config.js @@ -0,0 +1,36 @@ +export default { + test(assert, vars) { + assert.deepEqual(vars, [ + { + export_name: null, + injected: false, + module: false, + mutated: false, + name: 'foo', + reassigned: false, + referenced: true, + writable: true + }, + { + export_name: null, + injected: false, + module: false, + mutated: false, + name: 'bar', + reassigned: false, + referenced: true, + writable: true + }, + { + export_name: null, + injected: false, + module: false, + mutated: false, + name: 'baz', + reassigned: false, + referenced: true, + writable: true + } + ]); + } +}; diff --git a/test/vars/samples/transitions/input.svelte b/test/vars/samples/transitions/input.svelte new file mode 100644 index 0000000000..1dac9bc5ec --- /dev/null +++ b/test/vars/samples/transitions/input.svelte @@ -0,0 +1,9 @@ + + +
+
+
From 7b6de7e23032b8d11afe3247d59512c2bd1d0381 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Tue, 26 Feb 2019 09:58:52 -0500 Subject: [PATCH 3/3] note references to actions/animations/transitions (#2133) --- src/compile/nodes/Action.ts | 1 + src/compile/nodes/Animation.ts | 1 + src/compile/nodes/Transition.ts | 2 ++ 3 files changed, 4 insertions(+) diff --git a/src/compile/nodes/Action.ts b/src/compile/nodes/Action.ts index 80d8f215c5..761738ac79 100644 --- a/src/compile/nodes/Action.ts +++ b/src/compile/nodes/Action.ts @@ -14,6 +14,7 @@ export default class Action extends Node { component.warn_if_undefined(info, scope); this.name = info.name; + component.qualify(info.name); this.expression = info.expression ? new Expression(component, this, scope, info.expression) diff --git a/src/compile/nodes/Animation.ts b/src/compile/nodes/Animation.ts index faf964b06c..68ebfd3828 100644 --- a/src/compile/nodes/Animation.ts +++ b/src/compile/nodes/Animation.ts @@ -13,6 +13,7 @@ export default class Animation extends Node { component.warn_if_undefined(info, scope); this.name = info.name; + component.qualify(info.name); if (parent.animation) { component.error(this, { diff --git a/src/compile/nodes/Transition.ts b/src/compile/nodes/Transition.ts index a0e42d939e..6cb39b997f 100644 --- a/src/compile/nodes/Transition.ts +++ b/src/compile/nodes/Transition.ts @@ -15,6 +15,8 @@ export default class Transition extends Node { component.warn_if_undefined(info, scope); this.name = info.name; + component.qualify(info.name); + this.directive = info.intro && info.outro ? 'transition' : info.intro ? 'in' : 'out'; this.is_local = info.modifiers.includes('local');