diff options
author | Philipp Wollermann <philwo@google.com> | 2016-07-27 14:48:43 +0000 |
---|---|---|
committer | Adam Michael <ajmichael@google.com> | 2016-07-28 18:36:28 -0400 |
commit | e7cd933c441aa09810e365c0005f622cd317911a (patch) | |
tree | 6f0ddc57c5362113c2593e2fd18cc37feebcc9eb /src/test | |
parent | 974bbd92080ec47ebeef8fb99c6178cbf3fe7e1e (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')
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" |