aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2018-03-28 07:00:01 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-28 07:01:13 -0700
commitdad1c459a817c64ca22b8070cf1fdd0eb905716e (patch)
tree408b500ef01dfc57c5725301a039bf1f42417604
parentee2dcaecbe097ac0bbd51496159cc5a151a20575 (diff)
Add tests verifying the embedded skylark code
We suggest our users to regularly test their code base with --all_incompatible_chages to have time to adapt their code base to upcoming incompatible changes. When doing so, it is annoying if that breaks due to the Skylark code embedded in bazel not being ready for the upcoming incompatible changes. Therefore, add tests exercising the embedded code enabling all incompatible changes. This way, hopefully, changes like f1ad0e6df1528894b will come before the deprecation is added. Change-Id: Iea60ff6a4019db310d1f1a1ad6a7b2bb53101c6d PiperOrigin-RevId: 190766449
-rw-r--r--src/test/shell/bazel/BUILD7
-rwxr-xr-xsrc/test/shell/bazel/bazel_embedded_skylark_test.sh127
2 files changed, 134 insertions, 0 deletions
diff --git a/src/test/shell/bazel/BUILD b/src/test/shell/bazel/BUILD
index 889c76cdc6..d2c79390ad 100644
--- a/src/test/shell/bazel/BUILD
+++ b/src/test/shell/bazel/BUILD
@@ -94,6 +94,13 @@ sh_test(
)
sh_test(
+ name = "bazel_embedded_skylark_test",
+ size = "medium",
+ srcs = ["bazel_embedded_skylark_test.sh"],
+ data = [":test-deps"],
+)
+
+sh_test(
name = "bazel_random_characters_test",
size = "large",
srcs = ["bazel_random_characters_test.sh"],
diff --git a/src/test/shell/bazel/bazel_embedded_skylark_test.sh b/src/test/shell/bazel/bazel_embedded_skylark_test.sh
new file mode 100755
index 0000000000..2960804d25
--- /dev/null
+++ b/src/test/shell/bazel/bazel_embedded_skylark_test.sh
@@ -0,0 +1,127 @@
+#!/bin/bash
+#
+# Copyright 2018 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# 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.
+#
+# Test that the embedded skylark code is compliant with --all_incompatible_changes.
+#
+
+# Load the test setup defined in the parent directory
+CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+source "${CURRENT_DIR}/../integration_test_setup.sh" \
+ || { echo "integration_test_setup.sh not found!" >&2; exit 1; }
+source "${CURRENT_DIR}/remote_helpers.sh" \
+ || { echo "remote_helpers.sh not found!" >&2; exit 1; }
+
+
+test_pkg_tar() {
+ mkdir main
+ cd main
+ touch WORKSPACE
+ echo Hello World > foo.txt
+ echo Hello World, again > bar.txt
+ cat > BUILD <<'EOF'
+load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
+
+pkg_tar(
+ name = "data",
+ srcs = glob(["*.txt"]),
+)
+EOF
+ bazel build --all_incompatible_changes ... \
+ || fail "Expect success, even with all upcoming Skylark changes"
+ grep -q 'Hello World' `bazel info bazel-bin`/data.tar \
+ || fail "Output not generated correctly"
+}
+
+test_http_archive() {
+ mkdir ext
+ cat > ext/foo.sh <<'EOF'
+#!/usr/bin/env sh
+
+echo Here be dragons...
+EOF
+ zip ext.zip ext/*
+ rm -rf ext
+
+ EXTREPODIR=`pwd`
+ mkdir main
+ cd main
+ cat > WORKSPACE <<EOF
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+http_archive(
+ name="ext",
+ urls=["file://${EXTREPODIR}/ext.zip"],
+ strip_prefix="ext",
+ build_file_content="exports_files([\"foo.sh\"])",
+ patch_cmds = ["find . -name '*.sh' -exec sed -i.orig '1s|#!/usr/bin/env sh\$|/bin/sh\$|' {} +"],
+)
+EOF
+ cat > BUILD <<'EOF'
+genrule(
+ name = "foo",
+ outs = ["foo.sh"],
+ srcs = ["@ext//:foo.sh"],
+ cmd = "cp $< $@; chmod u+x $@",
+ executable = True,
+)
+EOF
+ bazel build --all_incompatible_changes :foo \
+ || fail "Expected to build even with incompatible changes"
+ bazel run :foo | grep -q dragons || fail "wrong output"
+}
+
+test_new_git_repository() {
+ EXTREPODIR=`pwd`
+ export GIT_CONFIG_NOSYSTEM=YES
+ mkdir extgit
+ (cd extgit && git init \
+ && git config user.email 'me@example.com' \
+ && git config user.name 'E X Ample' )
+ cat > extgit/foo.sh <<'EOF'
+#!/usr/bin/env sh
+
+echo Here be dragons...
+EOF
+ (cd extgit
+ git add .
+ git commit --author="A U Thor <author@example.com>" -m 'initial commit'
+ git tag mytag)
+
+ mkdir main
+ cd main
+ cat > WORKSPACE <<EOF
+load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository")
+new_git_repository(
+ name="ext",
+ remote="file://${EXTREPODIR}/extgit/.git",
+ tag="mytag",
+ build_file_content="exports_files([\"foo.sh\"])",
+)
+EOF
+ cat > BUILD <<'EOF'
+genrule(
+ name = "foo",
+ outs = ["foo.sh"],
+ srcs = ["@ext//:foo.sh"],
+ cmd = "cp $< $@; chmod u+x $@",
+ executable = True,
+)
+EOF
+ bazel build --all_incompatible_changes :foo \
+ || fail "Expected to build even with incompatible changes"
+ bazel run :foo | grep -q dragons || fail "wrong output"
+}
+
+run_suite "embedded skylark"