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.
@@ -3389,6 +3389,40 @@ EOF
//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
