diff --git a/.prettierignore b/.prettierignore index 447573c618..1d75ebbb33 100644 --- a/.prettierignore +++ b/.prettierignore @@ -11,3 +11,4 @@ src/compiler/compile/internal_exports.ts /test/**/_actual* /test/**/expected* /types +!/vitest diff --git a/test/vars/index.js b/test/vars/index.js deleted file mode 100644 index bec6f5b727..0000000000 --- a/test/vars/index.js +++ /dev/null @@ -1,52 +0,0 @@ -import * as fs from 'fs'; -import * as assert from 'assert'; -import { svelte, loadConfig, tryToLoadJson } from '../helpers'; - -describe('vars', () => { - fs.readdirSync(`${__dirname}/samples`).forEach((dir) => { - if (dir[0] === '.') return; - - // add .solo to a sample directory name to only run that test - const solo = /\.solo/.test(dir); - const skip = /\.skip/.test(dir); - - if (solo && process.env.CI) { - throw new Error('Forgot to remove `solo: true` from test'); - } - - for (const generate of ['dom', 'ssr', false]) { - (solo ? it.only : skip ? it.skip : it)(`${dir}, generate: ${generate}`, () => { - const config = loadConfig(`${__dirname}/samples/${dir}/_config.js`); - const filename = `${__dirname}/samples/${dir}/input.svelte`; - const input = fs.readFileSync(filename, 'utf-8').replace(/\s+$/, ''); - - const expectedError = tryToLoadJson(`${__dirname}/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 (error || expectedError) { - if (error && !expectedError) { - throw error; - } - - 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); - } - }); - } - }); -}); diff --git a/test/vars/samples/$$props-logicless/_config.js b/vitest/compile-time/vars/samples/$$props-logicless/_config.mjs similarity index 100% rename from test/vars/samples/$$props-logicless/_config.js rename to vitest/compile-time/vars/samples/$$props-logicless/_config.mjs diff --git a/test/vars/samples/$$props-logicless/input.svelte b/vitest/compile-time/vars/samples/$$props-logicless/input.svelte similarity index 100% rename from test/vars/samples/$$props-logicless/input.svelte rename to vitest/compile-time/vars/samples/$$props-logicless/input.svelte diff --git a/test/vars/samples/$$props/_config.js b/vitest/compile-time/vars/samples/$$props/_config.mjs similarity index 100% rename from test/vars/samples/$$props/_config.js rename to vitest/compile-time/vars/samples/$$props/_config.mjs diff --git a/test/vars/samples/$$props/input.svelte b/vitest/compile-time/vars/samples/$$props/input.svelte similarity index 100% rename from test/vars/samples/$$props/input.svelte rename to vitest/compile-time/vars/samples/$$props/input.svelte diff --git a/test/vars/samples/actions/_config.js b/vitest/compile-time/vars/samples/actions/_config.mjs similarity index 100% rename from test/vars/samples/actions/_config.js rename to vitest/compile-time/vars/samples/actions/_config.mjs diff --git a/test/vars/samples/actions/input.svelte b/vitest/compile-time/vars/samples/actions/input.svelte similarity index 100% rename from test/vars/samples/actions/input.svelte rename to vitest/compile-time/vars/samples/actions/input.svelte diff --git a/test/vars/samples/animations/_config.js b/vitest/compile-time/vars/samples/animations/_config.mjs similarity index 100% rename from test/vars/samples/animations/_config.js rename to vitest/compile-time/vars/samples/animations/_config.mjs diff --git a/test/vars/samples/animations/input.svelte b/vitest/compile-time/vars/samples/animations/input.svelte similarity index 100% rename from test/vars/samples/animations/input.svelte rename to vitest/compile-time/vars/samples/animations/input.svelte diff --git a/test/vars/samples/assumed-global/_config.js b/vitest/compile-time/vars/samples/assumed-global/_config.mjs similarity index 100% rename from test/vars/samples/assumed-global/_config.js rename to vitest/compile-time/vars/samples/assumed-global/_config.mjs diff --git a/test/vars/samples/assumed-global/input.svelte b/vitest/compile-time/vars/samples/assumed-global/input.svelte similarity index 100% rename from test/vars/samples/assumed-global/input.svelte rename to vitest/compile-time/vars/samples/assumed-global/input.svelte diff --git a/test/vars/samples/component-namespaced/_config.js b/vitest/compile-time/vars/samples/component-namespaced/_config.mjs similarity index 100% rename from test/vars/samples/component-namespaced/_config.js rename to vitest/compile-time/vars/samples/component-namespaced/_config.mjs diff --git a/test/vars/samples/component-namespaced/input.svelte b/vitest/compile-time/vars/samples/component-namespaced/input.svelte similarity index 100% rename from test/vars/samples/component-namespaced/input.svelte rename to vitest/compile-time/vars/samples/component-namespaced/input.svelte diff --git a/test/vars/samples/duplicate-globals/_config.js b/vitest/compile-time/vars/samples/duplicate-globals/_config.mjs similarity index 100% rename from test/vars/samples/duplicate-globals/_config.js rename to vitest/compile-time/vars/samples/duplicate-globals/_config.mjs diff --git a/test/vars/samples/duplicate-globals/input.svelte b/vitest/compile-time/vars/samples/duplicate-globals/input.svelte similarity index 100% rename from test/vars/samples/duplicate-globals/input.svelte rename to vitest/compile-time/vars/samples/duplicate-globals/input.svelte diff --git a/test/vars/samples/duplicate-non-hoistable/_config.js b/vitest/compile-time/vars/samples/duplicate-non-hoistable/_config.mjs similarity index 100% rename from test/vars/samples/duplicate-non-hoistable/_config.js rename to vitest/compile-time/vars/samples/duplicate-non-hoistable/_config.mjs diff --git a/test/vars/samples/duplicate-non-hoistable/input.svelte b/vitest/compile-time/vars/samples/duplicate-non-hoistable/input.svelte similarity index 100% rename from test/vars/samples/duplicate-non-hoistable/input.svelte rename to vitest/compile-time/vars/samples/duplicate-non-hoistable/input.svelte diff --git a/test/vars/samples/duplicate-vars/_config.js b/vitest/compile-time/vars/samples/duplicate-vars/_config.mjs similarity index 100% rename from test/vars/samples/duplicate-vars/_config.js rename to vitest/compile-time/vars/samples/duplicate-vars/_config.mjs diff --git a/test/vars/samples/duplicate-vars/input.svelte b/vitest/compile-time/vars/samples/duplicate-vars/input.svelte similarity index 100% rename from test/vars/samples/duplicate-vars/input.svelte rename to vitest/compile-time/vars/samples/duplicate-vars/input.svelte diff --git a/test/vars/samples/implicit-reactive/_config.js b/vitest/compile-time/vars/samples/implicit-reactive/_config.mjs similarity index 100% rename from test/vars/samples/implicit-reactive/_config.js rename to vitest/compile-time/vars/samples/implicit-reactive/_config.mjs diff --git a/test/vars/samples/implicit-reactive/input.svelte b/vitest/compile-time/vars/samples/implicit-reactive/input.svelte similarity index 100% rename from test/vars/samples/implicit-reactive/input.svelte rename to vitest/compile-time/vars/samples/implicit-reactive/input.svelte diff --git a/test/vars/samples/imports/_config.js b/vitest/compile-time/vars/samples/imports/_config.mjs similarity index 100% rename from test/vars/samples/imports/_config.js rename to vitest/compile-time/vars/samples/imports/_config.mjs diff --git a/test/vars/samples/imports/input.svelte b/vitest/compile-time/vars/samples/imports/input.svelte similarity index 100% rename from test/vars/samples/imports/input.svelte rename to vitest/compile-time/vars/samples/imports/input.svelte diff --git a/test/vars/samples/modules-vars/_config.js b/vitest/compile-time/vars/samples/modules-vars/_config.mjs similarity index 100% rename from test/vars/samples/modules-vars/_config.js rename to vitest/compile-time/vars/samples/modules-vars/_config.mjs diff --git a/test/vars/samples/modules-vars/input.svelte b/vitest/compile-time/vars/samples/modules-vars/input.svelte similarity index 100% rename from test/vars/samples/modules-vars/input.svelte rename to vitest/compile-time/vars/samples/modules-vars/input.svelte diff --git a/test/vars/samples/mutated-vs-reassigned-bindings/_config.js b/vitest/compile-time/vars/samples/mutated-vs-reassigned-bindings/_config.mjs similarity index 100% rename from test/vars/samples/mutated-vs-reassigned-bindings/_config.js rename to vitest/compile-time/vars/samples/mutated-vs-reassigned-bindings/_config.mjs diff --git a/test/vars/samples/mutated-vs-reassigned-bindings/input.svelte b/vitest/compile-time/vars/samples/mutated-vs-reassigned-bindings/input.svelte similarity index 100% rename from test/vars/samples/mutated-vs-reassigned-bindings/input.svelte rename to vitest/compile-time/vars/samples/mutated-vs-reassigned-bindings/input.svelte diff --git a/test/vars/samples/mutated-vs-reassigned/_config.js b/vitest/compile-time/vars/samples/mutated-vs-reassigned/_config.mjs similarity index 100% rename from test/vars/samples/mutated-vs-reassigned/_config.js rename to vitest/compile-time/vars/samples/mutated-vs-reassigned/_config.mjs diff --git a/test/vars/samples/mutated-vs-reassigned/input.svelte b/vitest/compile-time/vars/samples/mutated-vs-reassigned/input.svelte similarity index 100% rename from test/vars/samples/mutated-vs-reassigned/input.svelte rename to vitest/compile-time/vars/samples/mutated-vs-reassigned/input.svelte diff --git a/test/vars/samples/props/_config.js b/vitest/compile-time/vars/samples/props/_config.mjs similarity index 100% rename from test/vars/samples/props/_config.js rename to vitest/compile-time/vars/samples/props/_config.mjs diff --git a/test/vars/samples/props/input.svelte b/vitest/compile-time/vars/samples/props/input.svelte similarity index 100% rename from test/vars/samples/props/input.svelte rename to vitest/compile-time/vars/samples/props/input.svelte diff --git a/test/vars/samples/referenced-from-script/_config.js b/vitest/compile-time/vars/samples/referenced-from-script/_config.mjs similarity index 100% rename from test/vars/samples/referenced-from-script/_config.js rename to vitest/compile-time/vars/samples/referenced-from-script/_config.mjs diff --git a/test/vars/samples/referenced-from-script/input.svelte b/vitest/compile-time/vars/samples/referenced-from-script/input.svelte similarity index 100% rename from test/vars/samples/referenced-from-script/input.svelte rename to vitest/compile-time/vars/samples/referenced-from-script/input.svelte diff --git a/test/vars/samples/store-referenced/_config.js b/vitest/compile-time/vars/samples/store-referenced/_config.mjs similarity index 100% rename from test/vars/samples/store-referenced/_config.js rename to vitest/compile-time/vars/samples/store-referenced/_config.mjs diff --git a/test/vars/samples/store-referenced/input.svelte b/vitest/compile-time/vars/samples/store-referenced/input.svelte similarity index 100% rename from test/vars/samples/store-referenced/input.svelte rename to vitest/compile-time/vars/samples/store-referenced/input.svelte diff --git a/test/vars/samples/store-unreferenced/_config.js b/vitest/compile-time/vars/samples/store-unreferenced/_config.mjs similarity index 100% rename from test/vars/samples/store-unreferenced/_config.js rename to vitest/compile-time/vars/samples/store-unreferenced/_config.mjs diff --git a/test/vars/samples/store-unreferenced/input.svelte b/vitest/compile-time/vars/samples/store-unreferenced/input.svelte similarity index 100% rename from test/vars/samples/store-unreferenced/input.svelte rename to vitest/compile-time/vars/samples/store-unreferenced/input.svelte diff --git a/test/vars/samples/template-references/_config.js b/vitest/compile-time/vars/samples/template-references/_config.mjs similarity index 100% rename from test/vars/samples/template-references/_config.js rename to vitest/compile-time/vars/samples/template-references/_config.mjs diff --git a/test/vars/samples/template-references/input.svelte b/vitest/compile-time/vars/samples/template-references/input.svelte similarity index 100% rename from test/vars/samples/template-references/input.svelte rename to vitest/compile-time/vars/samples/template-references/input.svelte diff --git a/test/vars/samples/transitions/_config.js b/vitest/compile-time/vars/samples/transitions/_config.mjs similarity index 100% rename from test/vars/samples/transitions/_config.js rename to vitest/compile-time/vars/samples/transitions/_config.mjs diff --git a/test/vars/samples/transitions/input.svelte b/vitest/compile-time/vars/samples/transitions/input.svelte similarity index 100% rename from test/vars/samples/transitions/input.svelte rename to vitest/compile-time/vars/samples/transitions/input.svelte diff --git a/test/vars/samples/undeclared/_config.js b/vitest/compile-time/vars/samples/undeclared/_config.mjs similarity index 100% rename from test/vars/samples/undeclared/_config.js rename to vitest/compile-time/vars/samples/undeclared/_config.mjs diff --git a/test/vars/samples/undeclared/input.svelte b/vitest/compile-time/vars/samples/undeclared/input.svelte similarity index 100% rename from test/vars/samples/undeclared/input.svelte rename to vitest/compile-time/vars/samples/undeclared/input.svelte diff --git a/test/vars/samples/vars-report-false/_config.js b/vitest/compile-time/vars/samples/vars-report-false/_config.mjs similarity index 100% rename from test/vars/samples/vars-report-false/_config.js rename to vitest/compile-time/vars/samples/vars-report-false/_config.mjs diff --git a/test/vars/samples/vars-report-false/input.svelte b/vitest/compile-time/vars/samples/vars-report-false/input.svelte similarity index 100% rename from test/vars/samples/vars-report-false/input.svelte rename to vitest/compile-time/vars/samples/vars-report-false/input.svelte diff --git a/test/vars/samples/vars-report-full-noscript/_config.js b/vitest/compile-time/vars/samples/vars-report-full-noscript/_config.mjs similarity index 100% rename from test/vars/samples/vars-report-full-noscript/_config.js rename to vitest/compile-time/vars/samples/vars-report-full-noscript/_config.mjs diff --git a/test/vars/samples/vars-report-full-noscript/input.svelte b/vitest/compile-time/vars/samples/vars-report-full-noscript/input.svelte similarity index 100% rename from test/vars/samples/vars-report-full-noscript/input.svelte rename to vitest/compile-time/vars/samples/vars-report-full-noscript/input.svelte diff --git a/test/vars/samples/vars-report-full-script/_config.js b/vitest/compile-time/vars/samples/vars-report-full-script/_config.mjs similarity index 100% rename from test/vars/samples/vars-report-full-script/_config.js rename to vitest/compile-time/vars/samples/vars-report-full-script/_config.mjs diff --git a/test/vars/samples/vars-report-full-script/input.svelte b/vitest/compile-time/vars/samples/vars-report-full-script/input.svelte similarity index 100% rename from test/vars/samples/vars-report-full-script/input.svelte rename to vitest/compile-time/vars/samples/vars-report-full-script/input.svelte diff --git a/test/vars/samples/vars-report-full/_config.js b/vitest/compile-time/vars/samples/vars-report-full/_config.mjs similarity index 100% rename from test/vars/samples/vars-report-full/_config.js rename to vitest/compile-time/vars/samples/vars-report-full/_config.mjs diff --git a/test/vars/samples/vars-report-full/input.svelte b/vitest/compile-time/vars/samples/vars-report-full/input.svelte similarity index 100% rename from test/vars/samples/vars-report-full/input.svelte rename to vitest/compile-time/vars/samples/vars-report-full/input.svelte diff --git a/vitest/compile-time/vars/vars.spec.js b/vitest/compile-time/vars/vars.spec.js index e8b478f931..ea60a820ef 100644 --- a/vitest/compile-time/vars/vars.spec.js +++ b/vitest/compile-time/vars/vars.spec.js @@ -1,7 +1,7 @@ import * as fs from 'fs'; -import {describe, test, assert, expect} from "vitest"; -import { tryToLoadJson } from '../../helpers.js'; -import * as svelte from "../../../compiler.mjs" +import { assert, describe, test } from 'vitest'; +import { compile } from '../../../compiler.mjs'; +import { tryToLoadJson } from '../../helpers.js'; describe('vars', () => { fs.readdirSync(`${__dirname}/samples`).forEach((dir) => { @@ -11,44 +11,37 @@ describe('vars', () => { const solo = /\.solo/.test(dir); const skip = /\.skip/.test(dir); - if (solo && process.env.CI) { - throw new Error('Forgot to remove `solo: true` from test'); - } + const desc = solo ? describe.only : skip ? describe.skip : describe; - const test_fn = solo ? test.only : skip ? test.skip : test; - - for (const generate of ['dom', 'ssr', false]) { - test_fn(`${dir}, generate: ${generate}`, async () => { + desc(dir, () => { + test.each(['dom', 'ssr', false])(`generate: %s`, async (generate) => { const filename = `${__dirname}/samples/${dir}/input.svelte`; const input = fs.readFileSync(filename, 'utf-8').replace(/\s+$/, ''); + const expectedError = tryToLoadJson(`${__dirname}/samples/${dir}/error.json`); - let result; - let error; - + /** + * @type {{ options: any, test: (assert: typeof assert, vars: any[]) => void }}} + */ const { options, test } = (await import(`./samples/${dir}/_config.mjs`)).default; try { - result = svelte.compile(input, { ...options, generate }); - test(assert, result.vars) - } catch (e) { - error = e; - } - - if (error || expectedError) { - if (error && !expectedError) { + const { vars } = compile(input, { ...options, generate }); + test(assert, vars); + } catch (error) { + if (expectedError) { + assert.equal(error.message, expectedError.message); + assert.deepEqual(error.start, expectedError.start); + assert.deepEqual(error.end, expectedError.end); + assert.equal(error.pos, expectedError.pos); + } else { throw error; } + } - 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 (expectedError) { + assert.fail(`Expected an error: ${JSON.stringify(expectedError)}`); } }); - } + }); }); });