From 5aef503c58c4054ea4777a035f3627e7df67ef36 Mon Sep 17 00:00:00 2001 From: btea <2356281422@qq.com> Date: Tue, 13 Jun 2023 18:01:38 +0800 Subject: [PATCH 1/2] feat(runner): `describe`/`test` name support anonymous function --- packages/runner/src/suite.ts | 2 +- test/reporters/fixtures/function-as-name.test.ts | 12 ++++++++++++ test/reporters/tests/function-as-name.test.ts | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/runner/src/suite.ts b/packages/runner/src/suite.ts index acd191eda960..c188b0f7f83a 100644 --- a/packages/runner/src/suite.ts +++ b/packages/runner/src/suite.ts @@ -275,7 +275,7 @@ function createTest(fn: ( } function formatName(name: string | Function) { - return typeof name === 'string' ? name : name instanceof Function ? name.name : String(name) + return typeof name === 'string' ? name : name instanceof Function ? (name.name || 'Anonymous') : String(name) } function formatTitle(template: string, items: any[], idx: number) { diff --git a/test/reporters/fixtures/function-as-name.test.ts b/test/reporters/fixtures/function-as-name.test.ts index fb01790f0ec8..a08ab86b94fd 100644 --- a/test/reporters/fixtures/function-as-name.test.ts +++ b/test/reporters/fixtures/function-as-name.test.ts @@ -15,6 +15,18 @@ describe(Bar, () => { }) }) +describe(() => {}, () => { + test(foo, () => { + expect(0).toBe(0) + }) +}) + +describe(foo, () => { + test(() => {}, () => { + expect(0).toBe(0) + }) +}) + describe.each([1])(foo, () => { test.each([1])(foo, () => { expect(0).toBe(0) diff --git a/test/reporters/tests/function-as-name.test.ts b/test/reporters/tests/function-as-name.test.ts index 75714f30b053..61a85ea32c50 100644 --- a/test/reporters/tests/function-as-name.test.ts +++ b/test/reporters/tests/function-as-name.test.ts @@ -9,6 +9,8 @@ test('should print function name', async () => { expect(stdout).toBeTruthy() expect(stdout).toContain('function-as-name.test.ts > foo > Bar') expect(stdout).toContain('function-as-name.test.ts > Bar > foo') + expect(stdout).toContain('function-as-name.test.ts > Anonymous > foo') + expect(stdout).toContain('function-as-name.test.ts > foo > Anonymous') expect(stdout).toContain('function-as-name.test.ts > foo > foo') expect(stdout).toContain('function-as-name.test.ts > Bar > Bar') }) From e76cefe8cc431af67a3e99aa86bc88db9f782b05 Mon Sep 17 00:00:00 2001 From: btea <2356281422@qq.com> Date: Tue, 13 Jun 2023 22:10:15 +0800 Subject: [PATCH 2/2] fix: update name & test --- packages/runner/src/suite.ts | 2 +- test/reporters/tests/function-as-name.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/runner/src/suite.ts b/packages/runner/src/suite.ts index c188b0f7f83a..8cca928a9b93 100644 --- a/packages/runner/src/suite.ts +++ b/packages/runner/src/suite.ts @@ -275,7 +275,7 @@ function createTest(fn: ( } function formatName(name: string | Function) { - return typeof name === 'string' ? name : name instanceof Function ? (name.name || 'Anonymous') : String(name) + return typeof name === 'string' ? name : name instanceof Function ? (name.name || '') : String(name) } function formatTitle(template: string, items: any[], idx: number) { diff --git a/test/reporters/tests/function-as-name.test.ts b/test/reporters/tests/function-as-name.test.ts index 61a85ea32c50..2dda78176898 100644 --- a/test/reporters/tests/function-as-name.test.ts +++ b/test/reporters/tests/function-as-name.test.ts @@ -9,8 +9,8 @@ test('should print function name', async () => { expect(stdout).toBeTruthy() expect(stdout).toContain('function-as-name.test.ts > foo > Bar') expect(stdout).toContain('function-as-name.test.ts > Bar > foo') - expect(stdout).toContain('function-as-name.test.ts > Anonymous > foo') - expect(stdout).toContain('function-as-name.test.ts > foo > Anonymous') + expect(stdout).toContain('function-as-name.test.ts > > foo') + expect(stdout).toContain('function-as-name.test.ts > foo > ') expect(stdout).toContain('function-as-name.test.ts > foo > foo') expect(stdout).toContain('function-as-name.test.ts > Bar > Bar') })