1#!/bin/sh
   2test_description='test cherry-pick and revert with renames
   4  --
   6   + rename2: renames oops to opos
   7  +  rename1: renames oops to spoo
   8  +  added:   adds extra line to oops
   9  ++ initial: has lines in oops
  10'
  12. ./test-lib.sh
  14test_expect_success setup '
  16        for l in a b c d e f g h i j k l m n o
  18        do
  19                echo $l$l$l$l$l$l$l$l$l
  20        done >oops &&
  21        test_tick &&
  23        git add oops &&
  24        git commit -m initial &&
  25        git tag initial &&
  26        test_tick &&
  28        echo "Add extra line at the end" >>oops &&
  29        git commit -a -m added &&
  30        git tag added &&
  31        test_tick &&
  33        git mv oops spoo &&
  34        git commit -m rename1 &&
  35        git tag rename1 &&
  36        test_tick &&
  38        git checkout -b side initial &&
  39        git mv oops opos &&
  40        git commit -m rename2 &&
  41        git tag rename2
  42'
  43test_expect_success 'cherry-pick after renaming branch' '
  45        git checkout rename2 &&
  47        git cherry-pick added &&
  48        test $(git rev-parse HEAD^) = $(git rev-parse rename2) &&
  49        test -f opos &&
  50        grep "Add extra line at the end" opos
  51'
  53test_expect_success 'revert after renaming branch' '
  55        git checkout rename1 &&
  57        git revert added &&
  58        test $(git rev-parse HEAD^) = $(git rev-parse rename1) &&
  59        test -f spoo &&
  60        ! grep "Add extra line at the end" spoo
  61'
  63test_expect_success 'revert forbidden on dirty working tree' '
  65        echo content >extra_file &&
  67        git add extra_file &&
  68        test_must_fail git revert HEAD 2>errors &&
  69        grep "Dirty index" errors
  70'
  72test_done