aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2018-08-13 08:31:31 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-13 08:33:23 -0700
commit6ab4e16b89aca166fdee85628e264eb6ca5288af (patch)
treeffdb4ce2023fdea0dd04ef70cd4caa4e066ae0d8
parentd73e5902d877c94d9a13de27e1dc09bb45da4e72 (diff)
Windows,tests: port cpp_test
//src/test/shell/integration:cpp_test now runs on Windows. See https://github.com/bazelbuild/bazel/issues/4292 Change-Id: I7dd4ce2b5702e5853ee357ab4f2a728af7d3018d Closes #5874. Change-Id: I7dd4ce2b5702e5853ee357ab4f2a728af7d3018d PiperOrigin-RevId: 208484274
-rw-r--r--src/test/shell/integration/BUILD6
-rwxr-xr-xsrc/test/shell/integration/cpp_test.sh104
2 files changed, 73 insertions, 37 deletions
diff --git a/src/test/shell/integration/BUILD b/src/test/shell/integration/BUILD
index 4717180d16..66e8eb3688 100644
--- a/src/test/shell/integration/BUILD
+++ b/src/test/shell/integration/BUILD
@@ -270,8 +270,10 @@ sh_test(
name = "cpp_test",
size = "large",
srcs = ["cpp_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/cpp_test.sh b/src/test/shell/integration/cpp_test.sh
index bb7a8f693a..7c777e7eac 100755
--- a/src/test/shell/integration/cpp_test.sh
+++ b/src/test/shell/integration/cpp_test.sh
@@ -13,91 +13,125 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# 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 ---
+# 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; }
-#### SETUP #############################################################
+case "$(uname -s | tr [:upper:] [:lower:])" in
+msys*|mingw*|cygwin*)
+ declare -r is_windows=true
+ ;;
+*)
+ declare -r is_windows=false
+ ;;
+esac
-set -e
+if "$is_windows"; then
+ export MSYS_NO_PATHCONV=1
+ export MSYS2_ARG_CONV_EXCL="*"
+fi
#### TESTS #############################################################
function test_no_rebuild_on_irrelevant_header_change() {
- mkdir -p a
- cat > a/BUILD <<EOF
+ local -r pkg=$FUNCNAME
+ mkdir -p $pkg
+ cat > $pkg/BUILD <<EOF
cc_binary(name="a", srcs=["a.cc"], deps=["b"])
cc_library(name="b", srcs=["b1.h", "b2.h"])
EOF
- cat > a/a.cc <<EOF
-#include "a/b1.h"
+ cat > $pkg/a.cc <<EOF
+#include "$pkg/b1.h"
int main(void) {
return B_RETURN_VALUE;
}
EOF
- cat > a/b1.h <<EOF
+ cat > $pkg/b1.h <<EOF
#define B_RETURN_VALUE 31
EOF
- cat > a/b2.h <<EOF
+ cat > $pkg/b2.h <<EOF
=== BANANA ===
EOF
- bazel build //a || fail "build failed"
- echo "CHERRY" > a/b2.h
- bazel build //a >& $TEST_log || fail "build failed"
- expect_not_log "Compiling a/a.cc"
+ bazel build //$pkg:a || fail "build failed"
+ echo "CHERRY" > $pkg/b2.h
+ bazel build //$pkg:a >& $TEST_log || fail "build failed"
+ expect_not_log "Compiling $pkg/a.cc"
}
function test_new_header_is_required() {
- mkdir -p a
- cat > a/BUILD <<EOF
+ local -r pkg=$FUNCNAME
+ mkdir -p $pkg
+ cat > $pkg/BUILD <<EOF
cc_binary(name="a", srcs=["a.cc"], deps=[":b"])
cc_library(name="b", srcs=["b1.h", "b2.h"])
EOF
- cat > a/a.cc << EOF
-#include "a/b1.h"
+ cat > $pkg/a.cc << EOF
+#include "$pkg/b1.h"
int main(void) {
return B1;
}
EOF
- cat > a/b1.h <<EOF
+ cat > $pkg/b1.h <<EOF
#define B1 3
EOF
- cat > a/b2.h <<EOF
+ cat > $pkg/b2.h <<EOF
#define B2 4
EOF
- bazel build //a || fail "build failed"
- cat > a/a.cc << EOF
-#include "a/b1.h"
-#include "a/b2.h"
+ bazel build //$pkg:a || fail "build failed"
+ cat > $pkg/a.cc << EOF
+#include "$pkg/b1.h"
+#include "$pkg/b2.h"
int main(void) {
return B1 + B2;
}
EOF
- bazel build //a || fail "build failled"
+ bazel build //$pkg:a || fail "build failled"
}
function test_no_recompile_on_shutdown() {
- mkdir -p a
- cat > a/BUILD <<EOF
+ local -r pkg=$FUNCNAME
+ mkdir -p $pkg
+ cat > $pkg/BUILD <<EOF
cc_binary(name="a", srcs=["a.cc"], deps=["b"])
cc_library(name="b", includes=["."], hdrs=["b.h"])
EOF
- cat > a/a.cc <<EOF
+ cat > $pkg/a.cc <<EOF
#include "b.h"
int main(void) {
@@ -105,15 +139,15 @@ int main(void) {
}
EOF
- cat > a/b.h <<EOF
+ cat > $pkg/b.h <<EOF
#define B_RETURN_VALUE 31
EOF
- bazel build -s //a >& $TEST_log || fail "build failed"
- expect_log "Compiling a/a.cc"
+ bazel build -s //$pkg:a >& $TEST_log || fail "build failed"
+ expect_log "Compiling $pkg/a.cc"
bazel shutdown >& /dev/null || fail "query failed"
- bazel build -s //a >& $TEST_log || fail "build failed"
- expect_not_log "Compiling a/a.cc"
+ bazel build -s //$pkg:a >& $TEST_log || fail "build failed"
+ expect_not_log "Compiling $pkg/a.cc"
}
run_suite "Tests for Bazel's C++ rules"