Skip to content

Commit d590dbe

Browse files
authored
Reinstate code coverage
1 parent 5190144 commit d590dbe

File tree

18 files changed

+163
-65
lines changed

18 files changed

+163
-65
lines changed

mocha.coverage.opts

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
--require babel-register
1+
--compilers ts-node/register
2+
--require source-map-support/register
3+
--full-trace
24
--recursive
3-
./**/__test__.js
4-
test/*/index.js
5+
test/test.js

package.json

+7-6
Original file line numberDiff line numberDiff line change
@@ -61,27 +61,28 @@
6161
"node-resolve": "^1.3.3",
6262
"nyc": "^11.1.0",
6363
"prettier": "^1.7.0",
64+
"reify": "^0.12.3",
6465
"rollup": "^0.48.2",
6566
"rollup-plugin-buble": "^0.15.0",
6667
"rollup-plugin-commonjs": "^8.0.2",
6768
"rollup-plugin-json": "^2.1.0",
6869
"rollup-plugin-node-resolve": "^3.0.0",
70+
"rollup-plugin-replace": "^2.0.0",
6971
"rollup-plugin-typescript": "^0.8.1",
7072
"rollup-plugin-virtual": "^1.0.1",
7173
"rollup-watch": "^4.3.1",
7274
"source-map": "^0.5.6",
7375
"source-map-support": "^0.4.8",
76+
"ts-node": "^3.3.0",
7477
"tslib": "^1.8.0",
75-
"typescript": "^2.3.2"
78+
"typescript": "^2.6.1"
7679
},
7780
"nyc": {
7881
"include": [
79-
"src/**/*.js",
82+
"compiler/svelte.js",
8083
"shared.js"
8184
],
82-
"exclude": [
83-
"src/**/__test__.js",
84-
"src/shared/**"
85-
]
85+
"sourceMap": true,
86+
"instrument": true
8687
}
8788
}

rollup.config.js

+5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import path from 'path';
2+
import replace from 'rollup-plugin-replace';
23
import resolve from 'rollup-plugin-node-resolve';
34
import commonjs from 'rollup-plugin-commonjs';
45
import json from 'rollup-plugin-json';
56
import typescript from 'rollup-plugin-typescript';
67
import buble from 'rollup-plugin-buble';
8+
import pkg from './package.json';
79

810
const src = path.resolve('src');
911

@@ -27,6 +29,9 @@ export default [
2729
}
2830
}
2931
},
32+
replace({
33+
__VERSION__: pkg.version
34+
}),
3035
resolve(),
3136
commonjs(),
3237
json(),

src/config.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const test = typeof process !== 'undefined' && process.env.TEST;

