Merge branch 'rr/needs-clean-work-tree' into next
[git] / t / t3417-rebase-whitespace-fix.sh
1 #!/bin/sh
2
3 test_description='git rebase --whitespace=fix
4
5 This test runs git rebase --whitespace=fix and make sure that it works.
6 '
7
8 . ./test-lib.sh
9
10 # prepare initial revision of "file" with a blank line at the end
11 cat >file <<EOF
12 a
13 b
14 c
15
16 EOF
17
18 # expected contents in "file" after rebase
19 cat >expect-first <<EOF
20 a
21 b
22 c
23 EOF
24
25 # prepare second revision of "file"
26 cat >second <<EOF
27 a
28 b
29 c
30
31 d
32 e
33 f
34
35
36
37
38 EOF
39
40 # expected contents in second revision after rebase
41 cat >expect-second <<EOF
42 a
43 b
44 c
45
46 d
47 e
48 f
49 EOF
50
51 test_expect_success 'blank line at end of file; extend at end of file' '
52         git commit --allow-empty -m "Initial empty commit" &&
53         git add file && git commit -m first &&
54         mv second file &&
55         git add file && git commit -m second &&
56         git rebase --whitespace=fix HEAD^^ &&
57         git diff --exit-code HEAD^:file expect-first &&
58         test_cmp file expect-second
59 '
60
61 # prepare third revision of "file"
62 sed -e's/Z//' >third <<EOF
63 a
64 b
65 c
66
67 d
68 e
69 f
70     Z
71  Z
72 h
73 i
74 j
75 k
76 l
77 EOF
78
79 sed -e's/ //g' <third >expect-third
80
81 test_expect_success 'two blanks line at end of file; extend at end of file' '
82         cp third file && git add file && git commit -m third &&
83         git rebase --whitespace=fix HEAD^^ &&
84         git diff --exit-code HEAD^:file expect-second &&
85         test_cmp file expect-third
86 '
87
88 test_expect_success 'same, but do not remove trailing spaces' '
89         git config core.whitespace "-blank-at-eol" &&
90         git reset --hard HEAD^ &&
91         cp third file && git add file && git commit -m third &&
92         git rebase --whitespace=fix HEAD^^ &&
93         git diff --exit-code HEAD^:file expect-second &&
94         test_cmp file third
95 '
96
97 sed -e's/Z//' >beginning <<EOF
98 a
99                     Z
100        Z
101 EOF
102
103 cat >expect-beginning <<EOF
104 a
105
106
107 1
108 2
109 3
110 4
111 5
112 EOF
113
114 test_expect_success 'at beginning of file' '
115         git config core.whitespace "blank-at-eol" &&
116         cp beginning file &&
117         git commit -m beginning file &&
118         for i in 1 2 3 4 5; do
119                 echo $i
120         done >> file &&
121         git commit -m more file &&
122         git rebase --whitespace=fix HEAD^^ &&
123         test_cmp file expect-beginning
124 '
125
126 test_done