1#!/bin/sh
2
3test_description='apply same filename'
4
5. ./test-lib.sh
6
7test_expect_success 'setup' '
8
9 mkdir -p some/sub/dir &&
10 echo Hello > some/sub/dir/file &&
11 git add some/sub/dir/file &&
12 git commit -m initial &&
13 git tag initial
14
15'
16
17cat > patch << EOF
18diff a/bla/blub/dir/file b/bla/blub/dir/file
19--- a/bla/blub/dir/file
20+++ b/bla/blub/dir/file
21@@ -1,1 +1,1 @@
22-Hello
23+Bello
24EOF
25
26test_expect_success 'apply --directory -p (1)' '
27
28 git apply --directory=some/sub -p3 --index patch &&
29 test Bello = $(git show :some/sub/dir/file) &&
30 test Bello = $(cat some/sub/dir/file)
31
32'
33
34test_expect_success 'apply --directory -p (2) ' '
35
36 git reset --hard initial &&
37 git apply --directory=some/sub/ -p3 --index patch &&
38 test Bello = $(git show :some/sub/dir/file) &&
39 test Bello = $(cat some/sub/dir/file)
40
41'
42
43cat > patch << EOF
44diff --git a/newfile b/newfile
45new file mode 100644
46index 0000000..d95f3ad
47--- /dev/null
48+++ b/newfile
49@@ -0,0 +1 @@
50+content
51EOF
52
53test_expect_success 'apply --directory (new file)' '
54 git reset --hard initial &&
55 git apply --directory=some/sub/dir/ --index patch &&
56 test content = $(git show :some/sub/dir/newfile) &&
57 test content = $(cat some/sub/dir/newfile)
58'
59
60cat > patch << EOF
61diff --git a/delfile b/delfile
62deleted file mode 100644
63index d95f3ad..0000000
64--- a/delfile
65+++ /dev/null
66@@ -1 +0,0 @@
67-content
68EOF
69
70test_expect_success 'apply --directory (delete file)' '
71 git reset --hard initial &&
72 echo content >some/sub/dir/delfile &&
73 git add some/sub/dir/delfile &&
74 git apply --directory=some/sub/dir/ --index patch &&
75 ! (git ls-files | grep delfile)
76'
77
78cat > patch << 'EOF'
79diff --git "a/qu\157tefile" "b/qu\157tefile"
80new file mode 100644
81index 0000000..d95f3ad
82--- /dev/null
83+++ "b/qu\157tefile"
84@@ -0,0 +1 @@
85+content
86EOF
87
88test_expect_success 'apply --directory (quoted filename)' '
89 git reset --hard initial &&
90 git apply --directory=some/sub/dir/ --index patch &&
91 test content = $(git show :some/sub/dir/quotefile) &&
92 test content = $(cat some/sub/dir/quotefile)
93'
94
95test_done