1#!/bin/sh
   2test_description='rebase should handle arbitrary git message'
   4. ./test-lib.sh
   6cat >F <<\EOF
   8This is an example of a commit log message
   9that does not  conform to git commit convention.
  10It has two paragraphs, but its first paragraph is not friendly
  12to oneline summary format.
  13EOF
  14cat >G <<\EOF
  16commit log message containing a diff
  17EOF
  18test_expect_success setup '
  21        >file1 &&
  23        >file2 &&
  24        git add file1 file2 &&
  25        test_tick &&
  26        git commit -m "Initial commit" &&
  27        git branch diff-in-message &&
  28        git checkout -b multi-line-subject &&
  30        cat F >file2 &&
  31        git add file2 &&
  32        test_tick &&
  33        git commit -F F &&
  34        git cat-file commit HEAD | sed -e "1,/^\$/d" >F0 &&
  36        git checkout diff-in-message &&
  38        echo "commit log message containing a diff" >G &&
  39        echo "" >>G &&
  40        cat G >file2 &&
  41        git add file2 &&
  42        git diff --cached >>G &&
  43        test_tick &&
  44        git commit -F G &&
  45        git cat-file commit HEAD | sed -e "1,/^\$/d" >G0 &&
  47        git checkout master &&
  49        echo One >file1 &&
  51        test_tick &&
  52        git add file1 &&
  53        git commit -m "Second commit"
  54'
  55test_expect_success 'rebase commit with multi-line subject' '
  57        git rebase master multi-line-subject &&
  59        git cat-file commit HEAD | sed -e "1,/^\$/d" >F1 &&
  60        test_cmp F0 F1 &&
  62        test_cmp F F0
  63'
  64test_expect_success 'rebase commit with diff in message' '
  66        git rebase master diff-in-message &&
  67        git cat-file commit HEAD | sed -e "1,/^$/d" >G1 &&
  68        test_cmp G0 G1 &&
  69        test_cmp G G0
  70'
  71test_done