src/css/Stylesheet.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ export default class Stylesheet {
322322

323323
leave: (node: Node) => {
324324
if (node.type === 'Rule' || node.type === 'Atrule') stack.pop();
325-
if (node.type === 'Atrule') currentAtrule = stack[stack.length - 1];
325+
if (node.type === 'Atrule') currentAtrule = <Atrule>stack[stack.length - 1];
326326
}
327327
});
328328
} else {

src/generators/Generator.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@ import clone from '../utils/clone';
1616
import DomBlock from './dom/Block';
1717
import SsrBlock from './server-side-rendering/Block';
1818
import Stylesheet from '../css/Stylesheet';
19+
import { test } from '../config';
1920
import { Node, GenerateOptions, Parsed, CompileOptions, CustomElementOptions } from '../interfaces';
2021

21-
const test = typeof global !== 'undefined' && global.__svelte_test;
22-
2322
interface Computation {
2423
key: string;
2524
deps: string[]

src/generators/dom/Block.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ export default class Block {
202202
}
203203

204204
// minor hack – we need to ensure that any {{{triples}}} are detached first
205-
this.builders.unmount.addBlockAtStart(this.builders.detachRaw);
205+
this.builders.unmount.addBlockAtStart(this.builders.detachRaw.toString());
206206

207207
const properties = new CodeBuilder();
208208

src/generators/dom/index.ts

+4-6
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,9 @@ import Generator from '../Generator';
1414
import Stylesheet from '../../css/Stylesheet';
1515
import preprocess from './preprocess';
1616
import Block from './Block';
17-
import { version } from '../../../package.json';
17+
import { test } from '../../config';
1818
import { Parsed, CompileOptions, Node } from '../../interfaces';
1919

20-
const test = typeof global !== 'undefined' && global.__svelte_test;
21-
2220
export class DomGenerator extends Generator {
2321
blocks: (Block|string)[];
2422
readonly: Set<string>;
@@ -167,9 +165,9 @@ export default function dom(
167165
builder.addBlock(block.toString());
168166
});
169167

170-
const sharedPath = options.shared === true
168+
const sharedPath: string = options.shared === true
171169
? 'svelte/shared.js'
172-
: options.shared;
170+
: options.shared || '';
173171

174172
const prototypeBase =
175173
`${name}.prototype` +
@@ -444,7 +442,7 @@ export default function dom(
444442
);
445443

446444
return generator.generate(result, options, {
447-
banner: `/* ${filename ? `${filename} ` : ``}generated by Svelte v${version} */`,
445+
banner: `/* ${filename ? `${filename} ` : ``}generated by Svelte v${"__VERSION__"} */`,
448446
sharedPath,
449447
helpers,
450448
name,

src/generators/dom/visitors/Element/meta/Window.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export default function visitWindow(
2828
node: Node
2929
) {
3030
const events = {};
31-
const bindings = {};
31+
const bindings: Record<string, string> = {};
3232

3333
node.attributes.forEach((attribute: Node) => {
3434
if (attribute.type === 'EventHandler') {

src/generators/server-side-rendering/visitors/EachBlock.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export default function visitEachBlock(
2626
contextDependencies.set(node.context, dependencies);
2727

2828
if (node.destructuredContexts) {
29-
for (const i = 0; i < node.destructuredContexts.length; i++) {
29+
for (let i = 0; i < node.destructuredContexts.length; i += 1) {
3030
contexts.set(node.destructuredContexts[i], `${node.context}[${i}]`);
3131
contextDependencies.set(node.destructuredContexts[i], dependencies);
3232
}

src/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ import validate from './validate/index';
33
import generate from './generators/dom/index';
44
import generateSSR from './generators/server-side-rendering/index';
55
import { assign } from './shared/index.js';
6-
import { version } from '../package.json';
76
import Stylesheet from './css/Stylesheet';
87
import { Parsed, CompileOptions, Warning } from './interfaces';
98

9+
const version = '__VERSION__';
10+
1011
function normalizeOptions(options: CompileOptions): CompileOptions {
1112
let normalizedOptions = assign({ generate: 'dom' }, options);
1213
const { onwarn, onerror } = normalizedOptions;

src/interfaces.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export interface GenerateOptions {
6565
name: string;
6666
format: ModuleFormat;
6767
banner?: string;
68-
sharedPath?: string | boolean;
68+
sharedPath?: string;
6969
helpers?: { name: string, alias: string }[];
7070
}
7171

src/parse/index.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ interface ParserOptions {
2323
filename?: string;
2424
}
2525

26+
type ParserState = (parser: Parser) => (ParserState | void);
27+
2628
export class Parser {
2729
readonly template: string;
2830
readonly filename?: string;
@@ -59,7 +61,7 @@ export class Parser {
5961

6062
this.stack.push(this.html);
6163

62-
let state = fragment;
64+
let state: ParserState = fragment;
6365

6466
while (this.index < this.template.length) {
6567
state = state(this) || fragment;
@@ -94,7 +96,7 @@ export class Parser {
9496
return this.stack[this.stack.length - 1];
9597
}
9698

97-
acornError(err: Error) {
99+
acornError(err: any) {
98100
this.error(err.message.replace(/ \(\d+:\d+\)$/, ''), err.pos);
99101
}
100102

test/helpers.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,9 @@ import chalk from 'chalk';
88
// for coverage purposes, we need to test source files,
99
// but for sanity purposes, we need to test dist files
1010
export function loadSvelte(test) {
11-
if (test) global.__svelte_test = true;
11+
process.env.TEST = test ? 'true' : '';
1212

13-
const resolved = process.env.COVERAGE
14-
? require.resolve('../src/index.js')
15-
: require.resolve('../compiler/svelte.js');
13+
const resolved = require.resolve('../compiler/svelte.js');
1614

1715
delete require.cache[resolved];
1816
return require(resolved);

test/server-side-rendering/index.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ function tryToReadFile(file) {
2121

2222
describe("ssr", () => {
2323
before(() => {
24-
require(process.env.COVERAGE
25-
? "../../src/server-side-rendering/register.js"
26-
: "../../ssr/register");
24+
require("../../ssr/register");
2725

2826
return setupHtmlEqual();
2927
});

test/setup.js

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ const path = require('path');
44
require('console-group').install();
55
require('source-map-support').install();
66

7+
process.env.TEST = true;
8+
79
require.extensions['.js'] = function(module, filename) {
810
const exports = [];
911

tsconfig.json

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{
22
"compilerOptions": {
3-
"noImplicitAny": true,
43
"diagnostics": true,
54
"noImplicitThis": true,
65
"noEmitOnError": true,

0 commit comments

Comments
 (0)