##// END OF EJS Templates
scm: mercurial: remove trailing white-spaces and a empty line from functional test....
Toshi MARUYAMA -
r5563:2c08b71e8f4f
parent child
Show More
@@ -1,372 +1,371
1 # redMine - project management software
2 # Copyright (C) 2006-2008 Jean-Philippe Lang
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 #
8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 #
13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 require File.expand_path('../../test_helper', __FILE__)
19 19 require 'repositories_controller'
20 20
21 21 # Re-raise errors caught by the controller.
22 22 class RepositoriesController; def rescue_action(e) raise e end; end
23 23
24 24 class RepositoriesMercurialControllerTest < ActionController::TestCase
25 25 fixtures :projects, :users, :roles, :members, :member_roles, :repositories, :enabled_modules
26 26
27 27 # No '..' in the repository path
28 28 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository'
29 29 CHAR_1_HEX = "\xc3\x9c"
30 30 PRJ_ID = 3
31 31
32 32 ruby19_non_utf8_pass = (RUBY_VERSION >= '1.9' && Encoding.default_external.to_s != 'UTF-8')
33 33
34 34 def setup
35 35 @controller = RepositoriesController.new
36 36 @request = ActionController::TestRequest.new
37 37 @response = ActionController::TestResponse.new
38 38 User.current = nil
39 39 @repository = Repository::Mercurial.create(
40 40 :project => Project.find(PRJ_ID),
41 41 :url => REPOSITORY_PATH,
42 42 :path_encoding => 'ISO-8859-1'
43 43 )
44 44 assert @repository
45 45 @diff_c_support = true
46 46 @char_1 = CHAR_1_HEX.dup
47 47 @tag_char_1 = "tag-#{CHAR_1_HEX}-00"
48 48 @branch_char_0 = "branch-#{CHAR_1_HEX}-00"
49 49 @branch_char_1 = "branch-#{CHAR_1_HEX}-01"
50 50 if @char_1.respond_to?(:force_encoding)
51 51 @char_1.force_encoding('UTF-8')
52 52 @tag_char_1.force_encoding('UTF-8')
53 53 @branch_char_0.force_encoding('UTF-8')
54 54 @branch_char_1.force_encoding('UTF-8')
55 55 end
56 56 end
57 57
58 58 if ruby19_non_utf8_pass
59 59 puts "TODO: Mercurial functional test fails in Ruby 1.9 " +
60 60 "and Encoding.default_external is not UTF-8. " +
61 "Current value is '#{Encoding.default_external.to_s}'"
61 "Current value is '#{Encoding.default_external.to_s}'"
62 62 def test_fake; assert true end
63 63 elsif File.directory?(REPOSITORY_PATH)
64 64 def test_show_root
65 65 @repository.fetch_changesets
66 66 @repository.reload
67 67 get :show, :id => PRJ_ID
68 68 assert_response :success
69 69 assert_template 'show'
70 70 assert_not_nil assigns(:entries)
71 71 assert_equal 4, assigns(:entries).size
72 72 assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'}
73 73 assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'}
74 74 assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'}
75 75 assert_not_nil assigns(:changesets)
76 76 assigns(:changesets).size > 0
77 77 end
78 78
79 79 def test_show_directory
80 80 @repository.fetch_changesets
81 81 @repository.reload
82 82 get :show, :id => PRJ_ID, :path => ['images']
83 83 assert_response :success
84 84 assert_template 'show'
85 85 assert_not_nil assigns(:entries)
86 86 assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
87 87 entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
88 88 assert_not_nil entry
89 89 assert_equal 'file', entry.kind
90 90 assert_equal 'images/edit.png', entry.path
91 91 assert_not_nil assigns(:changesets)
92 92 assigns(:changesets).size > 0
93 93 end
94 94
95 95 def test_show_at_given_revision
96 96 @repository.fetch_changesets
97 97 @repository.reload
98 98 [0, '0', '0885933ad4f6'].each do |r1|
99 99 get :show, :id => PRJ_ID, :path => ['images'], :rev => r1
100 100 assert_response :success
101 101 assert_template 'show'
102 102 assert_not_nil assigns(:entries)
103 103 assert_equal ['delete.png'], assigns(:entries).collect(&:name)
104 104 assert_not_nil assigns(:changesets)
105 105 assigns(:changesets).size > 0
106 106 end
107 107 end
108 108
109 109 def test_show_directory_sql_escape_percent
110 110 @repository.fetch_changesets
111 111 @repository.reload
112 112 [13, '13', '3a330eb32958'].each do |r1|
113 113 get :show, :id => PRJ_ID, :path => ['sql_escape', 'percent%dir'], :rev => r1
114 114 assert_response :success
115 115 assert_template 'show'
116 116
117 117 assert_not_nil assigns(:entries)
118 118 assert_equal ['percent%file1.txt', 'percentfile1.txt'], assigns(:entries).collect(&:name)
119 119 changesets = assigns(:changesets)
120 120 assert_not_nil changesets
121 121 assigns(:changesets).size > 0
122 122 assert_equal %w(13 11 10 9), changesets.collect(&:revision)
123 123 end
124 124 end
125 125
126 126 def test_show_directory_latin_1
127 127 @repository.fetch_changesets
128 128 @repository.reload
129 129 [21, '21', 'adf805632193'].each do |r1|
130 130 get :show, :id => PRJ_ID, :path => ['latin-1-dir'], :rev => r1
131 131 assert_response :success
132 132 assert_template 'show'
133 133
134 134 assert_not_nil assigns(:entries)
135 135 assert_equal ["make-latin-1-file.rb",
136 136 "test-#{@char_1}-1.txt",
137 137 "test-#{@char_1}-2.txt",
138 138 "test-#{@char_1}.txt"], assigns(:entries).collect(&:name)
139 139 changesets = assigns(:changesets)
140 140 assert_not_nil changesets
141 141 assert_equal %w(21 20 19 18 17), changesets.collect(&:revision)
142 142 end
143 143 end
144 144
145 145 def test_show_branch
146 146 @repository.fetch_changesets
147 147 @repository.reload
148 148 [
149 149 'default',
150 150 @branch_char_1,
151 151 'branch (1)[2]&,%.-3_4',
152 152 @branch_char_0,
153 153 'test_branch.latin-1',
154 154 'test-branch-00',
155 155 ].each do |bra|
156 156 get :show, :id => PRJ_ID, :rev => bra
157 157 assert_response :success
158 158 assert_template 'show'
159 159 assert_not_nil assigns(:entries)
160 160 assert assigns(:entries).size > 0
161 161 assert_not_nil assigns(:changesets)
162 162 assigns(:changesets).size > 0
163 163 end
164 164 end
165 165
166 166 def test_show_tag
167 167 @repository.fetch_changesets
168 168 @repository.reload
169 169 [
170 170 @tag_char_1,
171 171 'tag_test.00',
172 172 'tag-init-revision'
173 173 ].each do |tag|
174 174 get :show, :id => PRJ_ID, :rev => tag
175 175 assert_response :success
176 176 assert_template 'show'
177 177 assert_not_nil assigns(:entries)
178 178 assert assigns(:entries).size > 0
179 179 assert_not_nil assigns(:changesets)
180 180 assigns(:changesets).size > 0
181 181 end
182 182 end
183 183
184 184 def test_changes
185 185 get :changes, :id => PRJ_ID, :path => ['images', 'edit.png']
186 186 assert_response :success
187 187 assert_template 'changes'
188 188 assert_tag :tag => 'h2', :content => 'edit.png'
189 189 end
190
190
191 191 def test_entry_show
192 192 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
193 193 assert_response :success
194 194 assert_template 'entry'
195 195 # Line 10
196 196 assert_tag :tag => 'th',
197 197 :content => '10',
198 198 :attributes => { :class => 'line-num' },
199 199 :sibling => { :tag => 'td', :content => /WITHOUT ANY WARRANTY/ }
200 200 end
201 201
202 202 def test_entry_show_latin_1
203 203 [21, '21', 'adf805632193'].each do |r1|
204 204 get :entry, :id => PRJ_ID, :path => ['latin-1-dir', "test-#{@char_1}-2.txt"], :rev => r1
205 205 assert_response :success
206 206 assert_template 'entry'
207 207 assert_tag :tag => 'th',
208 208 :content => '1',
209 209 :attributes => { :class => 'line-num' },
210 210 :sibling => { :tag => 'td',
211 211 :content => /Mercurial is a distributed version control system/ }
212 212 end
213 213 end
214
214
215 215 def test_entry_download
216 216 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :format => 'raw'
217 217 assert_response :success
218 218 # File content
219 219 assert @response.body.include?('WITHOUT ANY WARRANTY')
220 220 end
221 221
222 222 def test_entry_binary_force_download
223 223 get :entry, :id => PRJ_ID, :rev => 1, :path => ['images', 'edit.png']
224 224 assert_response :success
225 225 assert_equal 'image/png', @response.content_type
226 226 end
227 227
228 228 def test_directory_entry
229 229 get :entry, :id => PRJ_ID, :path => ['sources']
230 230 assert_response :success
231 231 assert_template 'show'
232 232 assert_not_nil assigns(:entry)
233 233 assert_equal 'sources', assigns(:entry).name
234 234 end
235 235
236 236 def test_diff
237 237 @repository.fetch_changesets
238 238 @repository.reload
239 239 [4, '4', 'def6d2f1254a'].each do |r1|
240 240 # Full diff of changeset 4
241 241 get :diff, :id => PRJ_ID, :rev => r1
242 242 assert_response :success
243 243 assert_template 'diff'
244 244 if @diff_c_support
245 245 # Line 22 removed
246 246 assert_tag :tag => 'th',
247 247 :content => '22',
248 :sibling => { :tag => 'td',
248 :sibling => { :tag => 'td',
249 249 :attributes => { :class => /diff_out/ },
250 250 :content => /def remove/ }
251 251 assert_tag :tag => 'h2', :content => /4:def6d2f1254a/
252 252 end
253 253 end
254 254 end
255 255
256 256 def test_diff_two_revs
257 257 @repository.fetch_changesets
258 258 @repository.reload
259 259 [2, '400bb8672109', '400', 400].each do |r1|
260 260 [4, 'def6d2f1254a'].each do |r2|
261 261 get :diff, :id => PRJ_ID, :rev => r1,
262 262 :rev_to => r2
263 263 assert_response :success
264 264 assert_template 'diff'
265 265
266 266 diff = assigns(:diff)
267 267 assert_not_nil diff
268 268 assert_tag :tag => 'h2', :content => /4:def6d2f1254a 2:400bb8672109/
269 269 end
270 270 end
271 271 end
272 272
273 273 def test_diff_latin_1
274 274 [21, 'adf805632193'].each do |r1|
275 275 get :diff, :id => PRJ_ID, :rev => r1
276 276 assert_response :success
277 277 assert_template 'diff'
278 278 assert_tag :tag => 'th',
279 279 :content => '2',
280 :sibling => { :tag => 'td',
280 :sibling => { :tag => 'td',
281 281 :attributes => { :class => /diff_in/ },
282 282 :content => /It is written in Python/ }
283 283 end
284 284 end
285 285
286 286 def test_annotate
287 287 get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
288 288 assert_response :success
289 289 assert_template 'annotate'
290 290 # Line 23, revision 4:def6d2f1254a
291 291 assert_tag :tag => 'th',
292 292 :content => '23',
293 293 :attributes => { :class => 'line-num' },
294 294 :sibling =>
295 295 {
296 296 :tag => 'td',
297 297 :attributes => { :class => 'revision' },
298 298 :child => { :tag => 'a', :content => '4:def6d2f1254a' }
299 299 }
300 300 assert_tag :tag => 'th',
301 301 :content => '23',
302 302 :attributes => { :class => 'line-num' },
303 303 :sibling =>
304 304 {
305 305 :tag => 'td' ,
306 306 :content => 'jsmith' ,
307 307 :attributes => { :class => 'author' },
308 308 }
309 309 assert_tag :tag => 'th',
310 310 :content => '23',
311 311 :attributes => { :class => 'line-num' },
312 312 :sibling => { :tag => 'td', :content => /watcher =/ }
313 313 end
314 314
315 315 def test_annotate_at_given_revision
316 316 @repository.fetch_changesets
317 317 @repository.reload
318 318 [2, '400bb8672109', '400', 400].each do |r1|
319 319 get :annotate, :id => PRJ_ID, :rev => r1, :path => ['sources', 'watchers_controller.rb']
320 320 assert_response :success
321 321 assert_template 'annotate'
322 322 assert_tag :tag => 'h2', :content => /@ 2:400bb8672109/
323 323 end
324 324 end
325 325
326 326 def test_annotate_latin_1
327 327 [21, '21', 'adf805632193'].each do |r1|
328 328 get :annotate, :id => PRJ_ID, :path => ['latin-1-dir', "test-#{@char_1}-2.txt"], :rev => r1
329 329 assert_response :success
330 330 assert_template 'annotate'
331 331 assert_tag :tag => 'th',
332 332 :content => '1',
333 333 :attributes => { :class => 'line-num' },
334 334 :sibling =>
335 335 {
336 336 :tag => 'td',
337 337 :attributes => { :class => 'revision' },
338 338 :child => { :tag => 'a', :content => '20:709858aafd1b' }
339 339 }
340 340 assert_tag :tag => 'th',
341 341 :content => '1',
342 342 :attributes => { :class => 'line-num' },
343 343 :sibling =>
344 344 {
345 345 :tag => 'td' ,
346 346 :content => 'jsmith' ,
347 347 :attributes => { :class => 'author' },
348
349 348 }
350 349 assert_tag :tag => 'th',
351 350 :content => '1',
352 351 :attributes => { :class => 'line-num' },
353 352 :sibling => { :tag => 'td',
354 353 :content => /Mercurial is a distributed version control system/ }
355 354
356 355 end
357 356 end
358 357
359 358 def test_empty_revision
360 359 @repository.fetch_changesets
361 360 @repository.reload
362 361 ['', ' ', nil].each do |r|
363 362 get :revision, :id => PRJ_ID, :rev => r
364 363 assert_response 404
365 364 assert_error_tag :content => /was not found/
366 365 end
367 366 end
368 367 else
369 368 puts "Mercurial test repository NOT FOUND. Skipping functional tests !!!"
370 369 def test_fake; assert true end
371 370 end
372 371 end
General Comments 0
You need to be logged in to leave comments. Login now