Merge branch 'mt/test-lib-bundled-short-options'
[git] / t / t4253-am-keep-cr-dos.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2010 Stefan-W. Hahn
4 #
5
6 test_description='git-am mbox with dos line ending.
7
8 '
9 . ./test-lib.sh
10
11 # Three patches which will be added as files with dos line ending.
12
13 cat >file1 <<\EOF
14 line 1
15 EOF
16
17 cat >file1a <<\EOF
18 line 1
19 line 4
20 EOF
21
22 cat >file2 <<\EOF
23 line 1
24 line 2
25 EOF
26
27 cat >file3 <<\EOF
28 line 1
29 line 2
30 line 3
31 EOF
32
33 test_expect_success 'setup repository with dos files' '
34         append_cr <file1 >file &&
35         git add file &&
36         git commit -m Initial &&
37         git tag initial &&
38         append_cr <file2 >file &&
39         git commit -a -m Second &&
40         append_cr <file3 >file &&
41         git commit -a -m Third
42 '
43
44 test_expect_success 'am with dos files without --keep-cr' '
45         git checkout -b dosfiles initial &&
46         git format-patch -k initial..master &&
47         test_must_fail git am -k -3 000*.patch &&
48         git am --abort &&
49         rm -rf .git/rebase-apply 000*.patch
50 '
51
52 test_expect_success 'am with dos files with --keep-cr' '
53         git checkout -b dosfiles-keep-cr initial &&
54         git format-patch -k --stdout initial..master >output &&
55         git am --keep-cr -k -3 output &&
56         git diff --exit-code master
57 '
58
59 test_expect_success 'am with dos files config am.keepcr' '
60         git config am.keepcr 1 &&
61         git checkout -b dosfiles-conf-keepcr initial &&
62         git format-patch -k --stdout initial..master >output &&
63         git am -k -3 output &&
64         git diff --exit-code master
65 '
66
67 test_expect_success 'am with dos files config am.keepcr overridden by --no-keep-cr' '
68         git config am.keepcr 1 &&
69         git checkout -b dosfiles-conf-keepcr-override initial &&
70         git format-patch -k initial..master &&
71         test_must_fail git am -k -3 --no-keep-cr 000*.patch &&
72         git am --abort &&
73         rm -rf .git/rebase-apply 000*.patch
74 '
75
76 test_expect_success 'am with dos files with --keep-cr continue' '
77         git checkout -b dosfiles-keep-cr-continue initial &&
78         git format-patch -k initial..master &&
79         append_cr <file1a >file &&
80         git commit -m "different patch" file &&
81         test_must_fail git am --keep-cr -k -3 000*.patch &&
82         append_cr <file2 >file &&
83         git add file &&
84         git am -3 --resolved &&
85         git diff --exit-code master
86 '
87
88 test_expect_success 'am with unix files config am.keepcr overridden by --no-keep-cr' '
89         git config am.keepcr 1 &&
90         git checkout -b unixfiles-conf-keepcr-override initial &&
91         cp -f file1 file &&
92         git commit -m "line ending to unix" file &&
93         git format-patch -k initial..master &&
94         git am -k -3 --no-keep-cr 000*.patch &&
95         git diff --exit-code -w master
96 '
97
98 test_done