aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bun.js/test/jest.zig2
-rw-r--r--src/cli/test_command.zig8
-rw-r--r--test/bun.js/bun-test/nested-describes.test.ts38
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);
+ })
+ })
+ })
+})