t / t3406-rebase-message.shon commit Merge branch 'en/merge-fixes' (10b8084)
   1#!/bin/sh
   2
   3test_description='messages from rebase operation'
   4
   5. ./test-lib.sh
   6
   7test_expect_success 'setup' '
   8        test_commit O fileO &&
   9        test_commit X fileX &&
  10        test_commit A fileA &&
  11        test_commit B fileB &&
  12        test_commit Y fileY &&
  13
  14        git checkout -b topic O &&
  15        git cherry-pick A B &&
  16        test_commit Z fileZ &&
  17        git tag start
  18'
  19
  20cat >expect <<\EOF
  21Already applied: 0001 A
  22Already applied: 0002 B
  23Committed: 0003 Z
  24EOF
  25
  26test_expect_success 'rebase -m' '
  27        git rebase -m master >report &&
  28        sed -n -e "/^Already applied: /p" \
  29                -e "/^Committed: /p" report >actual &&
  30        test_cmp expect actual
  31'
  32
  33test_expect_success 'rebase against master twice' '
  34        git rebase master >out &&
  35        test_i18ngrep "Current branch topic is up to date" out
  36'
  37
  38test_expect_success 'rebase against master twice with --force' '
  39        git rebase --force-rebase master >out &&
  40        test_i18ngrep "Current branch topic is up to date, rebase forced" out
  41'
  42
  43test_expect_success 'rebase against master twice from another branch' '
  44        git checkout topic^ &&
  45        git rebase master topic >out &&
  46        test_i18ngrep "Current branch topic is up to date" out
  47'
  48
  49test_expect_success 'rebase fast-forward to master' '
  50        git checkout topic^ &&
  51        git rebase topic >out &&
  52        test_i18ngrep "Fast-forwarded HEAD to topic" out
  53'
  54
  55test_expect_success 'rebase --stat' '
  56        git reset --hard start &&
  57        git rebase --stat master >diffstat.txt &&
  58        grep "^ fileX |  *1 +$" diffstat.txt
  59'
  60
  61test_expect_success 'rebase w/config rebase.stat' '
  62        git reset --hard start &&
  63        git config rebase.stat true &&
  64        git rebase master >diffstat.txt &&
  65        grep "^ fileX |  *1 +$" diffstat.txt
  66'
  67
  68test_expect_success 'rebase -n overrides config rebase.stat config' '
  69        git reset --hard start &&
  70        git config rebase.stat true &&
  71        git rebase -n master >diffstat.txt &&
  72        ! grep "^ fileX |  *1 +$" diffstat.txt
  73'
  74
  75# Output to stderr:
  76#
  77#     "Does not point to a valid commit: invalid-ref"
  78#
  79# NEEDSWORK: This "grep" is fine in real non-C locales, but
  80# GETTEXT_POISON poisons the refname along with the enclosing
  81# error message.
  82test_expect_success 'rebase --onto outputs the invalid ref' '
  83        test_must_fail git rebase --onto invalid-ref HEAD HEAD 2>err &&
  84        test_i18ngrep "invalid-ref" err
  85'
  86
  87test_done