#!/bin/sh # # Copyright (c) 2010 Christian Couder # test_description='Tests to check that "reset" options follow a known table' . ./test-lib.sh test_expect_success 'creating initial commits' ' test_commit E file1 && test_commit D file1 && test_commit C file1 ' while read W1 I1 H1 T opt W2 I2 H2 do test_expect_success "check: $W1 $I1 $H1 $T --$opt $W2 $I2 $H2" ' git reset --hard C && if test "$I1" != "$H1" then echo "$I1" >file1 && git add file1 fi && if test "$W1" != "$I1" then echo "$W1" >file1 fi && if test "$W2" != "XXXXX" then git reset --$opt $T && test "$(cat file1)" = "$W2" && git checkout-index -f -- file1 && test "$(cat file1)" = "$I2" && git checkout -f HEAD -- file1 && test "$(cat file1)" = "$H2" else test_must_fail git reset --$opt $T fi ' done <<\EOF A B C D soft A B D A B C D mixed A D D A B C D hard D D D A B C D merge XXXXX A B C D keep XXXXX A B C C soft A B C A B C C mixed A C C A B C C hard C C C A B C C merge XXXXX A B C C keep A C C B B C D soft B B D B B C D mixed B D D B B C D hard D D D B B C D merge D D D B B C D keep XXXXX B B C C soft B B C B B C C mixed B C C B B C C hard C C C B B C C merge C C C B B C C keep B C C B C C D soft B C D B C C D mixed B D D B C C D hard D D D B C C D merge XXXXX B C C D keep XXXXX B C C C soft B C C B C C C mixed B C C B C C C hard C C C B C C C merge B C C B C C C keep B C C EOF test_expect_success 'setting up branches to test with unmerged entries' ' git reset --hard C && git branch branch1 && git branch branch2 && git checkout branch1 && test_commit B1 file1 && git checkout branch2 && test_commit B file1 ' while read W1 I1 H1 T opt W2 I2 H2 do test_expect_success "check: $W1 $I1 $H1 $T --$opt $W2 $I2 $H2" ' git reset --hard B && test_must_fail git merge branch1 && cat file1 >X_file1 && if test "$W2" != "XXXXX" then git reset --$opt $T && if test "$W2" = "X" then test_cmp file1 X_file1 else test "$(cat file1)" = "$W2" fi && git checkout-index -f -- file1 && test "$(cat file1)" = "$I2" && git checkout -f HEAD -- file1 && test "$(cat file1)" = "$H2" else test_must_fail git reset --$opt $T fi ' done <<\EOF X U B C soft XXXXX X U B C mixed X C C X U B C hard C C C X U B C merge C C C X U B C keep XXXXX X U B B soft XXXXX X U B B mixed X B B X U B B hard B B B X U B B merge B B B X U B B keep XXXXX EOF test_done