Skip to content

Commit 9944f14

Browse files
committed
fix: display returned function names correctly in stack traces
1 parent 111d9cc commit 9944f14

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

src/core/index.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ function resultContainer<TValue>(): ResultContainer<TValue> {
4343
function createRenderHook<TProps, TResult, TOptions extends {}, TRenderer extends Renderer<TProps>>(
4444
createRenderer: CreateRenderer<TProps, TResult, TOptions, TRenderer>
4545
) {
46-
return function renderHook(
46+
const renderHook = (
4747
callback: (props: TProps) => TResult,
4848
options: RenderHookOptions<TProps, TOptions> = {} as RenderHookOptions<TProps, TOptions>
49-
): RenderHook<TProps, TResult, TRenderer> {
49+
): RenderHook<TProps, TResult, TRenderer> => {
5050
const { result, setValue, setError, addResolver } = resultContainer<TResult>()
5151
const renderProps = { callback, setValue, setError }
5252
let hookProps = options.initialProps
@@ -75,6 +75,13 @@ function createRenderHook<TProps, TResult, TOptions extends {}, TRenderer extend
7575
...renderUtils
7676
}
7777
}
78+
79+
// If the function name does not get used before it is returned,
80+
// it seems to vanish in nodejs and does not appear in stack traces.
81+
// This dummy usage works around that.
82+
const _name = renderHook.name // eslint-disable-line @typescript-eslint/no-unused-vars
83+
84+
return renderHook
7885
}
7986

8087
export { createRenderHook, cleanup, addCleanup, removeCleanup }

src/helpers/createTestHarness.tsx

+8-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ function createTestHarness<TProps, TResult>(
2929
Wrapper?: WrapperComponent<TProps>,
3030
suspense: boolean = true
3131
) {
32-
return function testHarness(props?: TProps) {
32+
const testHarness = (props?: TProps) => {
3333
let component = <TestComponent hookProps={props} {...rendererProps} />
3434
if (Wrapper) {
3535
component = <Wrapper {...(props as TProps)}>{component}</Wrapper>
@@ -39,6 +39,13 @@ function createTestHarness<TProps, TResult>(
3939
}
4040
return component
4141
}
42+
43+
// If the function name does not get used before it is returned,
44+
// it seems to vanish in nodejs and does not appear in stack traces.
45+
// This dummy usage works around that.
46+
const _name = testHarness.name // eslint-disable-line @typescript-eslint/no-unused-vars
47+
48+
return testHarness
4249
}
4350

4451
export { createTestHarness }

0 commit comments

Comments
 (0)