f9b94251530fb2b7913af7a1aaf9b5fbbeb78cd3
   1#!/bin/sh
   2#
   3# Copyright (c) 2007 Junio C Hamano
   4#
   5
   6test_description='git-apply --whitespace=strip and configuration file.
   7
   8'
   9
  10. ./test-lib.sh
  11
  12test_expect_success setup '
  13        mkdir sub &&
  14        echo A >sub/file1 &&
  15        cp sub/file1 saved &&
  16        git add sub/file1 &&
  17        echo "B " >sub/file1 &&
  18        git diff >patch.file
  19'
  20
  21# Also handcraft GNU diff output; note this has trailing whitespace.
  22cat >gpatch.file <<\EOF
  23--- file1       2007-02-21 01:04:24.000000000 -0800
  24+++ file1+      2007-02-21 01:07:44.000000000 -0800
  25@@ -1 +1 @@
  26-A
  27+B 
  28EOF
  29
  30test_expect_success 'apply --whitespace=strip' '
  31
  32        rm -f sub/file1 &&
  33        cp saved sub/file1 &&
  34        git update-index --refresh &&
  35
  36        git apply --whitespace=strip patch.file &&
  37        if grep " " sub/file1
  38        then
  39                echo "Eh?"
  40                false
  41        elif grep B sub/file1
  42        then
  43                echo Happy
  44        else
  45                echo "Huh?"
  46                false
  47        fi
  48'
  49
  50test_expect_success 'apply --whitespace=strip from config' '
  51
  52        rm -f sub/file1 &&
  53        cp saved sub/file1 &&
  54        git update-index --refresh &&
  55
  56        git config apply.whitespace strip &&
  57        git apply patch.file &&
  58        if grep " " sub/file1
  59        then
  60                echo "Eh?"
  61                false
  62        elif grep B sub/file1
  63        then
  64                echo Happy
  65        else
  66                echo Happy
  67        fi
  68'
  69
  70D=`pwd`
  71
  72test_expect_success 'apply --whitespace=strip in subdir' '
  73
  74        cd "$D" &&
  75        git config --unset-all apply.whitespace
  76        rm -f sub/file1 &&
  77        cp saved sub/file1 &&
  78        git update-index --refresh &&
  79
  80        cd sub &&
  81        git apply --whitespace=strip -p2 ../patch.file &&
  82        if grep " " file1
  83        then
  84                echo "Eh?"
  85                false
  86        elif grep B file1
  87        then
  88                echo Happy
  89        else
  90                echo "Huh?"
  91                false
  92        fi
  93'
  94
  95test_expect_success 'apply --whitespace=strip from config in subdir' '
  96
  97        cd "$D" &&
  98        git config apply.whitespace strip &&
  99        rm -f sub/file1 &&
 100        cp saved sub/file1 &&
 101        git update-index --refresh &&
 102
 103        cd sub &&
 104        git apply -p2 ../patch.file &&
 105        if grep " " file1
 106        then
 107                echo "Eh?"
 108                false
 109        elif grep B file1
 110        then
 111                echo Happy
 112        else
 113                echo "Huh?"
 114                false
 115        fi
 116'
 117
 118test_expect_success 'same in subdir but with traditional patch input' '
 119
 120        cd "$D" &&
 121        git config apply.whitespace strip &&
 122        rm -f sub/file1 &&
 123        cp saved sub/file1 &&
 124        git update-index --refresh &&
 125
 126        cd sub &&
 127        git apply -p0 ../gpatch.file &&
 128        if grep " " file1
 129        then
 130                echo "Eh?"
 131                false
 132        elif grep B file1
 133        then
 134                echo Happy
 135        else
 136                echo "Huh?"
 137                false
 138        fi
 139'
 140
 141test_done