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