-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
t3417: Add test cases for "rebase --whitespace=fix"
The command "git rebase --whitespace=fix HEAD~<N>" is supposed to only clean up trailing whitespace, and the expectation is that it cannot fail. Unfortunately, if one commit adds a blank line at the end of a file and a subsequent commit adds more non-blank lines after the blank line, "git apply" (used indirectly by "git rebase") will fail to apply the patch of the second commit. Signed-off-by: Björn Gustavsson <bgustavsson@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Björn Gustavsson
authored and
Junio C Hamano
committed
Mar 7, 2010
1 parent
c1376c1
commit 59f5ced
Showing
1 changed file
with
126 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
#!/bin/sh | ||
|
||
test_description='git rebase --whitespace=fix | ||
This test runs git rebase --whitespace=fix and make sure that it works. | ||
' | ||
|
||
. ./test-lib.sh | ||
|
||
# prepare initial revision of "file" with a blank line at the end | ||
cat >file <<EOF | ||
a | ||
b | ||
c | ||
EOF | ||
|
||
# expected contents in "file" after rebase | ||
cat >expect-first <<EOF | ||
a | ||
b | ||
c | ||
EOF | ||
|
||
# prepare second revision of "file" | ||
cat >second <<EOF | ||
a | ||
b | ||
c | ||
d | ||
e | ||
f | ||
EOF | ||
|
||
# expected contents in second revision after rebase | ||
cat >expect-second <<EOF | ||
a | ||
b | ||
c | ||
d | ||
e | ||
f | ||
EOF | ||
|
||
test_expect_success 'blank line at end of file; extend at end of file' ' | ||
git commit --allow-empty -m "Initial empty commit" && | ||
git add file && git commit -m first && | ||
mv second file && | ||
git add file && git commit -m second && | ||
git rebase --whitespace=fix HEAD^^ && | ||
git diff --exit-code HEAD^:file expect-first && | ||
test_cmp file expect-second | ||
' | ||
|
||
# prepare third revision of "file" | ||
sed -e's/Z//' >third <<EOF | ||
a | ||
b | ||
c | ||
d | ||
e | ||
f | ||
Z | ||
Z | ||
h | ||
i | ||
j | ||
k | ||
l | ||
EOF | ||
|
||
sed -e's/ //g' <third >expect-third | ||
|
||
test_expect_success 'two blanks line at end of file; extend at end of file' ' | ||
cp third file && git add file && git commit -m third && | ||
git rebase --whitespace=fix HEAD^^ && | ||
git diff --exit-code HEAD^:file expect-second && | ||
test_cmp file expect-third | ||
' | ||
|
||
test_expect_success 'same, but do not remove trailing spaces' ' | ||
git config core.whitespace "-blank-at-eol" && | ||
git reset --hard HEAD^ && | ||
cp third file && git add file && git commit -m third && | ||
git rebase --whitespace=fix HEAD^^ | ||
git diff --exit-code HEAD^:file expect-second && | ||
test_cmp file third | ||
' | ||
|
||
sed -e's/Z//' >beginning <<EOF | ||
a | ||
Z | ||
Z | ||
EOF | ||
|
||
cat >expect-beginning <<EOF | ||
a | ||
1 | ||
2 | ||
3 | ||
4 | ||
5 | ||
EOF | ||
|
||
test_expect_success 'at beginning of file' ' | ||
git config core.whitespace "blank-at-eol" && | ||
cp beginning file && | ||
git commit -m beginning file && | ||
for i in 1 2 3 4 5; do | ||
echo $i | ||
done >> file && | ||
git commit -m more file && | ||
git rebase --whitespace=fix HEAD^^ && | ||
test_cmp file expect-beginning | ||
' | ||
|
||
test_done |