aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/shell
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2018-03-01 02:24:37 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-01 02:26:02 -0800
commitccd54bd00e9c63f880a67d35f89ac603c084db71 (patch)
treeeb9a8560226ccdab645b6f200ca7691a877d8813 /src/test/shell
parenta07419c8ace66ce3926466b1d53982286bb9bdba (diff)
Support patching of git repositories as well
By simply sharing the utility function. In this way, we get feature parity between git_repository and http_archive. Fixes #4676. Change-Id: I99b300e42b2f267d8d04fd965f09c24f3ae54f10 PiperOrigin-RevId: 187450644
Diffstat (limited to 'src/test/shell')
-rwxr-xr-xsrc/test/shell/bazel/external_patching_test.sh86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/test/shell/bazel/external_patching_test.sh b/src/test/shell/bazel/external_patching_test.sh
index fe5d4f2af8..820b85963b 100755
--- a/src/test/shell/bazel/external_patching_test.sh
+++ b/src/test/shell/bazel/external_patching_test.sh
@@ -110,6 +110,92 @@ EOF
grep -q 'env' $foopath || fail "expected unpatched file"
}
+test_patch_git() {
+ 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)
+
+ # Test that the patches attribute of git_repository is honored
+ mkdir main
+ cd main
+ cat > patch_foo.sh <<'EOF'
+--- foo.sh.orig 2018-01-15 10:39:20.183909147 +0100
++++ foo.sh 2018-01-15 10:43:35.331566052 +0100
+@@ -1,3 +1,3 @@
+ #!/usr/bin/env sh
+
+-echo Here be dragons...
++echo There are dragons...
+EOF
+ 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\"])",
+ patches = ["//:patch_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 :foo.sh
+ foopath=`bazel info bazel-genfiles`/foo.sh
+ grep -q 'There are' $foopath || fail "expected patch to be applied"
+ grep env $foopath && fail "expected patch commands to be executed" || :
+
+ # Verify that changes to the patch files trigger enough rebuilding
+ cat > patch_foo.sh <<'EOF'
+--- foo.sh.orig 2018-01-15 10:39:20.183909147 +0100
++++ foo.sh 2018-01-15 10:43:35.331566052 +0100
+@@ -1,3 +1,3 @@
+ #!/usr/bin/env sh
+
+-echo Here be dragons...
++echo completely differently patched
+EOF
+ bazel build :foo.sh
+ foopath=`bazel info bazel-genfiles`/foo.sh
+ grep -q 'differently patched' $foopath \
+ || fail "expected the new patch to be applied"
+
+ # Verify that changes to the patches attribute trigger enough rebuilding
+ 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
+ bazel build :foo.sh
+ foopath=`bazel info bazel-genfiles`/foo.sh
+ grep -q 'Here be' $foopath || fail "expected unpatched file"
+ grep -q 'env' $foopath || fail "expected unpatched file"
+}
+
test_override_buildfile() {
## Verify that the BUILD file of an external repository can be overriden
## via the http_archive rule.