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