t / t3035-merge-sparse.shon commit Merge branch 'nd/corrupt-worktrees' (000bce0)
   1#!/bin/sh
   2
   3test_description='merge with sparse files'
   4
   5. ./test-lib.sh
   6
   7# test_file $filename $content
   8test_file () {
   9        echo "$2" > "$1" &&
  10        git add "$1"
  11}
  12
  13# test_commit_this $message_and_tag
  14test_commit_this () {
  15        git commit -m "$1" &&
  16        git tag "$1"
  17}
  18
  19test_expect_success 'setup' '
  20        test_file checked-out init &&
  21        test_file modify_delete modify_delete_init &&
  22        test_commit_this init &&
  23        test_file modify_delete modify_delete_theirs &&
  24        test_commit_this theirs &&
  25        git reset --hard init &&
  26        git rm modify_delete &&
  27        test_commit_this ours &&
  28        git config core.sparseCheckout true &&
  29        echo "/checked-out" >.git/info/sparse-checkout &&
  30        git reset --hard &&
  31        ! git merge theirs
  32'
  33
  34test_expect_success 'reset --hard works after the conflict' '
  35        git reset --hard
  36'
  37
  38test_expect_success 'is reset properly' '
  39        git status --porcelain -- modify_delete >out &&
  40        test_must_be_empty out &&
  41        test_path_is_missing modify_delete
  42'
  43
  44test_expect_success 'setup: conflict back' '
  45        ! git merge theirs
  46'
  47
  48test_expect_success 'Merge abort works after the conflict' '
  49        git merge --abort
  50'
  51
  52test_expect_success 'is aborted properly' '
  53        git status --porcelain -- modify_delete >out &&
  54        test_must_be_empty out &&
  55        test_path_is_missing modify_delete
  56'
  57
  58test_done