diff --git a/test/create/index.js b/test/create/index.js
index 8e5ac8abf4..9d5f5d1c02 100644
--- a/test/create/index.js
+++ b/test/create/index.js
@@ -1,40 +1,40 @@
-import deindent from '../../src/utils/deindent.js';
-import assert from 'assert';
-import { svelte } from '../helpers.js';
+import deindent from "../../src/utils/deindent.js";
+import assert from "assert";
+import { svelte } from "../helpers.js";
-describe( 'create', () => {
- it( 'should return a component constructor', () => {
+describe("create", () => {
+ it("should return a component constructor", () => {
const source = deindent`
{{prop}}
`;
- const component = svelte.create( source );
- assert( component instanceof Function );
+ const component = svelte.create(source);
+ assert(component instanceof Function);
});
- it( 'should throw error when source is invalid ', done => {
+ it("should throw error when source is invalid ", done => {
const source = deindent`
{{prop}
`;
- const component = svelte.create( source, {
+ const component = svelte.create(source, {
onerror: () => {
done();
}
});
- assert.equal( component, undefined );
+ assert.equal(component, undefined);
});
- it( 'should return undefined when source is invalid ', () => {
+ it("should return undefined when source is invalid ", () => {
const source = deindent`
{{prop}
`;
- const component = svelte.create( source, {
+ const component = svelte.create(source, {
onerror: () => {}
});
- assert.equal( component, undefined );
+ assert.equal(component, undefined);
});
});
diff --git a/test/css/index.js b/test/css/index.js
index e333a9967f..51cf1b4aba 100644
--- a/test/css/index.js
+++ b/test/css/index.js
@@ -1,36 +1,41 @@
-import assert from 'assert';
-import * as fs from 'fs';
-import { svelte } from '../helpers.js';
+import assert from "assert";
+import * as fs from "fs";
+import { svelte } from "../helpers.js";
-function tryRequire ( file ) {
+function tryRequire(file) {
try {
- return require( file ).default;
- } catch ( err ) {
- if ( err.code !== 'MODULE_NOT_FOUND' ) throw err;
+ return require(file).default;
+ } catch (err) {
+ if (err.code !== "MODULE_NOT_FOUND") throw err;
return null;
}
}
-describe( 'css', () => {
- fs.readdirSync( 'test/css/samples' ).forEach( dir => {
- if ( dir[0] === '.' ) return;
+describe("css", () => {
+ fs.readdirSync("test/css/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 solo = /\.solo/.test(dir);
- if ( solo && process.env.CI ) {
- throw new Error( 'Forgot to remove `solo: true` from test' );
+ if (solo && process.env.CI) {
+ throw new Error("Forgot to remove `solo: true` from test");
}
- ( solo ? it.only : it )( dir, () => {
- const config = tryRequire( `./samples/${dir}/_config.js` ) || {};
- const input = fs.readFileSync( `test/css/samples/${dir}/input.html`, 'utf-8' ).replace( /\s+$/, '' );
+ (solo ? it.only : it)(dir, () => {
+ const config = tryRequire(`./samples/${dir}/_config.js`) || {};
+ const input = fs
+ .readFileSync(`test/css/samples/${dir}/input.html`, "utf-8")
+ .replace(/\s+$/, "");
- const actual = svelte.compile( input, config ).css;
- fs.writeFileSync( `test/css/samples/${dir}/_actual.css`, actual );
- const expected = fs.readFileSync( `test/css/samples/${dir}/expected.css`, 'utf-8' );
+ const actual = svelte.compile(input, config).css;
+ fs.writeFileSync(`test/css/samples/${dir}/_actual.css`, actual);
+ const expected = fs.readFileSync(
+ `test/css/samples/${dir}/expected.css`,
+ "utf-8"
+ );
- assert.equal( actual.trim(), expected.trim() );
+ assert.equal(actual.trim(), expected.trim());
});
});
});
diff --git a/test/formats/index.js b/test/formats/index.js
index b7fb5e444a..cef98af74c 100644
--- a/test/formats/index.js
+++ b/test/formats/index.js
@@ -1,88 +1,94 @@
-import deindent from '../../src/utils/deindent.js';
-import assert from 'assert';
-import { svelte, env, setupHtmlEqual } from '../helpers.js';
+import deindent from "../../src/utils/deindent.js";
+import assert from "assert";
+import { svelte, env, setupHtmlEqual } from "../helpers.js";
-function testAmd ( code, expectedId, dependencies, html ) {
- const fn = new Function( 'define', code );
+function testAmd(code, expectedId, dependencies, html) {
+ const fn = new Function("define", code);
- return env().then( window => {
- function define ( id, deps, factory ) {
- assert.equal( id, expectedId );
- assert.deepEqual( deps, Object.keys( dependencies ) );
+ return env().then(window => {
+ function define(id, deps, factory) {
+ assert.equal(id, expectedId);
+ assert.deepEqual(deps, Object.keys(dependencies));
- const SvelteComponent = factory( ...Object.keys( dependencies ).map( key => dependencies[ key ] ) );
+ const SvelteComponent = factory(
+ ...Object.keys(dependencies).map(key => dependencies[key])
+ );
- const main = window.document.body.querySelector( 'main' );
+ const main = window.document.body.querySelector("main");
const component = new SvelteComponent({ target: main });
- assert.htmlEqual( main.innerHTML, html );
+ assert.htmlEqual(main.innerHTML, html);
component.destroy();
}
define.amd = true;
- fn( define );
+ fn(define);
});
}
-function testCjs ( code, dependencyById, html ) {
- const fn = new Function( 'module', 'exports', 'require', code );
+function testCjs(code, dependencyById, html) {
+ const fn = new Function("module", "exports", "require", code);
- return env().then( window => {
+ return env().then(window => {
const module = { exports: {} };
const require = id => {
- return dependencyById[ id ];
+ return dependencyById[id];
};
- fn( module, module.exports, require );
+ fn(module, module.exports, require);
const SvelteComponent = module.exports;
- const main = window.document.body.querySelector( 'main' );
+ const main = window.document.body.querySelector("main");
const component = new SvelteComponent({ target: main });
- assert.htmlEqual( main.innerHTML, html );
+ assert.htmlEqual(main.innerHTML, html);
component.destroy();
});
}
-function testIife ( code, name, globals, html ) {
- const fn = new Function( Object.keys( globals ), `${code}\n\nreturn ${name};` );
+function testIife(code, name, globals, html) {
+ const fn = new Function(Object.keys(globals), `${code}\n\nreturn ${name};`);
- return env().then( window => {
- const SvelteComponent = fn( ...Object.keys( globals ).map( key => globals[ key ] ) );
+ return env().then(window => {
+ const SvelteComponent = fn(
+ ...Object.keys(globals).map(key => globals[key])
+ );
- const main = window.document.body.querySelector( 'main' );
+ const main = window.document.body.querySelector("main");
const component = new SvelteComponent({ target: main });
- assert.htmlEqual( main.innerHTML, html );
+ assert.htmlEqual(main.innerHTML, html);
component.destroy();
});
}
-function testEval ( code, name, globals, html ) {
- const fn = new Function( Object.keys( globals ), `return ${code};` );
+function testEval(code, name, globals, html) {
+ const fn = new Function(Object.keys(globals), `return ${code};`);
- return env().then( window => {
- const SvelteComponent = fn( ...Object.keys( globals ).map( key => globals[ key ] ) );
+ return env().then(window => {
+ const SvelteComponent = fn(
+ ...Object.keys(globals).map(key => globals[key])
+ );
- const main = window.document.body.querySelector( 'main' );
+ const main = window.document.body.querySelector("main");
const component = new SvelteComponent({ target: main });
- assert.htmlEqual( main.innerHTML, html );
+ assert.htmlEqual(main.innerHTML, html);
component.destroy();
});
}
-describe( 'formats', () => {
- before( setupHtmlEqual );
+describe("formats", () => {
+ before(setupHtmlEqual);
- describe( 'amd', () => {
- it( 'generates an AMD module', () => {
+ describe("amd", () => {
+ it("generates an AMD module", () => {
const source = deindent`
{{answer}}
@@ -97,17 +103,17 @@ describe( 'formats', () => {
`;
- const { code } = svelte.compile( source, {
- format: 'amd',
- amd: { id: 'foo' }
+ const { code } = svelte.compile(source, {
+ format: "amd",
+ amd: { id: "foo" }
});
- return testAmd( code, 'foo', { answer: 42 }, `42
` );
+ return testAmd(code, "foo", { answer: 42 }, `42
`);
});
});
- describe( 'cjs', () => {
- it( 'generates a CommonJS module', () => {
+ describe("cjs", () => {
+ it("generates a CommonJS module", () => {
const source = deindent`
{{answer}}
@@ -122,16 +128,16 @@ describe( 'formats', () => {
`;
- const { code } = svelte.compile( source, {
- format: 'cjs'
+ const { code } = svelte.compile(source, {
+ format: "cjs"
});
- return testCjs( code, { answer: 42 }, `42
` );
+ return testCjs(code, { answer: 42 }, `42
`);
});
});
- describe( 'iife', () => {
- it( 'generates a self-executing script', () => {
+ describe("iife", () => {
+ it("generates a self-executing script", () => {
const source = deindent`
{{answer}}
@@ -146,20 +152,20 @@ describe( 'formats', () => {
`;
- const { code } = svelte.compile( source, {
- format: 'iife',
- name: 'Foo',
+ const { code } = svelte.compile(source, {
+ format: "iife",
+ name: "Foo",
globals: {
- answer: 'answer'
+ answer: "answer"
}
});
- return testIife( code, 'Foo', { answer: 42 }, `42
` );
+ return testIife(code, "Foo", { answer: 42 }, `42
`);
});
});
- describe( 'umd', () => {
- it( 'generates a UMD build', () => {
+ describe("umd", () => {
+ it("generates a UMD build", () => {
const source = deindent`
{{answer}}
@@ -174,25 +180,25 @@ describe( 'formats', () => {
`;
- const { code } = svelte.compile( source, {
- format: 'umd',
- name: 'Foo',
+ const { code } = svelte.compile(source, {
+ format: "umd",
+ name: "Foo",
globals: {
- answer: 'answer'
+ answer: "answer"
},
amd: {
- id: 'foo'
+ id: "foo"
}
});
- return testAmd( code, 'foo', { answer: 42 }, `42
` )
- .then( () => testCjs( code, { answer: 42 }, `42
` ) )
- .then( () => testIife( code, 'Foo', { answer: 42 }, `42
` ) );
+ return testAmd(code, "foo", { answer: 42 }, `42
`)
+ .then(() => testCjs(code, { answer: 42 }, `42
`))
+ .then(() => testIife(code, "Foo", { answer: 42 }, `42
`));
});
});
- describe( 'eval', () => {
- it( 'generates a self-executing script that returns the component on eval', () => {
+ describe("eval", () => {
+ it("generates a self-executing script that returns the component on eval", () => {
const source = deindent`
{{answer}}
@@ -207,14 +213,14 @@ describe( 'formats', () => {
`;
- const { code } = svelte.compile( source, {
- format: 'eval',
+ const { code } = svelte.compile(source, {
+ format: "eval",
globals: {
- answer: 'answer'
+ answer: "answer"
}
});
- return testEval( code, 'Foo', { answer: 42 }, `42
` );
+ return testEval(code, "Foo", { answer: 42 }, `42
`);
});
});
});
diff --git a/test/helpers.js b/test/helpers.js
index 64b4814e80..0ca921240e 100644
--- a/test/helpers.js
+++ b/test/helpers.js
@@ -1,137 +1,143 @@
-import jsdom from 'jsdom';
-import assert from 'assert';
-import * as fs from 'fs';
+import jsdom from "jsdom";
+import assert from "assert";
+import * as fs from "fs";
-import * as consoleGroup from 'console-group';
+import * as consoleGroup from "console-group";
consoleGroup.install();
-import * as sourceMapSupport from 'source-map-support';
+import * as sourceMapSupport from "source-map-support";
sourceMapSupport.install();
// for coverage purposes, we need to test source files,
// but for sanity purposes, we need to test dist files
-export function loadSvelte ( test ) {
- if ( test ) global.__svelte_test = true;
+export function loadSvelte(test) {
+ if (test) global.__svelte_test = true;
- const resolved = process.env.COVERAGE ?
- require.resolve( '../src/index.js' ) :
- require.resolve( '../compiler/svelte.js' );
+ const resolved = process.env.COVERAGE
+ ? require.resolve("../src/index.js")
+ : require.resolve("../compiler/svelte.js");
- delete require.cache[ resolved ];
- return require( resolved );
+ delete require.cache[resolved];
+ return require(resolved);
}
export const svelte = loadSvelte();
-export function exists ( path ) {
+export function exists(path) {
try {
- fs.statSync( path );
+ fs.statSync(path);
return true;
- } catch ( err ) {
+ } catch (err) {
return false;
}
}
-export function tryToLoadJson ( file ) {
+export function tryToLoadJson(file) {
try {
- return JSON.parse( fs.readFileSync( file ) );
- } catch ( err ) {
- if ( err.code !== 'ENOENT' ) throw err;
+ return JSON.parse(fs.readFileSync(file));
+ } catch (err) {
+ if (err.code !== "ENOENT") throw err;
return null;
}
}
-export function tryToReadFile ( file ) {
+export function tryToReadFile(file) {
try {
- return fs.readFileSync( file, 'utf-8' );
- } catch ( err ) {
- if ( err.code !== 'ENOENT' ) throw err;
+ return fs.readFileSync(file, "utf-8");
+ } catch (err) {
+ if (err.code !== "ENOENT") throw err;
return null;
}
}
-export function env () {
- return new Promise( ( fulfil, reject ) => {
- jsdom.env( '', ( err, window ) => {
- if ( err ) {
- reject( err );
+export function env() {
+ return new Promise((fulfil, reject) => {
+ jsdom.env("", (err, window) => {
+ if (err) {
+ reject(err);
} else {
global.document = window.document;
- fulfil( window );
+ fulfil(window);
}
});
});
}
-function cleanChildren ( node ) {
+function cleanChildren(node) {
let previous = null;
- [ ...node.childNodes ].forEach( child => {
- if ( child.nodeType === 8 ) {
+ [...node.childNodes].forEach(child => {
+ if (child.nodeType === 8) {
// comment
- node.removeChild( child );
+ node.removeChild(child);
return;
}
- if ( child.nodeType === 3 ) {
- if ( node.namespaceURI === 'http://www.w3.org/2000/svg' && node.tagName !== 'text' && node.tagName !== 'tspan' ) {
- node.removeChild( child );
+ if (child.nodeType === 3) {
+ if (
+ node.namespaceURI === "http://www.w3.org/2000/svg" &&
+ node.tagName !== "text" &&
+ node.tagName !== "tspan"
+ ) {
+ node.removeChild(child);
}
- child.data = child.data.replace( /\s{2,}/, '\n' );
+ child.data = child.data.replace(/\s{2,}/, "\n");
// text
- if ( previous && previous.nodeType === 3 ) {
+ if (previous && previous.nodeType === 3) {
previous.data += child.data;
- previous.data = previous.data.replace( /\s{2,}/, '\n' );
+ previous.data = previous.data.replace(/\s{2,}/, "\n");
- node.removeChild( child );
+ node.removeChild(child);
child = previous;
}
- }
-
- else {
- cleanChildren( child );
+ } else {
+ cleanChildren(child);
}
previous = child;
});
// collapse whitespace
- if ( node.firstChild && node.firstChild.nodeType === 3 ) {
- node.firstChild.data = node.firstChild.data.replace( /^\s+/, '' );
- if ( !node.firstChild.data ) node.removeChild( node.firstChild );
+ if (node.firstChild && node.firstChild.nodeType === 3) {
+ node.firstChild.data = node.firstChild.data.replace(/^\s+/, "");
+ if (!node.firstChild.data) node.removeChild(node.firstChild);
}
- if ( node.lastChild && node.lastChild.nodeType === 3 ) {
- node.lastChild.data = node.lastChild.data.replace( /\s+$/, '' );
- if ( !node.lastChild.data ) node.removeChild( node.lastChild );
+ if (node.lastChild && node.lastChild.nodeType === 3) {
+ node.lastChild.data = node.lastChild.data.replace(/\s+$/, "");
+ if (!node.lastChild.data) node.removeChild(node.lastChild);
}
}
-export function setupHtmlEqual () {
- return env().then( window => {
- assert.htmlEqual = ( actual, expected, message ) => {
- window.document.body.innerHTML = actual.replace( />[\s\r\n]+<' ).trim();
- cleanChildren( window.document.body, '' );
+export function setupHtmlEqual() {
+ return env().then(window => {
+ assert.htmlEqual = (actual, expected, message) => {
+ window.document.body.innerHTML = actual
+ .replace(/>[\s\r\n]+<")
+ .trim();
+ cleanChildren(window.document.body, "");
actual = window.document.body.innerHTML;
- window.document.body.innerHTML = expected.replace( />[\s\r\n]+<' ).trim();
- cleanChildren( window.document.body, '' );
+ window.document.body.innerHTML = expected
+ .replace(/>[\s\r\n]+<")
+ .trim();
+ cleanChildren(window.document.body, "");
expected = window.document.body.innerHTML;
- assert.deepEqual( actual, expected, message );
+ assert.deepEqual(actual, expected, message);
};
});
}
-export function loadConfig ( file ) {
+export function loadConfig(file) {
try {
- const resolved = require.resolve( file );
- delete require.cache[ resolved ];
- return require( resolved ).default;
- } catch ( err ) {
- if ( err.code === 'E_NOT_FOUND' ) {
+ const resolved = require.resolve(file);
+ delete require.cache[resolved];
+ return require(resolved).default;
+ } catch (err) {
+ if (err.code === "E_NOT_FOUND") {
return {};
}
@@ -139,11 +145,16 @@ export function loadConfig ( file ) {
}
}
-export function addLineNumbers ( code ) {
- return code.split( '\n' ).map( ( line, i ) => {
- i = String( i + 1 );
- while ( i.length < 3 ) i = ` ${i}`;
-
- return `${i}: ${line.replace( /^\t+/, match => match.split( '\t' ).join( ' ' ) )}`;
- }).join( '\n' );
+export function addLineNumbers(code) {
+ return code
+ .split("\n")
+ .map((line, i) => {
+ i = String(i + 1);
+ while (i.length < 3) i = ` ${i}`;
+
+ return `${i}: ${line.replace(/^\t+/, match =>
+ match.split("\t").join(" ")
+ )}`;
+ })
+ .join("\n");
}
diff --git a/test/js/index.js b/test/js/index.js
index 92bb969d59..512cba41fa 100644
--- a/test/js/index.js
+++ b/test/js/index.js
@@ -1,60 +1,68 @@
-import assert from 'assert';
-import * as fs from 'fs';
-import * as path from 'path';
-import { rollup } from 'rollup';
-import { svelte } from '../helpers.js';
+import assert from "assert";
+import * as fs from "fs";
+import * as path from "path";
+import { rollup } from "rollup";
+import { svelte } from "../helpers.js";
-describe( 'js', () => {
- fs.readdirSync( 'test/js/samples' ).forEach( dir => {
- if ( dir[0] === '.' ) return;
+describe("js", () => {
+ fs.readdirSync("test/js/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 solo = /\.solo/.test(dir);
- if ( solo && process.env.CI ) {
- throw new Error( 'Forgot to remove `solo: true` from test' );
+ if (solo && process.env.CI) {
+ throw new Error("Forgot to remove `solo: true` from test");
}
- ( solo ? it.only : it )( dir, () => {
- dir = path.resolve( 'test/js/samples', dir );
- const input = fs.readFileSync( `${dir}/input.html`, 'utf-8' ).replace( /\s+$/, '' );
+ (solo ? it.only : it)(dir, () => {
+ dir = path.resolve("test/js/samples", dir);
+ const input = fs
+ .readFileSync(`${dir}/input.html`, "utf-8")
+ .replace(/\s+$/, "");
let actual;
try {
- actual = svelte.compile( input, {
+ actual = svelte.compile(input, {
shared: true
}).code;
- } catch ( err ) {
- console.log( err.frame );
+ } catch (err) {
+ console.log(err.frame);
throw err;
}
- fs.writeFileSync( `${dir}/_actual.js`, actual );
- const expected = fs.readFileSync( `${dir}/expected.js`, 'utf-8' );
- const expectedBundle = fs.readFileSync( `${dir}/expected-bundle.js`, 'utf-8' );
+ fs.writeFileSync(`${dir}/_actual.js`, actual);
+ const expected = fs.readFileSync(`${dir}/expected.js`, "utf-8");
+ const expectedBundle = fs.readFileSync(
+ `${dir}/expected-bundle.js`,
+ "utf-8"
+ );
return rollup({
entry: `${dir}/_actual.js`,
- plugins: [{
- resolveId ( importee, importer ) {
- if ( !importer ) return importee;
- if ( importee === 'svelte/shared.js' ) return path.resolve('shared.js');
- return null;
+ plugins: [
+ {
+ resolveId(importee, importer) {
+ if (!importer) return importee;
+ if (importee === "svelte/shared.js")
+ return path.resolve("shared.js");
+ return null;
+ }
}
- }]
+ ]
}).then(bundle => {
- const actualBundle = bundle.generate({ format: 'es' }).code;
- fs.writeFileSync( `${dir}/_actual-bundle.js`, actualBundle );
+ const actualBundle = bundle.generate({ format: "es" }).code;
+ fs.writeFileSync(`${dir}/_actual-bundle.js`, actualBundle);
assert.equal(
- actual.trim().replace( /^\s+$/gm, '' ),
- expected.trim().replace( /^\s+$/gm, '' )
+ actual.trim().replace(/^\s+$/gm, ""),
+ expected.trim().replace(/^\s+$/gm, "")
);
assert.equal(
- actualBundle.trim().replace( /^\s+$/gm, '' ),
- expectedBundle.trim().replace( /^\s+$/gm, '' )
+ actualBundle.trim().replace(/^\s+$/gm, ""),
+ expectedBundle.trim().replace(/^\s+$/gm, "")
);
});
});
diff --git a/test/js/update.js b/test/js/update.js
index 4b51bf039d..a22e4a08b5 100644
--- a/test/js/update.js
+++ b/test/js/update.js
@@ -1,10 +1,13 @@
// this file will replace all the expected.js and expected-bundle.js files with
// their _actual equivalents. Only use it when you're sure that you haven't
// broken anything!
-const fs = require('fs');
-const glob = require('glob');
+const fs = require("fs");
+const glob = require("glob");
-glob.sync('samples/*/_actual*', {cwd: __dirname}).forEach(file => {
- const actual = fs.readFileSync(`${__dirname}/${file}`, 'utf-8');
- fs.writeFileSync(`${__dirname}/${file.replace('_actual', 'expected')}`, actual);
-});
\ No newline at end of file
+glob.sync("samples/*/_actual*", { cwd: __dirname }).forEach(file => {
+ const actual = fs.readFileSync(`${__dirname}/${file}`, "utf-8");
+ fs.writeFileSync(
+ `${__dirname}/${file.replace("_actual", "expected")}`,
+ actual
+ );
+});
diff --git a/test/parser/index.js b/test/parser/index.js
index fb18cf1623..35f687376a 100644
--- a/test/parser/index.js
+++ b/test/parser/index.js
@@ -1,61 +1,68 @@
-import assert from 'assert';
-import * as fs from 'fs';
-import { svelte } from '../helpers.js';
+import assert from "assert";
+import * as fs from "fs";
+import { svelte } from "../helpers.js";
-describe( 'parse', () => {
- fs.readdirSync( 'test/parser/samples' ).forEach( dir => {
- if ( dir[0] === '.' ) return;
+describe("parse", () => {
+ fs.readdirSync("test/parser/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 solo = /\.solo$/.test(dir);
- if ( solo && process.env.CI ) {
- throw new Error( `Forgot to remove '.solo' from test parser/samples/${dir}` );
+ if (solo && process.env.CI) {
+ throw new Error(
+ `Forgot to remove '.solo' from test parser/samples/${dir}`
+ );
}
- ( solo ? it.only : it )( dir, () => {
- const input = fs.readFileSync( `test/parser/samples/${dir}/input.html`, 'utf-8' ).replace( /\s+$/, '' );
+ (solo ? it.only : it)(dir, () => {
+ const input = fs
+ .readFileSync(`test/parser/samples/${dir}/input.html`, "utf-8")
+ .replace(/\s+$/, "");
try {
- const actual = svelte.parse( input );
- fs.writeFileSync( `test/parser/samples/${dir}/_actual.json`, JSON.stringify( actual, null, '\t' ) );
- const expected = require( `./samples/${dir}/output.json` );
+ const actual = svelte.parse(input);
+ fs.writeFileSync(
+ `test/parser/samples/${dir}/_actual.json`,
+ JSON.stringify(actual, null, "\t")
+ );
+ const expected = require(`./samples/${dir}/output.json`);
- assert.deepEqual( actual.html, expected.html );
- assert.deepEqual( actual.css, expected.css );
- assert.deepEqual( actual.js, expected.js );
- } catch ( err ) {
- if ( err.name !== 'ParseError' ) throw err;
+ assert.deepEqual(actual.html, expected.html);
+ assert.deepEqual(actual.css, expected.css);
+ assert.deepEqual(actual.js, expected.js);
+ } catch (err) {
+ if (err.name !== "ParseError") throw err;
try {
- const expected = require( `./samples/${dir}/error.json` );
+ const expected = require(`./samples/${dir}/error.json`);
- assert.equal( err.message, expected.message );
- assert.deepEqual( err.loc, expected.loc );
- assert.equal( err.pos, expected.pos );
- } catch ( err2 ) {
- throw err2.code === 'MODULE_NOT_FOUND' ? err : err2;
+ assert.equal(err.message, expected.message);
+ assert.deepEqual(err.loc, expected.loc);
+ assert.equal(err.pos, expected.pos);
+ } catch (err2) {
+ throw err2.code === "MODULE_NOT_FOUND" ? err : err2;
}
}
});
});
- it( 'handles errors with options.onerror', () => {
+ it("handles errors with options.onerror", () => {
let errored = false;
- svelte.compile( `unclosed`, {
- onerror ( err ) {
+ svelte.compile(`unclosed`, {
+ onerror(err) {
errored = true;
- assert.equal( err.message, ` was left open` );
+ assert.equal(err.message, ` was left open`);
}
});
- assert.ok( errored );
+ assert.ok(errored);
});
- it( 'throws without options.onerror', () => {
- assert.throws( () => {
- svelte.compile( `unclosed` );
- }, / was left open/ );
+ it("throws without options.onerror", () => {
+ assert.throws(() => {
+ svelte.compile(`unclosed`);
+ }, / was left open/);
});
});
diff --git a/test/runtime/index.js b/test/runtime/index.js
index 604042d0a4..71588d6e71 100644
--- a/test/runtime/index.js
+++ b/test/runtime/index.js
@@ -1,56 +1,65 @@
-import spaces from '../../src/utils/spaces.js';
-import assert from 'assert';
-import * as path from 'path';
-import * as fs from 'fs';
-import * as acorn from 'acorn';
-import * as babel from 'babel-core';
-import { transitionManager } from '../../shared.js';
-
-import { addLineNumbers, loadConfig, loadSvelte, env, setupHtmlEqual } from '../helpers.js';
+import spaces from "../../src/utils/spaces.js";
+import assert from "assert";
+import * as path from "path";
+import * as fs from "fs";
+import * as acorn from "acorn";
+import * as babel from "babel-core";
+import { transitionManager } from "../../shared.js";
+
+import {
+ addLineNumbers,
+ loadConfig,
+ loadSvelte,
+ env,
+ setupHtmlEqual
+} from "../helpers.js";
let svelte;
let showCompiledCode = false;
let compileOptions = null;
-function getName ( filename ) {
- const base = path.basename( filename ).replace( '.html', '' );
- return base[0].toUpperCase() + base.slice( 1 );
+function getName(filename) {
+ const base = path.basename(filename).replace(".html", "");
+ return base[0].toUpperCase() + base.slice(1);
}
-const nodeVersionMatch = /^v(\d)/.exec( process.version );
+const nodeVersionMatch = /^v(\d)/.exec(process.version);
const legacy = +nodeVersionMatch[1] < 6;
-const babelrc = require( '../../package.json' ).babel;
+const babelrc = require("../../package.json").babel;
-require.extensions[ '.html' ] = function ( module, filename ) {
- const options = Object.assign({ filename, name: getName( filename ) }, compileOptions );
- let { code } = svelte.compile( fs.readFileSync( filename, 'utf-8' ), options );
+require.extensions[".html"] = function(module, filename) {
+ const options = Object.assign(
+ { filename, name: getName(filename) },
+ compileOptions
+ );
+ let { code } = svelte.compile(fs.readFileSync(filename, "utf-8"), options);
- if ( showCompiledCode ) console.log( addLineNumbers( code ) ); // eslint-disable-line no-console
+ if (showCompiledCode) console.log(addLineNumbers(code)); // eslint-disable-line no-console
- if ( legacy ) code = babel.transform( code, babelrc ).code;
+ if (legacy) code = babel.transform(code, babelrc).code;
- return module._compile( code, filename );
+ return module._compile(code, filename);
};
const Object_assign = Object.assign;
-describe( 'runtime', () => {
- before( () => {
- svelte = loadSvelte( true );
+describe("runtime", () => {
+ before(() => {
+ svelte = loadSvelte(true);
return setupHtmlEqual();
});
- function runTest ( dir, shared ) {
- if ( dir[0] === '.' ) return;
+ function runTest(dir, shared) {
+ if (dir[0] === ".") return;
- const config = loadConfig( `./runtime/samples/${dir}/_config.js` );
+ const config = loadConfig(`./runtime/samples/${dir}/_config.js`);
- if ( config.solo && process.env.CI ) {
- throw new Error( 'Forgot to remove `solo: true` from test' );
+ if (config.solo && process.env.CI) {
+ throw new Error("Forgot to remove `solo: true` from test");
}
- ( config.skip ? it.skip : config.solo ? it.only : it )( dir, () => {
+ (config.skip ? it.skip : config.solo ? it.only : it)(dir, () => {
let compiled;
showCompiledCode = config.show;
@@ -59,11 +68,14 @@ describe( 'runtime', () => {
compileOptions.dev = config.dev;
try {
- const source = fs.readFileSync( `test/runtime/samples/${dir}/main.html`, 'utf-8' );
- compiled = svelte.compile( source, compileOptions );
- } catch ( err ) {
- if ( config.compileError ) {
- config.compileError( err );
+ const source = fs.readFileSync(
+ `test/runtime/samples/${dir}/main.html`,
+ "utf-8"
+ );
+ compiled = svelte.compile(source, compileOptions);
+ } catch (err) {
+ if (config.compileError) {
+ config.compileError(err);
return;
} else {
throw err;
@@ -73,28 +85,33 @@ describe( 'runtime', () => {
const { code } = compiled;
// check that no ES2015+ syntax slipped in
- if ( !config.allowES2015 ) {
+ if (!config.allowES2015) {
try {
- const startIndex = code.indexOf( 'function create_main_fragment' ); // may change!
- if ( startIndex === -1 ) throw new Error( 'missing create_main_fragment' );
- const es5 = spaces( startIndex ) + code.slice( startIndex ).replace( /export default .+/, '' );
- acorn.parse( es5, { ecmaVersion: 5 });
- } catch ( err ) {
- if ( !config.show ) console.log( addLineNumbers( code ) ); // eslint-disable-line no-console
+ const startIndex = code.indexOf("function create_main_fragment"); // may change!
+ if (startIndex === -1)
+ throw new Error("missing create_main_fragment");
+ const es5 =
+ spaces(startIndex) +
+ code.slice(startIndex).replace(/export default .+/, "");
+ acorn.parse(es5, { ecmaVersion: 5 });
+ } catch (err) {
+ if (!config.show) console.log(addLineNumbers(code)); // eslint-disable-line no-console
throw err;
}
}
- Object.keys( require.cache ).filter( x => x.endsWith( '.html' ) ).forEach( file => {
- delete require.cache[ file ];
- });
+ Object.keys(require.cache)
+ .filter(x => x.endsWith(".html"))
+ .forEach(file => {
+ delete require.cache[file];
+ });
let SvelteComponent;
let unintendedError = null;
return env()
- .then( window => {
+ .then(window => {
// set of hacks to support transition tests
transitionManager.running = false;
transitionManager.transitions = [];
@@ -104,14 +121,14 @@ describe( 'runtime', () => {
callback: null,
tick: now => {
raf.time = now;
- if ( raf.callback ) raf.callback();
+ if (raf.callback) raf.callback();
}
};
window.performance = { now: () => raf.time };
global.requestAnimationFrame = cb => {
let called = false;
raf.callback = () => {
- if ( !called ) {
+ if (!called) {
called = true;
cb();
}
@@ -121,14 +138,16 @@ describe( 'runtime', () => {
global.window = window;
try {
- SvelteComponent = require( `./samples/${dir}/main.html` ).default;
- } catch ( err ) {
- if ( !config.show ) console.log( addLineNumbers( code ) ); // eslint-disable-line no-console
+ SvelteComponent = require(`./samples/${dir}/main.html`).default;
+ } catch (err) {
+ if (!config.show) console.log(addLineNumbers(code)); // eslint-disable-line no-console
throw err;
}
Object.assign = () => {
- throw new Error( 'cannot use Object.assign in generated code, as it is not supported everywhere' );
+ throw new Error(
+ "cannot use Object.assign in generated code, as it is not supported everywhere"
+ );
};
global.window = window;
@@ -136,12 +155,12 @@ describe( 'runtime', () => {
// Put the constructor on window for testing
window.SvelteComponent = SvelteComponent;
- const target = window.document.querySelector( 'main' );
+ const target = window.document.querySelector("main");
const warnings = [];
const warn = console.warn;
console.warn = warning => {
- warnings.push( warning );
+ warnings.push(warning);
};
const component = new SvelteComponent({
@@ -153,70 +172,70 @@ describe( 'runtime', () => {
console.warn = warn;
- if ( config.error ) {
+ if (config.error) {
unintendedError = true;
- throw new Error( 'Expected a runtime error' );
+ throw new Error("Expected a runtime error");
}
- if ( config.warnings ) {
- assert.deepEqual( warnings, config.warnings );
- } else if ( warnings.length ) {
+ if (config.warnings) {
+ assert.deepEqual(warnings, config.warnings);
+ } else if (warnings.length) {
unintendedError = true;
- throw new Error( 'Received unexpected warnings' );
+ throw new Error("Received unexpected warnings");
}
- if ( config.html ) {
- assert.htmlEqual( target.innerHTML, config.html );
+ if (config.html) {
+ assert.htmlEqual(target.innerHTML, config.html);
}
Object.assign = Object_assign;
- if ( config.test ) {
- config.test( assert, component, target, window, raf );
+ if (config.test) {
+ config.test(assert, component, target, window, raf);
} else {
component.destroy();
- assert.equal( target.innerHTML, '' );
+ assert.equal(target.innerHTML, "");
}
})
- .catch( err => {
+ .catch(err => {
Object.assign = Object_assign;
- if ( config.error && !unintendedError ) {
- config.error( assert, err );
- }
-
- else {
- if ( !config.show ) console.log( addLineNumbers( code ) ); // eslint-disable-line no-console
+ if (config.error && !unintendedError) {
+ config.error(assert, err);
+ } else {
+ if (!config.show) console.log(addLineNumbers(code)); // eslint-disable-line no-console
throw err;
}
});
});
}
- describe( 'inline helpers', () => {
- fs.readdirSync( 'test/runtime/samples' ).forEach( dir => {
- runTest( dir, null );
+ describe("inline helpers", () => {
+ fs.readdirSync("test/runtime/samples").forEach(dir => {
+ runTest(dir, null);
});
});
- const shared = path.resolve( 'shared.js' );
- describe( 'shared helpers', () => {
- fs.readdirSync( 'test/runtime/samples' ).forEach( dir => {
- runTest( dir, shared );
+ const shared = path.resolve("shared.js");
+ describe("shared helpers", () => {
+ fs.readdirSync("test/runtime/samples").forEach(dir => {
+ runTest(dir, shared);
});
});
- it( 'fails if options.target is missing in dev mode', () => {
- const { code } = svelte.compile( `
`, {
- format: 'iife',
- name: 'SvelteComponent',
+ it("fails if options.target is missing in dev mode", () => {
+ const { code } = svelte.compile(``, {
+ format: "iife",
+ name: "SvelteComponent",
dev: true
});
- const SvelteComponent = eval( `(function () { ${code}; return SvelteComponent; }())` );
+ const SvelteComponent = eval(
+ `(function () { ${code}; return SvelteComponent; }())`
+ );
- assert.throws( () => {
+ assert.throws(() => {
new SvelteComponent();
- }, /'target' is a required option/ );
+ }, /'target' is a required option/);
});
});
diff --git a/test/server-side-rendering/index.js b/test/server-side-rendering/index.js
index c5836041f4..02f4a50e9f 100644
--- a/test/server-side-rendering/index.js
+++ b/test/server-side-rendering/index.js
@@ -1,128 +1,140 @@
-import assert from 'assert';
-import * as fs from 'fs';
-import * as path from 'path';
-
-import { addLineNumbers, loadConfig, setupHtmlEqual, svelte, tryToLoadJson } from '../helpers.js';
-
-function tryToReadFile ( file ) {
+import assert from "assert";
+import * as fs from "fs";
+import * as path from "path";
+
+import {
+ addLineNumbers,
+ loadConfig,
+ setupHtmlEqual,
+ svelte,
+ tryToLoadJson
+} from "../helpers.js";
+
+function tryToReadFile(file) {
try {
- return fs.readFileSync( file, 'utf-8' );
- } catch ( err ) {
- if ( err.code !== 'ENOENT' ) throw err;
+ return fs.readFileSync(file, "utf-8");
+ } catch (err) {
+ if (err.code !== "ENOENT") throw err;
return null;
}
}
-function capitalize ( str ) {
- return str[0].toUpperCase() + str.slice( 1 );
+function capitalize(str) {
+ return str[0].toUpperCase() + str.slice(1);
}
-describe( 'ssr', () => {
- before( () => {
- require( process.env.COVERAGE ?
- '../../src/server-side-rendering/register.js' :
- '../../ssr/register' );
+describe("ssr", () => {
+ before(() => {
+ require(process.env.COVERAGE
+ ? "../../src/server-side-rendering/register.js"
+ : "../../ssr/register");
return setupHtmlEqual();
});
- fs.readdirSync( 'test/server-side-rendering/samples' ).forEach( dir => {
- if ( dir[0] === '.' ) return;
+ fs.readdirSync("test/server-side-rendering/samples").forEach(dir => {
+ if (dir[0] === ".") return;
// add .solo to a sample directory name to only run that test, or
// .show to always show the output. or both
- const solo = /\.solo/.test( dir );
- let show = /\.show/.test( dir );
+ const solo = /\.solo/.test(dir);
+ let show = /\.show/.test(dir);
- if ( solo && process.env.CI ) {
- throw new Error( 'Forgot to remove `solo: true` from test' );
+ if (solo && process.env.CI) {
+ throw new Error("Forgot to remove `solo: true` from test");
}
- ( solo ? it.only : it )( dir, () => {
- dir = path.resolve( 'test/server-side-rendering/samples', dir );
- const component = require( `${dir}/main.html` );
+ (solo ? it.only : it)(dir, () => {
+ dir = path.resolve("test/server-side-rendering/samples", dir);
+ const component = require(`${dir}/main.html`);
- const expectedHtml = tryToReadFile( `${dir}/_expected.html` );
- const expectedCss = tryToReadFile( `${dir}/_expected.css` ) || '';
+ const expectedHtml = tryToReadFile(`${dir}/_expected.html`);
+ const expectedCss = tryToReadFile(`${dir}/_expected.css`) || "";
- const data = tryToLoadJson( `${dir}/data.json` );
+ const data = tryToLoadJson(`${dir}/data.json`);
let html;
let css;
let error;
try {
- html = component.render( data );
+ html = component.render(data);
css = component.renderCss().css;
- } catch ( e ) {
+ } catch (e) {
show = true;
error = e;
}
- if ( show ) {
- fs.readdirSync( dir ).forEach( file => {
- if ( file[0] === '_' ) return;
- const source = fs.readFileSync( `${dir}/${file}`, 'utf-8' );
- const name = capitalize( file.slice( 0, -path.extname( file ).length ) );
- const { code } = svelte.compile( source, { generate: 'ssr', name });
- console.group( file );
- console.log( addLineNumbers( code ) );
+ if (show) {
+ fs.readdirSync(dir).forEach(file => {
+ if (file[0] === "_") return;
+ const source = fs.readFileSync(`${dir}/${file}`, "utf-8");
+ const name = capitalize(file.slice(0, -path.extname(file).length));
+ const { code } = svelte.compile(source, { generate: "ssr", name });
+ console.group(file);
+ console.log(addLineNumbers(code));
console.groupEnd();
});
}
- if ( error ) throw error;
+ if (error) throw error;
- fs.writeFileSync( `${dir}/_actual.html`, html );
- if ( css ) fs.writeFileSync( `${dir}/_actual.css`, css );
+ fs.writeFileSync(`${dir}/_actual.html`, html);
+ if (css) fs.writeFileSync(`${dir}/_actual.css`, css);
- assert.htmlEqual( html, expectedHtml );
- assert.equal( css.replace( /^\s+/gm, '' ), expectedCss.replace( /^\s+/gm, '' ) );
+ assert.htmlEqual(html, expectedHtml);
+ assert.equal(
+ css.replace(/^\s+/gm, ""),
+ expectedCss.replace(/^\s+/gm, "")
+ );
});
});
// duplicate client-side tests, as far as possible
- fs.readdirSync( 'test/runtime/samples' ).forEach( dir => {
- if ( dir[0] === '.' ) return;
+ fs.readdirSync("test/runtime/samples").forEach(dir => {
+ if (dir[0] === ".") return;
- const config = loadConfig( `./runtime/samples/${dir}/_config.js` );
+ const config = loadConfig(`./runtime/samples/${dir}/_config.js`);
- if ( config.solo && process.env.CI ) {
- throw new Error( 'Forgot to remove `solo: true` from test' );
+ if (config.solo && process.env.CI) {
+ throw new Error("Forgot to remove `solo: true` from test");
}
- if ( config['skip-ssr'] ) return;
+ if (config["skip-ssr"]) return;
- ( config.skip ? it.skip : config.solo ? it.only : it )( dir, () => {
+ (config.skip ? it.skip : config.solo ? it.only : it)(dir, () => {
let compiled;
try {
- const source = fs.readFileSync( `test/runtime/samples/${dir}/main.html`, 'utf-8' );
- compiled = svelte.compile( source, { generate: 'ssr' });
- } catch ( err ) {
- if ( config.compileError ) {
- config.compileError( err );
+ const source = fs.readFileSync(
+ `test/runtime/samples/${dir}/main.html`,
+ "utf-8"
+ );
+ compiled = svelte.compile(source, { generate: "ssr" });
+ } catch (err) {
+ if (config.compileError) {
+ config.compileError(err);
return;
} else {
throw err;
}
}
- fs.readdirSync( `test/runtime/samples/${dir}` ).forEach( file => {
- const resolved = require.resolve( `../runtime/samples/${dir}/${file}` );
- delete require.cache[ resolved ];
+ fs.readdirSync(`test/runtime/samples/${dir}`).forEach(file => {
+ const resolved = require.resolve(`../runtime/samples/${dir}/${file}`);
+ delete require.cache[resolved];
});
- const component = require( `../runtime/samples/${dir}/main.html` );
+ const component = require(`../runtime/samples/${dir}/main.html`);
let html;
try {
- html = component.render( config.data );
+ html = component.render(config.data);
- if ( config.html ) {
- assert.htmlEqual( html, config.html );
+ if (config.html) {
+ assert.htmlEqual(html, config.html);
}
- } catch ( err ) {
- console.log( addLineNumbers( compiled.code ) ); // eslint-disable-line no-console
+ } catch (err) {
+ console.log(addLineNumbers(compiled.code)); // eslint-disable-line no-console
throw err;
}
});
diff --git a/test/setup.js b/test/setup.js
index c51e5d75e6..b649bc2250 100644
--- a/test/setup.js
+++ b/test/setup.js
@@ -1,9 +1,9 @@
-const nodeVersionMatch = /^v(\d)/.exec( process.version );
+const nodeVersionMatch = /^v(\d)/.exec(process.version);
const legacy = +nodeVersionMatch[1] < 6;
-const babelrc = require( '../package.json' ).babel;
+const babelrc = require("../package.json").babel;
-if ( legacy ) {
- require( 'babel-register' )( babelrc );
+if (legacy) {
+ require("babel-register")(babelrc);
} else {
- require( 'reify' );
-}
\ No newline at end of file
+ require("reify");
+}
diff --git a/test/sourcemaps/index.js b/test/sourcemaps/index.js
index 986630c14d..f4aaabb069 100644
--- a/test/sourcemaps/index.js
+++ b/test/sourcemaps/index.js
@@ -1,41 +1,51 @@
-import * as fs from 'fs';
-import * as path from 'path';
-import assert from 'assert';
-import { svelte, exists } from '../helpers.js';
-import { SourceMapConsumer } from 'source-map';
-import { getLocator } from 'locate-character';
+import * as fs from "fs";
+import * as path from "path";
+import assert from "assert";
+import { svelte, exists } from "../helpers.js";
+import { SourceMapConsumer } from "source-map";
+import { getLocator } from "locate-character";
-describe( 'sourcemaps', () => {
- fs.readdirSync( 'test/sourcemaps/samples' ).forEach( dir => {
- if ( dir[0] === '.' ) return;
+describe("sourcemaps", () => {
+ fs.readdirSync("test/sourcemaps/samples").forEach(dir => {
+ if (dir[0] === ".") return;
- const solo = exists( `test/sourcemaps/samples/${dir}/solo` );
+ const solo = exists(`test/sourcemaps/samples/${dir}/solo`);
- if ( solo && process.env.CI ) {
- throw new Error( 'Forgot to remove `solo: true` from test' );
+ if (solo && process.env.CI) {
+ throw new Error("Forgot to remove `solo: true` from test");
}
- ( solo ? it.only : it )( dir, () => {
- const filename = path.resolve( `test/sourcemaps/samples/${dir}/input.html` );
- const outputFilename = path.resolve( `test/sourcemaps/samples/${dir}/output.js` );
+ (solo ? it.only : it)(dir, () => {
+ const filename = path.resolve(
+ `test/sourcemaps/samples/${dir}/input.html`
+ );
+ const outputFilename = path.resolve(
+ `test/sourcemaps/samples/${dir}/output.js`
+ );
- const input = fs.readFileSync( filename, 'utf-8' ).replace( /\s+$/, '' );
- const { code, map } = svelte.compile( input, {
+ const input = fs.readFileSync(filename, "utf-8").replace(/\s+$/, "");
+ const { code, map } = svelte.compile(input, {
filename,
outputFilename
});
- fs.writeFileSync( outputFilename, `${code}\n//# sourceMappingURL=output.js.map` );
- fs.writeFileSync( `${outputFilename}.map`, JSON.stringify( map, null, ' ' ) );
+ fs.writeFileSync(
+ outputFilename,
+ `${code}\n//# sourceMappingURL=output.js.map`
+ );
+ fs.writeFileSync(
+ `${outputFilename}.map`,
+ JSON.stringify(map, null, " ")
+ );
- assert.deepEqual( map.sources, [ 'input.html' ]);
+ assert.deepEqual(map.sources, ["input.html"]);
- const { test } = require( `./samples/${dir}/test.js` );
+ const { test } = require(`./samples/${dir}/test.js`);
- const smc = new SourceMapConsumer( map );
+ const smc = new SourceMapConsumer(map);
- const locateInSource = getLocator( input );
- const locateInGenerated = getLocator( code );
+ const locateInSource = getLocator(input);
+ const locateInGenerated = getLocator(code);
test({ assert, code, map, smc, locateInSource, locateInGenerated });
});
diff --git a/test/test.js b/test/test.js
index 36cbe00280..b501fd81a0 100644
--- a/test/test.js
+++ b/test/test.js
@@ -1,11 +1,11 @@
-const glob = require( 'glob' );
+const glob = require("glob");
-require( './setup' );
+require("./setup");
-glob.sync( '**/__test__.js', { cwd: 'src' }).forEach( function ( file ) {
- require( '../src/' + file );
+glob.sync("**/__test__.js", { cwd: "src" }).forEach(function(file) {
+ require("../src/" + file);
});
-glob.sync( '*/index.js', { cwd: 'test' }).forEach( function ( file ) {
- require( './' + file );
-});
\ No newline at end of file
+glob.sync("*/index.js", { cwd: "test" }).forEach(function(file) {
+ require("./" + file);
+});
diff --git a/test/validator/index.js b/test/validator/index.js
index 8ebe0be294..5a63958c9c 100644
--- a/test/validator/index.js
+++ b/test/validator/index.js
@@ -1,30 +1,30 @@
-import * as fs from 'fs';
-import assert from 'assert';
-import { svelte, tryToLoadJson } from '../helpers.js';
+import * as fs from "fs";
+import assert from "assert";
+import { svelte, tryToLoadJson } from "../helpers.js";
-describe( 'validate', () => {
- fs.readdirSync( 'test/validator/samples' ).forEach( dir => {
- if ( dir[0] === '.' ) return;
+describe("validate", () => {
+ fs.readdirSync("test/validator/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 solo = /\.solo/.test(dir);
- if ( solo && process.env.CI ) {
- throw new Error( 'Forgot to remove `solo: true` from test' );
+ if (solo && process.env.CI) {
+ throw new Error("Forgot to remove `solo: true` from test");
}
- ( solo ? it.only : it )( dir, () => {
+ (solo ? it.only : it)(dir, () => {
const filename = `test/validator/samples/${dir}/input.html`;
- const input = fs.readFileSync( filename, 'utf-8' ).replace( /\s+$/, '' );
+ const input = fs.readFileSync(filename, "utf-8").replace(/\s+$/, "");
try {
- const parsed = svelte.parse( input );
+ const parsed = svelte.parse(input);
const errors = [];
const warnings = [];
- svelte.validate( parsed, input, {
- onerror ( error ) {
+ svelte.validate(parsed, input, {
+ onerror(error) {
errors.push({
message: error.message,
pos: error.pos,
@@ -32,7 +32,7 @@ describe( 'validate', () => {
});
},
- onwarn ( warning ) {
+ onwarn(warning) {
warnings.push({
message: warning.message,
pos: warning.pos,
@@ -41,40 +41,42 @@ describe( 'validate', () => {
}
});
- const expectedErrors = tryToLoadJson( `test/validator/samples/${dir}/errors.json` ) || [];
- const expectedWarnings = tryToLoadJson( `test/validator/samples/${dir}/warnings.json` ) || [];
+ const expectedErrors =
+ tryToLoadJson(`test/validator/samples/${dir}/errors.json`) || [];
+ const expectedWarnings =
+ tryToLoadJson(`test/validator/samples/${dir}/warnings.json`) || [];
- assert.deepEqual( errors, expectedErrors );
- assert.deepEqual( warnings, expectedWarnings );
- } catch ( err ) {
- if ( err.name !== 'ParseError' ) throw err;
+ assert.deepEqual(errors, expectedErrors);
+ assert.deepEqual(warnings, expectedWarnings);
+ } catch (err) {
+ if (err.name !== "ParseError") throw err;
try {
- const expected = require( `./samples/${dir}/errors.json` )[0];
+ const expected = require(`./samples/${dir}/errors.json`)[0];
- assert.equal( err.message, expected.message );
- assert.deepEqual( err.loc, expected.loc );
- assert.equal( err.pos, expected.pos );
- } catch ( err2 ) {
- throw err2.code === 'MODULE_NOT_FOUND' ? err : err2;
+ assert.equal(err.message, expected.message);
+ assert.deepEqual(err.loc, expected.loc);
+ assert.equal(err.pos, expected.pos);
+ } catch (err2) {
+ throw err2.code === "MODULE_NOT_FOUND" ? err : err2;
}
}
});
});
- it( 'errors if options.name is illegal', () => {
- assert.throws( () => {
- svelte.compile( '', {
- name: 'not.valid'
+ it("errors if options.name is illegal", () => {
+ assert.throws(() => {
+ svelte.compile("", {
+ name: "not.valid"
});
- }, /options\.name must be a valid identifier/ );
+ }, /options\.name must be a valid identifier/);
});
- it( 'warns if options.name is not capitalised', () => {
+ it("warns if options.name is not capitalised", () => {
const warnings = [];
- svelte.compile( '', {
- name: 'lowercase',
- onwarn ( warning ) {
+ svelte.compile("", {
+ name: "lowercase",
+ onwarn(warning) {
warnings.push({
message: warning.message,
pos: warning.pos,
@@ -82,6 +84,12 @@ describe( 'validate', () => {
});
}
});
- assert.deepEqual( warnings, [ { message: 'options.name should be capitalised', pos: undefined, loc: undefined } ] );
+ assert.deepEqual(warnings, [
+ {
+ message: "options.name should be capitalised",
+ pos: undefined,
+ loc: undefined
+ }
+ ]);
});
});