/
githubmirror
/
jest
Обзор
Документация
Войти
/
githubmirror
/
jest
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
e2e/__tests__/detectOpenHandles.ts
204 строки
6 KB
Rob Hogan
feat(jest-config): `openHandlesTimeout` config option (#13875)
23 фев 2023, 14:17
Не верифицирован
23 фев 2023, 14:17
ab510f5
Код
Авторство
О чём код?
/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import {onNodeVersions} from '@jest/test-utils'; import runJest, {runContinuous} from '../runJest'; function getTextAfterTest(stderr: string) { return (stderr.split(/Ran all test suites(.*)\n/)[2] || '').trim(); } beforeAll(() => { jest.retryTimes(3); }); it('prints message about flag on slow tests', async () => { const run = runContinuous('detect-open-handles', ['outside']); await run.waitUntil(({stderr}) => stderr.includes( 'Jest did not exit one second after the test run has completed.', ), ); const {stderr} = await run.end(); const textAfterTest = getTextAfterTest(stderr); expect(textAfterTest).toMatchSnapshot(); }); it('prints message about flag on slow tests with a custom timeout', async () => { const run = runContinuous('detect-open-handles', [ 'outside', '--openHandlesTimeout=500', ]); await run.waitUntil(({stderr}) => stderr.includes('Jest did not exit 0.5 seconds'), ); const {stderr} = await run.end(); const textAfterTest = getTextAfterTest(stderr); expect(textAfterTest).toMatchSnapshot(); }); it('prints message about flag on forceExit', async () => { const run = runContinuous('detect-open-handles', ['outside', '--forceExit']); await run.waitUntil(({stderr}) => stderr.includes('Force exiting Jest')); const {stderr} = await run.end(); const textAfterTest = getTextAfterTest(stderr); expect(textAfterTest).toMatchSnapshot(); }); it('prints out info about open handlers', async () => { const run = runContinuous('detect-open-handles', [ 'outside', '--detectOpenHandles', ]); await run.waitUntil(({stderr}) => stderr.includes('Jest has detected')); const {stderr} = await run.end(); const textAfterTest = getTextAfterTest(stderr); expect(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('does not report crypto random data', () => { // The test here is basically that it exits cleanly without reporting anything (does not need `until`) const {stderr} = runJest('detect-open-handles', [ 'crypto', '--detectOpenHandles', ]); const textAfterTest = getTextAfterTest(stderr); expect(textAfterTest).toBe(''); }); it('does not report ELD histograms', () => { const {stderr} = runJest('detect-open-handles', [ 'histogram', '--detectOpenHandles', ]); const textAfterTest = getTextAfterTest(stderr); expect(textAfterTest).toBe(''); }); describe('notify', () => { it('does not report --notify flag', () => { if (process.platform === 'win32') { console.warn('[SKIP] Does not work on Windows'); return; } // The test here is basically that it exits cleanly without reporting anything (does not need `until`) const {stderr} = runJest('detect-open-handles', ['notify', '--notify']); const textAfterTest = getTextAfterTest(stderr); expect(textAfterTest).toBe(''); }); }); it('does not report timeouts using unref', () => { // The test here is basically that it exits cleanly without reporting anything (does not need `until`) const {stderr} = runJest('detect-open-handles', [ 'unref', '--detectOpenHandles', ]); const textAfterTest = getTextAfterTest(stderr); expect(textAfterTest).toBe(''); }); it('does not report child_process using unref', () => { // The test here is basically that it exits cleanly without reporting anything (does not need `until`) const {stderr} = runJest('detect-open-handles', [ 'child_process', '--detectOpenHandles', ]); const textAfterTest = getTextAfterTest(stderr); expect(textAfterTest).toBe(''); }); onNodeVersions('>=18.1.0', () => { it('does not report worker using unref', () => { // The test here is basically that it exits cleanly without reporting anything (does not need `until`) const {stderr} = runJest('detect-open-handles', [ 'worker', '--detectOpenHandles', ]); const textAfterTest = getTextAfterTest(stderr); expect(textAfterTest).toBe(''); }); }); it('prints out info about open handlers from inside tests', async () => { const run = runContinuous('detect-open-handles', [ 'inside', '--detectOpenHandles', ]); await run.waitUntil(({stderr}) => stderr.includes('Jest has detected')); const {stderr} = await run.end(); const textAfterTest = getTextAfterTest(stderr); expect(textAfterTest).toMatchSnapshot(); }); it('prints out info about open handlers from tests with a `done` callback', async () => { const run = runContinuous('detect-open-handles', [ 'in-done-function', '--detectOpenHandles', ]); await run.waitUntil(({stderr}) => stderr.includes('Jest has detected')); const {stderr} = await run.end(); const textAfterTest = getTextAfterTest(stderr); expect(textAfterTest).toMatchSnapshot(); }); it('prints out info about open handlers from lifecycle functions with a `done` callback', async () => { const run = runContinuous('detect-open-handles', [ 'in-done-lifecycle', '--detectOpenHandles', ]); await run.waitUntil(({stderr}) => stderr.includes('Jest has detected')); const {stderr} = await run.end(); let textAfterTest = getTextAfterTest(stderr); // Circus and Jasmine have different contexts, leading to slightly different // names for call stack functions. The difference shouldn't be problematic // for users, so this normalizes them so the test works in both environments. textAfterTest = textAfterTest.replace( 'at Object.setTimeout', 'at setTimeout', ); expect(textAfterTest).toMatchSnapshot(); }); it('does not print info about open handlers for a server that is already closed', async () => { const run = runContinuous('detect-open-handles', [ 'recently-closed', '--detectOpenHandles', ]); await run.waitUntil(({stderr}) => stderr.includes('Ran all test suites')); const {stderr} = await run.end(); const textAfterTest = getTextAfterTest(stderr); expect(textAfterTest).toMatchSnapshot(); });