Add a remote test for downloading remote outputs after benign re-execution. Add a test which showcases that change-pruning of `ActionExecutionValue` for identical outputs changing from local to remote would be problematic when only downloading top-level outputs. PiperOrigin-RevId: 438169208
diff --git a/src/test/shell/bazel/remote/remote_execution_test.sh b/src/test/shell/bazel/remote/remote_execution_test.sh index a1afb96..d2c0c99 100755 --- a/src/test/shell/bazel/remote/remote_execution_test.sh +++ b/src/test/shell/bazel/remote/remote_execution_test.sh
@@ -3389,6 +3389,40 @@ //a:consumer >& $TEST_log || fail "Failed to build without remote cache" } +function test_download_top_level_remote_execution_after_local_fetches_inputs() { + if [[ "$PLATFORM" == "darwin" ]]; then + # TODO(b/37355380): This test is disabled due to RemoteWorker not supporting + # setting SDKROOT and DEVELOPER_DIR appropriately, as is required of + # action executors in order to select the appropriate Xcode toolchain. + return 0 + fi + mkdir a + cat > a/BUILD <<'EOF' +genrule(name="dep", srcs=["not_used"], outs=["dep.c"], cmd="touch $@") +cc_library(name="foo", srcs=["dep.c"]) +EOF + echo hello > a/not_used + bazel build \ + --experimental_ui_debug_all_events \ + --remote_executor=grpc://localhost:"${worker_port}" \ + --remote_download_toplevel \ + --genrule_strategy=local \ + //a:dep >& "${TEST_log}" || fail "Expected success" + expect_log "START.*: \[.*\] Executing genrule //a:dep" + + echo there > a/not_used + # Local compilation requires now remote dep.c to successfully download. + bazel build \ + --experimental_ui_debug_all_events \ + --remote_executor=grpc://localhost:"${worker_port}" \ + --remote_download_toplevel \ + --genrule_strategy=remote \ + --strategy=CppCompile=local \ + //a:foo >& "${TEST_log}" || fail "Expected success" + + expect_log "START.*: \[.*\] Executing genrule //a:dep" +} + function test_uploader_respect_no_cache() { mkdir -p a cat > a/BUILD <<EOF