summaryrefslogtreecommitdiff
path: root/t/t3702-add-edit.sh
blob: f6285640051e5995189507e545269ec35e43b93d (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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/sh
#
# Copyright (c) 2007 Johannes E. Schindelin
#

test_description='add -e basic tests'

. ./test-lib.sh


cat > file << EOF
LO, praise of the prowess of people-kings
of spear-armed Danes, in days long sped,
we have heard, and what honor the athelings won!
Oft Scyld the Scefing from squadroned foes,
from many a tribe, the mead-bench tore,
awing the earls. Since erst he lay
friendless, a foundling, fate repaid him:
for he waxed under welkin, in wealth he throve,
till before him the folk, both far and near,
who house by the whale-path, heard his mandate,
gave him gifts:  a good king he!
EOF

cat > second-part << EOF
To him an heir was afterward born,
a son in his halls, whom heaven sent
to favor the folk, feeling their woe
that erst they had lacked an earl for leader
so long a while; the Lord endowed him,
the Wielder of Wonder, with world's renown.
EOF

test_expect_success 'setup' '

	git add file &&
	test_tick &&
	git commit -m initial file

'

cat > expected-patch << EOF
diff --git a/file b/file
--- a/file
+++ b/file
@@ -1,11 +1,6 @@
-LO, praise of the prowess of people-kings
-of spear-armed Danes, in days long sped,
-we have heard, and what honor the athelings won!
-Oft Scyld the Scefing from squadroned foes,
-from many a tribe, the mead-bench tore,
-awing the earls. Since erst he lay
-friendless, a foundling, fate repaid him:
-for he waxed under welkin, in wealth he throve,
-till before him the folk, both far and near,
-who house by the whale-path, heard his mandate,
-gave him gifts:  a good king he!
+To him an heir was afterward born,
+a son in his halls, whom heaven sent
+to favor the folk, feeling their woe
+that erst they had lacked an earl for leader
+so long a while; the Lord endowed him,
+the Wielder of Wonder, with world's renown.
EOF

cat > patch << EOF
diff --git a/file b/file
index b9834b5..ef6e94c 100644
--- a/file
+++ b/file
@@ -3,1 +3,333 @@ of spear-armed Danes, in days long sped,
 we have heard, and what honor the athelings won!
+
 Oft Scyld the Scefing from squadroned foes,
@@ -2,7 +1,5 @@ awing the earls. Since erst he lay
 friendless, a foundling, fate repaid him:
+
 for he waxed under welkin, in wealth he throve,
EOF

cat > expected << EOF
diff --git a/file b/file
--- a/file
+++ b/file
@@ -1,10 +1,12 @@
 LO, praise of the prowess of people-kings
 of spear-armed Danes, in days long sped,
 we have heard, and what honor the athelings won!
+
 Oft Scyld the Scefing from squadroned foes,
 from many a tribe, the mead-bench tore,
 awing the earls. Since erst he lay
 friendless, a foundling, fate repaid him:
+
 for he waxed under welkin, in wealth he throve,
 till before him the folk, both far and near,
 who house by the whale-path, heard his mandate,
EOF

echo "#!$SHELL_PATH" >fake-editor.sh
cat >> fake-editor.sh <<\EOF
grep -E -v '^index' "$1" >orig-patch &&
mv -f patch "$1"
EOF

test_set_editor "$(pwd)/fake-editor.sh"
chmod a+x fake-editor.sh

test_expect_success 'add -e' '

	cp second-part file &&
	git add -e &&
	test_cmp second-part file &&
	test_cmp expected-patch orig-patch &&
	git diff --cached >actual &&
	grep -v index actual >out &&
	test_cmp expected out

'

test_expect_success 'add -e notices editor failure' '
	git reset --hard &&
	echo change >>file &&
	test_must_fail env GIT_EDITOR=false git add -e &&
	test_expect_code 1 git diff --exit-code
'
test_expect_success 'add -e works from a subdirectory' '
	git reset --hard &&
	echo change >>file &&
	mkdir -p subdir &&
	(
		cd subdir &&
		GIT_EDITOR=cat git add -e ../file
	) &&
	git diff --cached | grep -q "^+change"
'

test_done