t / t1005-read-tree-reset.shon commit git p4 test: avoid loop in client_view (6112541)
   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 'Porcelain 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  git reset --hard &&
  57  git ls-files -s >actual &&
  58  ! test -f old
  59'
  60
  61test_expect_success 'Porcelain checkout -f 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 checkout -f &&
  72  git ls-files -s >actual &&
  73  ! test -f old
  74'
  75
  76test_expect_success 'Porcelain checkout -f HEAD 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 HEAD &&
  87  git ls-files -s >actual &&
  88  ! test -f old
  89'
  90
  91test_done