diff options
author | John Cater <jcater@google.com> | 2016-11-11 01:52:02 +0000 |
---|---|---|
committer | Klaus Aehlig <aehlig@google.com> | 2016-11-11 10:05:07 +0000 |
commit | 0c0735a12f4491a2594bde7c6ac26c1a4d5b6bd9 (patch) | |
tree | 5307a07f987cdf526b1e897d19e406b96489c715 /src/test/shell | |
parent | 8b31ea61ae1dbfb4cf991bd5f26907b5c6e61793 (diff) |
Update package lookup to check for files named BUILD.bazel before files named
BUILD.
Fixes #552.
RELNOTES[NEW]: Packages are defined in BUILD.bazel as well as BUILD files.
--
MOS_MIGRATED_REVID=138828981
Diffstat (limited to 'src/test/shell')
-rw-r--r-- | src/test/shell/bazel/BUILD | 7 | ||||
-rwxr-xr-x | src/test/shell/bazel/build_files_test.sh | 91 |
2 files changed, 98 insertions, 0 deletions
diff --git a/src/test/shell/bazel/BUILD b/src/test/shell/bazel/BUILD index 3b268e2121..e24b174083 100644 --- a/src/test/shell/bazel/BUILD +++ b/src/test/shell/bazel/BUILD @@ -397,6 +397,13 @@ sh_test( data = [":test-deps"], ) +sh_test( + name = "build_files_test", + size = "medium", + srcs = ["build_files_test.sh"], + data = [":test-deps"], +) + test_suite( name = "all_tests", visibility = ["//visibility:public"], diff --git a/src/test/shell/bazel/build_files_test.sh b/src/test/shell/bazel/build_files_test.sh new file mode 100755 index 0000000000..c6756f5003 --- /dev/null +++ b/src/test/shell/bazel/build_files_test.sh @@ -0,0 +1,91 @@ +#!/bin/bash +# +# Copyright 2016 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. +# +# Tests the proper checking of BUILD and BUILD.bazel files. + +# 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; } + +function write_rule { + name=$1 + shift + srcs="" + for src in "$@"; do + srcs="\"$src\", $srcs" + done + + cat <<EOF +genrule( + name = "$name", + srcs = [ + $srcs + ], + outs = ["$name.out"], + cmd = "echo $name > \$@", + visibility = ["//visibility:public"], +) +EOF +} + +# Only a BUILD file is present: sees rules in BUILD. +function test_build_only { + create_new_workspace + write_rule build_only >> BUILD + + bazel build //:build_only >& $TEST_log || fail "build should succeed" +} + +# Only a BUILD.bazel file is present: sees rules in BUILD.bazel. +function test_build_bazel_only { + create_new_workspace + write_rule build_bazel_only >> BUILD.bazel + + bazel build //:build_bazel_only >& $TEST_log || fail "build should succeed" +} + +# BUILD and BUILD.bazel file is present: sees rules in BUILD.bazel. +function test_build_and_build_bazel { + create_new_workspace + write_rule build_only >> BUILD + write_rule build_bazel_only >> BUILD.bazel + + bazel build //:build_bazel_only >& $TEST_log || fail "build should succeed" + # This rule doesn't actually exist. + bazel build //:build_only >& $TEST_log && fail "build shouldn't succeed" + expect_log "no such target '//:build_only'" +} + +function test_multiple_package_roots { + # Create a main workspace with a BUILD.bazel file. + create_new_workspace + write_rule build_bazel_only > BUILD.bazel + + # Create an alternate package path with a BUILD file. + local other_root=$TEST_TMPDIR/other_root/${WORKSPACE_NAME} + mkdir -p $other_root + write_rule build_only > $other_root/BUILD + + add_to_bazelrc "build --package_path $other_root:." + bazel build //:build_only >& $TEST_log || fail "build should succeed" + # This rule doesn't actually exist. + bazel build //:build_bazel_only >& $TEST_log && fail "build shouldn't succeed" + expect_log "no such target '//:build_bazel_only'" +} + +run_suite "build files tests" + |