t / t7507-commit-verbose.shon commit color-words: take an optional regular expression describing words (2b6a541)
   1#!/bin/sh
   2
   3test_description='verbose commit template'
   4. ./test-lib.sh
   5
   6cat >check-for-diff <<EOF
   7#!$SHELL_PATH
   8exec grep '^diff --git' "\$1"
   9EOF
  10chmod +x check-for-diff
  11test_set_editor "$PWD/check-for-diff"
  12
  13cat >message <<'EOF'
  14subject
  15
  16body
  17EOF
  18
  19test_expect_success 'setup' '
  20        echo content >file &&
  21        git add file &&
  22        git commit -F message
  23'
  24
  25test_expect_success 'initial commit shows verbose diff' '
  26        git commit --amend -v
  27'
  28
  29test_expect_success 'second commit' '
  30        echo content modified >file &&
  31        git add file &&
  32        git commit -F message
  33'
  34
  35check_message() {
  36        git log -1 --pretty=format:%s%n%n%b >actual &&
  37        test_cmp "$1" actual
  38}
  39
  40test_expect_success 'verbose diff is stripped out' '
  41        git commit --amend -v &&
  42        check_message message
  43'
  44
  45test_expect_success 'verbose diff is stripped out (mnemonicprefix)' '
  46        git config diff.mnemonicprefix true &&
  47        git commit --amend -v &&
  48        check_message message
  49'
  50
  51cat >diff <<'EOF'
  52This is an example commit message that contains a diff.
  53
  54diff --git c/file i/file
  55new file mode 100644
  56index 0000000..f95c11d
  57--- /dev/null
  58+++ i/file
  59@@ -0,0 +1 @@
  60+this is some content
  61EOF
  62
  63test_expect_success 'diff in message is retained without -v' '
  64        git commit --amend -F diff &&
  65        check_message diff
  66'
  67
  68test_expect_failure 'diff in message is retained with -v' '
  69        git commit --amend -F diff -v &&
  70        check_message diff
  71'
  72
  73test_done