1#!/bin/sh
   2test_description='typechange rename detection'
   4. ./test-lib.sh
   6test_expect_success setup '
   8        rm -f foo bar &&
  10        cat ../../COPYING >foo &&
  11        ln -s linklink bar &&
  12        git add foo bar &&
  13        git commit -a -m Initial &&
  14        git tag one &&
  15        rm -f foo bar &&
  17        cat ../../COPYING >bar &&
  18        ln -s linklink foo &&
  19        git add foo bar &&
  20        git commit -a -m Second &&
  21        git tag two &&
  22        rm -f foo bar &&
  24        cat ../../COPYING >foo &&
  25        git add foo &&
  26        git commit -a -m Third &&
  27        git tag three &&
  28        mv foo bar &&
  30        ln -s linklink foo &&
  31        git add foo bar &&
  32        git commit -a -m Fourth &&
  33        git tag four &&
  34        # This is purely for sanity check
  36        rm -f foo bar &&
  38        cat ../../COPYING >foo &&
  39        cat ../../Makefile >bar &&
  40        git add foo bar &&
  41        git commit -a -m Fifth &&
  42        git tag five &&
  43        rm -f foo bar &&
  45        cat ../../Makefile >foo &&
  46        cat ../../COPYING >bar &&
  47        git add foo bar &&
  48        git commit -a -m Sixth &&
  49        git tag six
  50'
  52test_expect_success 'cross renames to be detected for regular files' '
  54        git diff-tree five six -r --name-status -B -M | sort >actual &&
  56        {
  57                echo "R100      foo     bar"
  58                echo "R100      bar     foo"
  59        } | sort >expect &&
  60        test_cmp expect actual
  61'
  63test_expect_success 'cross renames to be detected for typechange' '
  65        git diff-tree one two -r --name-status -B -M | sort >actual &&
  67        {
  68                echo "R100      foo     bar"
  69                echo "R100      bar     foo"
  70        } | sort >expect &&
  71        test_cmp expect actual
  72'
  74test_expect_success 'moves and renames' '
  76        git diff-tree three four -r --name-status -B -M | sort >actual &&
  78        {
  79                echo "R100      foo     bar"
  80                echo "T100      foo"
  81        } | sort >expect &&
  82        test_cmp expect actual
  83'
  85test_done