1#!/bin/sh
   2#
   3# Copyright (c) 2006 Brian C Gernhardt
   4#
   5test_description='Format-patch numbering options'
   7. ./test-lib.sh
   9test_expect_success setup '
  11        echo A > file &&
  13        git add file &&
  14        git commit -m First &&
  15        echo B >> file &&
  17        git commit -a -m Second &&
  18        echo C >> file &&
  20        git commit -a -m Third
  21'
  23# Each of these gets used multiple times.
  25test_num_no_numbered() {
  27        cnt=$(grep "^Subject: \[PATCH\]" $1 | wc -l) &&
  28        test $cnt = $2
  29}
  30test_single_no_numbered() {
  32        test_num_no_numbered $1 1
  33}
  34test_no_numbered() {
  36        test_num_no_numbered $1 2
  37}
  38test_single_cover_letter_numbered() {
  40        grep "^Subject: \[PATCH 0/1\]" $1 &&
  41        grep "^Subject: \[PATCH 1/1\]" $1
  42}
  43test_single_numbered() {
  45        grep "^Subject: \[PATCH 1/1\]" $1
  46}
  47test_numbered() {
  49        grep "^Subject: \[PATCH 1/2\]" $1 &&
  50        grep "^Subject: \[PATCH 2/2\]" $1
  51}
  52test_expect_success 'single patch defaults to no numbers' '
  54        git format-patch --stdout HEAD~1 >patch0.single &&
  55        test_single_no_numbered patch0.single
  56'
  57test_expect_success 'multiple patch defaults to numbered' '
  59        git format-patch --stdout HEAD~2 >patch0.multiple &&
  61        test_numbered patch0.multiple
  62'
  64test_expect_success 'Use --numbered' '
  66        git format-patch --numbered --stdout HEAD~1 >patch1 &&
  68        test_single_numbered patch1
  69'
  71test_expect_success 'format.numbered = true' '
  73        git config format.numbered true &&
  75        git format-patch --stdout HEAD~2 >patch2 &&
  76        test_numbered patch2
  77'
  79test_expect_success 'format.numbered && single patch' '
  81        git format-patch --stdout HEAD^ > patch3 &&
  83        test_single_numbered patch3
  84'
  86test_expect_success 'format.numbered && --no-numbered' '
  88        git format-patch --no-numbered --stdout HEAD~2 >patch4 &&
  90        test_no_numbered patch4
  91'
  93test_expect_success 'format.numbered && --keep-subject' '
  95        git format-patch --keep-subject --stdout HEAD^ >patch4a &&
  97        grep "^Subject: Third" patch4a
  98'
 100test_expect_success 'format.numbered = auto' '
 102        git config format.numbered auto &&
 104        git format-patch --stdout HEAD~2 > patch5 &&
 105        test_numbered patch5
 106'
 108test_expect_success 'format.numbered = auto && single patch' '
 110        git format-patch --stdout HEAD^ > patch6 &&
 112        test_single_no_numbered patch6
 113'
 115test_expect_success 'format.numbered = auto && --no-numbered' '
 117        git format-patch --no-numbered --stdout HEAD~2 > patch7 &&
 119        test_no_numbered patch7
 120'
 122test_expect_success '--start-number && --numbered' '
 124        git format-patch --start-number 3 --numbered --stdout HEAD~1 > patch8 &&
 126        grep "^Subject: \[PATCH 3/3\]" patch8
 127'
 128test_expect_success 'single patch with cover-letter defaults to numbers' '
 130        git format-patch --cover-letter --stdout HEAD~1 >patch9.single &&
 131        test_single_cover_letter_numbered patch9.single
 132'
 133test_expect_success 'Use --no-numbered and --cover-letter single patch' '
 135        git format-patch --no-numbered --stdout --cover-letter HEAD~1 >patch10 &&
 136        test_no_numbered patch10
 137'
 138test_done