1
- import jsdom from "jsdom" ;
2
- import assert from "assert" ;
3
- import * as fs from "fs" ;
1
+ import jsdom from 'jsdom' ;
2
+ import assert from 'assert' ;
3
+ import glob from 'glob' ;
4
+ import fs from 'fs' ;
5
+ import chalk from 'chalk' ;
4
6
5
- import * as consoleGroup from " console-group" ;
7
+ import * as consoleGroup from ' console-group' ;
6
8
consoleGroup . install ( ) ;
7
9
8
- import * as sourceMapSupport from " source-map-support" ;
10
+ import * as sourceMapSupport from ' source-map-support' ;
9
11
sourceMapSupport . install ( ) ;
10
12
11
13
// for coverage purposes, we need to test source files,
@@ -14,8 +16,8 @@ export function loadSvelte(test) {
14
16
if ( test ) global . __svelte_test = true ;
15
17
16
18
const resolved = process . env . COVERAGE
17
- ? require . resolve ( " ../src/index.js" )
18
- : require . resolve ( " ../compiler/svelte.js" ) ;
19
+ ? require . resolve ( ' ../src/index.js' )
20
+ : require . resolve ( ' ../compiler/svelte.js' ) ;
19
21
20
22
delete require . cache [ resolved ] ;
21
23
return require ( resolved ) ;
@@ -36,23 +38,23 @@ export function tryToLoadJson(file) {
36
38
try {
37
39
return JSON . parse ( fs . readFileSync ( file ) ) ;
38
40
} catch ( err ) {
39
- if ( err . code !== " ENOENT" ) throw err ;
41
+ if ( err . code !== ' ENOENT' ) throw err ;
40
42
return null ;
41
43
}
42
44
}
43
45
44
46
export function tryToReadFile ( file ) {
45
47
try {
46
- return fs . readFileSync ( file , " utf-8" ) ;
48
+ return fs . readFileSync ( file , ' utf-8' ) ;
47
49
} catch ( err ) {
48
- if ( err . code !== " ENOENT" ) throw err ;
50
+ if ( err . code !== ' ENOENT' ) throw err ;
49
51
return null ;
50
52
}
51
53
}
52
54
53
55
export function env ( ) {
54
56
return new Promise ( ( fulfil , reject ) => {
55
- jsdom . env ( " <main></main>" , ( err , window ) => {
57
+ jsdom . env ( ' <main></main>' , ( err , window ) => {
56
58
if ( err ) {
57
59
reject ( err ) ;
58
60
} else {
@@ -75,19 +77,19 @@ function cleanChildren(node) {
75
77
76
78
if ( child . nodeType === 3 ) {
77
79
if (
78
- node . namespaceURI === " http://www.w3.org/2000/svg" &&
79
- node . tagName !== " text" &&
80
- node . tagName !== " tspan"
80
+ node . namespaceURI === ' http://www.w3.org/2000/svg' &&
81
+ node . tagName !== ' text' &&
82
+ node . tagName !== ' tspan'
81
83
) {
82
84
node . removeChild ( child ) ;
83
85
}
84
86
85
- child . data = child . data . replace ( / \s { 2 , } / , "\n" ) ;
87
+ child . data = child . data . replace ( / \s { 2 , } / , '\n' ) ;
86
88
87
89
// text
88
90
if ( previous && previous . nodeType === 3 ) {
89
91
previous . data += child . data ;
90
- previous . data = previous . data . replace ( / \s { 2 , } / , "\n" ) ;
92
+ previous . data = previous . data . replace ( / \s { 2 , } / , '\n' ) ;
91
93
92
94
node . removeChild ( child ) ;
93
95
child = previous ;
@@ -101,12 +103,12 @@ function cleanChildren(node) {
101
103
102
104
// collapse whitespace
103
105
if ( node . firstChild && node . firstChild . nodeType === 3 ) {
104
- node . firstChild . data = node . firstChild . data . replace ( / ^ \s + / , "" ) ;
106
+ node . firstChild . data = node . firstChild . data . replace ( / ^ \s + / , '' ) ;
105
107
if ( ! node . firstChild . data ) node . removeChild ( node . firstChild ) ;
106
108
}
107
109
108
110
if ( node . lastChild && node . lastChild . nodeType === 3 ) {
109
- node . lastChild . data = node . lastChild . data . replace ( / \s + $ / , "" ) ;
111
+ node . lastChild . data = node . lastChild . data . replace ( / \s + $ / , '' ) ;
110
112
if ( ! node . lastChild . data ) node . removeChild ( node . lastChild ) ;
111
113
}
112
114
}
@@ -115,15 +117,15 @@ export function setupHtmlEqual() {
115
117
return env ( ) . then ( window => {
116
118
assert . htmlEqual = ( actual , expected , message ) => {
117
119
window . document . body . innerHTML = actual
118
- . replace ( / > [ \s \r \n ] + < / g, "><" )
120
+ . replace ( / > [ \s \r \n ] + < / g, '><' )
119
121
. trim ( ) ;
120
- cleanChildren ( window . document . body , "" ) ;
122
+ cleanChildren ( window . document . body , '' ) ;
121
123
actual = window . document . body . innerHTML ;
122
124
123
125
window . document . body . innerHTML = expected
124
- . replace ( / > [ \s \r \n ] + < / g, "><" )
126
+ . replace ( / > [ \s \r \n ] + < / g, '><' )
125
127
. trim ( ) ;
126
- cleanChildren ( window . document . body , "" ) ;
128
+ cleanChildren ( window . document . body , '' ) ;
127
129
expected = window . document . body . innerHTML ;
128
130
129
131
assert . deepEqual ( actual , expected , message ) ;
@@ -137,7 +139,7 @@ export function loadConfig(file) {
137
139
delete require . cache [ resolved ] ;
138
140
return require ( resolved ) . default ;
139
141
} catch ( err ) {
140
- if ( err . code === " E_NOT_FOUND" ) {
142
+ if ( err . code === ' E_NOT_FOUND' ) {
141
143
return { } ;
142
144
}
143
145
@@ -147,16 +149,32 @@ export function loadConfig(file) {
147
149
148
150
export function addLineNumbers ( code ) {
149
151
return code
150
- . split ( "\n" )
152
+ . split ( '\n' )
151
153
. map ( ( line , i ) => {
152
154
i = String ( i + 1 ) ;
153
155
while ( i . length < 3 ) i = ` ${ i } ` ;
154
156
155
- return `${ i } : ${ line . replace ( / ^ \t + / , match =>
156
- match . split ( "\t" ) . join ( " " )
157
- ) } `;
157
+ return (
158
+ chalk . grey ( ` ${ i } : ` ) +
159
+ line . replace ( / ^ \t + / , match => match . split ( '\t' ) . join ( ' ' ) )
160
+ ) ;
158
161
} )
159
- . join ( "\n" ) ;
162
+ . join ( '\n' ) ;
163
+ }
164
+
165
+ export function showOutput ( cwd , shared ) {
166
+ glob . sync ( '**/*.html' , { cwd } ) . forEach ( file => {
167
+ const { code } = svelte . compile (
168
+ fs . readFileSync ( `${ cwd } /${ file } ` , 'utf-8' ) ,
169
+ {
170
+ shared
171
+ }
172
+ ) ;
173
+
174
+ console . log ( // eslint-disable-line no-console
175
+ `\n>> ${ chalk . cyan . bold ( file ) } \n${ addLineNumbers ( code ) } \n<< ${ chalk . cyan . bold ( file ) } `
176
+ ) ;
177
+ } ) ;
160
178
}
161
179
162
180
const start = / \n ( \t + ) / ;
0 commit comments