t / t3701-add-interactive.shon commit Merge branch 'ap/svn' (834836b)
   1#!/bin/sh
   2
   3test_description='add -i basic tests'
   4. ./test-lib.sh
   5
   6test_expect_success 'setup (initial)' '
   7        echo content >file &&
   8        git add file &&
   9        echo more >>file &&
  10        echo lines >>file
  11'
  12test_expect_success 'status works (initial)' '
  13        git add -i </dev/null >output &&
  14        grep "+1/-0 *+2/-0 file" output
  15'
  16cat >expected <<EOF
  17new file mode 100644
  18index 0000000..d95f3ad
  19--- /dev/null
  20+++ b/file
  21@@ -0,0 +1 @@
  22+content
  23EOF
  24test_expect_success 'diff works (initial)' '
  25        (echo d; echo 1) | git add -i >output &&
  26        sed -ne "/new file/,/content/p" <output >diff &&
  27        test_cmp expected diff
  28'
  29test_expect_success 'revert works (initial)' '
  30        git add file &&
  31        (echo r; echo 1) | git add -i &&
  32        git ls-files >output &&
  33        ! grep . output
  34'
  35
  36test_expect_success 'setup (commit)' '
  37        echo baseline >file &&
  38        git add file &&
  39        git commit -m commit &&
  40        echo content >>file &&
  41        git add file &&
  42        echo more >>file &&
  43        echo lines >>file
  44'
  45test_expect_success 'status works (commit)' '
  46        git add -i </dev/null >output &&
  47        grep "+1/-0 *+2/-0 file" output
  48'
  49cat >expected <<EOF
  50index 180b47c..b6f2c08 100644
  51--- a/file
  52+++ b/file
  53@@ -1 +1,2 @@
  54 baseline
  55+content
  56EOF
  57test_expect_success 'diff works (commit)' '
  58        (echo d; echo 1) | git add -i >output &&
  59        sed -ne "/^index/,/content/p" <output >diff &&
  60        test_cmp expected diff
  61'
  62test_expect_success 'revert works (commit)' '
  63        git add file &&
  64        (echo r; echo 1) | git add -i &&
  65        git add -i </dev/null >output &&
  66        grep "unchanged *+3/-0 file" output
  67'
  68
  69if test "$(git config --bool core.filemode)" = false
  70then
  71    say 'skipping filemode tests (filesystem does not properly support modes)'
  72else
  73
  74test_expect_success 'patch does not affect mode' '
  75        git reset --hard &&
  76        echo content >>file &&
  77        chmod +x file &&
  78        printf "n\\ny\\n" | git add -p &&
  79        git show :file | grep content &&
  80        git diff file | grep "new mode"
  81'
  82
  83test_expect_success 'stage mode but not hunk' '
  84        git reset --hard &&
  85        echo content >>file &&
  86        chmod +x file &&
  87        printf "y\\nn\\n" | git add -p &&
  88        git diff --cached file | grep "new mode" &&
  89        git diff          file | grep "+content"
  90'
  91
  92fi
  93# end of tests disabled when filemode is not usable
  94
  95test_done