Git fork
at reftables-rust 89 lines 1.9 kB view raw
1#!/bin/sh 2# 3# Copyright (c) 2007 Shawn O. Pearce 4# 5 6test_description='git apply -p handling.' 7 8. ./test-lib.sh 9 10test_expect_success setup ' 11 mkdir sub && 12 echo A >sub/file1 && 13 cp sub/file1 file1.saved && 14 git add sub/file1 && 15 echo B >sub/file1 && 16 git diff >patch.file && 17 git checkout -- sub/file1 && 18 git mv sub süb && 19 echo B >süb/file1 && 20 git diff >patch.escaped && 21 grep "[\]" patch.escaped && 22 rm süb/file1 && 23 rmdir süb 24' 25 26test_expect_success 'apply git diff with -p2' ' 27 cp file1.saved file1 && 28 git apply -p2 patch.file 29' 30 31test_expect_success 'apply with too large -p' ' 32 cp file1.saved file1 && 33 test_must_fail git apply --stat -p3 patch.file 2>err && 34 test_grep "removing 3 leading" err 35' 36 37test_expect_success 'apply (-p2) traditional diff with funny filenames' ' 38 cat >patch.quotes <<-\EOF && 39 diff -u "a/"sub/file1 "b/"sub/file1 40 --- "a/"sub/file1 41 +++ "b/"sub/file1 42 @@ -1 +1 @@ 43 -A 44 +B 45 EOF 46 echo B >expected && 47 48 cp file1.saved file1 && 49 git apply -p2 patch.quotes && 50 test_cmp expected file1 51' 52 53test_expect_success 'apply with too large -p and fancy filename' ' 54 cp file1.saved file1 && 55 test_must_fail git apply --stat -p3 patch.escaped 2>err && 56 test_grep "removing 3 leading" err 57' 58 59test_expect_success 'apply (-p2) diff, mode change only' ' 60 cat >patch.chmod <<-\EOF && 61 diff --git a/sub/file1 b/sub/file1 62 old mode 100644 63 new mode 100755 64 EOF 65 test_chmod -x file1 && 66 git apply --index -p2 patch.chmod && 67 case $(git ls-files -s file1) in 100755*) : good;; *) false;; esac 68' 69 70test_expect_success FILEMODE 'file mode was changed' ' 71 test -x file1 72' 73 74test_expect_success 'apply (-p2) diff, rename' ' 75 cat >patch.rename <<-\EOF && 76 diff --git a/sub/file1 b/sub/file2 77 similarity index 100% 78 rename from sub/file1 79 rename to sub/file2 80 EOF 81 echo A >expected && 82 83 cp file1.saved file1 && 84 rm -f file2 && 85 git apply -p2 patch.rename && 86 test_cmp expected file2 87' 88 89test_done