Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

- `[docs]` Add step for fetching `backers.json` file in website setup docs ([#10631](https://github.com/facebook/jest/pull/10631))
- `[docs]` Add page detailing environment variables set by Jest ([#10630](https://github.com/facebook/jest/pull/10630))
- `[jest-circus]` Refactor `callAsyncCircusFn` parameters ([#10629](https://github.com/facebook/jest/pull/10629))

### Performance

Expand Down
4 changes: 2 additions & 2 deletions packages/jest-circus/src/run.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ const _callCircusHook = async ({
const timeout = hook.timeout || getState().testTimeout;

try {
await callAsyncCircusFn(hook.fn, testContext, hook.asyncError, {
await callAsyncCircusFn(hook, testContext, {
isHook: true,
timeout,
});
Expand All @@ -166,7 +166,7 @@ const _callCircusTest = async (
}

try {
await callAsyncCircusFn(test.fn, testContext, test.asyncError, {
await callAsyncCircusFn(test, testContext, {
isHook: false,
timeout,
});
Expand Down
15 changes: 8 additions & 7 deletions packages/jest-circus/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import * as path from 'path';
import type {Circus} from '@jest/types';
import {convertDescriptorToString, formatTime} from 'jest-util';
import {ErrorWithStack, convertDescriptorToString, formatTime} from 'jest-util';
import isGeneratorFn from 'is-generator-fn';
import co from 'co';
import dedent = require('dedent');
Expand Down Expand Up @@ -43,7 +43,7 @@ export const makeDescribe = (
};

export const makeTest = (
fn: Circus.TestFn | undefined,
Comment thread
SimenB marked this conversation as resolved.
fn: Circus.TestFn,
mode: Circus.TestMode,
name: Circus.TestName,
parent: Circus.DescribeBlock,
Expand Down Expand Up @@ -159,17 +159,18 @@ function checkIsError(error: unknown): error is Error {
}

export const callAsyncCircusFn = (
fn: Circus.AsyncFn,
testOrHook: Circus.TestEntry | Circus.Hook,
testContext: Circus.TestContext | undefined,
asyncError: Circus.Exception,
{isHook, timeout}: {isHook?: boolean | null; timeout: number},
{isHook, timeout}: {isHook: boolean; timeout: number},
): Promise<unknown> => {
let timeoutID: NodeJS.Timeout;
let completed = false;

const {fn, asyncError} = testOrHook;

return new Promise((resolve, reject) => {
timeoutID = setTimeout(
() => reject(_makeTimeoutMessage(timeout, !!isHook)),
() => reject(_makeTimeoutMessage(timeout, isHook)),
timeout,
);

Expand All @@ -179,7 +180,7 @@ export const callAsyncCircusFn = (
let returnedValue: unknown = undefined;
const done = (reason?: Error | string): void => {
// We need to keep a stack here before the promise tick
const errorAtDone = new Error();
const errorAtDone = new ErrorWithStack(undefined, done);
// Use `Promise.resolve` to allow the event loop to go a single tick in case `done` is called synchronously
Promise.resolve().then(() => {
if (returnedValue !== undefined) {
Expand Down
4 changes: 2 additions & 2 deletions packages/jest-types/src/Circus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ export type SyncEvent =
asyncError: Error;
name: 'add_test';
testName: TestName;
fn?: TestFn;
fn: TestFn;
mode?: TestMode;
timeout: number | undefined;
}
Expand Down Expand Up @@ -231,7 +231,7 @@ export type TestEntry = {
type: 'test';
asyncError: Exception; // Used if the test failure contains no usable stack trace
errors: Array<TestError>;
fn?: TestFn;
fn: TestFn;
invocations: number;
mode: TestMode;
name: TestName;
Expand Down