Merge branch 'maint-1.6.3' into maint
[gitweb.git] / t / t4119-apply-config.sh
index 0e8ea7e2b8f24edea491cdf865c77158725f89fa..3c73a783a7e908070308fb1f972f6b5d152e12a4 100755 (executable)
 # Copyright (c) 2007 Junio C Hamano
 #
 
-test_description='git-apply --whitespace=strip and configuration file.
+test_description='git apply --whitespace=strip and configuration file.
 
 '
 
 . ./test-lib.sh
 
 test_expect_success setup '
-       echo A >file1 &&
-       cp file1 saved &&
-       git add file1 &&
-       echo "B " >file1 &&
+       mkdir sub &&
+       echo A >sub/file1 &&
+       cp sub/file1 saved &&
+       git add sub/file1 &&
+       echo "B " >sub/file1 &&
        git diff >patch.file
 '
 
-test_expect_success 'apply --whitespace=strip' '
-
-       cp saved file1 &&
-       git update-index --refresh &&
-
-       git apply --whitespace=strip patch.file &&
-       if grep " " file1
+# Also handcraft GNU diff output; note this has trailing whitespace.
+tr '_' ' ' >gpatch.file <<\EOF &&
+--- file1      2007-02-21 01:04:24.000000000 -0800
++++ file1+     2007-02-21 01:07:44.000000000 -0800
+@@ -1 +1 @@
+-A
++B_
+EOF
+
+sed -e 's|file1|sub/&|' gpatch.file >gpatch-sub.file &&
+sed -e '
+       /^--- /s|file1|a/sub/&|
+       /^+++ /s|file1|b/sub/&|
+' gpatch.file >gpatch-ab-sub.file &&
+
+check_result () {
+       if grep " " "$1"
        then
                echo "Eh?"
                false
-       else
+       elif grep B "$1"
+       then
                echo Happy
+       else
+               echo "Huh?"
+               false
        fi
+}
+
+test_expect_success 'apply --whitespace=strip' '
+
+       rm -f sub/file1 &&
+       cp saved sub/file1 &&
+       git update-index --refresh &&
+
+       git apply --whitespace=strip patch.file &&
+       check_result sub/file1
 '
 
 test_expect_success 'apply --whitespace=strip from config' '
 
-       cp saved file1 &&
+       rm -f sub/file1 &&
+       cp saved sub/file1 &&
        git update-index --refresh &&
 
        git config apply.whitespace strip &&
        git apply patch.file &&
-       if grep " " file1
-       then
-               echo "Eh?"
-               false
-       else
-               echo Happy
-       fi
+       check_result sub/file1
 '
 
-mkdir sub
 D=`pwd`
 
 test_expect_success 'apply --whitespace=strip in subdir' '
 
        cd "$D" &&
        git config --unset-all apply.whitespace
-       cp saved file1 &&
+       rm -f sub/file1 &&
+       cp saved sub/file1 &&
        git update-index --refresh &&
 
        cd sub &&
        git apply --whitespace=strip ../patch.file &&
-       if grep " " ../file1
-       then
-               echo "Eh?"
-               false
-       else
-               echo Happy
-       fi
+       check_result file1
 '
 
 test_expect_success 'apply --whitespace=strip from config in subdir' '
 
        cd "$D" &&
        git config apply.whitespace strip &&
-       cp saved file1 &&
+       rm -f sub/file1 &&
+       cp saved sub/file1 &&
        git update-index --refresh &&
 
        cd sub &&
        git apply ../patch.file &&
-       if grep " " file1
-       then
-               echo "Eh?"
-               false
-       else
-               echo Happy
-       fi
+       check_result file1
+'
+
+test_expect_success 'same in subdir but with traditional patch input' '
+
+       cd "$D" &&
+       git config apply.whitespace strip &&
+       rm -f sub/file1 &&
+       cp saved sub/file1 &&
+       git update-index --refresh &&
+
+       cd sub &&
+       git apply ../gpatch.file &&
+       check_result file1
+'
+
+test_expect_success 'same but with traditional patch input of depth 1' '
+
+       cd "$D" &&
+       git config apply.whitespace strip &&
+       rm -f sub/file1 &&
+       cp saved sub/file1 &&
+       git update-index --refresh &&
+
+       cd sub &&
+       git apply ../gpatch-sub.file &&
+       check_result file1
+'
+
+test_expect_success 'same but with traditional patch input of depth 2' '
+
+       cd "$D" &&
+       git config apply.whitespace strip &&
+       rm -f sub/file1 &&
+       cp saved sub/file1 &&
+       git update-index --refresh &&
+
+       cd sub &&
+       git apply ../gpatch-ab-sub.file &&
+       check_result file1
+'
+
+test_expect_success 'same but with traditional patch input of depth 1' '
+
+       cd "$D" &&
+       git config apply.whitespace strip &&
+       rm -f sub/file1 &&
+       cp saved sub/file1 &&
+       git update-index --refresh &&
+
+       git apply -p0 gpatch-sub.file &&
+       check_result sub/file1
+'
+
+test_expect_success 'same but with traditional patch input of depth 2' '
+
+       cd "$D" &&
+       git config apply.whitespace strip &&
+       rm -f sub/file1 &&
+       cp saved sub/file1 &&
+       git update-index --refresh &&
+
+       git apply gpatch-ab-sub.file &&
+       check_result sub/file1
 '
 
 test_done