summaryrefslogtreecommitdiff
path: root/t/t4253-am-keep-cr-dos.sh
blob: 0ee69d2a0c4e0d21c14290f166eebd563f81be7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/bin/sh
#
# Copyright (c) 2010 Stefan-W. Hahn
#

test_description='git-am mbox with dos line ending.

'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME

. ./test-lib.sh

# Three patches which will be added as files with dos line ending.

cat >file1 <<\EOF
line 1
EOF

cat >file1a <<\EOF
line 1
line 4
EOF

cat >file2 <<\EOF
line 1
line 2
EOF

cat >file3 <<\EOF
line 1
line 2
line 3
EOF

test_expect_success 'setup repository with dos files' '
	append_cr <file1 >file &&
	git add file &&
	git commit -m Initial &&
	git tag initial &&
	append_cr <file2 >file &&
	git commit -a -m Second &&
	append_cr <file3 >file &&
	git commit -a -m Third
'

test_expect_success 'am with dos files without --keep-cr' '
	git checkout -b dosfiles initial &&
	git format-patch -k initial..main &&
	test_must_fail git am -k -3 000*.patch &&
	git am --abort &&
	rm -rf .git/rebase-apply 000*.patch
'

test_expect_success 'am with dos files with --keep-cr' '
	git checkout -b dosfiles-keep-cr initial &&
	git format-patch -k --stdout initial..main >output &&
	git am --keep-cr -k -3 output &&
	git diff --exit-code main
'

test_expect_success 'am with dos files config am.keepcr' '
	git config am.keepcr 1 &&
	git checkout -b dosfiles-conf-keepcr initial &&
	git format-patch -k --stdout initial..main >output &&
	git am -k -3 output &&
	git diff --exit-code main
'

test_expect_success 'am with dos files config am.keepcr overridden by --no-keep-cr' '
	git config am.keepcr 1 &&
	git checkout -b dosfiles-conf-keepcr-override initial &&
	git format-patch -k initial..main &&
	test_must_fail git am -k -3 --no-keep-cr 000*.patch &&
	git am --abort &&
	rm -rf .git/rebase-apply 000*.patch
'

test_expect_success 'am with dos files with --keep-cr continue' '
	git checkout -b dosfiles-keep-cr-continue initial &&
	git format-patch -k initial..main &&
	append_cr <file1a >file &&
	git commit -m "different patch" file &&
	test_must_fail git am --keep-cr -k -3 000*.patch &&
	append_cr <file2 >file &&
	git add file &&
	git am -3 --resolved &&
	git diff --exit-code main
'

test_expect_success 'am with unix files config am.keepcr overridden by --no-keep-cr' '
	git config am.keepcr 1 &&
	git checkout -b unixfiles-conf-keepcr-override initial &&
	cp -f file1 file &&
	git commit -m "line ending to unix" file &&
	git format-patch -k initial..main &&
	git am -k -3 --no-keep-cr 000*.patch &&
	git diff --exit-code -w main
'

test_done