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 8. ./test-lib.sh 9 10 11test_expect_success 'creating initial commits'' 12 test_commit E file1 && 13 test_commit D file1 && 14 test_commit C file1 15' 16 17whileread W1 I1 H1 T opt W2 I2 H2 18do 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 ' 42done<<\EOF 43A B C D soft A B D 44A B C D mixed A D D 45A B C D hard D D D 46A B C D merge XXXXX 47A B C C soft A B C 48A B C C mixed A C C 49A B C C hard C C C 50A B C C merge XXXXX 51B B C D soft B B D 52B B C D mixed B D D 53B B C D hard D D D 54B B C D merge D D D 55B B C C soft B B C 56B B C C mixed B C C 57B B C C hard C C C 58B B C C merge C C C 59B C C D soft B C D 60B C C D mixed B D D 61B C C D hard D D D 62B C C D merge XXXXX 63B C C C soft B C C 64B C C C mixed B C C 65B C C C hard C C C 66B C C C merge B C C 67EOF 68 69test_expect_success 'setting up branches to test with unmerged entries'' 70 git reset --hard C && 71 git branch branch1 && 72 git branch branch2 && 73 git checkout branch1 && 74 test_commit B1 file1 && 75 git checkout branch2 && 76 test_commit B file1 77' 78 79whileread W1 I1 H1 T opt W2 I2 H2 80do 81 test_expect_success "check:$W1$I1$H1$T--$opt$W2$I2$H2"' 82 git reset --hard B && 83 test_must_fail git merge branch1 && 84 cat file1 >X_file1 && 85 if test "$W2" != "XXXXX" 86 then 87 git reset --$opt$T&& 88 if test "$W2" = "X" 89 then 90 test_cmp file1 X_file1 91 else 92 test "$(cat file1)" = "$W2" 93 fi && 94 git checkout-index -f -- file1 && 95 test "$(cat file1)" = "$I2" && 96 git checkout -f HEAD -- file1 && 97 test "$(cat file1)" = "$H2" 98 else 99 test_must_fail git reset --$opt$T 100 fi 101 ' 102done<<\EOF 103X U B C soft XXXXX 104X U B C mixed X C C 105X U B C hard C C C 106X U B C merge C C C 107X U B B soft XXXXX 108X U B B mixed X B B 109X U B B hard B B B 110X U B B merge B B B 111EOF 112 113test_done