summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvery Pennarun <apenwarr@gmail.com>2009-04-26 17:43:53 -0400
committerAvery Pennarun <apenwarr@gmail.com>2009-04-26 17:43:53 -0400
commitfa16ab36ad014bcc03acc4313bb0918fb241b54d (patch)
treefaf35936bf26b3f7bf6d663ed4e142222c31a01a
parent49cf82288aac5f0dcb152e2d75cd340e48d9e760 (diff)
test.sh: make sure no commit changes more than one file at a time.
-rwxr-xr-xtest.sh34
1 files changed, 34 insertions, 0 deletions
diff --git a/test.sh b/test.sh
index 44d5da3f20..4e00b536d7 100755
--- a/test.sh
+++ b/test.sh
@@ -169,5 +169,39 @@ check_equal "$(git log --pretty=format:'%s' HEAD^2 | grep -i split)" ""
# meaningless to subproj since one side of the merge refers to the mainline)
check_equal "$(git log --pretty=format:'%s%n%b' HEAD^2 | grep 'git-subtree.*:')" ""
+# make sure no patch changes more than one file. The original set of commits
+# changed only one file each. A multi-file change would imply that we pruned
+# commits too aggressively.
+joincommits()
+{
+ echo "hello world"
+ commit=
+ all=
+ while read x y; do
+ echo "{$x}" >&2
+ if [ -z "$x" ]; then
+ continue
+ elif [ "$x" = "commit:" ]; then
+ if [ -n "$commit" ]; then
+ echo "$commit $all"
+ all=
+ fi
+ commit="$y"
+ else
+ all="$all $y"
+ fi
+ done
+ echo "$commit $all"
+}
+x=0
+git log --pretty=format:'commit: %H' | joincommits |
+( while read commit a b; do
+ echo "Verifying commit $commit"
+ check_equal "$b" ""
+ x=$(($x + 1))
+ done
+ check_equal $x 23
+) || exit 1
+
echo
echo 'ok'