#!/bin/sh setglobal test_description = ''git rebase --whitespace=fix This test runs git rebase --whitespace=fix and make sure that it works. '' source ./test-lib.sh # prepare initial revision of "file" with a blank line at the end cat >file << """ a b c """ # expected contents in "file" after rebase cat >expect-first << """ a b c """ # prepare second revision of "file" cat >second << """ a b c d e f """ # expected contents in second revision after rebase cat >expect-second << """ a b c d e f """ 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 << """ a b c d e f Z Z h i j k l """ sed -e's/ //g' 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 << """ a Z Z """ cat >expect-beginning << """ a 1 2 3 4 5 """ 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