diff options
author | Laszlo Csomor <laszlocsomor@google.com> | 2018-08-13 08:31:31 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-08-13 08:33:23 -0700 |
commit | 6ab4e16b89aca166fdee85628e264eb6ca5288af (patch) | |
tree | ffdb4ce2023fdea0dd04ef70cd4caa4e066ae0d8 | |
parent | d73e5902d877c94d9a13de27e1dc09bb45da4e72 (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/BUILD | 6 | ||||
-rwxr-xr-x | src/test/shell/integration/cpp_test.sh | 104 |
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" |