blob: 7970c4afcadccc996c1717efcb423adde92c97a1 [file] [log] [blame]
#!/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.
#
# Test the Skylark implementation of the maven_jar() rule.
# Load test environment
src=$(cd "$(dirname ${BASH_SOURCE[0]})" && pwd)
source $src/test-setup.sh \
|| { echo "test-setup.sh not found!" >&2; exit 1; }
source $src/remote_helpers.sh \
|| { echo "remote_helpers.sh not found!" >&2; exit 1; }
function setup_zoo() {
mkdir -p zoo
cat > zoo/BUILD <<EOF
java_binary(
name = "ball-pit",
srcs = ["BallPit.java"],
main_class = "BallPit",
deps = ["//external:mongoose"],
)
EOF
cat > zoo/BallPit.java <<EOF
import carnivore.Mongoose;
public class BallPit {
public static void main(String args[]) {
Mongoose.frolic();
}
}
EOF
}
function tear_down() {
shutdown_server
}
function test_maven_jar_skylark() {
setup_zoo
version="1.21"
serve_artifact com.example.carnivore carnivore $version
cat > WORKSPACE <<EOF
load("@bazel_tools//tools/build_defs/repo:maven_rules.bzl", "maven_jar")
maven_jar(
name = 'endangered',
artifact = "com.example.carnivore:carnivore:$version",
repository = 'http://localhost:$fileserver_port/',
sha1 = '$sha1',
local_repository = "@m2//:BUILD",
)
# Make use of the pre-downloaded maven-dependency-plugin because there's no
# internet connection at this stage.
local_repository(
name = "m2",
path = "$TEST_SRCDIR/m2",
)
bind(name = 'mongoose', actual = '@endangered//jar')
EOF
bazel run //zoo:ball-pit >& $TEST_log || fail "Expected run to succeed"
expect_log "Tra-la!"
}
# Same as test_maven_jar, except omit sha1 implying "we don't care".
function test_maven_jar_no_sha1_skylark() {
setup_zoo
version="1.22"
serve_artifact com.example.carnivore carnivore $version
cat > WORKSPACE <<EOF
load("@bazel_tools//tools/build_defs/repo:maven_rules.bzl", "maven_jar")
maven_jar(
name = 'endangered',
artifact = "com.example.carnivore:carnivore:$version",
repository = 'http://localhost:$fileserver_port/',
local_repository = "@m2//:BUILD",
)
local_repository(
name = "m2",
path = "$TEST_SRCDIR/m2",
)
bind(name = 'mongoose', actual = '@endangered//jar')
EOF
bazel run //zoo:ball-pit >& $TEST_log || fail "Expected run to succeed"
expect_log "Tra-la!"
}
function test_maven_jar_404_skylark() {
setup_zoo
version="1.23"
serve_not_found
cat > WORKSPACE <<EOF
load("@bazel_tools//tools/build_defs/repo:maven_rules.bzl", "maven_jar")
maven_jar(
name = 'endangered',
artifact = "com.example.carnivore:carnivore:$version",
repository = 'http://localhost:$nc_port/',
local_repository = "@m2//:BUILD",
)
local_repository(
name = "m2",
path = "$TEST_SRCDIR/m2",
)
bind(name = 'mongoose', actual = '@endangered//jar')
EOF
bazel clean --expunge
bazel build //zoo:ball-pit >& $TEST_log && echo "Expected build to fail"
kill_nc
expect_log "Failed to fetch Maven dependency"
}
function test_maven_jar_mismatched_sha1_skylark() {
setup_zoo
version="1.24"
serve_artifact com.example.carnivore carnivore 1.24
wrong_sha1="0123456789012345678901234567890123456789"
cat > WORKSPACE <<EOF
load("@bazel_tools//tools/build_defs/repo:maven_rules.bzl", "maven_jar")
maven_jar(
name = 'endangered',
artifact = "com.example.carnivore:carnivore:1.24",
repository = 'http://localhost:$fileserver_port/',
sha1 = '$wrong_sha1',
local_repository = "@m2//:BUILD",
)
local_repository(
name = "m2",
path = "$TEST_SRCDIR/m2",
)
bind(name = 'mongoose', actual = '@endangered//jar')
EOF
bazel fetch //zoo:ball-pit >& $TEST_log && echo "Expected fetch to fail"
expect_log "has SHA-1 of $sha1, does not match expected SHA-1 ($wrong_sha1)"
}
function test_unimplemented_server_attr_skylark() {
setup_zoo
version="1.25"
serve_jar
cat > WORKSPACE <<EOF
load("@bazel_tools//tools/build_defs/repo:maven_rules.bzl", "maven_jar")
maven_jar(
name = 'endangered',
artifact = "com.example.carnivore:carnivore:$version",
server = "attr_not_implemented",
local_repository = "@m2//:BUILD"
)
local_repository(
name = "m2",
path = "$TEST_SRCDIR/m2",
)
bind(name = 'mongoose', actual = '@endangered//jar')
EOF
bazel build //zoo:ball-pit >& $TEST_log && echo "Expected build to fail"
kill_nc
expect_log "specifies a 'server' attribute which is currently not supported."
}
run_suite "maven skylark tests"