Git fork
1#!/bin/sh
2#
3# Copyright (c) 2005 Junio C Hamano
4#
5
6test_description='More rename detection
7
8'
9
10. ./test-lib.sh
11. "$TEST_DIRECTORY"/lib-diff.sh ;# test-lib chdir's into trash
12
13test_expect_success 'prepare reference tree' '
14 COPYING_test_data >COPYING &&
15 echo frotz >rezrov &&
16 git update-index --add COPYING rezrov &&
17 tree=$(git write-tree) &&
18 echo $tree
19'
20
21test_expect_success 'prepare work tree' '
22 sed -e 's/HOWEVER/However/' <COPYING >COPYING.1 &&
23 sed -e 's/GPL/G.P.L/g' <COPYING >COPYING.2 &&
24 rm -f COPYING &&
25 git update-index --add --remove COPYING COPYING.?
26'
27
28# tree has COPYING and rezrov. work tree has COPYING.1 and COPYING.2,
29# both are slightly edited, and unchanged rezrov. So we say you
30# copy-and-edit one, and rename-and-edit the other. We do not say
31# anything about rezrov.
32
33GIT_DIFF_OPTS=--unified=0 git diff-index -C -p $tree >current
34cat >expected <<\EOF
35diff --git a/COPYING b/COPYING.1
36copy from COPYING
37copy to COPYING.1
38--- a/COPYING
39+++ b/COPYING.1
40@@ -6 +6 @@
41- HOWEVER, in order to allow a migration to GPLv3 if that seems like
42+ However, in order to allow a migration to GPLv3 if that seems like
43diff --git a/COPYING b/COPYING.2
44rename from COPYING
45rename to COPYING.2
46--- a/COPYING
47+++ b/COPYING.2
48@@ -2 +2 @@
49- Note that the only valid version of the GPL as far as this project
50+ Note that the only valid version of the G.P.L as far as this project
51@@ -6 +6 @@
52- HOWEVER, in order to allow a migration to GPLv3 if that seems like
53+ HOWEVER, in order to allow a migration to G.P.Lv3 if that seems like
54@@ -12 +12 @@
55- This file is licensed under the GPL v2, or a later version
56+ This file is licensed under the G.P.L v2, or a later version
57EOF
58
59test_expect_success 'validate output from rename/copy detection (#1)' '
60 compare_diff_patch current expected
61'
62
63test_expect_success 'prepare work tree again' '
64 mv COPYING.2 COPYING &&
65 git update-index --add --remove COPYING COPYING.1 COPYING.2
66'
67
68# tree has COPYING and rezrov. work tree has COPYING and COPYING.1,
69# both are slightly edited, and unchanged rezrov. So we say you
70# edited one, and copy-and-edit the other. We do not say
71# anything about rezrov.
72
73GIT_DIFF_OPTS=--unified=0 git diff-index -C -p $tree >current
74cat >expected <<\EOF
75diff --git a/COPYING b/COPYING
76--- a/COPYING
77+++ b/COPYING
78@@ -2 +2 @@
79- Note that the only valid version of the GPL as far as this project
80+ Note that the only valid version of the G.P.L as far as this project
81@@ -6 +6 @@
82- HOWEVER, in order to allow a migration to GPLv3 if that seems like
83+ HOWEVER, in order to allow a migration to G.P.Lv3 if that seems like
84@@ -12 +12 @@
85- This file is licensed under the GPL v2, or a later version
86+ This file is licensed under the G.P.L v2, or a later version
87diff --git a/COPYING b/COPYING.1
88copy from COPYING
89copy to COPYING.1
90--- a/COPYING
91+++ b/COPYING.1
92@@ -6 +6 @@
93- HOWEVER, in order to allow a migration to GPLv3 if that seems like
94+ However, in order to allow a migration to GPLv3 if that seems like
95EOF
96
97test_expect_success 'validate output from rename/copy detection (#2)' '
98 compare_diff_patch current expected
99'
100
101test_expect_success 'prepare work tree once again' '
102 COPYING_test_data >COPYING &&
103 git update-index --add --remove COPYING COPYING.1
104'
105
106# tree has COPYING and rezrov. work tree has COPYING and COPYING.1,
107# but COPYING is not edited. We say you copy-and-edit COPYING.1; this
108# is only possible because -C mode now reports the unmodified file to
109# the diff-core. Unchanged rezrov, although being fed to
110# git diff-index as well, should not be mentioned.
111
112GIT_DIFF_OPTS=--unified=0 \
113 git diff-index -C --find-copies-harder -p $tree >current
114cat >expected <<\EOF
115diff --git a/COPYING b/COPYING.1
116copy from COPYING
117copy to COPYING.1
118--- a/COPYING
119+++ b/COPYING.1
120@@ -6 +6 @@
121- HOWEVER, in order to allow a migration to GPLv3 if that seems like
122+ However, in order to allow a migration to GPLv3 if that seems like
123EOF
124
125test_expect_success 'validate output from rename/copy detection (#3)' '
126 compare_diff_patch current expected
127'
128
129test_done