allow solo for test suite (#3747)

pull/3781/head
Tan Li Hau 5 years ago committed by Conduitry
parent f68b3a3b8c
commit 5dbb08d19b

@ -37,7 +37,7 @@ function create(code) {
} }
describe('css', () => { describe('css', () => {
fs.readdirSync('test/css/samples').forEach(dir => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {
if (dir[0] === '.') return; if (dir[0] === '.') return;
// add .solo to a sample directory name to only run that test // add .solo to a sample directory name to only run that test
@ -51,7 +51,7 @@ describe('css', () => {
(solo ? it.only : skip ? it.skip : it)(dir, () => { (solo ? it.only : skip ? it.skip : it)(dir, () => {
const config = try_require(`./samples/${dir}/_config.js`) || {}; const config = try_require(`./samples/${dir}/_config.js`) || {};
const input = fs const input = fs
.readFileSync(`test/css/samples/${dir}/input.svelte`, 'utf-8') .readFileSync(`${__dirname}/samples/${dir}/input.svelte`, 'utf-8')
.replace(/\s+$/, ''); .replace(/\s+$/, '');
const expected_warnings = (config.warnings || []).map(normalize_warning); const expected_warnings = (config.warnings || []).map(normalize_warning);
@ -74,10 +74,10 @@ describe('css', () => {
assert.deepEqual(dom_warnings, ssr_warnings); assert.deepEqual(dom_warnings, ssr_warnings);
assert.deepEqual(dom_warnings.map(normalize_warning), expected_warnings); assert.deepEqual(dom_warnings.map(normalize_warning), expected_warnings);
fs.writeFileSync(`test/css/samples/${dir}/_actual.css`, dom.css.code); fs.writeFileSync(`${__dirname}/samples/${dir}/_actual.css`, dom.css.code);
const expected = { const expected = {
html: read(`test/css/samples/${dir}/expected.html`), html: read(`${__dirname}/samples/${dir}/expected.html`),
css: read(`test/css/samples/${dir}/expected.css`) css: read(`${__dirname}/samples/${dir}/expected.css`)
}; };
assert.equal(dom.css.code.replace(/svelte(-ref)?-[a-z0-9]+/g, (m, $1) => $1 ? m : 'svelte-xyz'), expected.css); assert.equal(dom.css.code.replace(/svelte(-ref)?-[a-z0-9]+/g, (m, $1) => $1 ? m : 'svelte-xyz'), expected.css);
@ -112,7 +112,7 @@ describe('css', () => {
new ClientComponent({ target, props: config.props }); new ClientComponent({ target, props: config.props });
const html = target.innerHTML; const html = target.innerHTML;
fs.writeFileSync(`test/css/samples/${dir}/_actual.html`, html); fs.writeFileSync(`${__dirname}/samples/${dir}/_actual.html`, html);
assert.equal( assert.equal(
normalizeHtml(window, html.replace(/svelte(-ref)?-[a-z0-9]+/g, (m, $1) => $1 ? m : 'svelte-xyz')), normalizeHtml(window, html.replace(/svelte(-ref)?-[a-z0-9]+/g, (m, $1) => $1 ? m : 'svelte-xyz')),

@ -14,7 +14,7 @@ const page = `
</body> </body>
`; `;
const assert = fs.readFileSync('test/custom-elements/assert.js', 'utf-8'); const assert = fs.readFileSync(`${__dirname}/assert.js`, 'utf-8');
describe('custom-elements', function() { describe('custom-elements', function() {
this.timeout(10000); this.timeout(10000);
@ -53,7 +53,7 @@ describe('custom-elements', function() {
await browser.close(); await browser.close();
}); });
fs.readdirSync('test/custom-elements/samples').forEach(dir => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {
if (dir[0] === '.') return; if (dir[0] === '.') return;
const solo = /\.solo$/.test(dir); const solo = /\.solo$/.test(dir);
@ -67,7 +67,7 @@ describe('custom-elements', function() {
const expected_warnings = config.warnings || []; const expected_warnings = config.warnings || [];
const bundle = await rollup({ const bundle = await rollup({
input: `test/custom-elements/samples/${dir}/test.js`, input: `${__dirname}/samples/${dir}/test.js`,
plugins: [ plugins: [
{ {
resolveId(importee) { resolveId(importee) {

@ -47,7 +47,7 @@ describe('hydration', () => {
} }
(config.skip ? it.skip : config.solo ? it.only : it)(dir, () => { (config.skip ? it.skip : config.solo ? it.only : it)(dir, () => {
const cwd = path.resolve(`test/hydration/samples/${dir}`); const cwd = path.resolve(`${__dirname}/samples/${dir}`);
compileOptions = config.compileOptions || {}; compileOptions = config.compileOptions || {};
@ -96,7 +96,7 @@ describe('hydration', () => {
}); });
} }
fs.readdirSync('test/hydration/samples').forEach(dir => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {
runTest(dir, null); runTest(dir, null);
}); });
}); });

@ -4,7 +4,7 @@ import * as path from "path";
import { loadConfig, svelte } from "../helpers.js"; import { loadConfig, svelte } from "../helpers.js";
describe("js", () => { describe("js", () => {
fs.readdirSync("test/js/samples").forEach(dir => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {
if (dir[0] === ".") return; if (dir[0] === ".") return;
// add .solo to a sample directory name to only run that test // add .solo to a sample directory name to only run that test
@ -15,7 +15,7 @@ describe("js", () => {
} }
(solo ? it.only : it)(dir, () => { (solo ? it.only : it)(dir, () => {
dir = path.resolve("test/js/samples", dir); dir = path.resolve(`${__dirname}/samples`, dir);
const config = loadConfig(`${dir}/_config.js`); const config = loadConfig(`${dir}/_config.js`);
const input = fs.readFileSync(`${dir}/input.svelte`, "utf-8").replace(/\s+$/, ""); const input = fs.readFileSync(`${dir}/input.svelte`, "utf-8").replace(/\s+$/, "");

@ -3,7 +3,7 @@ import * as fs from 'fs';
import { svelte, tryToLoadJson } from '../helpers.js'; import { svelte, tryToLoadJson } from '../helpers.js';
describe('parse', () => { describe('parse', () => {
fs.readdirSync('test/parser/samples').forEach(dir => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {
if (dir[0] === '.') return; if (dir[0] === '.') return;
// add .solo to a sample directory name to only run that test // add .solo to a sample directory name to only run that test
@ -16,18 +16,18 @@ describe('parse', () => {
} }
(solo ? it.only : it)(dir, () => { (solo ? it.only : it)(dir, () => {
const options = tryToLoadJson(`test/parser/samples/${dir}/options.json`) || {}; const options = tryToLoadJson(`${__dirname}/samples/${dir}/options.json`) || {};
const input = fs.readFileSync(`test/parser/samples/${dir}/input.svelte`, 'utf-8').replace(/\s+$/, ''); const input = fs.readFileSync(`${__dirname}/samples/${dir}/input.svelte`, 'utf-8').replace(/\s+$/, '');
const expectedOutput = tryToLoadJson(`test/parser/samples/${dir}/output.json`); const expectedOutput = tryToLoadJson(`${__dirname}/samples/${dir}/output.json`);
const expectedError = tryToLoadJson(`test/parser/samples/${dir}/error.json`); const expectedError = tryToLoadJson(`${__dirname}/samples/${dir}/error.json`);
try { try {
const { ast } = svelte.compile(input, Object.assign(options, { const { ast } = svelte.compile(input, Object.assign(options, {
generate: false generate: false
})); }));
fs.writeFileSync(`test/parser/samples/${dir}/_actual.json`, JSON.stringify(ast, null, '\t')); fs.writeFileSync(`${__dirname}/samples/${dir}/_actual.json`, JSON.stringify(ast, null, '\t'));
assert.deepEqual(ast.html, expectedOutput.html); assert.deepEqual(ast.html, expectedOutput.html);
assert.deepEqual(ast.css, expectedOutput.css); assert.deepEqual(ast.css, expectedOutput.css);

@ -3,21 +3,21 @@ import * as assert from 'assert';
import { loadConfig, svelte } from '../helpers.js'; import { loadConfig, svelte } from '../helpers.js';
describe('preprocess', () => { describe('preprocess', () => {
fs.readdirSync('test/preprocess/samples').forEach(dir => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {
if (dir[0] === '.') return; if (dir[0] === '.') return;
const config = loadConfig(`./preprocess/samples/${dir}/_config.js`); const config = loadConfig(`${__dirname}/samples/${dir}/_config.js`);
if (config.solo && process.env.CI) { if (config.solo && process.env.CI) {
throw new Error('Forgot to remove `solo: true` from test'); throw new Error('Forgot to remove `solo: true` from test');
} }
(config.skip ? it.skip : config.solo ? it.only : it)(dir, async () => { (config.skip ? it.skip : config.solo ? it.only : it)(dir, async () => {
const input = fs.readFileSync(`test/preprocess/samples/${dir}/input.svelte`, 'utf-8'); const input = fs.readFileSync(`${__dirname}/samples/${dir}/input.svelte`, 'utf-8');
const expected = fs.readFileSync(`test/preprocess/samples/${dir}/output.svelte`, 'utf-8'); const expected = fs.readFileSync(`${__dirname}/samples/${dir}/output.svelte`, 'utf-8');
const result = await svelte.preprocess(input, config.preprocess); const result = await svelte.preprocess(input, config.preprocess);
fs.writeFileSync(`test/preprocess/samples/${dir}/_actual.html`, result.code); fs.writeFileSync(`${__dirname}/samples/${dir}/_actual.html`, result.code);
assert.equal(result.code, expected); assert.equal(result.code, expected);

@ -49,7 +49,7 @@ describe("runtime", () => {
function runTest(dir, hydrate) { function runTest(dir, hydrate) {
if (dir[0] === ".") return; if (dir[0] === ".") return;
const config = loadConfig(`./runtime/samples/${dir}/_config.js`); const config = loadConfig(`${__dirname}/samples/${dir}/_config.js`);
if (hydrate && config.skip_if_hydrate) return; if (hydrate && config.skip_if_hydrate) return;
@ -67,7 +67,7 @@ describe("runtime", () => {
compile = (config.preserveIdentifiers ? svelte : svelte$).compile; compile = (config.preserveIdentifiers ? svelte : svelte$).compile;
const cwd = path.resolve(`test/runtime/samples/${dir}`); const cwd = path.resolve(`${__dirname}/samples/${dir}`);
compileOptions = config.compileOptions || {}; compileOptions = config.compileOptions || {};
compileOptions.format = 'cjs'; compileOptions.format = 'cjs';
@ -215,7 +215,7 @@ describe("runtime", () => {
}); });
} }
fs.readdirSync("test/runtime/samples").forEach(dir => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {
runTest(dir, false); runTest(dir, false);
runTest(dir, true); runTest(dir, true);
}); });

@ -30,7 +30,7 @@ describe("ssr", () => {
return setupHtmlEqual(); return setupHtmlEqual();
}); });
fs.readdirSync("test/server-side-rendering/samples").forEach(dir => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {
if (dir[0] === ".") return; if (dir[0] === ".") return;
// add .solo to a sample directory name to only run that test, or // add .solo to a sample directory name to only run that test, or
@ -43,7 +43,7 @@ describe("ssr", () => {
} }
(solo ? it.only : it)(dir, () => { (solo ? it.only : it)(dir, () => {
dir = path.resolve("test/server-side-rendering/samples", dir); dir = path.resolve(`${__dirname}/samples`, dir);
try { try {
const Component = require(`${dir}/main.svelte`).default; const Component = require(`${dir}/main.svelte`).default;

@ -6,7 +6,7 @@ import { SourceMapConsumer } from "source-map";
import { getLocator } from "locate-character"; import { getLocator } from "locate-character";
describe("sourcemaps", () => { describe("sourcemaps", () => {
fs.readdirSync("test/sourcemaps/samples").forEach(dir => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {
if (dir[0] === ".") return; if (dir[0] === ".") return;
// add .solo to a sample directory name to only run that test // add .solo to a sample directory name to only run that test
@ -19,10 +19,10 @@ describe("sourcemaps", () => {
(solo ? it.only : skip ? it.skip : it)(dir, async () => { (solo ? it.only : skip ? it.skip : it)(dir, async () => {
const filename = path.resolve( const filename = path.resolve(
`test/sourcemaps/samples/${dir}/input.svelte` `${__dirname}/samples/${dir}/input.svelte`
); );
const outputFilename = path.resolve( const outputFilename = path.resolve(
`test/sourcemaps/samples/${dir}/output` `${__dirname}/samples/${dir}/output`
); );
const input = fs.readFileSync(filename, "utf-8").replace(/\s+$/, ""); const input = fs.readFileSync(filename, "utf-8").replace(/\s+$/, "");

@ -3,7 +3,7 @@ import * as assert from 'assert';
import { svelte, loadConfig, tryToLoadJson } from '../helpers.js'; import { svelte, loadConfig, tryToLoadJson } from '../helpers.js';
describe('stats', () => { describe('stats', () => {
fs.readdirSync('test/stats/samples').forEach(dir => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {
if (dir[0] === '.') return; if (dir[0] === '.') return;
// add .solo to a sample directory name to only run that test // add .solo to a sample directory name to only run that test
@ -15,12 +15,12 @@ describe('stats', () => {
} }
(solo ? it.only : skip ? it.skip : it)(dir, () => { (solo ? it.only : skip ? it.skip : it)(dir, () => {
const config = loadConfig(`./stats/samples/${dir}/_config.js`); const config = loadConfig(`${__dirname}/samples/${dir}/_config.js`);
const filename = `test/stats/samples/${dir}/input.svelte`; const filename = `${__dirname}/samples/${dir}/input.svelte`;
const input = fs.readFileSync(filename, 'utf-8').replace(/\s+$/, ''); const input = fs.readFileSync(filename, 'utf-8').replace(/\s+$/, '');
const expectedError = tryToLoadJson( const expectedError = tryToLoadJson(
`test/stats/samples/${dir}/error.json` `${__dirname}/samples/${dir}/error.json`
); );
let result; let result;

@ -8,6 +8,17 @@ require('../internal');
console.clear(); console.clear();
glob('*/index.js', { cwd: 'test' }).forEach((file) => { const testFolders = glob('*/index.js', { cwd: 'test' });
require('./' + file); const solo = testFolders.find(folder => /\.solo/.test(folder));
});
if (solo) {
if (process.env.CI) {
throw new Error('Forgot to remove `solo: true` from test');
}
require('./' + solo);
} else {
testFolders.forEach(file => {
console.log('file', file);
require('./' + file);
});
}

@ -3,7 +3,7 @@ import * as assert from "assert";
import { svelte, loadConfig, tryToLoadJson } from "../helpers.js"; import { svelte, loadConfig, tryToLoadJson } from "../helpers.js";
describe("validate", () => { describe("validate", () => {
fs.readdirSync("test/validator/samples").forEach(dir => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {
if (dir[0] === ".") return; if (dir[0] === ".") return;
// add .solo to a sample directory name to only run that test // add .solo to a sample directory name to only run that test
@ -15,11 +15,11 @@ describe("validate", () => {
} }
(solo ? it.only : skip ? it.skip : it)(dir, () => { (solo ? it.only : skip ? it.skip : it)(dir, () => {
const config = loadConfig(`./validator/samples/${dir}/_config.js`); const config = loadConfig(`${__dirname}/samples/${dir}/_config.js`);
const input = fs.readFileSync(`test/validator/samples/${dir}/input.svelte`, "utf-8").replace(/\s+$/, ""); const input = fs.readFileSync(`${__dirname}/samples/${dir}/input.svelte`, "utf-8").replace(/\s+$/, "");
const expected_warnings = tryToLoadJson(`test/validator/samples/${dir}/warnings.json`) || []; const expected_warnings = tryToLoadJson(`${__dirname}/samples/${dir}/warnings.json`) || [];
const expected_errors = tryToLoadJson(`test/validator/samples/${dir}/errors.json`); const expected_errors = tryToLoadJson(`${__dirname}/samples/${dir}/errors.json`);
let error; let error;

@ -3,7 +3,7 @@ import * as assert from 'assert';
import { svelte, loadConfig, tryToLoadJson } from '../helpers.js'; import { svelte, loadConfig, tryToLoadJson } from '../helpers.js';
describe('vars', () => { describe('vars', () => {
fs.readdirSync('test/vars/samples').forEach(dir => { fs.readdirSync(`${__dirname}/samples`).forEach(dir => {
if (dir[0] === '.') return; if (dir[0] === '.') return;
// add .solo to a sample directory name to only run that test // add .solo to a sample directory name to only run that test
@ -16,12 +16,12 @@ describe('vars', () => {
for (const generate of ['dom', 'ssr', false]) { for (const generate of ['dom', 'ssr', false]) {
(solo ? it.only : skip ? it.skip : it)(`${dir}, generate: ${generate}`, () => { (solo ? it.only : skip ? it.skip : it)(`${dir}, generate: ${generate}`, () => {
const config = loadConfig(`./vars/samples/${dir}/_config.js`); const config = loadConfig(`${__dirname}/samples/${dir}/_config.js`);
const filename = `test/vars/samples/${dir}/input.svelte`; const filename = `${__dirname}/samples/${dir}/input.svelte`;
const input = fs.readFileSync(filename, 'utf-8').replace(/\s+$/, ''); const input = fs.readFileSync(filename, 'utf-8').replace(/\s+$/, '');
const expectedError = tryToLoadJson( const expectedError = tryToLoadJson(
`test/vars/samples/${dir}/error.json` `${__dirname}/samples/${dir}/error.json`
); );
let result; let result;

Loading…
Cancel
Save