#!/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 |