t / t4204-patch-id.shon commit Emit a whole line in one go (2efcc97)
   1#!/bin/sh
   2
   3test_description='git patch-id'
   4
   5. ./test-lib.sh
   6
   7test_expect_success 'setup' '
   8        test_commit initial foo a &&
   9        test_commit first foo b &&
  10        git checkout -b same HEAD^ &&
  11        test_commit same-msg foo b &&
  12        git checkout -b notsame HEAD^ &&
  13        test_commit notsame-msg foo c
  14'
  15
  16test_expect_success 'patch-id output is well-formed' '
  17        git log -p -1 | git patch-id > output &&
  18        grep "^[a-f0-9]\{40\} $(git rev-parse HEAD)$" output
  19'
  20
  21calc_patch_id () {
  22        git patch-id |
  23                sed "s# .*##" > patch-id_"$1"
  24}
  25
  26get_patch_id () {
  27        git log -p -1 "$1" | git patch-id |
  28                sed "s# .*##" > patch-id_"$1"
  29}
  30
  31test_expect_success 'patch-id detects equality' '
  32        get_patch_id master &&
  33        get_patch_id same &&
  34        test_cmp patch-id_master patch-id_same
  35'
  36
  37test_expect_success 'patch-id detects inequality' '
  38        get_patch_id master &&
  39        get_patch_id notsame &&
  40        ! test_cmp patch-id_master patch-id_notsame
  41'
  42
  43test_expect_success 'patch-id supports git-format-patch output' '
  44        get_patch_id master &&
  45        git checkout same &&
  46        git format-patch -1 --stdout | calc_patch_id same &&
  47        test_cmp patch-id_master patch-id_same &&
  48        set `git format-patch -1 --stdout | git patch-id` &&
  49        test "$2" = `git rev-parse HEAD`
  50'
  51
  52test_expect_success 'whitespace is irrelevant in footer' '
  53        get_patch_id master &&
  54        git checkout same &&
  55        git format-patch -1 --stdout | sed "s/ \$//" | calc_patch_id same &&
  56        test_cmp patch-id_master patch-id_same
  57'
  58
  59test_expect_success 'patch-id supports git-format-patch MIME output' '
  60        get_patch_id master &&
  61        git checkout same &&
  62        git format-patch -1 --attach --stdout | calc_patch_id same &&
  63        test_cmp patch-id_master patch-id_same
  64'
  65
  66test_done