aboutsummaryrefslogtreecommitdiffhomepage
path: root/examples/shell/test.sh
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2018-06-27 08:29:32 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-27 08:31:00 -0700
commitc334bce728c7898559c2492a72f0c88184ba7548 (patch)
tree0301e5011649bfb0a8a74fbb04cc59321c463b3a /examples/shell/test.sh
parentdb9afe745e855e03aea69a00457bab7aa4a80b5d (diff)
Windows,examples: //examples/shell now works
The targets in //examples/shell:* now use the Bash runfiles library in @bazel_tools//tools/bash/runfiles and work on Windows. Also undef the RUNFILES_* envvars in bazel_example_test::test_shell (which builds the shell example project) so that the runfiles library discovers its own runfiles instead of trying (and failing) to use the enclosing test's runfiles (which it shouldn't use, because the test executes "bazel run //examples/shell:bin" so that target's runfiles are independent of the enclosing test's runfiles). Fixes https://github.com/bazelbuild/bazel/issues/3839 Closes #5480. Change-Id: I44f9bf9b11f7fac0e1c0995a44c2336846dc2bc8 PiperOrigin-RevId: 202313105
Diffstat (limited to 'examples/shell/test.sh')
-rwxr-xr-xexamples/shell/test.sh30
1 files changed, 23 insertions, 7 deletions
diff --git a/examples/shell/test.sh b/examples/shell/test.sh
index 6b7ba90e37..b4c7bf821b 100755
--- a/examples/shell/test.sh
+++ b/examples/shell/test.sh
@@ -14,17 +14,33 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-set -eu
+set -euo pipefail
+# --- begin runfiles.bash initialization ---
+if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
+ if [[ -f "$0.runfiles_manifest" ]]; then
+ export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest"
+ elif [[ -f "$0.runfiles/MANIFEST" ]]; then
+ export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST"
+ elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
+ export RUNFILES_DIR="$0.runfiles"
+ fi
+fi
+if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
+ source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash"
+elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
+ source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \
+ "$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)"
+else
+ echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash"
+ exit 1
+fi
+# --- end runfiles.bash initialization ---
-# This allows RUNFILES to be declared outside the script it you want.
-# RUNFILES for test is the directory of the script.
-RUNFILES=${RUNFILES:-$($(cd $(dirname ${BASH_SOURCE[0]})); pwd)}
-
-source "${RUNFILES}/examples/shell/lib.sh"
+source "$(rlocation io_bazel/examples/shell/lib.sh)"
function test_output {
OUTPUT=$(showfile)
- EXPECTED_OUTPUT=$(cat "${RUNFILES}/examples/shell/data/test_file.txt")
+ EXPECTED_OUTPUT=$(cat "$(rlocation io_bazel/examples/shell/data/test_file.txt)")
if [ "${OUTPUT}" != "${EXPECTED_OUTPUT}" ]; then
# This would be a failure case.