#!/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 expect-second file ' # 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 expect-third file ' 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 expect-beginning file ' test_done