Allow negation of log file paths
Previously when passing `experimental_execution_log_file`, you could pass a second empty version of this like `--experimental_execution_log_file=` to negate previous callers. This broke recently and the replacement flags didn't support this behavior. Now this is supported for all the related flags.
Fixes: https://github.com/bazelbuild/bazel/issues/8393
Closes #8428.
PiperOrigin-RevId: 249638447
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/SpawnLogModule.java b/src/main/java/com/google/devtools/build/lib/bazel/SpawnLogModule.java
index dea75cf..237481e 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/SpawnLogModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/SpawnLogModule.java
@@ -73,7 +73,8 @@
FileSystem fileSystem = env.getRuntime().getFileSystem();
Path workingDirectory = env.getWorkingDirectory();
- if (executionOptions.executionLogBinaryFile != null) {
+ if (executionOptions.executionLogBinaryFile != null
+ && !executionOptions.executionLogBinaryFile.isEmpty()) {
outputStreams.addStream(
new BinaryOutputStreamWrapper(
workingDirectory
@@ -81,7 +82,8 @@
.getOutputStream()));
}
- if (executionOptions.executionLogJsonFile != null) {
+ if (executionOptions.executionLogJsonFile != null
+ && !executionOptions.executionLogJsonFile.isEmpty()) {
outputStreams.addStream(
new JsonOutputStreamWrapper(
workingDirectory
@@ -90,7 +92,7 @@
}
AsynchronousFileOutputStream outStream = null;
- if (executionOptions.executionLogFile != null) {
+ if (executionOptions.executionLogFile != null && !executionOptions.executionLogFile.isEmpty()) {
rawOutput = workingDirectory.getRelative(executionOptions.executionLogFile);
outStream =
new AsynchronousFileOutputStream(
diff --git a/src/test/shell/bazel/bazel_execlog_test.sh b/src/test/shell/bazel/bazel_execlog_test.sh
index 6dfbdc2..89b9e84 100755
--- a/src/test/shell/bazel/bazel_execlog_test.sh
+++ b/src/test/shell/bazel/bazel_execlog_test.sh
@@ -119,4 +119,28 @@
wc output || fail "no output produced"
}
+function test_negating_flags() {
+ cat > BUILD <<'EOF'
+genrule(
+ name = "rule",
+ outs = ["out.txt"],
+ cmd = "echo hello > $(location out.txt)"
+)
+EOF
+ bazel build //:all --experimental_execution_log_file=output --experimental_execution_log_file= 2>&1 >> $TEST_log || fail "could not build"
+ if [[ -e output ]]; then
+ fail "file shouldn't exist"
+ fi
+
+ bazel build //:all --execution_log_json_file=output --execution_log_json_file= 2>&1 >> $TEST_log || fail "could not build"
+ if [[ -e output ]]; then
+ fail "file shouldn't exist"
+ fi
+
+ bazel build //:all --execution_log_binary_file=output --execution_log_binary_file= 2>&1 >> $TEST_log || fail "could not build"
+ if [[ -e output ]]; then
+ fail "file shouldn't exist"
+ fi
+}
+
run_suite "execlog_tests"