1#!/bin/sh 2# 3# Copyright (c) 2005 Junio C Hamano 4# 5 6test_description='Rename interaction with pathspec. 7 8' 9. ./test-lib.sh 10. "$TEST_DIRECTORY"/diff-lib.sh ;# test-lib chdir's into trash 11 12test_expect_success 'prepare reference tree'' 13 mkdir path0 path1 && 14 cp "$TEST_DIRECTORY"/../COPYING path0/COPYING && 15 git update-index --add path0/COPYING && 16 tree=$(git write-tree)&& 17 echo$tree 18' 19 20test_expect_success 'prepare work tree'' 21 cp path0/COPYING path1/COPYING && 22 git update-index --add --remove path0/COPYING path1/COPYING 23' 24 25# In the tree, there is only path0/COPYING. In the cache, path0 and 26# path1 both have COPYING and the latter is a copy of path0/COPYING. 27# Comparing the full tree with cache should tell us so. 28 29cat>expected <<\EOF 30:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 C100 path0/COPYING path1/COPYING 31EOF 32 33test_expect_success 'copy detection'' 34 git diff-index -C --find-copies-harder$tree>current && 35 compare_diff_raw current expected 36' 37 38test_expect_success 'copy detection, cached'' 39 git diff-index -C --find-copies-harder --cached$tree>current && 40 compare_diff_raw current expected 41' 42 43# In the tree, there is only path0/COPYING. In the cache, path0 and 44# path1 both have COPYING and the latter is a copy of path0/COPYING. 45# However when we say we care only about path1, we should just see 46# path1/COPYING suddenly appearing from nowhere, not detected as 47# a copy from path0/COPYING. 48 49cat>expected <<\EOF 50:000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 A path1/COPYING 51EOF 52 53test_expect_success 'copy, limited to a subtree'' 54 git diff-index -C --find-copies-harder$treepath1 >current && 55 compare_diff_raw current expected 56' 57 58test_expect_success 'tweak work tree'' 59 rm -f path0/COPYING && 60 git update-index --remove path0/COPYING 61' 62# In the tree, there is only path0/COPYING. In the cache, path0 does 63# not have COPYING anymore and path1 has COPYING which is a copy of 64# path0/COPYING. Showing the full tree with cache should tell us about 65# the rename. 66 67cat>expected <<\EOF 68:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 R100 path0/COPYING path1/COPYING 69EOF 70 71test_expect_success 'rename detection'' 72 git diff-index -C --find-copies-harder$tree>current && 73 compare_diff_raw current expected 74' 75 76# In the tree, there is only path0/COPYING. In the cache, path0 does 77# not have COPYING anymore and path1 has COPYING which is a copy of 78# path0/COPYING. When we say we care only about path1, we should just 79# see path1/COPYING appearing from nowhere. 80 81cat>expected <<\EOF 82:000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 A path1/COPYING 83EOF 84 85test_expect_success 'rename, limited to a subtree'' 86 git diff-index -C --find-copies-harder$treepath1 >current && 87 compare_diff_raw current expected 88' 89 90test_done