aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2018-07-27 08:36:50 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-27 08:38:07 -0700
commitaa761aec0554de2569d5eb839a8c2ff652f79af1 (patch)
tree288af66b6133158c8f521b0c843a22ab4f3d0bf9
parentf0d57711d474d4b7ef4de2ee813f3c42e73bc162 (diff)
Windows,tests: port python_test
//src/test/shell/integration:python_test now runs on Windows. See https://github.com/bazelbuild/bazel/issues/4292 Change-Id: Ie408ea55973a32fc5ee6e74f9bed5e3fa9f818b1 Closes #5684. Change-Id: Ie408ea55973a32fc5ee6e74f9bed5e3fa9f818b1 PiperOrigin-RevId: 206321651
-rw-r--r--src/test/shell/integration/BUILD7
-rwxr-xr-xsrc/test/shell/integration/python_test.sh47
2 files changed, 46 insertions, 8 deletions
diff --git a/src/test/shell/integration/BUILD b/src/test/shell/integration/BUILD
index 87d7ed51ec..69aa68f75c 100644
--- a/src/test/shell/integration/BUILD
+++ b/src/test/shell/integration/BUILD
@@ -32,6 +32,7 @@ sh_test(
data = [":test-deps"],
tags = [
"local",
+ # no_windows: this test exercises the symlink-based runfiles tree.
"no_windows",
],
)
@@ -40,8 +41,10 @@ sh_test(
name = "python_test",
size = "medium",
srcs = ["python_test.sh"],
- data = [":test-deps"],
- tags = ["no_windows"],
+ data = [
+ ":test-deps",
+ "@bazel_tools//tools/bash/runfiles",
+ ],
)
sh_test(
diff --git a/src/test/shell/integration/python_test.sh b/src/test/shell/integration/python_test.sh
index fc467d4008..bdf17f4a16 100755
--- a/src/test/shell/integration/python_test.sh
+++ b/src/test/shell/integration/python_test.sh
@@ -15,12 +15,47 @@
# limitations under the License.
#
-# Load the test setup defined in the parent directory
-CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-source "${CURRENT_DIR}/../integration_test_setup.sh" \
+# --- begin runfiles.bash initialization ---
+set -euo pipefail
+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 ---
+
+source "$(rlocation "io_bazel/src/test/shell/integration_test_setup.sh")" \
|| { echo "integration_test_setup.sh not found!" >&2; exit 1; }
-set -eu
+case "$(uname -s | tr [:upper:] [:lower:])" in
+msys*|mingw*|cygwin*)
+ declare -r is_windows=true
+ ;;
+*)
+ declare -r is_windows=false
+ ;;
+esac
+
+if "$is_windows"; then
+ export MSYS_NO_PATHCONV=1
+ export MSYS2_ARG_CONV_EXCL="*"
+ declare -r EXE_EXT=".exe"
+else
+ declare -r EXE_EXT=""
+fi
function test_python_binary_empty_files_in_runfiles_are_regular_files() {
mkdir -p test/mypackage
@@ -81,10 +116,10 @@ sh_binary(
)
EOF
bazel build --experimental_build_transitive_python_runfiles :sh-tool
- [ -d 'bazel-bin/py-tool.runfiles' ] || fail "py_binary runfiles tree not built"
+ [ -d "bazel-bin/py-tool${EXE_EXT}.runfiles" ] || fail "py_binary runfiles tree not built"
bazel clean
bazel build --noexperimental_build_transitive_python_runfiles :sh-tool
- [ ! -e 'bazel-bin/py-tool.runfiles' ] || fail "py_binary runfiles tree built"
+ [ ! -e "bazel-bin/py-tool${EXE_EXT}.runfiles" ] || fail "py_binary runfiles tree built"
}
run_suite "Tests for the Python rules"