t / t4009-diff-rename-4.shon commit [PATCH] diff-helper: Fix R/C score parsing under -z flag. (ddafa7e)
   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
  20    tr '\0' '\012' <"$1" | sed -e "$sanitize_diff_raw" >.tmp-1
  21    tr '\0' '\012' <"$2" | sed -e "$sanitize_diff_raw" >.tmp-2
  22    diff -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.
  28    sed -e '/^similarity index [0-9]*%$/d' <"$1" >.tmp-1
  29    sed -e '/^similarity index [0-9]*%$/d' <"$2" >.tmp-2
  30    diff -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