#!/bin/sh
# Exercise 'git mv's renaming.  Results in different diff syntax.
# This also exercises the other fix: handle a diff header line
# with only one comma, e.g., "@@ -1 +1,4 @@".

if test "$VERBOSE" = yes; then
  set -x
  vc-dwim --version
fi

. $srcdir/trap-setup

require_git_

framework_failure=0
mkdir -p $tmp && cd $tmp \
  || framework_failure=1

cat <<EOF > ChangeLog || framework_failure=1
2006-09-04  Jim Meyering  <jim@meyering.net>
EOF
git init > /dev/null			\
  && touch x				\
  && git add .				\
  && git commit -m m . > /dev/null	\
  && git mv x y				\
    || framework_failure=1

cat <<EOF >> ChangeLog || framework_failure=1

	* x: Rename to...
	* y: ...this.
EOF

cat <<\EOF > exp || framework_failure=1
* x: Rename to...
* y: ...this.
diff --git a/x b/y
similarity index 100%
rename from x
rename to y
EOF

# You get different output for a renaming, with older versions.
cat <<\EOF > exp-old || framework_failure=1
* x: Rename to...
* y: ...this.
diff --git a/x b/x
deleted file mode 100644
index e69de29..0000000
diff --git a/y b/y
new file mode 100644
index 0000000..e69de29
EOF

if test $framework_failure = 1; then
  echo "$0: failure in testing framework" 1>&2
  (exit 1); exit 1
fi

set -e

vc-dwim ChangeLog > out

if cmp out exp > /dev/null 2>&1 ; then
  :
elif cmp out exp-old; then
  :
else
  diff out exp-old 2> /dev/null
  false
fi

Exit 0
