t / t3904-stash-patch.shon commit merge-one-file: fix broken merges with alternate work trees (6aaeca9)
   1#!/bin/sh
   2
   3test_description='git checkout --patch'
   4. ./lib-patch-mode.sh
   5
   6test_expect_success 'setup' '
   7        mkdir dir &&
   8        echo parent > dir/foo &&
   9        echo dummy > bar &&
  10        git add bar dir/foo &&
  11        git commit -m initial &&
  12        test_tick &&
  13        test_commit second dir/foo head &&
  14        echo index > dir/foo &&
  15        git add dir/foo &&
  16        set_and_save_state bar bar_work bar_index &&
  17        save_head
  18'
  19
  20# note: bar sorts before dir, so the first 'n' is always to skip 'bar'
  21
  22test_expect_success 'saying "n" does nothing' '
  23        set_state dir/foo work index
  24        (echo n; echo n) | test_must_fail git stash save -p &&
  25        verify_state dir/foo work index &&
  26        verify_saved_state bar
  27'
  28
  29test_expect_success 'git stash -p' '
  30        (echo n; echo y) | git stash save -p &&
  31        verify_state dir/foo head index &&
  32        verify_saved_state bar &&
  33        git reset --hard &&
  34        git stash apply &&
  35        verify_state dir/foo work head &&
  36        verify_state bar dummy dummy
  37'
  38
  39test_expect_success 'git stash -p --no-keep-index' '
  40        set_state dir/foo work index &&
  41        set_state bar bar_work bar_index &&
  42        (echo n; echo y) | git stash save -p --no-keep-index &&
  43        verify_state dir/foo head head &&
  44        verify_state bar bar_work dummy &&
  45        git reset --hard &&
  46        git stash apply --index &&
  47        verify_state dir/foo work index &&
  48        verify_state bar dummy bar_index
  49'
  50
  51test_expect_success 'none of this moved HEAD' '
  52        verify_saved_head
  53'
  54
  55test_done