Starlarkize the exec transition for Bazel tests.

Next PR will enable this in Bazel production.

Includes a few bug fixes. All bugs were discovered by Bazel tests, so we already have coverage for them.

This is a large PR. I didn't split into smaller changes because this toggles common test infrastructure that auto-enables most tests. It's easiest to batch everything together and get all Bazel tests passing.

See https://github.com/bazelbuild/bazel/discussions/19213

PiperOrigin-RevId: 583406350
Change-Id: I6a4e2142a4efe32ff745bc8d7203aa366574a80f
diff --git a/src/test/shell/integration/builtins_injection_test.sh b/src/test/shell/integration/builtins_injection_test.sh
index 154e792..41bc377 100755
--- a/src/test/shell/integration/builtins_injection_test.sh
+++ b/src/test/shell/integration/builtins_injection_test.sh
@@ -94,7 +94,18 @@
 exported_rules = {}
 exported_to_java = {}
 EOF
-
+  # Override the default exec transition (which is in builtins) to avoid
+  # interfering with builtins injection.
+  mkdir exec
+  cat > exec/BUILD <<'EOF'
+EOF
+  cat > exec/dummy_exec_platforms.bzl <<'EOF'
+noop = transition(
+    implementation = lambda settings, attr: { '//command_line_option:is exec configuration': True },
+    inputs = [],
+    outputs = ['//command_line_option:is exec configuration']
+)
+EOF
 
   # With injection disabled.
   #
@@ -106,12 +117,14 @@
   # install base, instead of being virtually empty.)
   bazel build --nobuild //pkg:BUILD --experimental_builtins_dummy=true \
       --experimental_builtins_bzl_path= \
+      --experimental_exec_config=//exec:dummy_exec_platforms.bzl%noop \
       &>"$TEST_log" || fail "bazel build failed"
   expect_log "dummy :: original value"
 
   # Using the builtins root that's bundled with bazel.
   bazel build --nobuild //pkg:BUILD --experimental_builtins_dummy=true \
       --experimental_builtins_bzl_path=%bundled% \
+      --experimental_exec_config=//exec:dummy_exec_platforms.bzl%noop \
       &>"$TEST_log" || fail "bazel build failed"
   # "overridden value" comes from the exports.bzl in production Bazel.
   expect_log "dummy :: overridden value"
@@ -120,6 +133,7 @@
   # running Bazel in its own source tree.
   bazel build --nobuild //pkg:BUILD --experimental_builtins_dummy=true \
       --experimental_builtins_bzl_path=%workspace% \
+      --experimental_exec_config=//exec:dummy_exec_platforms.bzl%noop \
       &>"$TEST_log" || fail "bazel build failed"
   expect_log "dummy :: workspace value"
 
@@ -127,6 +141,7 @@
   # workspace, though this one is.)
   bazel build --nobuild //pkg:BUILD --experimental_builtins_dummy=true \
       --experimental_builtins_bzl_path=alternate \
+      --experimental_exec_config=//exec:dummy_exec_platforms.bzl%noop \
       &>"$TEST_log" || fail "bazel build failed"
   expect_log "dummy :: alternate value"
 
@@ -138,6 +153,7 @@
 EOF
   bazel build --nobuild //pkg:BUILD --experimental_builtins_dummy=true \
       --experimental_builtins_bzl_path=alternate \
+      --experimental_exec_config=//exec:dummy_exec_platforms.bzl%noop \
       &>"$TEST_log" || fail "bazel build failed"
   expect_log "dummy :: second alternate value"