feat: proper windows support
This commit is contained in:
@@ -3,42 +3,62 @@ load("//bun:defs.bzl", "bun_test")
|
||||
|
||||
bun_test(
|
||||
name = "passing_suite",
|
||||
size = "small",
|
||||
srcs = ["passing.test.ts"],
|
||||
)
|
||||
|
||||
bun_test(
|
||||
name = "failing_suite",
|
||||
size = "small",
|
||||
srcs = ["failing.test.ts"],
|
||||
)
|
||||
|
||||
bun_test(
|
||||
name = "configured_suite",
|
||||
size = "small",
|
||||
srcs = ["passing.test.ts"],
|
||||
preload = ["preload.ts"],
|
||||
env_files = ["test.env"],
|
||||
no_env_file = True,
|
||||
timeout_ms = 250,
|
||||
update_snapshots = True,
|
||||
rerun_each = 2,
|
||||
concurrent = True,
|
||||
randomize = True,
|
||||
seed = 7,
|
||||
bail = 1,
|
||||
reporter = "junit",
|
||||
max_concurrency = 4,
|
||||
concurrent = True,
|
||||
coverage = True,
|
||||
coverage_reporters = ["lcov"],
|
||||
env_files = ["test.env"],
|
||||
max_concurrency = 4,
|
||||
no_env_file = True,
|
||||
preload = ["preload.ts"],
|
||||
randomize = True,
|
||||
reporter = "junit",
|
||||
rerun_each = 2,
|
||||
seed = 7,
|
||||
test_flags = ["--only-failures"],
|
||||
timeout_ms = 250,
|
||||
update_snapshots = True,
|
||||
visibility = ["//tests/ci_test:__pkg__"],
|
||||
)
|
||||
|
||||
bun_test(
|
||||
name = "configured_retry_suite",
|
||||
size = "small",
|
||||
srcs = ["passing.test.ts"],
|
||||
retry = 3,
|
||||
)
|
||||
|
||||
sh_test(
|
||||
name = "bun_test_configured_suite_shape_test",
|
||||
size = "small",
|
||||
srcs = ["configured_suite_shape.sh"],
|
||||
args = [
|
||||
"$(location :configured_suite)",
|
||||
"$(location :configured_retry_suite)",
|
||||
],
|
||||
data = [
|
||||
":configured_retry_suite",
|
||||
":configured_suite",
|
||||
],
|
||||
)
|
||||
|
||||
sh_test(
|
||||
name = "bun_test_failing_suite_test",
|
||||
size = "small",
|
||||
srcs = ["failing_suite_shape.sh"],
|
||||
args = ["$(location //tests/bun_test_test:BUILD.bazel)"],
|
||||
data = ["//tests/bun_test_test:BUILD.bazel"],
|
||||
@@ -46,34 +66,24 @@ sh_test(
|
||||
|
||||
sh_test(
|
||||
name = "bun_test_cache_hit_test",
|
||||
size = "small",
|
||||
srcs = ["cache_hit_shape.sh"],
|
||||
args = ["$(location //internal:bun_test.bzl)"],
|
||||
data = ["//internal:bun_test.bzl"],
|
||||
args = ["$(location :passing_suite)"],
|
||||
data = [":passing_suite"],
|
||||
)
|
||||
|
||||
sh_test(
|
||||
name = "bun_test_cache_miss_test",
|
||||
size = "small",
|
||||
srcs = ["cache_miss_shape.sh"],
|
||||
args = ["$(location //internal:bun_test.bzl)"],
|
||||
data = ["//internal:bun_test.bzl"],
|
||||
args = ["$(location :configured_suite)"],
|
||||
data = [":configured_suite"],
|
||||
)
|
||||
|
||||
sh_test(
|
||||
name = "bun_test_junit_output_test",
|
||||
size = "small",
|
||||
srcs = ["junit_shape.sh"],
|
||||
args = ["$(location //internal:bun_test.bzl)"],
|
||||
data = ["//internal:bun_test.bzl"],
|
||||
)
|
||||
|
||||
sh_test(
|
||||
name = "bun_test_configured_suite_shape_test",
|
||||
srcs = ["configured_suite_shape.sh"],
|
||||
args = [
|
||||
"$(location :configured_suite)",
|
||||
"$(location :configured_retry_suite)",
|
||||
],
|
||||
data = [
|
||||
":configured_suite",
|
||||
":configured_retry_suite",
|
||||
],
|
||||
args = ["$(location :configured_suite)"],
|
||||
data = [":configured_suite"],
|
||||
)
|
||||
|
||||
@@ -1,7 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
rule_file="$1"
|
||||
launcher="$1"
|
||||
|
||||
grep -Fq 'launcher_lines = [render_shell_array("bun_args", ["--bun", "test"])]' "${rule_file}"
|
||||
grep -Fq 'exec "${bun_bin}" "${bun_args[@]}" "$@"' "${rule_file}"
|
||||
python3 - "${launcher}" <<'PY'
|
||||
import json
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
path = pathlib.Path(sys.argv[1])
|
||||
if path.suffix.lower() == ".cmd":
|
||||
path = pathlib.Path(str(path)[:-4])
|
||||
spec = json.loads(pathlib.Path(f"{path}.launcher.json").read_text())
|
||||
|
||||
assert spec["kind"] == "bun_test", spec
|
||||
assert spec["argv"][:2] == ["--bun", "test"], spec
|
||||
assert spec["test_short_paths"], spec
|
||||
PY
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
rule_file="$1"
|
||||
launcher="$1"
|
||||
|
||||
grep -Fq 'extra_files = ctx.files.srcs + ctx.files.data + ctx.files.preload + ctx.files.env_files + [bun_bin]' "${rule_file}"
|
||||
grep -Eq '"srcs": attr\.label_list\(' "${rule_file}"
|
||||
grep -Eq '"coverage": attr\.bool\(' "${rule_file}"
|
||||
python3 - "${launcher}" <<'PY'
|
||||
import json
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
path = pathlib.Path(sys.argv[1])
|
||||
if path.suffix.lower() == ".cmd":
|
||||
path = pathlib.Path(str(path)[:-4])
|
||||
spec = json.loads(pathlib.Path(f"{path}.launcher.json").read_text())
|
||||
|
||||
assert spec["coverage"] is True, spec
|
||||
assert spec["preload_short_paths"], spec
|
||||
assert spec["env_file_short_paths"], spec
|
||||
assert spec["test_short_paths"], spec
|
||||
PY
|
||||
|
||||
@@ -4,21 +4,39 @@ set -euo pipefail
|
||||
launcher="$1"
|
||||
retry_launcher="$2"
|
||||
|
||||
grep -Fq -- '--no-install' "${launcher}"
|
||||
grep -Fq -- '--preload' "${launcher}"
|
||||
grep -Fq -- '--env-file' "${launcher}"
|
||||
grep -Fq -- '--no-env-file' "${launcher}"
|
||||
grep -Fq -- '--timeout' "${launcher}"
|
||||
grep -Fq -- '--update-snapshots' "${launcher}"
|
||||
grep -Fq -- '--rerun-each' "${launcher}"
|
||||
grep -Fq -- '--concurrent' "${launcher}"
|
||||
grep -Fq -- '--randomize' "${launcher}"
|
||||
grep -Fq -- '--seed' "${launcher}"
|
||||
grep -Fq -- '--bail' "${launcher}"
|
||||
grep -Fq -- '--max-concurrency' "${launcher}"
|
||||
grep -Fq -- '--reporter' "${launcher}"
|
||||
grep -Fq -- '--reporter-outfile' "${launcher}"
|
||||
grep -Fq -- '--coverage' "${launcher}"
|
||||
grep -Fq -- '--coverage-dir' "${launcher}"
|
||||
grep -Fq -- '--coverage-reporter' "${launcher}"
|
||||
grep -Fq -- '--retry' "${retry_launcher}"
|
||||
python3 - "${launcher}" "${retry_launcher}" <<'PY'
|
||||
import json
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
def read_spec(launcher: str):
|
||||
path = pathlib.Path(launcher)
|
||||
if path.suffix.lower() == ".cmd":
|
||||
path = pathlib.Path(str(path)[:-4])
|
||||
return json.loads(pathlib.Path(f"{path}.launcher.json").read_text())
|
||||
|
||||
launcher_spec = read_spec(sys.argv[1])
|
||||
retry_spec = read_spec(sys.argv[2])
|
||||
|
||||
for value in [
|
||||
"--no-install",
|
||||
"--no-env-file",
|
||||
"--timeout",
|
||||
"--update-snapshots",
|
||||
"--rerun-each",
|
||||
"--concurrent",
|
||||
"--randomize",
|
||||
"--seed",
|
||||
"--bail",
|
||||
"--max-concurrency",
|
||||
]:
|
||||
assert value in launcher_spec["argv"], (value, launcher_spec)
|
||||
|
||||
assert launcher_spec["preload_short_paths"], launcher_spec
|
||||
assert launcher_spec["env_file_short_paths"], launcher_spec
|
||||
assert launcher_spec["reporter"] == "junit", launcher_spec
|
||||
assert launcher_spec["coverage"] is True, launcher_spec
|
||||
assert launcher_spec["coverage_reporters"] == ["lcov"], launcher_spec
|
||||
assert "--retry" in retry_spec["argv"], retry_spec
|
||||
assert "3" in retry_spec["argv"], retry_spec
|
||||
PY
|
||||
|
||||
@@ -1,7 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
rule_file="$1"
|
||||
launcher="$1"
|
||||
|
||||
grep -Fq 'reporter_out="${XML_OUTPUT_FILE:-${runtime_workspace}/junit.xml}"' "${rule_file}"
|
||||
grep -Fq 'bun_args+=("--reporter" "junit" "--reporter-outfile" "${reporter_out}")' "${rule_file}"
|
||||
python3 - "${launcher}" <<'PY'
|
||||
import json
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
path = pathlib.Path(sys.argv[1])
|
||||
if path.suffix.lower() == ".cmd":
|
||||
path = pathlib.Path(str(path)[:-4])
|
||||
spec = json.loads(pathlib.Path(f"{path}.launcher.json").read_text())
|
||||
|
||||
assert spec["reporter"] == "junit", spec
|
||||
PY
|
||||
|
||||
Reference in New Issue
Block a user