t / t7111-reset-table.shon commit Merge branch 'maint-1.6.6' into maint (d16a5da)
   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
  17while read 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
  79while read 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