Add a test for bazel-distfile.tar.

Also cleans up generation of bazel-distfile.tar to work on macOS.

Fixes #11741.

Closes #11743.

PiperOrigin-RevId: 320938268
diff --git a/combine_distfiles_to_tar.sh b/combine_distfiles_to_tar.sh
index 40a8f4a..865a6d2 100755
--- a/combine_distfiles_to_tar.sh
+++ b/combine_distfiles_to_tar.sh
@@ -40,5 +40,15 @@
     (cd "${PACKAGE_DIR}" && ${UNPACK} "${ARCHIVE}")
 done
 
-(cd "${PACKAGE_DIR}" && tar -c -f "${OUTPUT}" --group=0 --owner=0 \
-   $(find . -type f | sort))
+ID_OPTS="--group=0 --owner=0"
+if [ "$(uname -s)" == "Darwin" ]; then
+  ID_OPTS="--gid=0 --uid=0"
+fi
+
+(
+  cd "${PACKAGE_DIR}"
+  FILE_LIST="$(mktemp ${TMP_DIR%%/}/bazel-distfile-files.XXXXXXXX)"
+  trap "rm -fr \"${FILE_LIST}\"" EXIT
+  find . -type f | sort > "${FILE_LIST}"
+  tar -c -f "${OUTPUT}" ${ID_OPTS} -T "${FILE_LIST}"
+)
diff --git a/src/test/shell/bazel/BUILD b/src/test/shell/bazel/BUILD
index ca9ceb9..26feef3 100644
--- a/src/test/shell/bazel/BUILD
+++ b/src/test/shell/bazel/BUILD
@@ -1007,6 +1007,27 @@
 )
 
 sh_test(
+    name = "bazel_bootstrap_distfile_tar_test",
+    timeout = "eternal",
+    srcs = ["bazel_bootstrap_distfile_test.sh"],
+    args = [
+        "$(location //:bazel-distfile-tar)",
+        "$(location //src:embedded_jdk_allmodules_cached)",
+    ],
+    data = [
+        ":test-deps",
+        "//:bazel-distfile-tar",
+        "//src:embedded_jdk_allmodules_cached",
+        "@bazel_tools//tools/bash/runfiles",
+    ],
+    exec_compatible_with = ["//:highcpu_machine"],
+    tags = [
+        "block-network",
+        "no_windows",
+    ],
+)
+
+sh_test(
     name = "bazel_determinism_test",
     timeout = "eternal",
     srcs = ["bazel_determinism_test.sh"],
diff --git a/src/test/shell/bazel/bazel_bootstrap_distfile_test.sh b/src/test/shell/bazel/bazel_bootstrap_distfile_test.sh
index 338ee03..589e9c8 100755
--- a/src/test/shell/bazel/bazel_bootstrap_distfile_test.sh
+++ b/src/test/shell/bazel/bazel_bootstrap_distfile_test.sh
@@ -72,12 +72,34 @@
 function test_bootstrap() {
     cd "$(mktemp -d ${TEST_TMPDIR}/bazelbootstrap.XXXXXXXX)"
     export SOURCE_DATE_EPOCH=1501234567
-    unzip -q "${DISTFILE}"
-    if [[ $EMBEDDED_JDK == *.tar.gz ]]; then
-      tar xf $EMBEDDED_JDK
-    elif [[ $EMBEDDED_JDK == *.zip ]]; then
-      unzip -q $EMBEDDED_JDK
-    fi
+
+    case "${DISTFILE}" in
+      *.zip)
+        unzip -q "${DISTFILE}"
+        ;;
+      *.tar)
+        tar xf "${DISTFILE}"
+        ;;
+      *)
+        fail "Unknown distfile format: ${DISTFILE}"
+        ;;
+    esac
+
+    case "${EMBEDDED_JDK}" in
+      *.zip)
+        unzip -q "$EMBEDDED_JDK"
+        ;;
+      *.tar.gz)
+        tar zxf "$EMBEDDED_JDK"
+        ;;
+      *.tar)
+        tar xf "$EMBEDDED_JDK"
+        ;;
+      *)
+        fail "Unknown embedded JDK format: ${EMBEDDED_JDK}"
+        ;;
+    esac
+
     JAVABASE=$(echo reduced*)
 
     env EXTRA_BAZEL_ARGS="--host_javabase=@local_jdk//:jdk" ./compile.sh \