diff --git a/tests/bundle_test/verify_flag_aquery.sh b/tests/bundle_test/verify_flag_aquery.sh index bf9658f..da52435 100755 --- a/tests/bundle_test/verify_flag_aquery.sh +++ b/tests/bundle_test/verify_flag_aquery.sh @@ -6,40 +6,7 @@ script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)" source "${script_dir}/../nested_bazel_test.sh" setup_nested_bazel_cmd -find_workspace_root() { - local candidate - local module_path - local search_dir - - for candidate in \ - "${TEST_SRCDIR:-}/${TEST_WORKSPACE:-}" \ - "${TEST_SRCDIR:-}/_main"; do - if [[ -n ${candidate} && -f "${candidate}/MODULE.bazel" ]]; then - printf '%s\n' "${candidate}" - return 0 - fi - done - - if [[ -n ${TEST_SRCDIR:-} ]]; then - module_path="$(find "${TEST_SRCDIR}" -maxdepth 3 -name MODULE.bazel -print -quit 2>/dev/null || true)" - if [[ -n ${module_path} ]]; then - dirname "${module_path}" - return 0 - fi - fi - - search_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)" - candidate="$(cd "${search_dir}/../.." && pwd -P)" - if [[ -f "${candidate}/MODULE.bazel" ]]; then - printf '%s\n' "${candidate}" - return 0 - fi - - echo "Unable to locate rules_bun workspace root" >&2 - exit 1 -} - -rules_bun_root="$(find_workspace_root)" +rules_bun_root="$(find_nested_bazel_workspace_root "${BASH_SOURCE[0]}")" cleanup() { local status="$1" diff --git a/tests/bundle_test/verify_sourcemap_shape.sh b/tests/bundle_test/verify_sourcemap_shape.sh index 60865ac..34fa101 100755 --- a/tests/bundle_test/verify_sourcemap_shape.sh +++ b/tests/bundle_test/verify_sourcemap_shape.sh @@ -6,40 +6,7 @@ script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)" source "${script_dir}/../nested_bazel_test.sh" setup_nested_bazel_cmd -find_workspace_root() { - local candidate - local module_path - local search_dir - - for candidate in \ - "${TEST_SRCDIR:-}/${TEST_WORKSPACE:-}" \ - "${TEST_SRCDIR:-}/_main"; do - if [[ -n ${candidate} && -f "${candidate}/MODULE.bazel" ]]; then - printf '%s\n' "${candidate}" - return 0 - fi - done - - if [[ -n ${TEST_SRCDIR:-} ]]; then - module_path="$(find "${TEST_SRCDIR}" -maxdepth 3 -name MODULE.bazel -print -quit 2>/dev/null || true)" - if [[ -n ${module_path} ]]; then - dirname "${module_path}" - return 0 - fi - fi - - search_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)" - candidate="$(cd "${search_dir}/../.." && pwd -P)" - if [[ -f "${candidate}/MODULE.bazel" ]]; then - printf '%s\n' "${candidate}" - return 0 - fi - - echo "Unable to locate rules_bun workspace root" >&2 - exit 1 -} - -rules_bun_root="$(find_workspace_root)" +rules_bun_root="$(find_nested_bazel_workspace_root "${BASH_SOURCE[0]}")" cleanup() { local status="$1" diff --git a/tests/install_test/lifecycle_scripts.sh b/tests/install_test/lifecycle_scripts.sh index bd85d90..115678a 100755 --- a/tests/install_test/lifecycle_scripts.sh +++ b/tests/install_test/lifecycle_scripts.sh @@ -8,7 +8,7 @@ setup_nested_bazel_cmd bun_path="$1" -rules_bun_root="$(cd "${script_dir}/../.." && pwd -P)" +rules_bun_root="$(find_nested_bazel_workspace_root "${BASH_SOURCE[0]}")" workdir="$(mktemp -d)" cleanup() { diff --git a/tests/install_test/repeatability.sh b/tests/install_test/repeatability.sh index 64865f5..f437274 100755 --- a/tests/install_test/repeatability.sh +++ b/tests/install_test/repeatability.sh @@ -8,7 +8,7 @@ setup_nested_bazel_cmd bun_path="$1" -rules_bun_root="$(cd "${script_dir}/../.." && pwd -P)" +rules_bun_root="$(find_nested_bazel_workspace_root "${BASH_SOURCE[0]}")" workdir="$(mktemp -d)" cleanup() { diff --git a/tests/install_test/workspace_parity.sh b/tests/install_test/workspace_parity.sh index 99f6f60..c66b1e5 100755 --- a/tests/install_test/workspace_parity.sh +++ b/tests/install_test/workspace_parity.sh @@ -8,7 +8,7 @@ setup_nested_bazel_cmd bun_path="${1:-bun}" -rules_bun_root="$(cd "${script_dir}/../.." && pwd -P)" +rules_bun_root="$(find_nested_bazel_workspace_root "${BASH_SOURCE[0]}")" workdir="$(mktemp -d)" cleanup() { diff --git a/tests/nested_bazel_test.sh b/tests/nested_bazel_test.sh index a9af815..b621c72 100644 --- a/tests/nested_bazel_test.sh +++ b/tests/nested_bazel_test.sh @@ -1,24 +1,108 @@ #!/usr/bin/env bash setup_nested_bazel_cmd() { - if command -v bazel >/dev/null 2>&1; then - bazel_cmd=(bazel) - elif command -v bazelisk >/dev/null 2>&1; then - bazel_cmd=(bazelisk) + local bazel_bin + local nested_bazel_base + local -a scrubbed_env_vars + + if bazel_bin="$(command -v bazel 2>/dev/null)"; then + : + elif bazel_bin="$(command -v bazelisk 2>/dev/null)"; then + : else echo "bazel or bazelisk is required on PATH" >&2 exit 1 fi + + nested_bazel_base="${TEST_TMPDIR:-${TMPDIR:-/tmp}}/rules_bun_nested_bazel" + mkdir -p "${nested_bazel_base}" + nested_bazel_root="$(mktemp -d "${nested_bazel_base}/session.XXXXXX")" + mkdir -p "${nested_bazel_root}/tmp" + + scrubbed_env_vars=( + BAZEL_TEST + BUILD_EXECROOT + COVERAGE_DIR + GTEST_OUTPUT + GTEST_SHARD_INDEX + GTEST_SHARD_STATUS_FILE + GTEST_TMP_DIR + GTEST_TOTAL_SHARDS + JAVA_RUNFILES + PYTHON_RUNFILES + RUNFILES_DIR + RUNFILES_MANIFEST_FILE + RUNFILES_MANIFEST_ONLY + TEST_BINARY + TEST_INFRASTRUCTURE_FAILURE_FILE + TEST_LOGSPLITTER_OUTPUT_FILE + TEST_PREMATURE_EXIT_FILE + TEST_SHARD_INDEX + TEST_SHARD_STATUS_FILE + TEST_SRCDIR + TEST_TARGET + TEST_TMPDIR + TEST_TOTAL_SHARDS + TEST_UNDECLARED_OUTPUTS_ANNOTATIONS + TEST_UNDECLARED_OUTPUTS_ANNOTATIONS_DIR + TEST_UNDECLARED_OUTPUTS_DIR + TEST_UNDECLARED_OUTPUTS_MANIFEST + TEST_UNDECLARED_OUTPUTS_ZIP + TEST_UNUSED_RUNFILES_LOG_FILE + TEST_WARNINGS_OUTPUT_FILE + XML_OUTPUT_FILE + ) + + nested_bazel_env=(env) + for env_var in "${scrubbed_env_vars[@]}"; do + nested_bazel_env+=("-u" "${env_var}") + done + nested_bazel_env+=("TMPDIR=${nested_bazel_root}/tmp") + + bazel_cmd=( + "${nested_bazel_env[@]}" + "${bazel_bin}" + "--batch" + "--ignore_all_rc_files" + "--output_user_root=${nested_bazel_root}/output_user_root" + ) +} + +find_nested_bazel_workspace_root() { + local script_path="${1:-${BASH_SOURCE[0]}}" + local candidate + local script_dir + + for candidate in \ + "${TEST_SRCDIR:-}/${TEST_WORKSPACE:-}" \ + "${TEST_SRCDIR:-}/_main"; do + if [[ -n ${candidate} && -f "${candidate}/MODULE.bazel" ]]; then + printf '%s\n' "${candidate}" + return 0 + fi + done + + script_dir="$(cd "$(dirname "${script_path}")" && pwd -P)" + candidate="$(cd "${script_dir}/../.." && pwd -P)" + if [[ -f "${candidate}/MODULE.bazel" ]]; then + printf '%s\n' "${candidate}" + return 0 + fi + + echo "Unable to locate rules_bun workspace root" >&2 + exit 1 } shutdown_nested_bazel_workspace() { local workspace_dir="${1:-}" - if [[ -z ${workspace_dir} || ! -d ${workspace_dir} ]]; then - return 0 + if [[ -n ${workspace_dir} && -d ${workspace_dir} ]]; then + ( + cd "${workspace_dir}" + "${bazel_cmd[@]}" shutdown >/dev/null 2>&1 + ) || true fi - ( - cd "${workspace_dir}" - "${bazel_cmd[@]}" shutdown >/dev/null 2>&1 - ) || true + if [[ -n ${nested_bazel_root:-} && -d ${nested_bazel_root} ]]; then + rm -rf "${nested_bazel_root}" + fi } diff --git a/tests/npm_compat_test/npm_translate_lock_workspace_test.sh b/tests/npm_compat_test/npm_translate_lock_workspace_test.sh index fb1ccff..0a54fa8 100755 --- a/tests/npm_compat_test/npm_translate_lock_workspace_test.sh +++ b/tests/npm_compat_test/npm_translate_lock_workspace_test.sh @@ -8,7 +8,7 @@ script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)" source "${script_dir}/../nested_bazel_test.sh" setup_nested_bazel_cmd -rules_bun_root="$(cd "${script_dir}/../.." && pwd -P)" +rules_bun_root="$(find_nested_bazel_workspace_root "${BASH_SOURCE[0]}")" workdir="$(mktemp -d)" cleanup() {