From 861a677582a67f8a66776a2df657f9a8cb389732 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 4 Mar 2026 03:22:58 +0000 Subject: [PATCH] fix: harden bun_test launcher args and test metadata --- internal/bun_test.bzl | 14 ++++++++++---- tests/bun_test_test/BUILD.bazel | 1 + tests/bun_test_test/failing.test.ts | 2 +- tests/bun_test_test/passing.test.ts | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/internal/bun_test.bzl b/internal/bun_test.bzl index 6f4a5a4..63f2c4d 100644 --- a/internal/bun_test.bzl +++ b/internal/bun_test.bzl @@ -1,11 +1,15 @@ """Rule for running test suites with Bun.""" +def _shell_quote(value): + return "'" + value.replace("'", "'\"'\"'") + "'" + + def _bun_test_impl(ctx): toolchain = ctx.toolchains["//bun:toolchain_type"] bun_bin = toolchain.bun.bun_bin - src_args = " ".join(["\"{}\"".format(src.path) for src in ctx.files.srcs]) + src_args = " ".join([_shell_quote(src.path) for src in ctx.files.srcs]) launcher = ctx.actions.declare_file(ctx.label.name) ctx.actions.write( output = launcher, @@ -20,9 +24,11 @@ fi if [[ -n "${{COVERAGE_DIR:-}}" ]]; then extra_args+=("--coverage") fi - -exec "{}" test {} "${{extra_args[@]}}" "$@" -""".format(bun_bin.path, src_args), +exec "{bun_bin}" test {src_args} "${{extra_args[@]}}" "$@" +""".format( + bun_bin = bun_bin.path, + src_args = src_args, + ), ) transitive_files = [] diff --git a/tests/bun_test_test/BUILD.bazel b/tests/bun_test_test/BUILD.bazel index 9b27da4..9f67755 100644 --- a/tests/bun_test_test/BUILD.bazel +++ b/tests/bun_test_test/BUILD.bazel @@ -12,6 +12,7 @@ bun_test( bun_test( name = "failing_suite", srcs = ["failing.test.ts"], + tags = ["manual"], target_compatible_with = [ "@platforms//cpu:x86_64", "@platforms//os:linux", diff --git a/tests/bun_test_test/failing.test.ts b/tests/bun_test_test/failing.test.ts index cb462d0..f893ec3 100644 --- a/tests/bun_test_test/failing.test.ts +++ b/tests/bun_test_test/failing.test.ts @@ -1,5 +1,5 @@ import { expect, test } from "bun:test"; -test("failing suite", () => { +test("intentionally fails for manual validation", () => { expect(1 + 1).toBe(3); }); diff --git a/tests/bun_test_test/passing.test.ts b/tests/bun_test_test/passing.test.ts index b5e066a..68d7029 100644 --- a/tests/bun_test_test/passing.test.ts +++ b/tests/bun_test_test/passing.test.ts @@ -1,5 +1,5 @@ import { expect, test } from "bun:test"; -test("passing suite", () => { +test("adds two numbers correctly", () => { expect(1 + 1).toBe(2); });