aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/shell/bazel/external_integration_test.sh
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2018-02-09 03:13:28 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-09 03:15:00 -0800
commit157caed02ef354447f673c89c6a0e296bae5341c (patch)
treeba62c2882dd37371806e1c2112b9934c87b3a4b6 /src/test/shell/bazel/external_integration_test.sh
parent1d46d62baf83ec90a04ff195094f92c92593793b (diff)
experimental_repository_cache: support relative paths
...and interpret them relative to the workspace directory. Improves on #3516. In fact, fixes the original request of supporting relative paths. Change-Id: Ibbb6fd43179d589ad477427e47e26c773c7a04de PiperOrigin-RevId: 185121629
Diffstat (limited to 'src/test/shell/bazel/external_integration_test.sh')
-rwxr-xr-xsrc/test/shell/bazel/external_integration_test.sh73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/test/shell/bazel/external_integration_test.sh b/src/test/shell/bazel/external_integration_test.sh
index cc3b18a21b..0cbc64c2c7 100755
--- a/src/test/shell/bazel/external_integration_test.sh
+++ b/src/test/shell/bazel/external_integration_test.sh
@@ -1095,6 +1095,79 @@ EOF
expect_log '@ext//:foo'
}
+function test_repository_cache_relative_path() {
+ # Verify that --experimental_repository_cache works for query and caches soly
+ # based on the predicted hash, for a repository-cache location given as path
+ # relative to the WORKSPACE
+ WRKDIR=$(mktemp -d "${TEST_TMPDIR}/testXXXXXX")
+ cd "${WRKDIR}"
+ mkdir ext
+ cat > ext/BUILD <<'EOF'
+genrule(
+ name="foo",
+ outs=["foo.txt"],
+ cmd="echo Hello World > $@",
+)
+genrule(
+ name="bar",
+ outs=["bar.txt"],
+ srcs=[":foo"],
+ cmd="cp $< $@",
+)
+EOF
+ zip ext.zip ext/*
+ rm -rf ext
+ sha256=$(sha256sum ext.zip | head -c 64)
+
+ rm -rf cache
+ mkdir cache
+
+ rm -rf main
+ mkdir main
+ cd main
+ cat > WORKSPACE <<EOF
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+http_archive(
+ name="ext",
+ strip_prefix="ext",
+ urls=["file://${WRKDIR}/ext.zip"],
+ sha256="${sha256}",
+)
+EOF
+ # Use the external repository once to make sure it is cached.
+ bazel build --experimental_repository_cache="../cache" '@ext//:bar' \
+ || fail "expected sucess"
+
+ # Now "go offline" and clean local resources.
+ rm -f "${WRKDIR}/ext.zip"
+ bazel clean --expunge
+ bazel query 'deps("@ext//:bar")' && fail "Couldn't clean local cache" || :
+
+ # The value should still be available from the repository cache
+ bazel query 'deps("@ext//:bar")' \
+ --experimental_repository_cache="../cache" > "${TEST_log}" \
+ || fail "Expected success"
+ expect_log '@ext//:foo'
+
+ # Clean again.
+ bazel clean --expunge
+ # Even with a different source URL, the cache sould be consulted.
+
+ cat > WORKSPACE <<EOF
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+http_archive(
+ name="ext",
+ strip_prefix="ext",
+ urls=["http://doesnotexist.example.com/invalidpath/othername.zip"],
+ sha256="${sha256}",
+)
+EOF
+ bazel query 'deps("@ext//:bar")' \
+ --experimental_repository_cache="../cache" > "${TEST_log}" \
+ || fail "Expected success"
+ expect_log '@ext//:foo'
+}
+
function test_repository_cache() {
# Verify that --experimental_repository_cache works for query and caches soly
# based on the predicted hash.