Christian Couder | d7eed8c | 2010-01-08 05:45:10 +0100 | [diff] [blame] | 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 |
Christian Couder | ffbc5dc | 2010-01-19 05:25:58 +0100 | [diff] [blame] | 47 | A B C D keep XXXXX |
Christian Couder | d7eed8c | 2010-01-08 05:45:10 +0100 | [diff] [blame] | 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 |
Christian Couder | ffbc5dc | 2010-01-19 05:25:58 +0100 | [diff] [blame] | 52 | A B C C keep A C C |
Christian Couder | d7eed8c | 2010-01-08 05:45:10 +0100 | [diff] [blame] | 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 |
Christian Couder | ffbc5dc | 2010-01-19 05:25:58 +0100 | [diff] [blame] | 57 | B B C D keep XXXXX |
Christian Couder | d7eed8c | 2010-01-08 05:45:10 +0100 | [diff] [blame] | 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 |
Christian Couder | ffbc5dc | 2010-01-19 05:25:58 +0100 | [diff] [blame] | 62 | B B C C keep B C C |
Christian Couder | d7eed8c | 2010-01-08 05:45:10 +0100 | [diff] [blame] | 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 |
Christian Couder | ffbc5dc | 2010-01-19 05:25:58 +0100 | [diff] [blame] | 67 | B C C D keep XXXXX |
Christian Couder | d7eed8c | 2010-01-08 05:45:10 +0100 | [diff] [blame] | 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 |
Christian Couder | ffbc5dc | 2010-01-19 05:25:58 +0100 | [diff] [blame] | 72 | B C C C keep B C C |
Christian Couder | d7eed8c | 2010-01-08 05:45:10 +0100 | [diff] [blame] | 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 && |
Christian Couder | 6f53c3b | 2010-01-16 10:20:26 +0100 | [diff] [blame] | 82 | test_commit B file1 |
Christian Couder | d7eed8c | 2010-01-08 05:45:10 +0100 | [diff] [blame] | 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" ' |
Christian Couder | 6f53c3b | 2010-01-16 10:20:26 +0100 | [diff] [blame] | 88 | git reset --hard B && |
Christian Couder | d7eed8c | 2010-01-08 05:45:10 +0100 | [diff] [blame] | 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 |
Christian Couder | 6f53c3b | 2010-01-16 10:20:26 +0100 | [diff] [blame] | 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 |
Christian Couder | ffbc5dc | 2010-01-19 05:25:58 +0100 | [diff] [blame] | 113 | X U B C keep XXXXX |
Christian Couder | 6f53c3b | 2010-01-16 10:20:26 +0100 | [diff] [blame] | 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 |
Christian Couder | 812d2a3 | 2010-01-19 05:26:01 +0100 | [diff] [blame] | 118 | X U B B keep XXXXX |
Christian Couder | d7eed8c | 2010-01-08 05:45:10 +0100 | [diff] [blame] | 119 | EOF |
| 120 | |
| 121 | test_done |