-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
/
Copy pathcomplexItemsInErrors.ts
89 lines (69 loc) · 2.03 KB
/
complexItemsInErrors.ts
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
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import {tmpdir} from 'os';
import * as path from 'path';
import {
cleanup,
createEmptyPackage,
extractSortedSummary,
writeFiles,
} from '../Utils';
import {runContinuous} from '../runJest';
const tempDir = path.resolve(tmpdir(), 'complex-errors');
// this is a tiny bit flaky
jest.retryTimes(3);
beforeEach(() => {
createEmptyPackage(tempDir);
});
afterEach(() => {
cleanup(tempDir);
});
test('handles functions that close over outside variables', async () => {
const testFileContent = `
const someString = 'hello from the other side';
test('dummy', () => {
const error = new Error('boom');
error.someProp = () => someString;
throw error;
});
`;
writeFiles(tempDir, {
'__tests__/test-1.js': testFileContent,
'__tests__/test-2.js': testFileContent,
});
const {end, waitUntil} = runContinuous(
tempDir,
['--no-watchman', '--watch-all'],
// timeout in case the `waitUntil` below doesn't fire
{stripAnsi: true, timeout: 5000},
);
await waitUntil(({stderr}) => stderr.includes('Ran all test suites.'));
const {stderr} = await end();
const {rest} = extractSortedSummary(stderr);
expect(rest).toMatchSnapshot();
});
test.skip('handles errors with BigInt', async () => {
const testFileContent = `
test('dummy', () => {
expect(1n).toEqual(2n);
});
`;
writeFiles(tempDir, {
'__tests__/test-1.js': testFileContent,
'__tests__/test-2.js': testFileContent,
});
const {end, waitUntil} = runContinuous(
tempDir,
['--no-watchman', '--watch-all'],
// timeout in case the `waitUntil` below doesn't fire
{stripAnsi: true, timeout: 5000},
);
await waitUntil(({stderr}) => stderr.includes('Ran all test suites.'));
const {stderr} = await end();
const {rest} = extractSortedSummary(stderr);
expect(rest).toMatchSnapshot();
});