##// END OF EJS Templates
Rails4: fix time related git adapter test failures...
Toshi MARUYAMA -
r12607:e8df3d50e8d0
parent child
Show More
@@ -1,609 +1,609
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2014 Jean-Philippe Lang
2 # Copyright (C) 2006-2014 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../../../../../test_helper', __FILE__)
18 require File.expand_path('../../../../../../test_helper', __FILE__)
19 begin
19 begin
20 require 'mocha/setup'
20 require 'mocha/setup'
21
21
22 class GitAdapterTest < ActiveSupport::TestCase
22 class GitAdapterTest < ActiveSupport::TestCase
23 REPOSITORY_PATH = Rails.root.join('tmp/test/git_repository').to_s
23 REPOSITORY_PATH = Rails.root.join('tmp/test/git_repository').to_s
24
24
25 FELIX_HEX = "Felix Sch\xC3\xA4fer"
25 FELIX_HEX = "Felix Sch\xC3\xA4fer"
26 CHAR_1_HEX = "\xc3\x9c"
26 CHAR_1_HEX = "\xc3\x9c"
27
27
28 ## Git, Mercurial and CVS path encodings are binary.
28 ## Git, Mercurial and CVS path encodings are binary.
29 ## Subversion supports URL encoding for path.
29 ## Subversion supports URL encoding for path.
30 ## Redmine Mercurial adapter and extension use URL encoding.
30 ## Redmine Mercurial adapter and extension use URL encoding.
31 ## Git accepts only binary path in command line parameter.
31 ## Git accepts only binary path in command line parameter.
32 ## So, there is no way to use binary command line parameter in JRuby.
32 ## So, there is no way to use binary command line parameter in JRuby.
33 JRUBY_SKIP = (RUBY_PLATFORM == 'java')
33 JRUBY_SKIP = (RUBY_PLATFORM == 'java')
34 JRUBY_SKIP_STR = "TODO: This test fails in JRuby"
34 JRUBY_SKIP_STR = "TODO: This test fails in JRuby"
35
35
36 if File.directory?(REPOSITORY_PATH)
36 if File.directory?(REPOSITORY_PATH)
37 ## Ruby uses ANSI api to fork a process on Windows.
37 ## Ruby uses ANSI api to fork a process on Windows.
38 ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
38 ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
39 ## and these are incompatible with ASCII.
39 ## and these are incompatible with ASCII.
40 ## Git for Windows (msysGit) changed internal API from ANSI to Unicode in 1.7.10
40 ## Git for Windows (msysGit) changed internal API from ANSI to Unicode in 1.7.10
41 ## http://code.google.com/p/msysgit/issues/detail?id=80
41 ## http://code.google.com/p/msysgit/issues/detail?id=80
42 ## So, Latin-1 path tests fail on Japanese Windows
42 ## So, Latin-1 path tests fail on Japanese Windows
43 WINDOWS_PASS = (Redmine::Platform.mswin? &&
43 WINDOWS_PASS = (Redmine::Platform.mswin? &&
44 Redmine::Scm::Adapters::GitAdapter.client_version_above?([1, 7, 10]))
44 Redmine::Scm::Adapters::GitAdapter.client_version_above?([1, 7, 10]))
45 WINDOWS_SKIP_STR = "TODO: This test fails in Git for Windows above 1.7.10"
45 WINDOWS_SKIP_STR = "TODO: This test fails in Git for Windows above 1.7.10"
46
46
47 def setup
47 def setup
48 adapter_class = Redmine::Scm::Adapters::GitAdapter
48 adapter_class = Redmine::Scm::Adapters::GitAdapter
49 assert adapter_class
49 assert adapter_class
50 assert adapter_class.client_command
50 assert adapter_class.client_command
51 assert_equal true, adapter_class.client_available
51 assert_equal true, adapter_class.client_available
52 assert_equal true, adapter_class.client_version_above?([1])
52 assert_equal true, adapter_class.client_version_above?([1])
53 assert_equal true, adapter_class.client_version_above?([1, 0])
53 assert_equal true, adapter_class.client_version_above?([1, 0])
54
54
55 @adapter = Redmine::Scm::Adapters::GitAdapter.new(
55 @adapter = Redmine::Scm::Adapters::GitAdapter.new(
56 REPOSITORY_PATH,
56 REPOSITORY_PATH,
57 nil,
57 nil,
58 nil,
58 nil,
59 nil,
59 nil,
60 'ISO-8859-1'
60 'ISO-8859-1'
61 )
61 )
62 assert @adapter
62 assert @adapter
63 @char_1 = CHAR_1_HEX.dup
63 @char_1 = CHAR_1_HEX.dup
64 @str_felix_hex = FELIX_HEX.dup
64 @str_felix_hex = FELIX_HEX.dup
65 if @char_1.respond_to?(:force_encoding)
65 if @char_1.respond_to?(:force_encoding)
66 @char_1.force_encoding('UTF-8')
66 @char_1.force_encoding('UTF-8')
67 @str_felix_hex.force_encoding('ASCII-8BIT')
67 @str_felix_hex.force_encoding('ASCII-8BIT')
68 end
68 end
69 end
69 end
70
70
71 def test_scm_version
71 def test_scm_version
72 to_test = { "git version 1.7.3.4\n" => [1,7,3,4],
72 to_test = { "git version 1.7.3.4\n" => [1,7,3,4],
73 "1.6.1\n1.7\n1.8" => [1,6,1],
73 "1.6.1\n1.7\n1.8" => [1,6,1],
74 "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]}
74 "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]}
75 to_test.each do |s, v|
75 to_test.each do |s, v|
76 test_scm_version_for(s, v)
76 test_scm_version_for(s, v)
77 end
77 end
78 end
78 end
79
79
80 def test_branches
80 def test_branches
81 brs = []
81 brs = []
82 @adapter.branches.each do |b|
82 @adapter.branches.each do |b|
83 brs << b
83 brs << b
84 end
84 end
85 assert_equal 6, brs.length
85 assert_equal 6, brs.length
86 br_issue_8857 = brs[0]
86 br_issue_8857 = brs[0]
87 assert_equal 'issue-8857', br_issue_8857.to_s
87 assert_equal 'issue-8857', br_issue_8857.to_s
88 assert_equal '2a682156a3b6e77a8bf9cd4590e8db757f3c6c78', br_issue_8857.revision
88 assert_equal '2a682156a3b6e77a8bf9cd4590e8db757f3c6c78', br_issue_8857.revision
89 assert_equal br_issue_8857.scmid, br_issue_8857.revision
89 assert_equal br_issue_8857.scmid, br_issue_8857.revision
90 assert_equal false, br_issue_8857.is_default
90 assert_equal false, br_issue_8857.is_default
91 br_latin_1_path = brs[1]
91 br_latin_1_path = brs[1]
92 assert_equal 'latin-1-path-encoding', br_latin_1_path.to_s
92 assert_equal 'latin-1-path-encoding', br_latin_1_path.to_s
93 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', br_latin_1_path.revision
93 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', br_latin_1_path.revision
94 assert_equal br_latin_1_path.scmid, br_latin_1_path.revision
94 assert_equal br_latin_1_path.scmid, br_latin_1_path.revision
95 assert_equal false, br_latin_1_path.is_default
95 assert_equal false, br_latin_1_path.is_default
96 br_master = brs[2]
96 br_master = brs[2]
97 assert_equal 'master', br_master.to_s
97 assert_equal 'master', br_master.to_s
98 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', br_master.revision
98 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', br_master.revision
99 assert_equal br_master.scmid, br_master.revision
99 assert_equal br_master.scmid, br_master.revision
100 assert_equal false, br_master.is_default
100 assert_equal false, br_master.is_default
101 br_master_20120212 = brs[3]
101 br_master_20120212 = brs[3]
102 assert_equal 'master-20120212', br_master_20120212.to_s
102 assert_equal 'master-20120212', br_master_20120212.to_s
103 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', br_master_20120212.revision
103 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', br_master_20120212.revision
104 assert_equal br_master_20120212.scmid, br_master_20120212.revision
104 assert_equal br_master_20120212.scmid, br_master_20120212.revision
105 assert_equal true, br_master_20120212.is_default
105 assert_equal true, br_master_20120212.is_default
106 br_latin_1 = brs[-2]
106 br_latin_1 = brs[-2]
107 assert_equal 'test-latin-1', br_latin_1.to_s
107 assert_equal 'test-latin-1', br_latin_1.to_s
108 assert_equal '67e7792ce20ccae2e4bb73eed09bb397819c8834', br_latin_1.revision
108 assert_equal '67e7792ce20ccae2e4bb73eed09bb397819c8834', br_latin_1.revision
109 assert_equal br_latin_1.scmid, br_latin_1.revision
109 assert_equal br_latin_1.scmid, br_latin_1.revision
110 assert_equal false, br_latin_1.is_default
110 assert_equal false, br_latin_1.is_default
111 br_test = brs[-1]
111 br_test = brs[-1]
112 assert_equal 'test_branch', br_test.to_s
112 assert_equal 'test_branch', br_test.to_s
113 assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', br_test.revision
113 assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', br_test.revision
114 assert_equal br_test.scmid, br_test.revision
114 assert_equal br_test.scmid, br_test.revision
115 assert_equal false, br_test.is_default
115 assert_equal false, br_test.is_default
116 end
116 end
117
117
118 def test_default_branch
118 def test_default_branch
119 assert_equal 'master-20120212', @adapter.default_branch
119 assert_equal 'master-20120212', @adapter.default_branch
120 end
120 end
121
121
122 def test_tags
122 def test_tags
123 assert_equal [
123 assert_equal [
124 "tag00.lightweight",
124 "tag00.lightweight",
125 "tag01.annotated",
125 "tag01.annotated",
126 ], @adapter.tags
126 ], @adapter.tags
127 end
127 end
128
128
129 def test_revisions_master_all
129 def test_revisions_master_all
130 revs1 = []
130 revs1 = []
131 @adapter.revisions('', nil, "master",{}) do |rev|
131 @adapter.revisions('', nil, "master",{}) do |rev|
132 revs1 << rev
132 revs1 << rev
133 end
133 end
134 assert_equal 15, revs1.length
134 assert_equal 15, revs1.length
135 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 0].identifier
135 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 0].identifier
136 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier
136 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier
137
137
138 revs2 = []
138 revs2 = []
139 @adapter.revisions('', nil, "master",
139 @adapter.revisions('', nil, "master",
140 {:reverse => true}) do |rev|
140 {:reverse => true}) do |rev|
141 revs2 << rev
141 revs2 << rev
142 end
142 end
143 assert_equal 15, revs2.length
143 assert_equal 15, revs2.length
144 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier
144 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier
145 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier
145 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier
146 end
146 end
147
147
148 def test_revisions_master_merged_rev
148 def test_revisions_master_merged_rev
149 revs1 = []
149 revs1 = []
150 @adapter.revisions('',
150 @adapter.revisions('',
151 "713f4944648826f558cf548222f813dabe7cbb04",
151 "713f4944648826f558cf548222f813dabe7cbb04",
152 "master",
152 "master",
153 {:reverse => true}) do |rev|
153 {:reverse => true}) do |rev|
154 revs1 << rev
154 revs1 << rev
155 end
155 end
156 assert_equal 8, revs1.length
156 assert_equal 8, revs1.length
157 assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', revs1[ 0].identifier
157 assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', revs1[ 0].identifier
158 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 1].identifier
158 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 1].identifier
159 # 4a07fe31b is not a child of 713f49446
159 # 4a07fe31b is not a child of 713f49446
160 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 2].identifier
160 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 2].identifier
161 # Merged revision
161 # Merged revision
162 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 3].identifier
162 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 3].identifier
163 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier
163 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier
164
164
165 revs2 = []
165 revs2 = []
166 @adapter.revisions('',
166 @adapter.revisions('',
167 "fba357b886984ee71185ad2065e65fc0417d9b92",
167 "fba357b886984ee71185ad2065e65fc0417d9b92",
168 "master",
168 "master",
169 {:reverse => true}) do |rev|
169 {:reverse => true}) do |rev|
170 revs2 << rev
170 revs2 << rev
171 end
171 end
172 assert_equal 7, revs2.length
172 assert_equal 7, revs2.length
173 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs2[ 0].identifier
173 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs2[ 0].identifier
174 # 4a07fe31b is not a child of fba357b8869
174 # 4a07fe31b is not a child of fba357b8869
175 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs2[ 1].identifier
175 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs2[ 1].identifier
176 # Merged revision
176 # Merged revision
177 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs2[ 2].identifier
177 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs2[ 2].identifier
178 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier
178 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier
179 end
179 end
180
180
181 def test_revisions_branch_latin_1_path_encoding_all
181 def test_revisions_branch_latin_1_path_encoding_all
182 revs1 = []
182 revs1 = []
183 @adapter.revisions('', nil, "latin-1-path-encoding",{}) do |rev|
183 @adapter.revisions('', nil, "latin-1-path-encoding",{}) do |rev|
184 revs1 << rev
184 revs1 << rev
185 end
185 end
186 assert_equal 8, revs1.length
186 assert_equal 8, revs1.length
187 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[ 0].identifier
187 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[ 0].identifier
188 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier
188 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier
189
189
190 revs2 = []
190 revs2 = []
191 @adapter.revisions('', nil, "latin-1-path-encoding",
191 @adapter.revisions('', nil, "latin-1-path-encoding",
192 {:reverse => true}) do |rev|
192 {:reverse => true}) do |rev|
193 revs2 << rev
193 revs2 << rev
194 end
194 end
195 assert_equal 8, revs2.length
195 assert_equal 8, revs2.length
196 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier
196 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier
197 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier
197 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier
198 end
198 end
199
199
200 def test_revisions_branch_latin_1_path_encoding_with_rev
200 def test_revisions_branch_latin_1_path_encoding_with_rev
201 revs1 = []
201 revs1 = []
202 @adapter.revisions('',
202 @adapter.revisions('',
203 '7234cb2750b63f47bff735edc50a1c0a433c2518',
203 '7234cb2750b63f47bff735edc50a1c0a433c2518',
204 "latin-1-path-encoding",
204 "latin-1-path-encoding",
205 {:reverse => true}) do |rev|
205 {:reverse => true}) do |rev|
206 revs1 << rev
206 revs1 << rev
207 end
207 end
208 assert_equal 7, revs1.length
208 assert_equal 7, revs1.length
209 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 0].identifier
209 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 0].identifier
210 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier
210 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier
211
211
212 revs2 = []
212 revs2 = []
213 @adapter.revisions('',
213 @adapter.revisions('',
214 '57ca437c0acbbcb749821fdf3726a1367056d364',
214 '57ca437c0acbbcb749821fdf3726a1367056d364',
215 "latin-1-path-encoding",
215 "latin-1-path-encoding",
216 {:reverse => true}) do |rev|
216 {:reverse => true}) do |rev|
217 revs2 << rev
217 revs2 << rev
218 end
218 end
219 assert_equal 3, revs2.length
219 assert_equal 3, revs2.length
220 assert_equal '4fc55c43bf3d3dc2efb66145365ddc17639ce81e', revs2[ 0].identifier
220 assert_equal '4fc55c43bf3d3dc2efb66145365ddc17639ce81e', revs2[ 0].identifier
221 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier
221 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier
222 end
222 end
223
223
224 def test_revisions_invalid_rev
224 def test_revisions_invalid_rev
225 assert_equal [], @adapter.revisions('', '1234abcd', "master")
225 assert_equal [], @adapter.revisions('', '1234abcd', "master")
226 assert_raise Redmine::Scm::Adapters::CommandFailed do
226 assert_raise Redmine::Scm::Adapters::CommandFailed do
227 revs1 = []
227 revs1 = []
228 @adapter.revisions('',
228 @adapter.revisions('',
229 '1234abcd',
229 '1234abcd',
230 "master",
230 "master",
231 {:reverse => true}) do |rev|
231 {:reverse => true}) do |rev|
232 revs1 << rev
232 revs1 << rev
233 end
233 end
234 end
234 end
235 end
235 end
236
236
237 def test_revisions_includes_master_two_revs
237 def test_revisions_includes_master_two_revs
238 revs1 = []
238 revs1 = []
239 @adapter.revisions('', nil, nil,
239 @adapter.revisions('', nil, nil,
240 {:reverse => true,
240 {:reverse => true,
241 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'],
241 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'],
242 :excludes => ['4f26664364207fa8b1af9f8722647ab2d4ac5d43']}) do |rev|
242 :excludes => ['4f26664364207fa8b1af9f8722647ab2d4ac5d43']}) do |rev|
243 revs1 << rev
243 revs1 << rev
244 end
244 end
245 assert_equal 2, revs1.length
245 assert_equal 2, revs1.length
246 assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier
246 assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier
247 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier
247 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier
248 end
248 end
249
249
250 def test_revisions_includes_master_two_revs_from_origin
250 def test_revisions_includes_master_two_revs_from_origin
251 revs1 = []
251 revs1 = []
252 @adapter.revisions('', nil, nil,
252 @adapter.revisions('', nil, nil,
253 {:reverse => true,
253 {:reverse => true,
254 :includes => ['899a15dba03a3b350b89c3f537e4bbe02a03cdc9'],
254 :includes => ['899a15dba03a3b350b89c3f537e4bbe02a03cdc9'],
255 :excludes => []}) do |rev|
255 :excludes => []}) do |rev|
256 revs1 << rev
256 revs1 << rev
257 end
257 end
258 assert_equal 2, revs1.length
258 assert_equal 2, revs1.length
259 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[ 0].identifier
259 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[ 0].identifier
260 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 1].identifier
260 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 1].identifier
261 end
261 end
262
262
263 def test_revisions_includes_merged_revs
263 def test_revisions_includes_merged_revs
264 revs1 = []
264 revs1 = []
265 @adapter.revisions('', nil, nil,
265 @adapter.revisions('', nil, nil,
266 {:reverse => true,
266 {:reverse => true,
267 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'],
267 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'],
268 :excludes => ['fba357b886984ee71185ad2065e65fc0417d9b92']}) do |rev|
268 :excludes => ['fba357b886984ee71185ad2065e65fc0417d9b92']}) do |rev|
269 revs1 << rev
269 revs1 << rev
270 end
270 end
271 assert_equal 7, revs1.length
271 assert_equal 7, revs1.length
272 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 0].identifier
272 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 0].identifier
273 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 1].identifier
273 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 1].identifier
274 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 2].identifier
274 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 2].identifier
275 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier
275 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier
276 end
276 end
277
277
278 def test_revisions_includes_two_heads
278 def test_revisions_includes_two_heads
279 revs1 = []
279 revs1 = []
280 @adapter.revisions('', nil, nil,
280 @adapter.revisions('', nil, nil,
281 {:reverse => true,
281 {:reverse => true,
282 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c',
282 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c',
283 '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127'],
283 '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127'],
284 :excludes => ['4f26664364207fa8b1af9f8722647ab2d4ac5d43',
284 :excludes => ['4f26664364207fa8b1af9f8722647ab2d4ac5d43',
285 '4fc55c43bf3d3dc2efb66145365ddc17639ce81e']}) do |rev|
285 '4fc55c43bf3d3dc2efb66145365ddc17639ce81e']}) do |rev|
286 revs1 << rev
286 revs1 << rev
287 end
287 end
288 assert_equal 4, revs1.length
288 assert_equal 4, revs1.length
289 assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier
289 assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier
290 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 1].identifier
290 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 1].identifier
291 assert_equal '64f1f3e89ad1cb57976ff0ad99a107012ba3481d', revs1[-2].identifier
291 assert_equal '64f1f3e89ad1cb57976ff0ad99a107012ba3481d', revs1[-2].identifier
292 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier
292 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier
293 end
293 end
294
294
295 def test_revisions_disjointed_histories_revisions
295 def test_revisions_disjointed_histories_revisions
296 revs1 = []
296 revs1 = []
297 @adapter.revisions('', nil, nil,
297 @adapter.revisions('', nil, nil,
298 {:reverse => true,
298 {:reverse => true,
299 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c',
299 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c',
300 '92397af84d22f27389c822848ecd5b463c181583'],
300 '92397af84d22f27389c822848ecd5b463c181583'],
301 :excludes => ['95488a44bc25f7d1f97d775a31359539ff333a63',
301 :excludes => ['95488a44bc25f7d1f97d775a31359539ff333a63',
302 '4f26664364207fa8b1af9f8722647ab2d4ac5d43'] }) do |rev|
302 '4f26664364207fa8b1af9f8722647ab2d4ac5d43'] }) do |rev|
303 revs1 << rev
303 revs1 << rev
304 end
304 end
305 assert_equal 4, revs1.length
305 assert_equal 4, revs1.length
306 assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier
306 assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier
307 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 1].identifier
307 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 1].identifier
308 assert_equal 'bc201c95999c4f10d018b0aa03b541cd6a2ff0ee', revs1[-2].identifier
308 assert_equal 'bc201c95999c4f10d018b0aa03b541cd6a2ff0ee', revs1[-2].identifier
309 assert_equal '92397af84d22f27389c822848ecd5b463c181583', revs1[-1].identifier
309 assert_equal '92397af84d22f27389c822848ecd5b463c181583', revs1[-1].identifier
310 end
310 end
311
311
312 def test_revisions_invalid_rev_excludes
312 def test_revisions_invalid_rev_excludes
313 assert_equal [],
313 assert_equal [],
314 @adapter.revisions('', nil, nil,
314 @adapter.revisions('', nil, nil,
315 {:reverse => true,
315 {:reverse => true,
316 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'],
316 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'],
317 :excludes => ['0123abcd4567']})
317 :excludes => ['0123abcd4567']})
318 assert_raise Redmine::Scm::Adapters::CommandFailed do
318 assert_raise Redmine::Scm::Adapters::CommandFailed do
319 revs1 = []
319 revs1 = []
320 @adapter.revisions('', nil, nil,
320 @adapter.revisions('', nil, nil,
321 {:reverse => true,
321 {:reverse => true,
322 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'],
322 :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'],
323 :excludes => ['0123abcd4567']}) do |rev|
323 :excludes => ['0123abcd4567']}) do |rev|
324 revs1 << rev
324 revs1 << rev
325 end
325 end
326 end
326 end
327 end
327 end
328
328
329 def test_getting_revisions_with_spaces_in_filename
329 def test_getting_revisions_with_spaces_in_filename
330 assert_equal 1, @adapter.revisions("filemane with spaces.txt",
330 assert_equal 1, @adapter.revisions("filemane with spaces.txt",
331 nil, "master").length
331 nil, "master").length
332 end
332 end
333
333
334 def test_parents
334 def test_parents
335 revs1 = []
335 revs1 = []
336 @adapter.revisions('',
336 @adapter.revisions('',
337 nil,
337 nil,
338 "master",
338 "master",
339 {:reverse => true}) do |rev|
339 {:reverse => true}) do |rev|
340 revs1 << rev
340 revs1 << rev
341 end
341 end
342 assert_equal 15, revs1.length
342 assert_equal 15, revs1.length
343 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
343 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
344 revs1[0].identifier
344 revs1[0].identifier
345 assert_equal nil, revs1[0].parents
345 assert_equal nil, revs1[0].parents
346 assert_equal "899a15dba03a3b350b89c3f537e4bbe02a03cdc9",
346 assert_equal "899a15dba03a3b350b89c3f537e4bbe02a03cdc9",
347 revs1[1].identifier
347 revs1[1].identifier
348 assert_equal 1, revs1[1].parents.length
348 assert_equal 1, revs1[1].parents.length
349 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
349 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
350 revs1[1].parents[0]
350 revs1[1].parents[0]
351 assert_equal "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
351 assert_equal "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
352 revs1[10].identifier
352 revs1[10].identifier
353 assert_equal 2, revs1[10].parents.length
353 assert_equal 2, revs1[10].parents.length
354 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
354 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
355 revs1[10].parents[0]
355 revs1[10].parents[0]
356 assert_equal "7e61ac704deecde634b51e59daa8110435dcb3da",
356 assert_equal "7e61ac704deecde634b51e59daa8110435dcb3da",
357 revs1[10].parents[1]
357 revs1[10].parents[1]
358 end
358 end
359
359
360 def test_getting_revisions_with_leading_and_trailing_spaces_in_filename
360 def test_getting_revisions_with_leading_and_trailing_spaces_in_filename
361 assert_equal " filename with a leading space.txt ",
361 assert_equal " filename with a leading space.txt ",
362 @adapter.revisions(" filename with a leading space.txt ",
362 @adapter.revisions(" filename with a leading space.txt ",
363 nil, "master")[0].paths[0][:path]
363 nil, "master")[0].paths[0][:path]
364 end
364 end
365
365
366 def test_getting_entries_with_leading_and_trailing_spaces_in_filename
366 def test_getting_entries_with_leading_and_trailing_spaces_in_filename
367 assert_equal " filename with a leading space.txt ",
367 assert_equal " filename with a leading space.txt ",
368 @adapter.entries('',
368 @adapter.entries('',
369 '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name
369 '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name
370 end
370 end
371
371
372 def test_annotate
372 def test_annotate
373 annotate = @adapter.annotate('sources/watchers_controller.rb')
373 annotate = @adapter.annotate('sources/watchers_controller.rb')
374 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
374 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
375 assert_equal 41, annotate.lines.size
375 assert_equal 41, annotate.lines.size
376 assert_equal "# This program is free software; you can redistribute it and/or",
376 assert_equal "# This program is free software; you can redistribute it and/or",
377 annotate.lines[4].strip
377 annotate.lines[4].strip
378 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
378 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
379 annotate.revisions[4].identifier
379 annotate.revisions[4].identifier
380 assert_equal "jsmith", annotate.revisions[4].author
380 assert_equal "jsmith", annotate.revisions[4].author
381 end
381 end
382
382
383 def test_annotate_moved_file
383 def test_annotate_moved_file
384 annotate = @adapter.annotate('renamed_test.txt')
384 annotate = @adapter.annotate('renamed_test.txt')
385 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
385 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
386 assert_equal 2, annotate.lines.size
386 assert_equal 2, annotate.lines.size
387 end
387 end
388
388
389 def test_last_rev
389 def test_last_rev
390 last_rev = @adapter.lastrev("README",
390 last_rev = @adapter.lastrev("README",
391 "4f26664364207fa8b1af9f8722647ab2d4ac5d43")
391 "4f26664364207fa8b1af9f8722647ab2d4ac5d43")
392 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid
392 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid
393 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier
393 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier
394 assert_equal "Adam Soltys <asoltys@gmail.com>", last_rev.author
394 assert_equal "Adam Soltys <asoltys@gmail.com>", last_rev.author
395 assert_equal "2009-06-24 05:27:38".to_time, last_rev.time
395 assert_equal Time.gm(2009, 6, 24, 5, 27, 38), last_rev.time
396 end
396 end
397
397
398 def test_last_rev_with_spaces_in_filename
398 def test_last_rev_with_spaces_in_filename
399 last_rev = @adapter.lastrev("filemane with spaces.txt",
399 last_rev = @adapter.lastrev("filemane with spaces.txt",
400 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b")
400 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b")
401 last_rev_author = last_rev.author
401 last_rev_author = last_rev.author
402 assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid
402 assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid
403 assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier
403 assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier
404 assert_equal "#{@str_felix_hex} <felix@fachschaften.org>",
404 assert_equal "#{@str_felix_hex} <felix@fachschaften.org>",
405 last_rev.author
405 last_rev.author
406 assert_equal "2010-09-18 19:59:46".to_time, last_rev.time
406 assert_equal Time.gm(2010, 9, 18, 19, 59, 46), last_rev.time
407 end
407 end
408
408
409 def test_latin_1_path
409 def test_latin_1_path
410 if WINDOWS_PASS
410 if WINDOWS_PASS
411 puts WINDOWS_SKIP_STR
411 puts WINDOWS_SKIP_STR
412 elsif JRUBY_SKIP
412 elsif JRUBY_SKIP
413 puts JRUBY_SKIP_STR
413 puts JRUBY_SKIP_STR
414 else
414 else
415 p2 = "latin-1-dir/test-#{@char_1}-2.txt"
415 p2 = "latin-1-dir/test-#{@char_1}-2.txt"
416 ['4fc55c43bf3d3dc2efb66145365ddc17639ce81e', '4fc55c43bf3'].each do |r1|
416 ['4fc55c43bf3d3dc2efb66145365ddc17639ce81e', '4fc55c43bf3'].each do |r1|
417 assert @adapter.diff(p2, r1)
417 assert @adapter.diff(p2, r1)
418 assert @adapter.cat(p2, r1)
418 assert @adapter.cat(p2, r1)
419 assert_equal 1, @adapter.annotate(p2, r1).lines.length
419 assert_equal 1, @adapter.annotate(p2, r1).lines.length
420 ['64f1f3e89ad1cb57976ff0ad99a107012ba3481d', '64f1f3e89ad1cb5797'].each do |r2|
420 ['64f1f3e89ad1cb57976ff0ad99a107012ba3481d', '64f1f3e89ad1cb5797'].each do |r2|
421 assert @adapter.diff(p2, r1, r2)
421 assert @adapter.diff(p2, r1, r2)
422 end
422 end
423 end
423 end
424 end
424 end
425 end
425 end
426
426
427 def test_latin_1_user_annotate
427 def test_latin_1_user_annotate
428 ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', '83ca5fd546063a'].each do |r1|
428 ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', '83ca5fd546063a'].each do |r1|
429 annotate = @adapter.annotate(" filename with a leading space.txt ", r1)
429 annotate = @adapter.annotate(" filename with a leading space.txt ", r1)
430 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
430 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
431 assert_equal 1, annotate.lines.size
431 assert_equal 1, annotate.lines.size
432 assert_equal "And this is a file with a leading and trailing space...",
432 assert_equal "And this is a file with a leading and trailing space...",
433 annotate.lines[0].strip
433 annotate.lines[0].strip
434 assert_equal "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
434 assert_equal "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
435 annotate.revisions[0].identifier
435 annotate.revisions[0].identifier
436 assert_equal @str_felix_hex, annotate.revisions[0].author
436 assert_equal @str_felix_hex, annotate.revisions[0].author
437 end
437 end
438 end
438 end
439
439
440 def test_entries_tag
440 def test_entries_tag
441 entries1 = @adapter.entries(nil, 'tag01.annotated',
441 entries1 = @adapter.entries(nil, 'tag01.annotated',
442 options = {:report_last_commit => true})
442 options = {:report_last_commit => true})
443 assert entries1
443 assert entries1
444 assert_equal 3, entries1.size
444 assert_equal 3, entries1.size
445 assert_equal 'sources', entries1[1].name
445 assert_equal 'sources', entries1[1].name
446 assert_equal 'sources', entries1[1].path
446 assert_equal 'sources', entries1[1].path
447 assert_equal 'dir', entries1[1].kind
447 assert_equal 'dir', entries1[1].kind
448 readme = entries1[2]
448 readme = entries1[2]
449 assert_equal 'README', readme.name
449 assert_equal 'README', readme.name
450 assert_equal 'README', readme.path
450 assert_equal 'README', readme.path
451 assert_equal 'file', readme.kind
451 assert_equal 'file', readme.kind
452 assert_equal 27, readme.size
452 assert_equal 27, readme.size
453 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', readme.lastrev.identifier
453 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', readme.lastrev.identifier
454 assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time
454 assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time
455 end
455 end
456
456
457 def test_entries_branch
457 def test_entries_branch
458 entries1 = @adapter.entries(nil, 'test_branch',
458 entries1 = @adapter.entries(nil, 'test_branch',
459 options = {:report_last_commit => true})
459 options = {:report_last_commit => true})
460 assert entries1
460 assert entries1
461 assert_equal 4, entries1.size
461 assert_equal 4, entries1.size
462 assert_equal 'sources', entries1[1].name
462 assert_equal 'sources', entries1[1].name
463 assert_equal 'sources', entries1[1].path
463 assert_equal 'sources', entries1[1].path
464 assert_equal 'dir', entries1[1].kind
464 assert_equal 'dir', entries1[1].kind
465 readme = entries1[2]
465 readme = entries1[2]
466 assert_equal 'README', readme.name
466 assert_equal 'README', readme.name
467 assert_equal 'README', readme.path
467 assert_equal 'README', readme.path
468 assert_equal 'file', readme.kind
468 assert_equal 'file', readme.kind
469 assert_equal 159, readme.size
469 assert_equal 159, readme.size
470 assert_equal '713f4944648826f558cf548222f813dabe7cbb04', readme.lastrev.identifier
470 assert_equal '713f4944648826f558cf548222f813dabe7cbb04', readme.lastrev.identifier
471 assert_equal Time.gm(2009, 6, 19, 4, 37, 23), readme.lastrev.time
471 assert_equal Time.gm(2009, 6, 19, 4, 37, 23), readme.lastrev.time
472 end
472 end
473
473
474 def test_entries_wrong_path_encoding
474 def test_entries_wrong_path_encoding
475 adpt = Redmine::Scm::Adapters::GitAdapter.new(
475 adpt = Redmine::Scm::Adapters::GitAdapter.new(
476 REPOSITORY_PATH,
476 REPOSITORY_PATH,
477 nil,
477 nil,
478 nil,
478 nil,
479 nil,
479 nil,
480 'EUC-JP'
480 'EUC-JP'
481 )
481 )
482 entries1 = adpt.entries('latin-1-dir', '64f1f3e8')
482 entries1 = adpt.entries('latin-1-dir', '64f1f3e8')
483 assert entries1
483 assert entries1
484 assert_equal 3, entries1.size
484 assert_equal 3, entries1.size
485 f1 = entries1[1]
485 f1 = entries1[1]
486 assert_equal nil, f1.name
486 assert_equal nil, f1.name
487 assert_equal nil, f1.path
487 assert_equal nil, f1.path
488 assert_equal 'file', f1.kind
488 assert_equal 'file', f1.kind
489 end
489 end
490
490
491 def test_entries_latin_1_files
491 def test_entries_latin_1_files
492 entries1 = @adapter.entries('latin-1-dir', '64f1f3e8')
492 entries1 = @adapter.entries('latin-1-dir', '64f1f3e8')
493 assert entries1
493 assert entries1
494 assert_equal 3, entries1.size
494 assert_equal 3, entries1.size
495 f1 = entries1[1]
495 f1 = entries1[1]
496 assert_equal "test-#{@char_1}-2.txt", f1.name
496 assert_equal "test-#{@char_1}-2.txt", f1.name
497 assert_equal "latin-1-dir/test-#{@char_1}-2.txt", f1.path
497 assert_equal "latin-1-dir/test-#{@char_1}-2.txt", f1.path
498 assert_equal 'file', f1.kind
498 assert_equal 'file', f1.kind
499 end
499 end
500
500
501 def test_entries_latin_1_dir
501 def test_entries_latin_1_dir
502 if WINDOWS_PASS
502 if WINDOWS_PASS
503 puts WINDOWS_SKIP_STR
503 puts WINDOWS_SKIP_STR
504 elsif JRUBY_SKIP
504 elsif JRUBY_SKIP
505 puts JRUBY_SKIP_STR
505 puts JRUBY_SKIP_STR
506 else
506 else
507 entries1 = @adapter.entries("latin-1-dir/test-#{@char_1}-subdir",
507 entries1 = @adapter.entries("latin-1-dir/test-#{@char_1}-subdir",
508 '1ca7f5ed')
508 '1ca7f5ed')
509 assert entries1
509 assert entries1
510 assert_equal 3, entries1.size
510 assert_equal 3, entries1.size
511 f1 = entries1[1]
511 f1 = entries1[1]
512 assert_equal "test-#{@char_1}-2.txt", f1.name
512 assert_equal "test-#{@char_1}-2.txt", f1.name
513 assert_equal "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-2.txt", f1.path
513 assert_equal "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-2.txt", f1.path
514 assert_equal 'file', f1.kind
514 assert_equal 'file', f1.kind
515 end
515 end
516 end
516 end
517
517
518 def test_entry
518 def test_entry
519 entry = @adapter.entry()
519 entry = @adapter.entry()
520 assert_equal "", entry.path
520 assert_equal "", entry.path
521 assert_equal "dir", entry.kind
521 assert_equal "dir", entry.kind
522 entry = @adapter.entry('')
522 entry = @adapter.entry('')
523 assert_equal "", entry.path
523 assert_equal "", entry.path
524 assert_equal "dir", entry.kind
524 assert_equal "dir", entry.kind
525 assert_nil @adapter.entry('invalid')
525 assert_nil @adapter.entry('invalid')
526 assert_nil @adapter.entry('/invalid')
526 assert_nil @adapter.entry('/invalid')
527 assert_nil @adapter.entry('/invalid/')
527 assert_nil @adapter.entry('/invalid/')
528 assert_nil @adapter.entry('invalid/invalid')
528 assert_nil @adapter.entry('invalid/invalid')
529 assert_nil @adapter.entry('invalid/invalid/')
529 assert_nil @adapter.entry('invalid/invalid/')
530 assert_nil @adapter.entry('/invalid/invalid')
530 assert_nil @adapter.entry('/invalid/invalid')
531 assert_nil @adapter.entry('/invalid/invalid/')
531 assert_nil @adapter.entry('/invalid/invalid/')
532 ["README", "/README"].each do |path|
532 ["README", "/README"].each do |path|
533 entry = @adapter.entry(path, '7234cb2750b63f')
533 entry = @adapter.entry(path, '7234cb2750b63f')
534 assert_equal "README", entry.path
534 assert_equal "README", entry.path
535 assert_equal "file", entry.kind
535 assert_equal "file", entry.kind
536 end
536 end
537 ["sources", "/sources", "/sources/"].each do |path|
537 ["sources", "/sources", "/sources/"].each do |path|
538 entry = @adapter.entry(path, '7234cb2750b63f')
538 entry = @adapter.entry(path, '7234cb2750b63f')
539 assert_equal "sources", entry.path
539 assert_equal "sources", entry.path
540 assert_equal "dir", entry.kind
540 assert_equal "dir", entry.kind
541 end
541 end
542 ["sources/watchers_controller.rb", "/sources/watchers_controller.rb"].each do |path|
542 ["sources/watchers_controller.rb", "/sources/watchers_controller.rb"].each do |path|
543 entry = @adapter.entry(path, '7234cb2750b63f')
543 entry = @adapter.entry(path, '7234cb2750b63f')
544 assert_equal "sources/watchers_controller.rb", entry.path
544 assert_equal "sources/watchers_controller.rb", entry.path
545 assert_equal "file", entry.kind
545 assert_equal "file", entry.kind
546 end
546 end
547 end
547 end
548
548
549 def test_path_encoding_default_utf8
549 def test_path_encoding_default_utf8
550 adpt1 = Redmine::Scm::Adapters::GitAdapter.new(
550 adpt1 = Redmine::Scm::Adapters::GitAdapter.new(
551 REPOSITORY_PATH
551 REPOSITORY_PATH
552 )
552 )
553 assert_equal "UTF-8", adpt1.path_encoding
553 assert_equal "UTF-8", adpt1.path_encoding
554 adpt2 = Redmine::Scm::Adapters::GitAdapter.new(
554 adpt2 = Redmine::Scm::Adapters::GitAdapter.new(
555 REPOSITORY_PATH,
555 REPOSITORY_PATH,
556 nil,
556 nil,
557 nil,
557 nil,
558 nil,
558 nil,
559 ""
559 ""
560 )
560 )
561 assert_equal "UTF-8", adpt2.path_encoding
561 assert_equal "UTF-8", adpt2.path_encoding
562 end
562 end
563
563
564 def test_cat_path_invalid
564 def test_cat_path_invalid
565 assert_nil @adapter.cat('invalid')
565 assert_nil @adapter.cat('invalid')
566 end
566 end
567
567
568 def test_cat_revision_invalid
568 def test_cat_revision_invalid
569 assert @adapter.cat('README')
569 assert @adapter.cat('README')
570 assert_nil @adapter.cat('README', '1234abcd5678')
570 assert_nil @adapter.cat('README', '1234abcd5678')
571 end
571 end
572
572
573 def test_diff_path_invalid
573 def test_diff_path_invalid
574 assert_equal [], @adapter.diff('invalid', '713f4944648826f5')
574 assert_equal [], @adapter.diff('invalid', '713f4944648826f5')
575 end
575 end
576
576
577 def test_diff_revision_invalid
577 def test_diff_revision_invalid
578 assert_nil @adapter.diff(nil, '1234abcd5678')
578 assert_nil @adapter.diff(nil, '1234abcd5678')
579 assert_nil @adapter.diff(nil, '713f4944648826f5', '1234abcd5678')
579 assert_nil @adapter.diff(nil, '713f4944648826f5', '1234abcd5678')
580 assert_nil @adapter.diff(nil, '1234abcd5678', '713f4944648826f5')
580 assert_nil @adapter.diff(nil, '1234abcd5678', '713f4944648826f5')
581 end
581 end
582
582
583 def test_annotate_path_invalid
583 def test_annotate_path_invalid
584 assert_nil @adapter.annotate('invalid')
584 assert_nil @adapter.annotate('invalid')
585 end
585 end
586
586
587 def test_annotate_revision_invalid
587 def test_annotate_revision_invalid
588 assert @adapter.annotate('README')
588 assert @adapter.annotate('README')
589 assert_nil @adapter.annotate('README', '1234abcd5678')
589 assert_nil @adapter.annotate('README', '1234abcd5678')
590 end
590 end
591
591
592 private
592 private
593
593
594 def test_scm_version_for(scm_command_version, version)
594 def test_scm_version_for(scm_command_version, version)
595 @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version)
595 @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version)
596 assert_equal version, @adapter.class.scm_command_version
596 assert_equal version, @adapter.class.scm_command_version
597 end
597 end
598
598
599 else
599 else
600 puts "Git test repository NOT FOUND. Skipping unit tests !!!"
600 puts "Git test repository NOT FOUND. Skipping unit tests !!!"
601 def test_fake; assert true end
601 def test_fake; assert true end
602 end
602 end
603 end
603 end
604
604
605 rescue LoadError
605 rescue LoadError
606 class GitMochaFake < ActiveSupport::TestCase
606 class GitMochaFake < ActiveSupport::TestCase
607 def test_fake; assert(false, "Requires mocha to run those tests") end
607 def test_fake; assert(false, "Requires mocha to run those tests") end
608 end
608 end
609 end
609 end
General Comments 0
You need to be logged in to leave comments. Login now