diff options
-rw-r--r-- | src/bun.js/test/jest.zig | 2 | ||||
-rw-r--r-- | src/cli/test_command.zig | 8 | ||||
-rw-r--r-- | test/bun.js/bun-test/nested-describes.test.ts | 38 |
3 files changed, 45 insertions, 3 deletions
diff --git a/src/bun.js/test/jest.zig b/src/bun.js/test/jest.zig index 00c8148b2..37c4c79cb 100644 --- a/src/bun.js/test/jest.zig +++ b/src/bun.js/test/jest.zig @@ -1737,7 +1737,7 @@ pub const DescribeScope = struct { var scope = allocator.create(DescribeScope) catch unreachable; scope.* = .{ .label = (label.toSlice(allocator).cloneIfNeeded(allocator) catch unreachable).slice(), - .parent = this, + .parent = active orelse this, .file_id = this.file_id, }; var new_this = DescribeScope.Class.make(ctx, scope); diff --git a/src/cli/test_command.zig b/src/cli/test_command.zig index a36561be0..8fb8bf01b 100644 --- a/src/cli/test_command.zig +++ b/src/cli/test_command.zig @@ -113,7 +113,9 @@ pub const CommandLineReporter = struct { const color_code = comptime if (skip) "<yellow>" else ""; if (Output.enable_ansi_colors_stderr) { - for (scopes) |scope| { + for (scopes) |_, i| { + const index = (scopes.len - 1) - i; + const scope = scopes[index]; if (scope.label.len == 0) continue; writer.writeAll(" ") catch unreachable; @@ -123,7 +125,9 @@ pub const CommandLineReporter = struct { writer.writeAll(" >") catch unreachable; } } else { - for (scopes) |scope| { + for (scopes) |_, i| { + const index = (scopes.len - 1) - i; + const scope = scopes[index]; if (scope.label.len == 0) continue; writer.writeAll(" ") catch unreachable; writer.writeAll(scope.label) catch unreachable; diff --git a/test/bun.js/bun-test/nested-describes.test.ts b/test/bun.js/bun-test/nested-describes.test.ts new file mode 100644 index 000000000..de7ba194e --- /dev/null +++ b/test/bun.js/bun-test/nested-describes.test.ts @@ -0,0 +1,38 @@ +import { +describe, +expect, +test, +} from "bun:test"; + +/* +In this test we want the tests to print out the following on a success. +Each success / fail should show the path of describe and test scopes + +✓ outer most describe > mid describe 1 > inner most describe 1 > first +✓ outer most describe > mid describe 1 > inner most describe 2 > second +✓ outer most describe > mid describe 2 > inner most describe 3 > first + +@TODO add testing for this, would require to read the test console output +*/ + +describe("outer most describe", () => { + describe("mid describe 1", () => { + describe("inner most describe 1", () => { + test("first", () => { + expect(5).toEqual(5); + }) + }) + describe("inner most describe 2", () => { + test("second", () => { + expect(5).toEqual(5); + }) + }) + }) + describe("mid describe 2", () => { + describe("inner most describe 3", () => { + test("third", () => { + expect(5).toEqual(5); + }) + }) + }) +}) |