t / t1005-read-tree-reset.shon commit t4000: make hash size independent (8cc5ff8)
   1#!/bin/sh
   2
   3test_description='read-tree -u --reset'
   4
   5. ./test-lib.sh
   6. "$TEST_DIRECTORY"/lib-read-tree.sh
   7
   8# two-tree test
   9
  10test_expect_success 'setup' '
  11        git init &&
  12        mkdir df &&
  13        echo content >df/file &&
  14        git add df/file &&
  15        git commit -m one &&
  16        git ls-files >expect &&
  17        rm -rf df &&
  18        echo content >df &&
  19        git add df &&
  20        echo content >new &&
  21        git add new &&
  22        git commit -m two
  23'
  24
  25test_expect_success 'reset should work' '
  26        read_tree_u_must_succeed -u --reset HEAD^ &&
  27        git ls-files >actual &&
  28        test_cmp expect actual
  29'
  30
  31test_expect_success 'reset should remove remnants from a failed merge' '
  32        read_tree_u_must_succeed --reset -u HEAD &&
  33        git ls-files -s >expect &&
  34        sha1=$(git rev-parse :new) &&
  35        (
  36                echo "100644 $sha1 1    old" &&
  37                echo "100644 $sha1 3    old"
  38        ) | git update-index --index-info &&
  39        >old &&
  40        git ls-files -s &&
  41        read_tree_u_must_succeed --reset -u HEAD &&
  42        git ls-files -s >actual &&
  43        ! test -f old
  44'
  45
  46test_expect_success 'two-way reset should remove remnants too' '
  47        read_tree_u_must_succeed --reset -u HEAD &&
  48        git ls-files -s >expect &&
  49        sha1=$(git rev-parse :new) &&
  50        (
  51                echo "100644 $sha1 1    old" &&
  52                echo "100644 $sha1 3    old"
  53        ) | git update-index --index-info &&
  54        >old &&
  55        git ls-files -s &&
  56        read_tree_u_must_succeed --reset -u HEAD HEAD &&
  57        git ls-files -s >actual &&
  58        ! test -f old
  59'
  60
  61test_expect_success 'Porcelain reset should remove remnants too' '
  62        read_tree_u_must_succeed --reset -u HEAD &&
  63        git ls-files -s >expect &&
  64        sha1=$(git rev-parse :new) &&
  65        (
  66                echo "100644 $sha1 1    old" &&
  67                echo "100644 $sha1 3    old"
  68        ) | git update-index --index-info &&
  69        >old &&
  70        git ls-files -s &&
  71        git reset --hard &&
  72        git ls-files -s >actual &&
  73        ! test -f old
  74'
  75
  76test_expect_success 'Porcelain checkout -f should remove remnants too' '
  77        read_tree_u_must_succeed --reset -u HEAD &&
  78        git ls-files -s >expect &&
  79        sha1=$(git rev-parse :new) &&
  80        (
  81                echo "100644 $sha1 1    old" &&
  82                echo "100644 $sha1 3    old"
  83        ) | git update-index --index-info &&
  84        >old &&
  85        git ls-files -s &&
  86        git checkout -f &&
  87        git ls-files -s >actual &&
  88        ! test -f old
  89'
  90
  91test_expect_success 'Porcelain checkout -f HEAD should remove remnants too' '
  92        read_tree_u_must_succeed --reset -u HEAD &&
  93        git ls-files -s >expect &&
  94        sha1=$(git rev-parse :new) &&
  95        (
  96                echo "100644 $sha1 1    old" &&
  97                echo "100644 $sha1 3    old"
  98        ) | git update-index --index-info &&
  99        >old &&
 100        git ls-files -s &&
 101        git checkout -f HEAD &&
 102        git ls-files -s >actual &&
 103        ! test -f old
 104'
 105
 106test_done