Add additional testcases for D/F conflicts
Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren committed
Jul 9, 2010 at 07:10 UTC
f15652d90c37ca56db08d325c871f2cc8f7d509e
2 files changed
+84
-4
t/t6035-merge-dir-to-symlink.sh
+60
-4
@@ -48,7 +48,7 @@ test_expect_success 'setup for merge test' '
48
git tag baseline
49
'
50
51
-test_expect_success 'do not lose a/b-2/c/d in merge (resolve)' '
51
+test_expect_success 'Handle D/F conflict, do not lose a/b-2/c/d in merge (resolve)' '
52
git reset --hard &&
53
git checkout baseline^0 &&
54
git merge -s resolve master &&
@@ -56,7 +56,7 @@ test_expect_success 'do not lose a/b-2/c/d in merge (resolve)' '
56
test -f a/b-2/c/d
57
'
58
59
-test_expect_failure 'do not lose a/b-2/c/d in merge (recursive)' '
59
+test_expect_failure 'Handle D/F conflict, do not lose a/b-2/c/d in merge (recursive)' '
60
git reset --hard &&
61
git checkout baseline^0 &&
62
git merge -s recursive master &&
@@ -64,6 +64,54 @@ test_expect_failure 'do not lose a/b-2/c/d in merge (recursive)' '
64
test -f a/b-2/c/d
65
'
66
67
+test_expect_success 'Handle F/D conflict, do not lose a/b-2/c/d in merge (resolve)' '
68
+ git reset --hard &&
69
+ git checkout master^0 &&
70
+ git merge -s resolve baseline^0 &&
71
+ test -h a/b &&
72
+ test -f a/b-2/c/d
73
+'
74
+
75
+test_expect_failure 'Handle F/D conflict, do not lose a/b-2/c/d in merge (recursive)' '
76
+ git reset --hard &&
77
+ git checkout master^0 &&
78
+ git merge -s recursive baseline^0 &&
79
+ test -h a/b &&
80
+ test -f a/b-2/c/d
81
+'
82
+
83
+test_expect_failure 'do not lose untracked in merge (resolve)' '
84
+ git reset --hard &&
85
+ git checkout baseline^0 &&
86
+ >a/b/c/e &&
87
+ test_must_fail git merge -s resolve master &&
88
+ test -f a/b/c/e &&
89
+ test -f a/b-2/c/d
90
+'
91
+
92
+test_expect_success 'do not lose untracked in merge (recursive)' '
93
+ git reset --hard &&
94
+ git checkout baseline^0 &&
95
+ >a/b/c/e &&
96
+ test_must_fail git merge -s recursive master &&
97
+ test -f a/b/c/e &&
98
+ test -f a/b-2/c/d
99
+'
100
+
101
+test_expect_success 'do not lose modifications in merge (resolve)' '
102
+ git reset --hard &&
103
+ git checkout baseline^0 &&
104
+ echo more content >>a/b/c/d &&
105
+ test_must_fail git merge -s resolve master
106
+'
107
+
108
+test_expect_success 'do not lose modifications in merge (recursive)' '
109
+ git reset --hard &&
110
+ git checkout baseline^0 &&
111
+ echo more content >>a/b/c/d &&
112
+ test_must_fail git merge -s recursive master
113
+'
114
+
115
test_expect_success 'setup a merge where dir a/b-2 changed to symlink' '
116
git reset --hard &&
117
git checkout start^0 &&
@@ -74,7 +122,7 @@ test_expect_success 'setup a merge where dir a/b-2 changed to symlink' '
122
git tag test2
123
'
124
77
-test_expect_success 'merge should not have conflicts (resolve)' '
125
+test_expect_success 'merge should not have D/F conflicts (resolve)' '
126
git reset --hard &&
127
git checkout baseline^0 &&
128
git merge -s resolve test2 &&
@@ -82,7 +130,7 @@ test_expect_success 'merge should not have conflicts (resolve)' '
130
test -f a/b/c/d
131
'
132
85
-test_expect_failure 'merge should not have conflicts (recursive)' '
133
+test_expect_failure 'merge should not have D/F conflicts (recursive)' '
134
git reset --hard &&
135
git checkout baseline^0 &&
136
git merge -s recursive test2 &&
@@ -90,4 +138,12 @@ test_expect_failure 'merge should not have conflicts (recursive)' '
138
test -f a/b/c/d
139
'
140
141
+test_expect_failure 'merge should not have F/D conflicts (recursive)' '
142
+ git reset --hard &&
143
+ git checkout -b foo test2 &&
144
+ git merge -s recursive baseline^0 &&
145
+ test -h a/b-2 &&
146
+ test -f a/b/c/d
147
+'
148
+
149
test_done
t/t9350-fast-export.sh
+24
@@ -376,4 +376,28 @@ test_expect_success 'tree_tag-obj' 'git fast-export tree_tag-obj'
376
test_expect_success 'tag-obj_tag' 'git fast-export tag-obj_tag'
377
test_expect_success 'tag-obj_tag-obj' 'git fast-export tag-obj_tag-obj'
378
379
+test_expect_failure 'directory becomes symlink' '
380
+ git init dirtosymlink &&
381
+ git init result &&
382
+ (
383
+ cd dirtosymlink &&
384
+ mkdir foo &&
385
+ mkdir bar &&
386
+ echo hello > foo/world &&
387
+ echo hello > bar/world &&
388
+ git add foo/world bar/world &&
389
+ git commit -q -mone &&
390
+ git rm -r foo &&
391
+ ln -s bar foo &&
392
+ git add foo &&
393
+ git commit -q -mtwo
394
+ ) &&
395
+ (
396
+ cd dirtosymlink &&
397
+ git fast-export master -- foo |
398
+ (cd ../result && git fast-import --quiet)
399
+ ) &&
400
+ (cd result && git show master:foo)
401
+'
402
+
403
test_done