t / t4102-apply-rename.shon commit remote: fix use-after-free error detected by glibc in ref_remove_duplicates (95c96d4)
   1#!/bin/sh
   2#
   3# Copyright (c) 2005 Junio C Hamano
   4#
   5
   6test_description='git apply handling copy/rename patch.
   7
   8'
   9. ./test-lib.sh
  10
  11# setup
  12
  13cat >test-patch <<\EOF
  14diff --git a/foo b/bar
  15similarity index 47%
  16rename from foo
  17rename to bar
  18--- a/foo
  19+++ b/bar
  20@@ -1 +1 @@
  21-This is foo
  22+This is bar
  23EOF
  24
  25echo 'This is foo' >foo
  26chmod +x foo
  27
  28test_expect_success setup \
  29    'git update-index --add foo'
  30
  31test_expect_success apply \
  32    'git apply --index --stat --summary --apply test-patch'
  33
  34if test "$(git config --bool core.filemode)" = false
  35then
  36        say 'filemode disabled on the filesystem'
  37else
  38        test_set_prereq FILEMODE
  39fi
  40
  41test_expect_success FILEMODE validate \
  42            'test -f bar && ls -l bar | grep "^-..x......"'
  43
  44test_expect_success 'apply reverse' \
  45    'git apply -R --index --stat --summary --apply test-patch &&
  46     test "$(cat foo)" = "This is foo"'
  47
  48cat >test-patch <<\EOF
  49diff --git a/foo b/bar
  50similarity index 47%
  51copy from foo
  52copy to bar
  53--- a/foo
  54+++ b/bar
  55@@ -1 +1 @@
  56-This is foo
  57+This is bar
  58EOF
  59
  60test_expect_success 'apply copy' \
  61    'git apply --index --stat --summary --apply test-patch &&
  62     test "$(cat bar)" = "This is bar" -a "$(cat foo)" = "This is foo"'
  63
  64test_done