]>
Commit | Line | Data |
---|---|---|
d7eed8cb CC |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2010 Christian Couder | |
4 | # | |
5 | ||
6 | test_description='Tests to check that "reset" options follow a known table' | |
7 | ||
8 | . ./test-lib.sh | |
9 | ||
10 | ||
11 | test_expect_success 'creating initial commits' ' | |
12 | test_commit E file1 && | |
13 | test_commit D file1 && | |
14 | test_commit C file1 | |
15 | ' | |
16 | ||
17 | while read W1 I1 H1 T opt W2 I2 H2 | |
18 | do | |
19 | test_expect_success "check: $W1 $I1 $H1 $T --$opt $W2 $I2 $H2" ' | |
20 | git reset --hard C && | |
21 | if test "$I1" != "$H1" | |
22 | then | |
23 | echo "$I1" >file1 && | |
24 | git add file1 | |
25 | fi && | |
26 | if test "$W1" != "$I1" | |
27 | then | |
28 | echo "$W1" >file1 | |
29 | fi && | |
30 | if test "$W2" != "XXXXX" | |
31 | then | |
32 | git reset --$opt $T && | |
33 | test "$(cat file1)" = "$W2" && | |
34 | git checkout-index -f -- file1 && | |
35 | test "$(cat file1)" = "$I2" && | |
36 | git checkout -f HEAD -- file1 && | |
37 | test "$(cat file1)" = "$H2" | |
38 | else | |
39 | test_must_fail git reset --$opt $T | |
40 | fi | |
41 | ' | |
42 | done <<\EOF | |
43 | A B C D soft A B D | |
44 | A B C D mixed A D D | |
45 | A B C D hard D D D | |
46 | A B C D merge XXXXX | |
ffbc5dc2 | 47 | A B C D keep XXXXX |
d7eed8cb CC |
48 | A B C C soft A B C |
49 | A B C C mixed A C C | |
50 | A B C C hard C C C | |
51 | A B C C merge XXXXX | |
ffbc5dc2 | 52 | A B C C keep A C C |
d7eed8cb CC |
53 | B B C D soft B B D |
54 | B B C D mixed B D D | |
55 | B B C D hard D D D | |
56 | B B C D merge D D D | |
ffbc5dc2 | 57 | B B C D keep XXXXX |
d7eed8cb CC |
58 | B B C C soft B B C |
59 | B B C C mixed B C C | |
60 | B B C C hard C C C | |
61 | B B C C merge C C C | |
ffbc5dc2 | 62 | B B C C keep B C C |
d7eed8cb CC |
63 | B C C D soft B C D |
64 | B C C D mixed B D D | |
65 | B C C D hard D D D | |
66 | B C C D merge XXXXX | |
ffbc5dc2 | 67 | B C C D keep XXXXX |
d7eed8cb CC |
68 | B C C C soft B C C |
69 | B C C C mixed B C C | |
70 | B C C C hard C C C | |
71 | B C C C merge B C C | |
ffbc5dc2 | 72 | B C C C keep B C C |
d7eed8cb CC |
73 | EOF |
74 | ||
75 | test_expect_success 'setting up branches to test with unmerged entries' ' | |
76 | git reset --hard C && | |
77 | git branch branch1 && | |
78 | git branch branch2 && | |
79 | git checkout branch1 && | |
80 | test_commit B1 file1 && | |
81 | git checkout branch2 && | |
6f53c3b2 | 82 | test_commit B file1 |
d7eed8cb CC |
83 | ' |
84 | ||
85 | while read W1 I1 H1 T opt W2 I2 H2 | |
86 | do | |
87 | test_expect_success "check: $W1 $I1 $H1 $T --$opt $W2 $I2 $H2" ' | |
6f53c3b2 | 88 | git reset --hard B && |
d7eed8cb CC |
89 | test_must_fail git merge branch1 && |
90 | cat file1 >X_file1 && | |
91 | if test "$W2" != "XXXXX" | |
92 | then | |
93 | git reset --$opt $T && | |
94 | if test "$W2" = "X" | |
95 | then | |
96 | test_cmp file1 X_file1 | |
97 | else | |
98 | test "$(cat file1)" = "$W2" | |
99 | fi && | |
100 | git checkout-index -f -- file1 && | |
101 | test "$(cat file1)" = "$I2" && | |
102 | git checkout -f HEAD -- file1 && | |
103 | test "$(cat file1)" = "$H2" | |
104 | else | |
105 | test_must_fail git reset --$opt $T | |
106 | fi | |
107 | ' | |
108 | done <<\EOF | |
6f53c3b2 CC |
109 | X U B C soft XXXXX |
110 | X U B C mixed X C C | |
111 | X U B C hard C C C | |
112 | X U B C merge C C C | |
ffbc5dc2 | 113 | X U B C keep XXXXX |
6f53c3b2 CC |
114 | X U B B soft XXXXX |
115 | X U B B mixed X B B | |
116 | X U B B hard B B B | |
117 | X U B B merge B B B | |
812d2a3d | 118 | X U B B keep XXXXX |
d7eed8cb CC |
119 | EOF |
120 | ||
121 | test_done |