-
-
Notifications
You must be signed in to change notification settings - Fork 26.8k
/
index.test.js
155 lines (129 loc) · 4.71 KB
/
index.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
'use strict';
const testSetup = require('../__shared__/test-setup');
const fs = require('fs-extra');
const path = require('path');
test('formats babel syntax error', async () => {
fs.copySync(
path.join(__dirname, 'src', 'AppBabel.js'),
path.join(testSetup.testDirectory, 'src', 'App.js')
);
const { stdout, stderr } = await testSetup.scripts.build();
expect({ stdout, stderr }).toMatchSnapshot();
});
test('formats css syntax error', async () => {
fs.copySync(
path.join(__dirname, 'src', 'AppCss.js'),
path.join(testSetup.testDirectory, 'src', 'App.js')
);
const { stdout, stderr } = await testSetup.scripts.build();
expect({ stdout, stderr }).toMatchSnapshot();
});
test('formats unknown export', async () => {
fs.copySync(
path.join(__dirname, 'src', 'AppUnknownExport.js'),
path.join(testSetup.testDirectory, 'src', 'App.js')
);
const { stdout, stderr } = await testSetup.scripts.build();
expect({ stdout, stderr }).toMatchSnapshot();
});
test('formats aliased unknown export', async () => {
fs.copySync(
path.join(__dirname, 'src', 'AppAliasUnknownExport.js'),
path.join(testSetup.testDirectory, 'src', 'App.js')
);
const { stdout, stderr } = await testSetup.scripts.build();
expect({ stdout, stderr }).toMatchSnapshot();
});
test('formats no default export', async () => {
fs.copySync(
path.join(__dirname, 'src', 'AppNoDefault.js'),
path.join(testSetup.testDirectory, 'src', 'App.js')
);
const { stdout, stderr } = await testSetup.scripts.build();
expect({ stdout, stderr }).toMatchSnapshot();
});
test('formats missing package', async () => {
fs.copySync(
path.join(__dirname, 'src', 'AppMissingPackage.js'),
path.join(testSetup.testDirectory, 'src', 'App.js')
);
let { stdout, stderr } = await testSetup.scripts.build();
if (process.platform === 'win32') {
stderr = stderr.replace('.\\src\\App.js', './src/App.js');
}
expect({ stdout, stderr }).toMatchSnapshot();
});
test('formats eslint warning', async () => {
fs.copySync(
path.join(__dirname, 'src', 'AppLintWarning.js'),
path.join(testSetup.testDirectory, 'src', 'App.js')
);
let { stdout, stderr } = await testSetup.scripts.build();
const sizeIndex = stdout.indexOf('File sizes after gzip');
if (sizeIndex !== -1) {
stdout = stdout.substring(0, sizeIndex);
}
expect({ stdout, stderr }).toMatchSnapshot();
});
test('formats eslint error', async () => {
fs.copySync(
path.join(__dirname, 'src', 'AppLintError.js'),
path.join(testSetup.testDirectory, 'src', 'App.js')
);
const { stdout, stderr } = await testSetup.scripts.build();
expect({ stdout, stderr }).toMatchSnapshot();
});
test('helps when users tries to use sass', async () => {
fs.copySync(
path.join(__dirname, 'src', 'AppSass.js'),
path.join(testSetup.testDirectory, 'src', 'App.js')
);
const { stdout, stderr } = await testSetup.scripts.build();
expect(stdout).toBeFalsy();
// TODO: Snapshots differ between Node 10/12 as the call stack log output has changed.
expect(stderr).toContain(
'To import Sass files, you first need to install sass.'
);
});
test('formats file not found error', async () => {
fs.copySync(
path.join(__dirname, 'src', 'AppUnknownFile.js'),
path.join(testSetup.testDirectory, 'src', 'App.js')
);
let { stdout, stderr } = await testSetup.scripts.build();
if (process.platform === 'win32') {
stderr = stderr
.replace('.\\src\\App.js', './src/App.js')
.replace('.\\src', './src');
}
expect({ stdout, stderr }).toMatchSnapshot();
});
test('formats case sensitive path error', async () => {
fs.copySync(
path.join(__dirname, 'src', 'AppIncorrectCase.js'),
path.join(testSetup.testDirectory, 'src', 'App.js')
);
const { stderr } = await testSetup.scripts.start({ smoke: true });
if (process.platform === 'darwin') {
// eslint-disable-next-line jest/no-conditional-expect
expect(stderr).toMatch(
`Cannot find file: 'export5.js' does not match the corresponding name on disk: './src/Export5.js'.`
);
} else {
// eslint-disable-next-line jest/no-conditional-expect
expect(stderr).not.toEqual(''); // TODO: figure out how we can test this on Linux/Windows
// I believe getting this working requires we tap into enhanced-resolve
// pipeline, which is debt we don't want to take on right now.
}
});
test('formats out of scope error', async () => {
fs.copySync(
path.join(__dirname, 'src', 'AppOutOfScopeImport.js'),
path.join(testSetup.testDirectory, 'src', 'App.js')
);
let { stdout, stderr } = await testSetup.scripts.build();
if (process.platform === 'win32') {
stderr = stderr.replace('.\\src\\App.js', './src/App.js');
}
expect({ stdout, stderr }).toMatchSnapshot();
});