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