annotate test/functional/repositories_mercurial_controller_test.rb @ 1082:997f6d7738f7 bug_531

In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Thu, 22 Nov 2012 18:04:17 +0000
parents 5e80956cc792
children bb32da3bea34
rev   line source
Chris@441 1 # Redmine - project management software
Chris@441 2 # Copyright (C) 2006-2011 Jean-Philippe Lang
Chris@0 3 #
Chris@0 4 # This program is free software; you can redistribute it and/or
Chris@0 5 # modify it under the terms of the GNU General Public License
Chris@0 6 # as published by the Free Software Foundation; either version 2
Chris@0 7 # of the License, or (at your option) any later version.
Chris@441 8 #
Chris@0 9 # This program is distributed in the hope that it will be useful,
Chris@0 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@0 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@0 12 # GNU General Public License for more details.
Chris@441 13 #
Chris@0 14 # You should have received a copy of the GNU General Public License
Chris@0 15 # along with this program; if not, write to the Free Software
Chris@0 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@0 17
Chris@119 18 require File.expand_path('../../test_helper', __FILE__)
Chris@0 19 require 'repositories_controller'
Chris@0 20
Chris@0 21 # Re-raise errors caught by the controller.
Chris@0 22 class RepositoriesController; def rescue_action(e) raise e end; end
Chris@0 23
Chris@0 24 class RepositoriesMercurialControllerTest < ActionController::TestCase
Chris@909 25 fixtures :projects, :users, :roles, :members, :member_roles,
Chris@909 26 :repositories, :enabled_modules
Chris@0 27
Chris@909 28 REPOSITORY_PATH = Rails.root.join('tmp/test/mercurial_repository').to_s
Chris@441 29 CHAR_1_HEX = "\xc3\x9c"
Chris@441 30 PRJ_ID = 3
Chris@909 31 NUM_REV = 32
Chris@441 32
Chris@441 33 ruby19_non_utf8_pass =
Chris@441 34 (RUBY_VERSION >= '1.9' && Encoding.default_external.to_s != 'UTF-8')
Chris@0 35
Chris@0 36 def setup
Chris@0 37 @controller = RepositoriesController.new
Chris@0 38 @request = ActionController::TestRequest.new
Chris@0 39 @response = ActionController::TestResponse.new
Chris@0 40 User.current = nil
Chris@507 41 @project = Project.find(PRJ_ID)
Chris@441 42 @repository = Repository::Mercurial.create(
Chris@507 43 :project => @project,
Chris@441 44 :url => REPOSITORY_PATH,
Chris@441 45 :path_encoding => 'ISO-8859-1'
Chris@441 46 )
Chris@119 47 assert @repository
Chris@245 48 @diff_c_support = true
Chris@441 49 @char_1 = CHAR_1_HEX.dup
Chris@441 50 @tag_char_1 = "tag-#{CHAR_1_HEX}-00"
Chris@441 51 @branch_char_0 = "branch-#{CHAR_1_HEX}-00"
Chris@441 52 @branch_char_1 = "branch-#{CHAR_1_HEX}-01"
Chris@441 53 if @char_1.respond_to?(:force_encoding)
Chris@441 54 @char_1.force_encoding('UTF-8')
Chris@441 55 @tag_char_1.force_encoding('UTF-8')
Chris@441 56 @branch_char_0.force_encoding('UTF-8')
Chris@441 57 @branch_char_1.force_encoding('UTF-8')
Chris@441 58 end
Chris@0 59 end
Chris@119 60
Chris@441 61 if ruby19_non_utf8_pass
Chris@441 62 puts "TODO: Mercurial functional test fails in Ruby 1.9 " +
Chris@441 63 "and Encoding.default_external is not UTF-8. " +
Chris@441 64 "Current value is '#{Encoding.default_external.to_s}'"
Chris@441 65 def test_fake; assert true end
Chris@441 66 elsif File.directory?(REPOSITORY_PATH)
Chris@0 67 def test_show_root
Chris@909 68 assert_equal 0, @repository.changesets.count
Chris@441 69 @repository.fetch_changesets
Chris@909 70 @project.reload
Chris@909 71 assert_equal NUM_REV, @repository.changesets.count
Chris@441 72 get :show, :id => PRJ_ID
Chris@0 73 assert_response :success
Chris@0 74 assert_template 'show'
Chris@0 75 assert_not_nil assigns(:entries)
Chris@119 76 assert_equal 4, assigns(:entries).size
Chris@119 77 assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'}
Chris@0 78 assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'}
Chris@119 79 assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'}
Chris@441 80 assert_not_nil assigns(:changesets)
Chris@909 81 assert assigns(:changesets).size > 0
Chris@0 82 end
Chris@128 83
Chris@0 84 def test_show_directory
Chris@909 85 assert_equal 0, @repository.changesets.count
Chris@441 86 @repository.fetch_changesets
Chris@909 87 @project.reload
Chris@909 88 assert_equal NUM_REV, @repository.changesets.count
Chris@441 89 get :show, :id => PRJ_ID, :path => ['images']
Chris@0 90 assert_response :success
Chris@0 91 assert_template 'show'
Chris@0 92 assert_not_nil assigns(:entries)
Chris@0 93 assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
Chris@0 94 entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
Chris@0 95 assert_not_nil entry
Chris@0 96 assert_equal 'file', entry.kind
Chris@0 97 assert_equal 'images/edit.png', entry.path
Chris@441 98 assert_not_nil assigns(:changesets)
Chris@909 99 assert assigns(:changesets).size > 0
Chris@0 100 end
Chris@119 101
Chris@0 102 def test_show_at_given_revision
Chris@909 103 assert_equal 0, @repository.changesets.count
Chris@441 104 @repository.fetch_changesets
Chris@909 105 @project.reload
Chris@909 106 assert_equal NUM_REV, @repository.changesets.count
Chris@119 107 [0, '0', '0885933ad4f6'].each do |r1|
Chris@441 108 get :show, :id => PRJ_ID, :path => ['images'], :rev => r1
Chris@119 109 assert_response :success
Chris@119 110 assert_template 'show'
Chris@119 111 assert_not_nil assigns(:entries)
Chris@119 112 assert_equal ['delete.png'], assigns(:entries).collect(&:name)
Chris@441 113 assert_not_nil assigns(:changesets)
Chris@909 114 assert assigns(:changesets).size > 0
Chris@119 115 end
Chris@0 116 end
Chris@119 117
Chris@119 118 def test_show_directory_sql_escape_percent
Chris@909 119 assert_equal 0, @repository.changesets.count
Chris@441 120 @repository.fetch_changesets
Chris@909 121 @project.reload
Chris@909 122 assert_equal NUM_REV, @repository.changesets.count
Chris@119 123 [13, '13', '3a330eb32958'].each do |r1|
Chris@441 124 get :show, :id => PRJ_ID, :path => ['sql_escape', 'percent%dir'],
Chris@441 125 :rev => r1
Chris@119 126 assert_response :success
Chris@119 127 assert_template 'show'
Chris@119 128
Chris@119 129 assert_not_nil assigns(:entries)
Chris@441 130 assert_equal ['percent%file1.txt', 'percentfile1.txt'],
Chris@441 131 assigns(:entries).collect(&:name)
Chris@119 132 changesets = assigns(:changesets)
Chris@441 133 assert_not_nil changesets
Chris@909 134 assert assigns(:changesets).size > 0
Chris@441 135 assert_equal %w(13 11 10 9), changesets.collect(&:revision)
Chris@441 136 end
Chris@441 137 end
Chris@119 138
Chris@441 139 def test_show_directory_latin_1_path
Chris@909 140 assert_equal 0, @repository.changesets.count
Chris@441 141 @repository.fetch_changesets
Chris@909 142 @project.reload
Chris@909 143 assert_equal NUM_REV, @repository.changesets.count
Chris@441 144 [21, '21', 'adf805632193'].each do |r1|
Chris@441 145 get :show, :id => PRJ_ID, :path => ['latin-1-dir'], :rev => r1
Chris@441 146 assert_response :success
Chris@441 147 assert_template 'show'
Chris@441 148
Chris@441 149 assert_not_nil assigns(:entries)
Chris@441 150 assert_equal ["make-latin-1-file.rb",
Chris@441 151 "test-#{@char_1}-1.txt",
Chris@441 152 "test-#{@char_1}-2.txt",
Chris@441 153 "test-#{@char_1}.txt"], assigns(:entries).collect(&:name)
Chris@441 154 changesets = assigns(:changesets)
Chris@441 155 assert_not_nil changesets
Chris@441 156 assert_equal %w(21 20 19 18 17), changesets.collect(&:revision)
Chris@441 157 end
Chris@441 158 end
Chris@441 159
Chris@441 160 def test_show_branch
Chris@909 161 assert_equal 0, @repository.changesets.count
Chris@441 162 @repository.fetch_changesets
Chris@909 163 @project.reload
Chris@909 164 assert_equal NUM_REV, @repository.changesets.count
Chris@441 165 [
Chris@441 166 'default',
Chris@441 167 @branch_char_1,
Chris@441 168 'branch (1)[2]&,%.-3_4',
Chris@441 169 @branch_char_0,
Chris@441 170 'test_branch.latin-1',
Chris@441 171 'test-branch-00',
Chris@441 172 ].each do |bra|
Chris@441 173 get :show, :id => PRJ_ID, :rev => bra
Chris@441 174 assert_response :success
Chris@441 175 assert_template 'show'
Chris@441 176 assert_not_nil assigns(:entries)
Chris@441 177 assert assigns(:entries).size > 0
Chris@441 178 assert_not_nil assigns(:changesets)
Chris@909 179 assert assigns(:changesets).size > 0
Chris@441 180 end
Chris@441 181 end
Chris@441 182
Chris@441 183 def test_show_tag
Chris@909 184 assert_equal 0, @repository.changesets.count
Chris@441 185 @repository.fetch_changesets
Chris@909 186 @project.reload
Chris@909 187 assert_equal NUM_REV, @repository.changesets.count
Chris@441 188 [
Chris@441 189 @tag_char_1,
Chris@441 190 'tag_test.00',
Chris@441 191 'tag-init-revision'
Chris@441 192 ].each do |tag|
Chris@441 193 get :show, :id => PRJ_ID, :rev => tag
Chris@441 194 assert_response :success
Chris@441 195 assert_template 'show'
Chris@441 196 assert_not_nil assigns(:entries)
Chris@441 197 assert assigns(:entries).size > 0
Chris@441 198 assert_not_nil assigns(:changesets)
Chris@909 199 assert assigns(:changesets).size > 0
Chris@119 200 end
Chris@119 201 end
Chris@119 202
Chris@0 203 def test_changes
Chris@441 204 get :changes, :id => PRJ_ID, :path => ['images', 'edit.png']
Chris@0 205 assert_response :success
Chris@0 206 assert_template 'changes'
Chris@0 207 assert_tag :tag => 'h2', :content => 'edit.png'
Chris@0 208 end
Chris@441 209
Chris@0 210 def test_entry_show
Chris@441 211 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
Chris@0 212 assert_response :success
Chris@0 213 assert_template 'entry'
Chris@119 214 # Line 10
Chris@0 215 assert_tag :tag => 'th',
Chris@119 216 :content => '10',
Chris@119 217 :attributes => { :class => 'line-num' },
Chris@0 218 :sibling => { :tag => 'td', :content => /WITHOUT ANY WARRANTY/ }
Chris@0 219 end
Chris@441 220
Chris@441 221 def test_entry_show_latin_1_path
Chris@441 222 [21, '21', 'adf805632193'].each do |r1|
Chris@441 223 get :entry, :id => PRJ_ID,
Chris@441 224 :path => ['latin-1-dir', "test-#{@char_1}-2.txt"], :rev => r1
Chris@441 225 assert_response :success
Chris@441 226 assert_template 'entry'
Chris@441 227 assert_tag :tag => 'th',
Chris@441 228 :content => '1',
Chris@441 229 :attributes => { :class => 'line-num' },
Chris@441 230 :sibling => { :tag => 'td',
Chris@441 231 :content => /Mercurial is a distributed version control system/ }
Chris@441 232 end
Chris@441 233 end
Chris@441 234
Chris@441 235 def test_entry_show_latin_1_contents
Chris@441 236 with_settings :repositories_encodings => 'UTF-8,ISO-8859-1' do
Chris@441 237 [27, '27', '7bbf4c738e71'].each do |r1|
Chris@441 238 get :entry, :id => PRJ_ID,
Chris@441 239 :path => ['latin-1-dir', "test-#{@char_1}.txt"], :rev => r1
Chris@441 240 assert_response :success
Chris@441 241 assert_template 'entry'
Chris@441 242 assert_tag :tag => 'th',
Chris@441 243 :content => '1',
Chris@441 244 :attributes => { :class => 'line-num' },
Chris@441 245 :sibling => { :tag => 'td',
Chris@441 246 :content => /test-#{@char_1}.txt/ }
Chris@441 247 end
Chris@441 248 end
Chris@441 249 end
Chris@441 250
Chris@0 251 def test_entry_download
Chris@441 252 get :entry, :id => PRJ_ID,
Chris@441 253 :path => ['sources', 'watchers_controller.rb'], :format => 'raw'
Chris@0 254 assert_response :success
Chris@0 255 # File content
Chris@0 256 assert @response.body.include?('WITHOUT ANY WARRANTY')
Chris@0 257 end
Chris@0 258
Chris@441 259 def test_entry_binary_force_download
Chris@441 260 get :entry, :id => PRJ_ID, :rev => 1, :path => ['images', 'edit.png']
Chris@441 261 assert_response :success
Chris@441 262 assert_equal 'image/png', @response.content_type
Chris@441 263 end
Chris@441 264
Chris@0 265 def test_directory_entry
Chris@441 266 get :entry, :id => PRJ_ID, :path => ['sources']
Chris@0 267 assert_response :success
Chris@0 268 assert_template 'show'
Chris@0 269 assert_not_nil assigns(:entry)
Chris@0 270 assert_equal 'sources', assigns(:entry).name
Chris@0 271 end
Chris@441 272
Chris@0 273 def test_diff
Chris@909 274 assert_equal 0, @repository.changesets.count
Chris@119 275 @repository.fetch_changesets
Chris@909 276 @project.reload
Chris@909 277 assert_equal NUM_REV, @repository.changesets.count
Chris@119 278 [4, '4', 'def6d2f1254a'].each do |r1|
Chris@119 279 # Full diff of changeset 4
Chris@909 280 ['inline', 'sbs'].each do |dt|
Chris@909 281 get :diff, :id => PRJ_ID, :rev => r1, :type => dt
Chris@909 282 assert_response :success
Chris@909 283 assert_template 'diff'
Chris@909 284 if @diff_c_support
Chris@909 285 # Line 22 removed
Chris@909 286 assert_tag :tag => 'th',
Chris@909 287 :content => '22',
Chris@909 288 :sibling => { :tag => 'td',
Chris@909 289 :attributes => { :class => /diff_out/ },
Chris@909 290 :content => /def remove/ }
Chris@909 291 assert_tag :tag => 'h2', :content => /4:def6d2f1254a/
Chris@909 292 end
Chris@119 293 end
Chris@119 294 end
Chris@0 295 end
Chris@119 296
Chris@119 297 def test_diff_two_revs
Chris@909 298 assert_equal 0, @repository.changesets.count
Chris@119 299 @repository.fetch_changesets
Chris@909 300 @project.reload
Chris@909 301 assert_equal NUM_REV, @repository.changesets.count
Chris@119 302 [2, '400bb8672109', '400', 400].each do |r1|
Chris@119 303 [4, 'def6d2f1254a'].each do |r2|
Chris@909 304 ['inline', 'sbs'].each do |dt|
Chris@909 305 get :diff,
Chris@909 306 :id => PRJ_ID,
Chris@909 307 :rev => r1,
Chris@909 308 :rev_to => r2,
Chris@909 309 :type => dt
Chris@909 310 assert_response :success
Chris@909 311 assert_template 'diff'
Chris@909 312 diff = assigns(:diff)
Chris@909 313 assert_not_nil diff
Chris@909 314 assert_tag :tag => 'h2',
Chris@909 315 :content => /4:def6d2f1254a 2:400bb8672109/
Chris@909 316 end
Chris@119 317 end
Chris@119 318 end
Chris@119 319 end
Chris@119 320
Chris@441 321 def test_diff_latin_1_path
Chris@441 322 with_settings :repositories_encodings => 'UTF-8,ISO-8859-1' do
Chris@441 323 [21, 'adf805632193'].each do |r1|
Chris@909 324 ['inline', 'sbs'].each do |dt|
Chris@909 325 get :diff, :id => PRJ_ID, :rev => r1, :type => dt
Chris@909 326 assert_response :success
Chris@909 327 assert_template 'diff'
Chris@909 328 assert_tag :tag => 'thead',
Chris@441 329 :descendant => {
Chris@909 330 :tag => 'th',
Chris@909 331 :attributes => { :class => 'filename' } ,
Chris@909 332 :content => /latin-1-dir\/test-#{@char_1}-2.txt/ ,
Chris@909 333 },
Chris@909 334 :sibling => {
Chris@909 335 :tag => 'tbody',
Chris@909 336 :descendant => {
Chris@909 337 :tag => 'td',
Chris@909 338 :attributes => { :class => /diff_in/ },
Chris@909 339 :content => /It is written in Python/
Chris@909 340 }
Chris@441 341 }
Chris@909 342 end
Chris@441 343 end
Chris@441 344 end
Chris@441 345 end
Chris@441 346
Chris@0 347 def test_annotate
Chris@441 348 get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
Chris@0 349 assert_response :success
Chris@0 350 assert_template 'annotate'
Chris@119 351 # Line 23, revision 4:def6d2f1254a
Chris@119 352 assert_tag :tag => 'th',
Chris@119 353 :content => '23',
Chris@119 354 :attributes => { :class => 'line-num' },
Chris@119 355 :sibling =>
Chris@119 356 {
Chris@119 357 :tag => 'td',
Chris@119 358 :attributes => { :class => 'revision' },
Chris@119 359 :child => { :tag => 'a', :content => '4:def6d2f1254a' }
Chris@119 360 }
Chris@119 361 assert_tag :tag => 'th',
Chris@119 362 :content => '23',
Chris@119 363 :attributes => { :class => 'line-num' },
Chris@119 364 :sibling =>
Chris@119 365 {
Chris@119 366 :tag => 'td' ,
Chris@119 367 :content => 'jsmith' ,
Chris@119 368 :attributes => { :class => 'author' },
Chris@119 369 }
Chris@119 370 assert_tag :tag => 'th',
Chris@119 371 :content => '23',
Chris@119 372 :attributes => { :class => 'line-num' },
Chris@0 373 :sibling => { :tag => 'td', :content => /watcher =/ }
Chris@0 374 end
Chris@119 375
Chris@507 376 def test_annotate_not_in_tip
Chris@909 377 assert_equal 0, @repository.changesets.count
Chris@507 378 @repository.fetch_changesets
Chris@909 379 @project.reload
Chris@909 380 assert_equal NUM_REV, @repository.changesets.count
Chris@507 381
Chris@507 382 get :annotate, :id => PRJ_ID,
Chris@507 383 :path => ['sources', 'welcome_controller.rb']
Chris@507 384 assert_response 404
Chris@507 385 assert_error_tag :content => /was not found/
Chris@507 386 end
Chris@507 387
Chris@210 388 def test_annotate_at_given_revision
Chris@909 389 assert_equal 0, @repository.changesets.count
Chris@210 390 @repository.fetch_changesets
Chris@909 391 @project.reload
Chris@909 392 assert_equal NUM_REV, @repository.changesets.count
Chris@210 393 [2, '400bb8672109', '400', 400].each do |r1|
Chris@441 394 get :annotate, :id => PRJ_ID, :rev => r1,
Chris@441 395 :path => ['sources', 'watchers_controller.rb']
Chris@210 396 assert_response :success
Chris@210 397 assert_template 'annotate'
Chris@210 398 assert_tag :tag => 'h2', :content => /@ 2:400bb8672109/
Chris@210 399 end
Chris@210 400 end
Chris@210 401
Chris@441 402 def test_annotate_latin_1_path
Chris@441 403 [21, '21', 'adf805632193'].each do |r1|
Chris@441 404 get :annotate, :id => PRJ_ID,
Chris@441 405 :path => ['latin-1-dir', "test-#{@char_1}-2.txt"], :rev => r1
Chris@441 406 assert_response :success
Chris@441 407 assert_template 'annotate'
Chris@441 408 assert_tag :tag => 'th',
Chris@441 409 :content => '1',
Chris@441 410 :attributes => { :class => 'line-num' },
Chris@441 411 :sibling =>
Chris@441 412 {
Chris@441 413 :tag => 'td',
Chris@441 414 :attributes => { :class => 'revision' },
Chris@441 415 :child => { :tag => 'a', :content => '20:709858aafd1b' }
Chris@441 416 }
Chris@441 417 assert_tag :tag => 'th',
Chris@441 418 :content => '1',
Chris@441 419 :attributes => { :class => 'line-num' },
Chris@441 420 :sibling =>
Chris@441 421 {
Chris@441 422 :tag => 'td' ,
Chris@441 423 :content => 'jsmith' ,
Chris@441 424 :attributes => { :class => 'author' },
Chris@441 425 }
Chris@441 426 assert_tag :tag => 'th',
Chris@441 427 :content => '1',
Chris@441 428 :attributes => { :class => 'line-num' },
Chris@441 429 :sibling => { :tag => 'td',
Chris@441 430 :content => /Mercurial is a distributed version control system/ }
Chris@441 431
Chris@441 432 end
Chris@441 433 end
Chris@441 434
Chris@441 435 def test_annotate_latin_1_contents
Chris@441 436 with_settings :repositories_encodings => 'UTF-8,ISO-8859-1' do
Chris@441 437 [27, '7bbf4c738e71'].each do |r1|
Chris@441 438 get :annotate, :id => PRJ_ID,
Chris@441 439 :path => ['latin-1-dir', "test-#{@char_1}.txt"], :rev => r1
Chris@441 440 assert_tag :tag => 'th',
Chris@441 441 :content => '1',
Chris@441 442 :attributes => { :class => 'line-num' },
Chris@441 443 :sibling => { :tag => 'td',
Chris@441 444 :content => /test-#{@char_1}.txt/ }
Chris@441 445 end
Chris@441 446 end
Chris@441 447 end
Chris@441 448
Chris@119 449 def test_empty_revision
Chris@909 450 assert_equal 0, @repository.changesets.count
Chris@119 451 @repository.fetch_changesets
Chris@909 452 @project.reload
Chris@909 453 assert_equal NUM_REV, @repository.changesets.count
Chris@119 454 ['', ' ', nil].each do |r|
Chris@441 455 get :revision, :id => PRJ_ID, :rev => r
Chris@128 456 assert_response 404
Chris@119 457 assert_error_tag :content => /was not found/
Chris@119 458 end
Chris@119 459 end
Chris@507 460
Chris@507 461 def test_destroy_valid_repository
Chris@507 462 @request.session[:user_id] = 1 # admin
Chris@909 463 assert_equal 0, @repository.changesets.count
Chris@507 464 @repository.fetch_changesets
Chris@909 465 @project.reload
Chris@909 466 assert_equal NUM_REV, @repository.changesets.count
Chris@507 467
Chris@507 468 get :destroy, :id => PRJ_ID
Chris@507 469 assert_response 302
Chris@507 470 @project.reload
Chris@507 471 assert_nil @project.repository
Chris@507 472 end
Chris@507 473
Chris@507 474 def test_destroy_invalid_repository
Chris@507 475 @request.session[:user_id] = 1 # admin
Chris@909 476 assert_equal 0, @repository.changesets.count
Chris@507 477 @repository.fetch_changesets
Chris@909 478 @project.reload
Chris@909 479 assert_equal NUM_REV, @repository.changesets.count
Chris@507 480
Chris@507 481 get :destroy, :id => PRJ_ID
Chris@507 482 assert_response 302
Chris@507 483 @project.reload
Chris@507 484 assert_nil @project.repository
Chris@507 485
Chris@507 486 @repository = Repository::Mercurial.create(
Chris@507 487 :project => Project.find(PRJ_ID),
Chris@507 488 :url => "/invalid",
Chris@507 489 :path_encoding => 'ISO-8859-1'
Chris@507 490 )
Chris@507 491 assert @repository
Chris@507 492 @repository.fetch_changesets
Chris@909 493 @project.reload
Chris@507 494 assert_equal 0, @repository.changesets.count
Chris@507 495
Chris@507 496 get :destroy, :id => PRJ_ID
Chris@507 497 assert_response 302
Chris@507 498 @project.reload
Chris@507 499 assert_nil @project.repository
Chris@507 500 end
Chris@0 501 else
Chris@0 502 puts "Mercurial test repository NOT FOUND. Skipping functional tests !!!"
Chris@0 503 def test_fake; assert true end
Chris@0 504 end
Chris@0 505 end