diff options
context:
space:
mode:
Diffstat (limited to 'tests/t0109-patch.sh')
-rwxr-xr-xtests/t0109-patch.sh49
1 file changed, 30 insertions, 19 deletions
diff --git a/tests/t0109-patch.sh b/tests/t0109-patch.sh
index ae4dc83..0982102 100755
--- a/tests/t0109-patch.sh
+++ b/tests/t0109-patch.sh
@@ -1,15 +1,22 @@
#!/bin/sh
-# The patch page serves a commit as a mail ready patch, so that a change read
-# from cgit can be fed straight to git am. The checks compare that output
-# against git format-patch for a single commit and for a range of them, once
-# the CGI headers have been stripped, which means the two have to agree line
-# for line. The last one sets max-patch-count so a range wider than the limit
-# comes back cut short.
+# The patch page serves mail ready patches, compared line for line against
+# git format-patch for a single commit and for a range, once the CGI headers
+# are stripped. The last check sets max-patch-count so a range wider than
+# the limit comes back cut short.
test_description='Check content on patch page'
. ./setup.sh
+# The signature sits on the second-to-last line, above the trailing blank.
+check_cgit_signature() {
+ tail -2 tmp | head -1 | grep "^cgit"
+}
+
+# The version the built binary signs its patches with.
+CGIT_VERSION=$(sed -n "s/CGIT_VERSION = //p" \
+ "$TEST_OUTPUT_DIRECTORY/../build/VERSION")
+
test_expect_success 'generate foo/patch' '
cgit_query "url=foo/patch" >tmp
'
@@ -27,26 +34,27 @@ test_expect_success 'find `Subject:` line' '
'
test_expect_success 'find `cgit` signature' '
- tail -2 tmp | head -1 | grep "^cgit"
+ check_cgit_signature
'
test_expect_success 'compare with output of git-format-patch(1)' '
- CGIT_VERSION=$(sed -n "s/CGIT_VERSION = //p" "$TEST_OUTPUT_DIRECTORY/../build/VERSION") &&
- git --git-dir="$PWD/repos/foo/.git" format-patch --subject-prefix="" --signature="cgit $CGIT_VERSION" --stdout HEAD^ >tmp2 &&
+ git --git-dir="$PWD/repos/foo/.git" format-patch --subject-prefix="" \
+ --signature="cgit $CGIT_VERSION" --stdout HEAD^ >tmp2 &&
strip_headers <tmp >tmp_ &&
test_cmp tmp_ tmp2
'
test_expect_success 'find initial commit' '
- root=$(git --git-dir="$PWD/repos/foo/.git" rev-list --max-parents=0 HEAD)
+ root=$(git --git-dir="$PWD/repos/foo/.git" \
+ rev-list --max-parents=0 HEAD)
'
test_expect_success 'generate patch for initial commit' '
cgit_query "url=foo/patch&id=$root" >tmp
'
-test_expect_success 'find `cgit` signature' '
- tail -2 tmp | head -1 | grep "^cgit"
+test_expect_success 'find `cgit` signature on the initial commit' '
+ check_cgit_signature
'
test_expect_success 'generate patches for multiple commits' '
@@ -55,13 +63,14 @@ test_expect_success 'generate patches for multiple commits' '
cgit_query "url=foo/patch&id=$id&id2=$id2" >tmp
'
-test_expect_success 'find `cgit` signature' '
- tail -2 tmp | head -1 | grep "^cgit"
+test_expect_success 'find `cgit` signature on the range' '
+ check_cgit_signature
'
-test_expect_success 'compare with output of git-format-patch(1)' '
- CGIT_VERSION=$(sed -n "s/CGIT_VERSION = //p" "$TEST_OUTPUT_DIRECTORY/../build/VERSION") &&
- git --git-dir="$PWD/repos/foo/.git" format-patch -N --subject-prefix="" --signature="cgit $CGIT_VERSION" --stdout HEAD~3..HEAD >tmp2 &&
+test_expect_success 'compare the range with git-format-patch(1)' '
+ git --git-dir="$PWD/repos/foo/.git" format-patch --subject-prefix="" \
+ -N --signature="cgit $CGIT_VERSION" --stdout \
+ HEAD~3..HEAD >tmp2 &&
strip_headers <tmp >tmp_ &&
test_cmp tmp_ tmp2
'
@@ -74,8 +83,10 @@ test_expect_success 'max-patch-count bounds a patch range' '
echo "repo.path=$PWD/repos/foo/.git"
} >patchcountrc &&
id=$(git --git-dir="$PWD/repos/foo/.git" rev-parse HEAD) &&
- root=$(git --git-dir="$PWD/repos/foo/.git" rev-list --max-parents=0 HEAD) &&
- CGIT_CONFIG="$PWD/patchcountrc" QUERY_STRING="url=foo/patch&id=$id&id2=$root" cgit >tmp &&
+ root=$(git --git-dir="$PWD/repos/foo/.git" \
+ rev-list --max-parents=0 HEAD) &&
+ CGIT_CONFIG="$PWD/patchcountrc" \
+ QUERY_STRING="url=foo/patch&id=$id&id2=$root" cgit >tmp &&
test $(grep -c "^From " tmp) -eq 2
'