1#!/bin/sh
2
3test_description='git p4 submit'
4
5. ./lib-git-p4.sh
6
7test_expect_success 'start p4d' '
8 start_p4d
9'
10
11test_expect_success 'init depot' '
12 (
13 cd "$cli" &&
14 echo file1 >file1 &&
15 p4 add file1 &&
16 p4 submit -d "change 1"
17 )
18'
19
20test_expect_success 'submit with no client dir' '
21 test_when_finished cleanup_git &&
22 git p4 clone --dest="$git" //depot &&
23 (
24 cd "$git" &&
25 echo file2 >file2 &&
26 git add file2 &&
27 git commit -m "git commit 2" &&
28 rm -rf "$cli" &&
29 git config git-p4.skipSubmitEdit true &&
30 git p4 submit
31 ) &&
32 (
33 cd "$cli" &&
34 test_path_is_file file1 &&
35 test_path_is_file file2
36 )
37'
38
39# make two commits, but tell it to apply only from HEAD^
40test_expect_success 'submit --origin' '
41 test_when_finished cleanup_git &&
42 git p4 clone --dest="$git" //depot &&
43 (
44 cd "$git" &&
45 test_commit "file3" &&
46 test_commit "file4" &&
47 git config git-p4.skipSubmitEdit true &&
48 git p4 submit --origin=HEAD^
49 ) &&
50 (
51 cd "$cli" &&
52 test_path_is_missing "file3.t" &&
53 test_path_is_file "file4.t"
54 )
55'
56
57test_expect_success 'submit with allowSubmit' '
58 test_when_finished cleanup_git &&
59 git p4 clone --dest="$git" //depot &&
60 (
61 cd "$git" &&
62 test_commit "file5" &&
63 git config git-p4.skipSubmitEdit true &&
64 git config git-p4.allowSubmit "nobranch" &&
65 test_must_fail git p4 submit &&
66 git config git-p4.allowSubmit "nobranch,master" &&
67 git p4 submit
68 )
69'
70
71test_expect_success 'submit with master branch name from argv' '
72 test_when_finished cleanup_git &&
73 git p4 clone --dest="$git" //depot &&
74 (
75 cd "$git" &&
76 test_commit "file6" &&
77 git config git-p4.skipSubmitEdit true &&
78 test_must_fail git p4 submit nobranch &&
79 git branch otherbranch &&
80 git reset --hard HEAD^ &&
81 test_commit "file7" &&
82 git p4 submit otherbranch
83 ) &&
84 (
85 cd "$cli" &&
86 test_path_is_file "file6.t" &&
87 test_path_is_missing "file7.t"
88 )
89'
90
91#
92# Basic submit tests, the five handled cases
93#
94
95test_expect_success 'submit modify' '
96 test_when_finished cleanup_git &&
97 git p4 clone --dest="$git" //depot &&
98 (
99 cd "$git" &&
100 git config git-p4.skipSubmitEdit true &&
101 echo line >>file1 &&
102 git add file1 &&
103 git commit -m file1 &&
104 git p4 submit
105 ) &&
106 (
107 cd "$cli" &&
108 test_path_is_file file1 &&
109 test_line_count = 2 file1
110 )
111'
112
113test_expect_success 'submit add' '
114 test_when_finished cleanup_git &&
115 git p4 clone --dest="$git" //depot &&
116 (
117 cd "$git" &&
118 git config git-p4.skipSubmitEdit true &&
119 echo file13 >file13 &&
120 git add file13 &&
121 git commit -m file13 &&
122 git p4 submit
123 ) &&
124 (
125 cd "$cli" &&
126 test_path_is_file file13
127 )
128'
129
130test_expect_success 'submit delete' '
131 test_when_finished cleanup_git &&
132 git p4 clone --dest="$git" //depot &&
133 (
134 cd "$git" &&
135 git config git-p4.skipSubmitEdit true &&
136 git rm file4.t &&
137 git commit -m "delete file4.t" &&
138 git p4 submit
139 ) &&
140 (
141 cd "$cli" &&
142 test_path_is_missing file4.t
143 )
144'
145
146test_expect_success 'submit copy' '
147 test_when_finished cleanup_git &&
148 git p4 clone --dest="$git" //depot &&
149 (
150 cd "$git" &&
151 git config git-p4.skipSubmitEdit true &&
152 git config git-p4.detectCopies true &&
153 git config git-p4.detectCopiesHarder true &&
154 cp file5.t file5.ta &&
155 git add file5.ta &&
156 git commit -m "copy to file5.ta" &&
157 git p4 submit
158 ) &&
159 (
160 cd "$cli" &&
161 test_path_is_file file5.ta &&
162 test ! -w file5.ta
163 )
164'
165
166test_expect_success 'submit rename' '
167 test_when_finished cleanup_git &&
168 git p4 clone --dest="$git" //depot &&
169 (
170 cd "$git" &&
171 git config git-p4.skipSubmitEdit true &&
172 git config git-p4.detectRenames true &&
173 git mv file6.t file6.ta &&
174 git commit -m "rename file6.t to file6.ta" &&
175 git p4 submit
176 ) &&
177 (
178 cd "$cli" &&
179 test_path_is_missing file6.t &&
180 test_path_is_file file6.ta &&
181 test ! -w file6.ta
182 )
183'
184
185test_expect_success 'kill p4d' '
186 kill_p4d
187'
188
189test_done