/
detectOpenHandles.ts
82 lines (69 loc) · 2.22 KB
/
detectOpenHandles.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
/**
* 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 {wrap} from 'jest-snapshot-serializer-raw';
import runJest, {until} from '../runJest';
try {
// $FlowFixMe: Node core
require('async_hooks');
} catch (e) {
if (e.code === 'MODULE_NOT_FOUND') {
// eslint-disable-next-line jest/no-focused-tests
fit('skip test for unsupported nodes', () => {
console.warn('Skipping test for node ' + process.version);
});
} else {
throw e;
}
}
function getTextAfterTest(stderr: string) {
return (stderr.split(/Ran all test suites(.*)\n/)[2] || '').trim();
}
it('prints message about flag on slow tests', async () => {
const {stderr} = await until(
'detect-open-handles',
['outside'],
'Jest did not exit one second after the test run has completed.',
);
const textAfterTest = getTextAfterTest(stderr);
expect(wrap(textAfterTest)).toMatchSnapshot();
});
it('prints message about flag on forceExit', async () => {
const {stderr} = await until(
'detect-open-handles',
['outside', '--forceExit'],
'Force exiting Jest',
);
const textAfterTest = getTextAfterTest(stderr);
expect(wrap(textAfterTest)).toMatchSnapshot();
});
it('prints out info about open handlers', async () => {
const {stderr} = await until(
'detect-open-handles',
['outside', '--detectOpenHandles'],
'Jest has detected',
);
const textAfterTest = getTextAfterTest(stderr);
expect(wrap(textAfterTest)).toMatchSnapshot();
});
it('does not report promises', () => {
// The test here is basically that it exits cleanly without reporting anything (does not need `until`)
const {stderr} = runJest('detect-open-handles', [
'promise',
'--detectOpenHandles',
]);
const textAfterTest = getTextAfterTest(stderr);
expect(textAfterTest).toBe('');
});
it('prints out info about open handlers from inside tests', async () => {
const {stderr} = await until(
'detect-open-handles',
['inside', '--detectOpenHandles'],
'Jest has detected',
);
const textAfterTest = getTextAfterTest(stderr);
expect(wrap(textAfterTest)).toMatchSnapshot();
});