aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar Philipp Wollermann <philwo@google.com>2016-07-27 14:48:43 +0000
committerGravatar Adam Michael <ajmichael@google.com>2016-07-28 18:36:28 -0400
commite7cd933c441aa09810e365c0005f622cd317911a (patch)
tree6f0ddc57c5362113c2593e2fd18cc37feebcc9eb /src/test
parent974bbd92080ec47ebeef8fb99c6178cbf3fe7e1e (diff)
Start worker processes with a clean environment, instead of accidentally inheriting a copy of the server's environment.
-- MOS_MIGRATED_REVID=128584538
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/worker/ExampleWorker.java6
-rw-r--r--src/test/java/com/google/devtools/build/lib/worker/ExampleWorkerOptions.java7
-rwxr-xr-xsrc/test/shell/bazel/bazel_worker_test.sh19
3 files changed, 32 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/worker/ExampleWorker.java b/src/test/java/com/google/devtools/build/lib/worker/ExampleWorker.java
index 21c089c088..9c9c5a032e 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/ExampleWorker.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/ExampleWorker.java
@@ -159,6 +159,12 @@ public class ExampleWorker {
}
}
+ if (options.printEnv) {
+ for (Entry<String, String> entry : System.getenv().entrySet()) {
+ outputs.add(entry.getKey() + "=" + entry.getValue());
+ }
+ }
+
String outputStr = Joiner.on('\n').join(outputs);
if (options.outputFile.isEmpty()) {
System.out.println(outputStr);
diff --git a/src/test/java/com/google/devtools/build/lib/worker/ExampleWorkerOptions.java b/src/test/java/com/google/devtools/build/lib/worker/ExampleWorkerOptions.java
index 7456e4b331..4de906a2ea 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/ExampleWorkerOptions.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/ExampleWorkerOptions.java
@@ -51,6 +51,13 @@ public class ExampleWorkerOptions extends OptionsBase {
help = "Writes a list of input files and their digests."
)
public boolean printInputs;
+
+ @Option(
+ name = "print_env",
+ defaultValue = "false",
+ help = "Prints a list of all environment variables."
+ )
+ public boolean printEnv;
}
@Option(name = "persistent_worker", defaultValue = "false")
diff --git a/src/test/shell/bazel/bazel_worker_test.sh b/src/test/shell/bazel/bazel_worker_test.sh
index 91e2749230..130da344e5 100755
--- a/src/test/shell/bazel/bazel_worker_test.sh
+++ b/src/test/shell/bazel/bazel_worker_test.sh
@@ -434,4 +434,23 @@ EOF
|| fail "Worker did not produce output"
}
+function test_environment_is_clean() {
+ prepare_example_worker
+ cat >>BUILD <<'EOF'
+work(
+ name = "hello_world",
+ worker = ":worker",
+ args = ["--print_env"],
+)
+EOF
+
+ bazel shutdown &> $TEST_log \
+ || fail "shutdown failed"
+ CAKE=LIE bazel build --worker_verbose --strategy=Work=worker --worker_max_instances=1 --worker_quit_after_build :hello_world &> $TEST_log \
+ || fail "build failed"
+
+ fgrep CAKE=LIE bazel-bin/hello_world.out \
+ && fail "environment variable leaked into worker env" || true
+}
+
run_suite "Worker integration tests"