diff --git a/.mocharc.js b/.mocharc.js index de41cdd353..e55f26099e 100644 --- a/.mocharc.js +++ b/.mocharc.js @@ -1,15 +1,14 @@ module.exports = { file: [ - 'test/test.js' + 'test/test.ts' + ], + require: [ + 'sucrase/register' ] }; // add coverage options when running 'npx c8 mocha' if (process.env.NODE_V8_COVERAGE) { - Object.assign(module.exports, { - fullTrace: true, - require: [ - 'source-map-support/register' - ] - }); + module.exports.fullTrace = true; + module.exports.require.push('source-map-support/register'); } diff --git a/test/.eslintrc.json b/test/.eslintrc.json index d5ba8f9d9c..fc493fa889 100644 --- a/test/.eslintrc.json +++ b/test/.eslintrc.json @@ -1,5 +1,6 @@ { "rules": { - "no-console": "off" + "no-console": "off", + "@typescript-eslint/no-var-requires": "off" } } diff --git a/test/css/index.js b/test/css/index.ts similarity index 97% rename from test/css/index.js rename to test/css/index.ts index 81d27a94bf..c12418353d 100644 --- a/test/css/index.js +++ b/test/css/index.ts @@ -1,6 +1,5 @@ -import * as assert from 'assert'; import * as fs from 'fs'; -import { env, svelte, setupHtmlEqual, shouldUpdateExpected } from '../helpers.js'; +import { assert, env, svelte, setupHtmlEqual, shouldUpdateExpected } from '../helpers'; function try_require(file) { try { diff --git a/test/custom-elements/index.js b/test/custom-elements/index.ts similarity index 96% rename from test/custom-elements/index.js rename to test/custom-elements/index.ts index 1329dbd2cf..25cef932d8 100644 --- a/test/custom-elements/index.js +++ b/test/custom-elements/index.ts @@ -2,9 +2,9 @@ import * as fs from 'fs'; import * as path from 'path'; import * as http from 'http'; import { rollup } from 'rollup'; -import * as virtual from '@rollup/plugin-virtual'; -import * as puppeteer from 'puppeteer'; -import { addLineNumbers, loadConfig, loadSvelte } from "../helpers.js"; +import virtual from '@rollup/plugin-virtual'; +import puppeteer from 'puppeteer'; +import { addLineNumbers, loadConfig, loadSvelte } from "../helpers"; import { deepEqual } from 'assert'; const page = ` diff --git a/test/helpers.js b/test/helpers.ts similarity index 95% rename from test/helpers.js rename to test/helpers.ts index 9ffc4c4764..6452dbae1a 100644 --- a/test/helpers.js +++ b/test/helpers.ts @@ -1,9 +1,10 @@ +import * as assert$1 from 'assert'; import * as jsdom from 'jsdom'; -import * as assert from 'assert'; -import * as glob from 'tiny-glob/sync.js'; +import glob from 'tiny-glob/sync'; import * as path from 'path'; import * as fs from 'fs'; import * as colors from 'kleur'; +export const assert = (assert$1 as unknown) as typeof assert$1 & { htmlEqual: (actual, expected, message?) => void }; // for coverage purposes, we need to test source files, // but for sanity purposes, we need to test dist files @@ -63,7 +64,7 @@ global.window = window; // add missing ecmascript globals to window for (const key of Object.getOwnPropertyNames(global)) { - window[key] = window[key] || global[key]; + if (!(key in window)) window[key] = global[key]; } // implement mock scroll diff --git a/test/hydration/index.js b/test/hydration/index.ts similarity index 93% rename from test/hydration/index.js rename to test/hydration/index.ts index f57a0cdc1a..e50351c56e 100644 --- a/test/hydration/index.js +++ b/test/hydration/index.ts @@ -1,15 +1,15 @@ -import * as assert from 'assert'; import * as path from 'path'; import * as fs from 'fs'; import { + assert, showOutput, loadConfig, loadSvelte, env, setupHtmlEqual, shouldUpdateExpected -} from '../helpers.js'; +} from '../helpers'; let compileOptions = null; @@ -58,13 +58,7 @@ describe('hydration', () => { try { global.window = window; - let SvelteComponent; - - try { - SvelteComponent = require(`${cwd}/main.svelte`).default; - } catch (err) { - throw err; - } + const SvelteComponent = require(`${cwd}/main.svelte`).default; const target = window.document.body; const head = window.document.head; @@ -75,7 +69,9 @@ describe('hydration', () => { try { before_head = fs.readFileSync(`${cwd}/_before_head.html`, 'utf-8'); head.innerHTML = before_head; - } catch (err) {} + } catch (err) { + // continue regardless of error + } const snapshot = config.snapshot ? config.snapshot(target) : {}; diff --git a/test/js/index.js b/test/js/index.ts similarity index 99% rename from test/js/index.js rename to test/js/index.ts index 8aa4cc76a9..3a3643de47 100644 --- a/test/js/index.js +++ b/test/js/index.ts @@ -2,7 +2,7 @@ import * as assert from "assert"; import * as fs from "fs"; import * as path from "path"; import * as colors from "kleur"; -import { loadConfig, svelte, shouldUpdateExpected } from "../helpers.js"; +import { loadConfig, svelte, shouldUpdateExpected } from "../helpers"; describe("js", () => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => { diff --git a/test/motion/index.js b/test/motion/index.ts similarity index 100% rename from test/motion/index.js rename to test/motion/index.ts diff --git a/test/parser/index.js b/test/parser/index.ts similarity index 96% rename from test/parser/index.js rename to test/parser/index.ts index 2c8d516a7d..32afcbbafc 100644 --- a/test/parser/index.js +++ b/test/parser/index.ts @@ -1,6 +1,6 @@ import * as assert from 'assert'; import * as fs from 'fs'; -import { svelte, tryToLoadJson, shouldUpdateExpected } from '../helpers.js'; +import { svelte, tryToLoadJson, shouldUpdateExpected } from '../helpers'; describe('parse', () => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => { @@ -38,7 +38,7 @@ describe('parse', () => { } catch (err) { if (err.name !== 'ParseError') throw err; if (!expectedError) throw err; - const { code, message, pos, start } = err + const { code, message, pos, start } = err; try { assert.deepEqual({ code, message, pos, start }, expectedError); } catch (err2) { diff --git a/test/parser/update.js b/test/parser/update.ts similarity index 100% rename from test/parser/update.js rename to test/parser/update.ts diff --git a/test/preprocess/index.js b/test/preprocess/index.ts similarity index 94% rename from test/preprocess/index.js rename to test/preprocess/index.ts index 5d83bb6059..abb45012ce 100644 --- a/test/preprocess/index.js +++ b/test/preprocess/index.ts @@ -1,6 +1,6 @@ import * as fs from 'fs'; import * as assert from 'assert'; -import { loadConfig, svelte } from '../helpers.js'; +import { loadConfig, svelte } from '../helpers'; describe('preprocess', () => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => { diff --git a/test/runtime/index.js b/test/runtime/index.ts similarity index 97% rename from test/runtime/index.js rename to test/runtime/index.ts index 65157196c9..9e0ba6568f 100644 --- a/test/runtime/index.js +++ b/test/runtime/index.ts @@ -1,12 +1,12 @@ -import * as assert from "assert"; import * as path from "path"; import * as fs from "fs"; import { rollup } from 'rollup'; -import * as virtual from '@rollup/plugin-virtual'; -import * as glob from 'tiny-glob/sync.js'; +import virtual from '@rollup/plugin-virtual'; +import glob from 'tiny-glob/sync.js'; import { clear_loops, flush, set_now, set_raf } from "../../internal"; import { + assert, showOutput, loadConfig, loadSvelte, @@ -14,7 +14,7 @@ import { env, setupHtmlEqual, mkdirp -} from "../helpers.js"; +} from "../helpers"; let svelte$; let svelte; diff --git a/test/server-side-rendering/index.js b/test/server-side-rendering/index.ts similarity index 98% rename from test/server-side-rendering/index.js rename to test/server-side-rendering/index.ts index 2d539782ff..94ab405895 100644 --- a/test/server-side-rendering/index.js +++ b/test/server-side-rendering/index.ts @@ -1,9 +1,9 @@ -import * as assert from "assert"; import * as fs from "fs"; import * as path from "path"; -import * as glob from 'tiny-glob/sync.js'; +import glob from 'tiny-glob/sync.js'; import { + assert, showOutput, loadConfig, loadSvelte, @@ -12,7 +12,7 @@ import { cleanRequireCache, shouldUpdateExpected, mkdirp -} from "../helpers.js"; +} from "../helpers"; function tryToReadFile(file) { try { diff --git a/test/sourcemaps/index.js b/test/sourcemaps/index.ts similarity index 98% rename from test/sourcemaps/index.js rename to test/sourcemaps/index.ts index 0b0424a764..da2d79295c 100644 --- a/test/sourcemaps/index.js +++ b/test/sourcemaps/index.ts @@ -1,7 +1,7 @@ import * as fs from "fs"; import * as path from "path"; import * as assert from "assert"; -import { svelte } from "../helpers.js"; +import { svelte } from "../helpers"; import { SourceMapConsumer } from "source-map"; import { getLocator } from "locate-character"; diff --git a/test/stats/index.js b/test/stats/index.ts similarity index 95% rename from test/stats/index.js rename to test/stats/index.ts index acea7a4663..a6efd93d22 100644 --- a/test/stats/index.js +++ b/test/stats/index.ts @@ -1,6 +1,6 @@ import * as fs from 'fs'; import * as assert from 'assert'; -import { svelte, loadConfig, tryToLoadJson } from '../helpers.js'; +import { svelte, loadConfig, tryToLoadJson } from '../helpers'; describe('stats', () => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => { diff --git a/test/test.js b/test/test.ts similarity index 84% rename from test/test.js rename to test/test.ts index 6ea4bd60ab..181e9351c1 100644 --- a/test/test.js +++ b/test/test.ts @@ -3,12 +3,12 @@ const glob = require('tiny-glob/sync.js'); require('./setup'); // bind internal to jsdom -require('./helpers'); +require('./helpers.ts'); require('../internal'); console.clear(); -const test_folders = glob('*/index.js', { cwd: 'test' }); +const test_folders = glob('*/index.ts', { cwd: 'test' }); const solo_folders = test_folders.filter(folder => /\.solo/.test(folder)); if (solo_folders.length) { diff --git a/test/validator/index.js b/test/validator/index.ts similarity index 97% rename from test/validator/index.js rename to test/validator/index.ts index 433e1a94ae..e93cf1a4bb 100644 --- a/test/validator/index.js +++ b/test/validator/index.ts @@ -1,6 +1,6 @@ import * as fs from "fs"; import * as assert from "assert"; -import { svelte, loadConfig, tryToLoadJson } from "../helpers.js"; +import { svelte, loadConfig, tryToLoadJson } from "../helpers"; describe("validate", () => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => { @@ -30,7 +30,7 @@ describe("validate", () => { legacy: config.legacy, generate: false, customElement: config.customElement, - ...options, + ...options }); assert.deepEqual(warnings.map(w => ({ diff --git a/test/vars/index.js b/test/vars/index.ts similarity index 95% rename from test/vars/index.js rename to test/vars/index.ts index a12ac177f2..4cebf7fbb4 100644 --- a/test/vars/index.js +++ b/test/vars/index.ts @@ -1,6 +1,6 @@ import * as fs from 'fs'; import * as assert from 'assert'; -import { svelte, loadConfig, tryToLoadJson } from '../helpers.js'; +import { svelte, loadConfig, tryToLoadJson } from '../helpers'; describe('vars', () => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {