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/c/newfile2 b/c/newfile2
62new file mode 100644
63index 0000000..d95f3ad
64--- /dev/null
65+++ b/c/newfile2
66@@ -0,0 +1 @@
67+content
68EOF
69
70test_expect_success 'apply --directory -p (new file)' '
71 git reset --hard initial &&
72 git apply -p2 --directory=some/sub/dir/ --index patch &&
73 test content = $(git show :some/sub/dir/newfile2) &&
74 test content = $(cat some/sub/dir/newfile2)
75'
76
77cat > patch << EOF
78diff --git a/delfile b/delfile
79deleted file mode 100644
80index d95f3ad..0000000
81--- a/delfile
82+++ /dev/null
83@@ -1 +0,0 @@
84-content
85EOF
86
87test_expect_success 'apply --directory (delete file)' '
88 git reset --hard initial &&
89 echo content >some/sub/dir/delfile &&
90 git add some/sub/dir/delfile &&
91 git apply --directory=some/sub/dir/ --index patch &&
92 ! (git ls-files | grep delfile)
93'
94
95cat > patch << 'EOF'
96diff --git "a/qu\157tefile" "b/qu\157tefile"
97new file mode 100644
98index 0000000..d95f3ad
99--- /dev/null
100+++ "b/qu\157tefile"
101@@ -0,0 +1 @@
102+content
103EOF
104
105test_expect_success 'apply --directory (quoted filename)' '
106 git reset --hard initial &&
107 git apply --directory=some/sub/dir/ --index patch &&
108 test content = $(git show :some/sub/dir/quotefile) &&
109 test content = $(cat some/sub/dir/quotefile)
110'
111
112test_done