1#!/bin/sh 2# 3# Copyright (c) 2005 Junio C Hamano 4# 5 6test_description='Same rename detection as t4003 but testing diff-raw -z. 7 8' 9. ./test-lib.sh 10 11_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' 12_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40" 13sanitize_diff_raw='/^:/s/ '"$_x40"' '"$_x40"' \([A-Z]\)[0-9]*$/ X X \1#/' 14compare_diff_raw () { 15# When heuristics are improved, the score numbers would change. 16# Ignore them while comparing. 17# Also we do not check SHA1 hash generation in this test, which 18# is a job for t0000-basic.sh 19 20tr'\0''\012'<"$1"|sed-e"$sanitize_diff_raw">.tmp-1 21tr'\0''\012'<"$2"|sed-e"$sanitize_diff_raw">.tmp-2 22diff-u .tmp-1 .tmp-2&&rm-f .tmp-1 .tmp-2 23} 24 25compare_diff_patch () { 26# When heuristics are improved, the score numbers would change. 27# Ignore them while comparing. 28sed-e'/^similarity index [0-9]*%$/d'<"$1">.tmp-1 29sed-e'/^similarity index [0-9]*%$/d'<"$2">.tmp-2 30diff-u .tmp-1 .tmp-2&&rm-f .tmp-1 .tmp-2 31} 32 33test_expect_success \ 34'prepare reference tree' \ 35'cat ../../COPYING >COPYING && 36 echo frotz >rezrov && 37 git-update-cache --add COPYING rezrov && 38 tree=$(git-write-tree)&& 39 echo$tree' 40 41test_expect_success \ 42'prepare work tree' \ 43'sed -e 's/HOWEVER/However/' <COPYING >COPYING.1 && 44 sed -e 's/GPL/G.P.L/g' <COPYING >COPYING.2 && 45 rm -f COPYING && 46 git-update-cache --add --remove COPYING COPYING.?' 47 48# tree has COPYING and rezrov. work tree has COPYING.1 and COPYING.2, 49# both are slightly edited, and unchanged rezrov. We say COPYING.1 50# and COPYING.2 are based on COPYING, and do not say anything about 51# rezrov. 52 53git-diff-cache -z -M$tree>current 54 55cat>expected <<\EOF 56:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234 57COPYING 58COPYING.1 59:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 06c67961bbaed34a127f76d261f4c0bf73eda471 R1234 60COPYING 61COPYING.2 62EOF 63 64test_expect_success \ 65'validate output from rename/copy detection (#1)' \ 66'compare_diff_raw current expected' 67 68# make sure diff-helper can grok it. 69mv current diff-raw 70GIT_DIFF_OPTS=--unified=0 git-diff-helper -z<diff-raw>current 71cat>expected <<\EOF 72diff--git a/COPYING b/COPYING.1 73copy from COPYING 74copy to COPYING.1 75--- a/COPYING 76+++ b/COPYING.1 77@@ -6+6 @@ 78- HOWEVER,in order to allow a migration to GPLv3 if that seems like 79+ However,in order to allow a migration to GPLv3 if that seems like 80diff--git a/COPYING b/COPYING.2 81rename old COPYING 82rename new COPYING.2 83--- a/COPYING 84+++ b/COPYING.2 85@@ -2+2 @@ 86- Note that the only valid version of the GPL as far as this project 87+ Note that the only valid version of the G.P.L as far as this project 88@@ -6+6 @@ 89- HOWEVER,in order to allow a migration to GPLv3 if that seems like 90+ HOWEVER,in order to allow a migration to G.P.Lv3 if that seems like 91@@ -12+12 @@ 92- This file is licensed under the GPL v2, or a later version 93+ This file is licensed under the G.P.L v2, or a later version 94EOF 95 96test_expect_success \ 97'validate output from diff-helper (#1)' \ 98'compare_diff_patch current expected' 99 100################################################################ 101 102test_expect_success \ 103'prepare work tree again' \ 104'mv COPYING.2 COPYING && 105 git-update-cache --add --remove COPYING COPYING.1 COPYING.2' 106 107# tree has COPYING and rezrov. work tree has COPYING and COPYING.1, 108# both are slightly edited, and unchanged rezrov. We say COPYING.1 109# is based on COPYING and COPYING is still there, and do not say anything 110# about rezrov. 111 112git-diff-cache -z -C$tree>current 113cat>expected <<\EOF 114:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 06c67961bbaed34a127f76d261f4c0bf73eda471 M 115COPYING 116:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234 117COPYING 118COPYING.1 119EOF 120 121test_expect_success \ 122'validate output from rename/copy detection (#2)' \ 123'compare_diff_raw current expected' 124 125# make sure diff-helper can grok it. 126mv current diff-raw 127GIT_DIFF_OPTS=--unified=0 git-diff-helper -z<diff-raw>current 128cat>expected <<\EOF 129diff--git a/COPYING b/COPYING 130--- a/COPYING 131+++ b/COPYING 132@@ -2+2 @@ 133- Note that the only valid version of the GPL as far as this project 134+ Note that the only valid version of the G.P.L as far as this project 135@@ -6+6 @@ 136- HOWEVER,in order to allow a migration to GPLv3 if that seems like 137+ HOWEVER,in order to allow a migration to G.P.Lv3 if that seems like 138@@ -12+12 @@ 139- This file is licensed under the GPL v2, or a later version 140+ This file is licensed under the G.P.L v2, or a later version 141diff--git a/COPYING b/COPYING.1 142copy from COPYING 143copy to COPYING.1 144--- a/COPYING 145+++ b/COPYING.1 146@@ -6+6 @@ 147- HOWEVER,in order to allow a migration to GPLv3 if that seems like 148+ However,in order to allow a migration to GPLv3 if that seems like 149EOF 150 151test_expect_success \ 152'validate output from diff-helper (#2)' \ 153'compare_diff_patch current expected' 154 155################################################################ 156 157# tree has COPYING and rezrov. work tree has the same COPYING and 158# copy-edited COPYING.1, and unchanged rezrov. We should not say 159# anything about rezrov nor COPYING, since the revised again diff-raw 160# nows how to say Copy. 161 162test_expect_success \ 163'prepare work tree once again' \ 164'cat ../../COPYING >COPYING && 165 git-update-cache --add --remove COPYING COPYING.1' 166 167git-diff-cache -z -C$tree>current 168cat>expected <<\EOF 169:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234 170COPYING 171COPYING.1 172EOF 173 174test_expect_success \ 175'validate output from rename/copy detection (#3)' \ 176'compare_diff_raw current expected' 177 178# make sure diff-helper can grok it. 179mv current diff-raw 180GIT_DIFF_OPTS=--unified=0 git-diff-helper -z<diff-raw>current 181cat>expected <<\EOF 182diff--git a/COPYING b/COPYING.1 183copy from COPYING 184copy to COPYING.1 185--- a/COPYING 186+++ b/COPYING.1 187@@ -6+6 @@ 188- HOWEVER,in order to allow a migration to GPLv3 if that seems like 189+ However,in order to allow a migration to GPLv3 if that seems like 190EOF 191 192test_expect_success \ 193'validate output from diff-helper (#3)' \ 194'compare_diff_patch current expected' 195 196test_done