diff options
author | 2018-03-06 01:26:40 -0800 | |
---|---|---|
committer | 2018-03-06 01:28:41 -0800 | |
commit | 993cd174f4415859a8e0e56f76b1dc46d3be68db (patch) | |
tree | 67ea3553a385880ea182089cc9def1d709f50f69 /src/test | |
parent | 7653a476e13c90c6726e01b0a6b275c35dd364db (diff) |
Re-evaluate workspace status when clientEnv changes
We pass the clientEnv to the workspace status command, and it may use
environment variables to influence status. We must therefore reevaluate
the workspace status command whenever the clientEnv changes.
Fixes #4222
Closes #4705.
PiperOrigin-RevId: 187988847
Diffstat (limited to 'src/test')
-rwxr-xr-x | src/test/shell/bazel/bazel_workspace_status_test.sh | 59 |
1 files changed, 52 insertions, 7 deletions
diff --git a/src/test/shell/bazel/bazel_workspace_status_test.sh b/src/test/shell/bazel/bazel_workspace_status_test.sh index 9d589efc08..508dabb905 100755 --- a/src/test/shell/bazel/bazel_workspace_status_test.sh +++ b/src/test/shell/bazel/bazel_workspace_status_test.sh @@ -48,7 +48,7 @@ EOF function test_workspace_status_parameters() { create_new_workspace - local cmd=$TEST_TMPDIR/status.sh + local cmd=`mktemp $TEST_TMPDIR/wsc-XXXXXXXX` cat > $cmd <<EOF #!/bin/bash @@ -74,7 +74,7 @@ EOF function test_workspace_status_cpp() { create_new_workspace - local cmd=$TEST_TMPDIR/status.sh + local cmd=`mktemp $TEST_TMPDIR/wsc-XXXXXXXX` cat > $cmd <<EOF #!/bin/bash @@ -135,13 +135,14 @@ EOF function test_stable_and_volatile_status() { create_new_workspace - cat >$TEST_TMPDIR/wsc.sh <<EOF + local wsc=`mktemp $TEST_TMPDIR/wsc-XXXXXXXX` + cat >$wsc <<EOF #!/bin/bash cat $TEST_TMPDIR/status EOF - chmod +x $TEST_TMPDIR/wsc.sh + chmod +x $wsc cat > BUILD <<'EOF' genrule( @@ -157,7 +158,7 @@ STABLE_NAME alice NUMBER 1 EOF - bazel build --workspace_status_command=$TEST_TMPDIR/wsc.sh --stamp //:a || fail "build failed" + bazel build --workspace_status_command=$wsc --stamp //:a || fail "build failed" assert_contains "STABLE_NAME alice" bazel-genfiles/ao assert_contains "NUMBER 1" bazel-genfiles/ao @@ -168,7 +169,7 @@ NUMBER 2 EOF # Changes to volatile fields should not result in a rebuild - bazel build --workspace_status_command=$TEST_TMPDIR/wsc.sh --stamp //:a || fail "build failed" + bazel build --workspace_status_command=$wsc --stamp //:a || fail "build failed" assert_contains "STABLE_NAME alice" bazel-genfiles/ao assert_contains "NUMBER 1" bazel-genfiles/ao @@ -178,10 +179,54 @@ NUMBER 3 EOF # Changes to stable fields should result in a rebuild - bazel build --workspace_status_command=$TEST_TMPDIR/wsc.sh --stamp //:a || fail "build failed" + bazel build --workspace_status_command=$wsc --stamp //:a || fail "build failed" assert_contains "STABLE_NAME bob" bazel-genfiles/ao assert_contains "NUMBER 3" bazel-genfiles/ao } +function test_env_var_in_workspace_status() { + create_new_workspace + local wsc=`mktemp $TEST_TMPDIR/wsc-XXXXXXXX` + cat >$wsc <<'EOF' +#!/bin/bash + +echo "STABLE_ENV" ${STABLE_VAR} +echo "VOLATILE_ENV" ${VOLATILE_VAR} +EOF + + chmod +x $wsc + + cat > BUILD <<'EOF' +genrule( + name = "a", + srcs = [], + outs = ["ao"], + cmd="(echo volatile; cat bazel-out/volatile-status.txt; echo; echo stable; cat bazel-out/stable-status.txt; echo) > $@", + stamp=1) +EOF + + STABLE_VAR=alice VOLATILE_VAR=one bazel build --workspace_status_command=$wsc --stamp //:a || fail "build failed" + assert_contains "STABLE_ENV alice" bazel-out/stable-status.txt + assert_contains "VOLATILE_ENV one" bazel-out/volatile-status.txt + assert_contains "STABLE_ENV alice" bazel-genfiles/ao + assert_contains "VOLATILE_ENV one" bazel-genfiles/ao + + # Changes to the env var should be reflected into the stable-status file, and thus trigger a rebuild + STABLE_VAR=bob VOLATILE_VAR=two bazel build --workspace_status_command=$wsc --stamp //:a || fail "build failed" + assert_contains "STABLE_ENV bob" bazel-out/stable-status.txt + assert_contains "VOLATILE_ENV two" bazel-out/volatile-status.txt + assert_contains "STABLE_ENV bob" bazel-genfiles/ao + assert_contains "VOLATILE_ENV two" bazel-genfiles/ao + + # Changes to volatile fields should not result in a rebuild (but should update the stable & volatile status files) + STABLE_VAR=bob VOLATILE_VAR=three bazel build --workspace_status_command=$wsc --stamp //:a || fail "build failed" + assert_contains "STABLE_ENV bob" bazel-out/stable-status.txt + assert_contains "VOLATILE_ENV three" bazel-out/volatile-status.txt + # We did not rebuild, so the output remains at the previous values + assert_contains "STABLE_ENV bob" bazel-genfiles/ao + assert_contains "VOLATILE_ENV two" bazel-genfiles/ao + +} + run_suite "workspace status tests" |