From 08968ed56a0d5ff7f983edc7f5ebbfe85a72b8e0 Mon Sep 17 00:00:00 2001 From: Laszlo Csomor Date: Mon, 13 Aug 2018 00:30:57 -0700 Subject: Windows,tests: port configured_query_test //src/test/shell/integration:configured_query_test now runs on Windows. See https://github.com/bazelbuild/bazel/issues/4292 Change-Id: I51990b2b1d675dabb4d9e82bbaf6c8c0f26c4baf Closes #5845. Change-Id: I51990b2b1d675dabb4d9e82bbaf6c8c0f26c4baf PiperOrigin-RevId: 208438117 --- src/test/shell/integration/BUILD | 6 +- .../shell/integration/configured_query_test.sh | 131 +++++++++++++-------- 2 files changed, 87 insertions(+), 50 deletions(-) diff --git a/src/test/shell/integration/BUILD b/src/test/shell/integration/BUILD index 0fd692a230..4b3b7f28f2 100644 --- a/src/test/shell/integration/BUILD +++ b/src/test/shell/integration/BUILD @@ -175,8 +175,10 @@ sh_test( name = "configured_query_test", size = "large", srcs = ["configured_query_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/configured_query_test.sh b/src/test/shell/integration/configured_query_test.sh index 1c53641387..df1b5eea91 100755 --- a/src/test/shell/integration/configured_query_test.sh +++ b/src/test/shell/integration/configured_query_test.sh @@ -18,33 +18,68 @@ # This tests the command line ui of configured query while # ConfiguredTargetQueryTest tests its internal functionality. -# 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 --- +# Copy-pasted from Bazel's Bash runfiles library (tools/bash/runfiles/runfiles.bash). +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; } +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="*" +fi + add_to_bazelrc "build --package_path=%workspace%" #### TESTS ############################################################# function test_basic_query() { - rm -rf maple - mkdir -p maple - cat > maple/BUILD < $pkg/BUILD < output 2>"$TEST_log" || fail "Expected success" + bazel cquery "deps(//$pkg:maple)" > output 2>"$TEST_log" || fail "Expected success" - assert_contains "//maple:maple" output - assert_contains "//maple:japanese" output + assert_contains "//$pkg:maple" output + assert_contains "//$pkg:japanese" output } function test_respects_selects() { - rm -rf ash - mkdir -p ash - cat > ash/BUILD < $pkg/BUILD < output \ + bazel cquery "deps(//$pkg:ash)" --define species=excelsior > output \ 2>"$TEST_log" || fail "Excepted success" - assert_contains "//ash:foo" output - assert_not_contains "//ash:bar" output + assert_contains "//$pkg:foo" output + assert_not_contains "//$pkg:bar" output } function test_empty_results_printed() { - rm -rf redwood - mkdir -p redwood - cat > redwood/BUILD < $pkg/BUILD < output 2>"$TEST_log" || fail "Expected success" expect_log "INFO: Empty query results" - assert_not_contains "//redwood:sequoiadendreon" output + assert_not_contains "//$pkg:sequoiadendron" output } function test_universe_scope_specified() { - write_java_library_build + local -r pkg=$FUNCNAME + write_java_library_build $pkg # The java_library rule has a host transition on its plugins attribute. - bazel cquery //pine:dep+//pine:plugin --universe_scope=//pine:my_java \ + bazel cquery //$pkg:dep+//$pkg:plugin --universe_scope=//$pkg:my_java \ > output 2>"$TEST_log" || fail "Excepted success" - # Find the lines of output for //pine:plugin and //pine:dep. - PINE_HOST=$(grep "//pine:plugin" output) - PINE_TARGET=$(grep "//pine:dep" output) + # Find the lines of output for //$pkg:plugin and //$pkg:dep. + PKG_HOST=$(grep "//$pkg:plugin" output) + PKG_TARGET=$(grep "//$pkg:dep" output) # Trim to just configurations. - HOST_CONFIG=${PINE_HOST/"//pine:plugin"} - TARGET_CONFIG=${PINE_TARGET/"//pine:dep"} + HOST_CONFIG=${PKG_HOST/"//$pkg:plugin"} + TARGET_CONFIG=${PKG_TARGET/"//$pkg:dep"} # Ensure they are are not equal. assert_not_equals $HOST_CONFIG $TARGET_CONFIG } function test_host_config_output() { - write_java_library_build + local -r pkg=$FUNCNAME + write_java_library_build $pkg - bazel cquery //pine:plugin --universe_scope=//pine:my_java \ - > output 2>"$TEST_log" || fail "Excepted success" + bazel cquery //$pkg:plugin --universe_scope=//$pkg:my_java \ + > output 2>"$TEST_log" || fail "Excepted success" - assert_contains "//pine:plugin (HOST)" output + assert_contains "//$pkg:plugin (HOST)" output } function test_transitions_lite() { - write_java_library_build + local -r pkg=$FUNCNAME + write_java_library_build $pkg - bazel cquery "deps(//pine:my_java)" --transitions=lite \ - > output 2>"$TEST_log" || fail "Excepted success" + bazel cquery "deps(//$pkg:my_java)" --transitions=lite \ + > output 2>"$TEST_log" || fail "Excepted success" - assert_contains "//pine:my_java" output - assert_contains "plugins#//pine:plugin#HostTransition" output + assert_contains "//$pkg:my_java" output + assert_contains "plugins#//$pkg:plugin#HostTransition" output } function test_transitions_full() { - write_java_library_build + local -r pkg=$FUNCNAME + write_java_library_build $pkg - bazel cquery "deps(//pine:my_java)" --transitions=full \ - > output 2>"$TEST_log" || fail "Excepted success" + bazel cquery "deps(//$pkg:my_java)" --transitions=full \ + > output 2>"$TEST_log" || fail "Excepted success" - assert_contains "//pine:my_java" output - assert_contains "plugins#//pine:plugin#HostTransition" output + assert_contains "//$pkg:my_java" output + assert_contains "plugins#//$pkg:plugin#HostTransition" output } function write_java_library_build() { - rm -rf pine - mkdir -p pine - cat > pine/BUILD < $pkg/BUILD <