aboutsummaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-01-13 00:56:40 -0800
committerJunio C Hamano <gitster@pobox.com>2009-01-13 00:56:40 -0800
commitae5a97fdd0c553926aabdf324b6d9108b0699bee (patch)
tree4e757fbe32df5eb3cc5cb437634aa7ac2831e4be /t
parent1cbe69f649fc45a3052e82c8e92e4a0f9eff67ed (diff)
parent1f7903a371f90f025cfc3b4aa3a0b4a8f8b05b94 (diff)
downloadgit-ae5a97fdd0c553926aabdf324b6d9108b0699bee.tar.gz
git-ae5a97fdd0c553926aabdf324b6d9108b0699bee.tar.xz
Merge branch 'ap/maint-apply-modefix' into maint
* ap/maint-apply-modefix: builtin-apply: prevent non-explicit permission changes
Diffstat (limited to 't')
-rwxr-xr-xt/t4129-apply-samemode.sh62
1 files changed, 62 insertions, 0 deletions
diff --git a/t/t4129-apply-samemode.sh b/t/t4129-apply-samemode.sh
new file mode 100755
index 000000000..adfcbb5a3
--- /dev/null
+++ b/t/t4129-apply-samemode.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+test_description='applying patch with mode bits'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+ echo original >file &&
+ git add file &&
+ test_tick &&
+ git commit -m initial &&
+ git tag initial &&
+ echo modified >file &&
+ git diff --stat -p >patch-0.txt &&
+ chmod +x file &&
+ git diff --stat -p >patch-1.txt
+'
+
+test_expect_success 'same mode (no index)' '
+ git reset --hard &&
+ chmod +x file &&
+ git apply patch-0.txt &&
+ test -x file
+'
+
+test_expect_success 'same mode (with index)' '
+ git reset --hard &&
+ chmod +x file &&
+ git add file &&
+ git apply --index patch-0.txt &&
+ test -x file &&
+ git diff --exit-code
+'
+
+test_expect_success 'same mode (index only)' '
+ git reset --hard &&
+ chmod +x file &&
+ git add file &&
+ git apply --cached patch-0.txt &&
+ git ls-files -s file | grep "^100755"
+'
+
+test_expect_success 'mode update (no index)' '
+ git reset --hard &&
+ git apply patch-1.txt &&
+ test -x file
+'
+
+test_expect_success 'mode update (with index)' '
+ git reset --hard &&
+ git apply --index patch-1.txt &&
+ test -x file &&
+ git diff --exit-code
+'
+
+test_expect_success 'mode update (index only)' '
+ git reset --hard &&
+ git apply --cached patch-1.txt &&
+ git ls-files -s file | grep "^100755"
+'
+
+test_done