index-pack: work around thread-unsafe pread()
[gitweb.git] / t / t4104-apply-boundary.sh
index a5fb3ea40e4fde9126e66ed46fd3fc337b40ff66..c617c2a33d8e8ac1dc7e049f9056ca6025fbf852 100755 (executable)
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Junio C Hamano
 #
 
-test_description='git-apply boundary tests
+test_description='git apply boundary tests
 
 '
 . ./test-lib.sh
@@ -27,6 +27,15 @@ test_expect_success setup '
        git diff victim >add-a-patch.with &&
        git diff --unified=0 >add-a-patch.without &&
 
+       : insert at line two
+       for i in b a '"$L"' y
+       do
+               echo $i
+       done >victim &&
+       cat victim >insert-a-expect &&
+       git diff victim >insert-a-patch.with &&
+       git diff --unified=0 >insert-a-patch.without &&
+
        : modify at the head
        for i in a '"$L"' y
        do
@@ -55,7 +64,7 @@ test_expect_success setup '
        git diff --unified=0 >add-z-patch.without &&
 
        : modify at the tail
-       for i in a '"$L"' y
+       for i in b '"$L"' z
        do
                echo $i
        done >victim &&
@@ -81,7 +90,7 @@ do
        with) u= ;;
        without) u='--unidiff-zero ' ;;
        esac
-       for kind in add-a add-z mod-a mod-z del-a del-z
+       for kind in add-a add-z insert-a mod-a mod-z del-a del-z
        do
                test_expect_success "apply $kind-patch $with context" '
                        cat original >victim &&
@@ -90,12 +99,12 @@ do
                                cat '"$kind-patch.$with"'
                                (exit 1)
                        } &&
-                       git diff '"$kind"'-expect victim
+                       test_cmp '"$kind"'-expect victim
                '
        done
 done
 
-for kind in add-a add-z mod-a mod-z del-a del-z
+for kind in add-a add-z insert-a mod-a mod-z del-a del-z
 do
        rm -f $kind-ng.without
        sed     -e "s/^diff --git /diff /" \
@@ -108,8 +117,30 @@ do
                        cat '"$kind-ng.without"'
                        (exit 1)
                } &&
-               git diff '"$kind"'-expect victim
+               test_cmp '"$kind"'-expect victim
        '
 done
 
+test_expect_success 'two lines' '
+
+       >file &&
+       git add file &&
+       echo aaa >file &&
+       git diff >patch &&
+       git add file &&
+       echo bbb >file &&
+       git add file &&
+       test_must_fail git apply --check patch
+
+'
+
+test_expect_success 'apply patch with 3 context lines matching at end' '
+       { echo a; echo b; echo c; echo d; } >file &&
+       git add file &&
+       echo e >>file &&
+       git diff >patch &&
+       >file &&
+       test_must_fail git apply patch
+'
+
 test_done