diff options
author | 2018-02-09 03:13:28 -0800 | |
---|---|---|
committer | 2018-02-09 03:15:00 -0800 | |
commit | 157caed02ef354447f673c89c6a0e296bae5341c (patch) | |
tree | ba62c2882dd37371806e1c2112b9934c87b3a4b6 /src/test/shell/bazel/external_integration_test.sh | |
parent | 1d46d62baf83ec90a04ff195094f92c92593793b (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-x | src/test/shell/bazel/external_integration_test.sh | 73 |
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. |