diff options
Diffstat (limited to 'src/test/shell')
-rwxr-xr-x | src/test/shell/bazel/external_patching_test.sh | 86 |
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. |