1#!/bin/sh
2#
3# Copyright (c) 2010 Stefan-W. Hahn
4#
5
6test_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
13cat >file1 <<\EOF
14line 1
15EOF
16
17cat >file1a <<\EOF
18line 1
19line 4
20EOF
21
22cat >file2 <<\EOF
23line 1
24line 2
25EOF
26
27cat >file3 <<\EOF
28line 1
29line 2
30line 3
31EOF
32
33test_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
44test_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
52test_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 | git am --keep-cr -k -3 &&
55 git diff --exit-code master
56'
57
58test_expect_success 'am with dos files config am.keepcr' '
59 git config am.keepcr 1 &&
60 git checkout -b dosfiles-conf-keepcr initial &&
61 git format-patch -k --stdout initial..master | git am -k -3 &&
62 git diff --exit-code master
63'
64
65test_expect_success 'am with dos files config am.keepcr overridden by --no-keep-cr' '
66 git config am.keepcr 1 &&
67 git checkout -b dosfiles-conf-keepcr-override initial &&
68 git format-patch -k initial..master &&
69 test_must_fail git am -k -3 --no-keep-cr 000*.patch &&
70 git am --abort &&
71 rm -rf .git/rebase-apply 000*.patch
72'
73
74test_expect_success 'am with dos files with --keep-cr continue' '
75 git checkout -b dosfiles-keep-cr-continue initial &&
76 git format-patch -k initial..master &&
77 append_cr <file1a >file &&
78 git commit -m "different patch" file &&
79 test_must_fail git am --keep-cr -k -3 000*.patch &&
80 append_cr <file2 >file &&
81 git add file &&
82 git am -3 --resolved &&
83 git diff --exit-code master
84'
85
86test_expect_success 'am with unix files config am.keepcr overridden by --no-keep-cr' '
87 git config am.keepcr 1 &&
88 git checkout -b unixfiles-conf-keepcr-override initial &&
89 cp -f file1 file &&
90 git commit -m "line ending to unix" file &&
91 git format-patch -k initial..master &&
92 git am -k -3 --no-keep-cr 000*.patch &&
93 git diff --exit-code -w master
94'
95
96test_done