annotate .svn/pristine/75/7565d2e594116960e25bfc61e7db03dcf9ad3b37.svn-base @ 1524:82fac3dcf466 redmine-2.5-integration

Fix failure to interpret Javascript when autocompleting members for project
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Thu, 11 Sep 2014 10:24:38 +0100
parents dffacf8a6908
children
rev   line source
Chris@1517 1 # Redmine - project management software
Chris@1517 2 # Copyright (C) 2006-2014 Jean-Philippe Lang
Chris@1517 3 #
Chris@1517 4 # This program is free software; you can redistribute it and/or
Chris@1517 5 # modify it under the terms of the GNU General Public License
Chris@1517 6 # as published by the Free Software Foundation; either version 2
Chris@1517 7 # of the License, or (at your option) any later version.
Chris@1517 8 #
Chris@1517 9 # This program is distributed in the hope that it will be useful,
Chris@1517 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@1517 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@1517 12 # GNU General Public License for more details.
Chris@1517 13 #
Chris@1517 14 # You should have received a copy of the GNU General Public License
Chris@1517 15 # along with this program; if not, write to the Free Software
Chris@1517 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@1517 17
Chris@1517 18 require File.expand_path('../../test_helper', __FILE__)
Chris@1517 19
Chris@1517 20 class RepositoryMercurialTest < ActiveSupport::TestCase
Chris@1517 21 fixtures :projects
Chris@1517 22
Chris@1517 23 include Redmine::I18n
Chris@1517 24
Chris@1517 25 REPOSITORY_PATH = Rails.root.join('tmp/test/mercurial_repository').to_s
Chris@1517 26 NUM_REV = 34
Chris@1517 27 CHAR_1_HEX = "\xc3\x9c"
Chris@1517 28
Chris@1517 29 def setup
Chris@1517 30 @project = Project.find(3)
Chris@1517 31 @repository = Repository::Mercurial.create(
Chris@1517 32 :project => @project,
Chris@1517 33 :url => REPOSITORY_PATH,
Chris@1517 34 :path_encoding => 'ISO-8859-1'
Chris@1517 35 )
Chris@1517 36 assert @repository
Chris@1517 37 @char_1 = CHAR_1_HEX.dup
Chris@1517 38 @tag_char_1 = "tag-#{CHAR_1_HEX}-00"
Chris@1517 39 @branch_char_0 = "branch-#{CHAR_1_HEX}-00"
Chris@1517 40 @branch_char_1 = "branch-#{CHAR_1_HEX}-01"
Chris@1517 41 if @char_1.respond_to?(:force_encoding)
Chris@1517 42 @char_1.force_encoding('UTF-8')
Chris@1517 43 @tag_char_1.force_encoding('UTF-8')
Chris@1517 44 @branch_char_0.force_encoding('UTF-8')
Chris@1517 45 @branch_char_1.force_encoding('UTF-8')
Chris@1517 46 end
Chris@1517 47 end
Chris@1517 48
Chris@1517 49 def test_blank_path_to_repository_error_message
Chris@1517 50 set_language_if_valid 'en'
Chris@1517 51 repo = Repository::Mercurial.new(
Chris@1517 52 :project => @project,
Chris@1517 53 :identifier => 'test'
Chris@1517 54 )
Chris@1517 55 assert !repo.save
Chris@1517 56 assert_include "Path to repository can't be blank",
Chris@1517 57 repo.errors.full_messages
Chris@1517 58 end
Chris@1517 59
Chris@1517 60 def test_blank_path_to_repository_error_message_fr
Chris@1517 61 set_language_if_valid 'fr'
Chris@1517 62 str = "Chemin du d\xc3\xa9p\xc3\xb4t doit \xc3\xaatre renseign\xc3\xa9(e)"
Chris@1517 63 str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
Chris@1517 64 repo = Repository::Mercurial.new(
Chris@1517 65 :project => @project,
Chris@1517 66 :url => "",
Chris@1517 67 :identifier => 'test',
Chris@1517 68 :path_encoding => ''
Chris@1517 69 )
Chris@1517 70 assert !repo.save
Chris@1517 71 assert_include str, repo.errors.full_messages
Chris@1517 72 end
Chris@1517 73
Chris@1517 74 if File.directory?(REPOSITORY_PATH)
Chris@1517 75 def test_scm_available
Chris@1517 76 klass = Repository::Mercurial
Chris@1517 77 assert_equal "Mercurial", klass.scm_name
Chris@1517 78 assert klass.scm_adapter_class
Chris@1517 79 assert_not_equal "", klass.scm_command
Chris@1517 80 assert_equal true, klass.scm_available
Chris@1517 81 end
Chris@1517 82
Chris@1517 83 def test_entries_on_tip
Chris@1517 84 entries = @repository.entries
Chris@1517 85 assert_kind_of Redmine::Scm::Adapters::Entries, entries
Chris@1517 86 end
Chris@1517 87
Chris@1517 88 def assert_entries(is_short_scmid=true)
Chris@1517 89 hex = "9d5b5b00419901478496242e0768deba1ce8c51e"
Chris@1517 90 scmid = scmid_for_assert(hex, is_short_scmid)
Chris@1517 91 [2, '400bb8672109', '400', 400].each do |r|
Chris@1517 92 entries1 = @repository.entries(nil, r)
Chris@1517 93 assert entries1
Chris@1517 94 assert_kind_of Redmine::Scm::Adapters::Entries, entries1
Chris@1517 95 assert_equal 3, entries1.size
Chris@1517 96 readme = entries1[2]
Chris@1517 97 assert_equal '1', readme.lastrev.revision
Chris@1517 98 assert_equal scmid, readme.lastrev.identifier
Chris@1517 99 assert_equal '1', readme.changeset.revision
Chris@1517 100 assert_equal scmid, readme.changeset.scmid
Chris@1517 101 end
Chris@1517 102 end
Chris@1517 103 private :assert_entries
Chris@1517 104
Chris@1517 105 def test_entries_short_id
Chris@1517 106 assert_equal 0, @repository.changesets.count
Chris@1517 107 create_rev0_short_id
Chris@1517 108 assert_equal 1, @repository.changesets.count
Chris@1517 109 @repository.fetch_changesets
Chris@1517 110 @project.reload
Chris@1517 111 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 112 assert_entries(true)
Chris@1517 113 end
Chris@1517 114
Chris@1517 115 def test_entries_long_id
Chris@1517 116 assert_equal 0, @repository.changesets.count
Chris@1517 117 @repository.fetch_changesets
Chris@1517 118 @project.reload
Chris@1517 119 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 120 assert_entries(false)
Chris@1517 121 end
Chris@1517 122
Chris@1517 123 def test_entry_on_tip
Chris@1517 124 entry = @repository.entry
Chris@1517 125 assert_kind_of Redmine::Scm::Adapters::Entry, entry
Chris@1517 126 assert_equal "", entry.path
Chris@1517 127 assert_equal 'dir', entry.kind
Chris@1517 128 end
Chris@1517 129
Chris@1517 130 def assert_entry(is_short_scmid=true)
Chris@1517 131 hex = "0885933ad4f68d77c2649cd11f8311276e7ef7ce"
Chris@1517 132 scmid = scmid_for_assert(hex, is_short_scmid)
Chris@1517 133 ["README", "/README"].each do |path|
Chris@1517 134 ["0", "0885933ad4f6", "0885933ad4f68d77c2649cd11f8311276e7ef7ce"].each do |rev|
Chris@1517 135 entry = @repository.entry(path, rev)
Chris@1517 136 assert_kind_of Redmine::Scm::Adapters::Entry, entry
Chris@1517 137 assert_equal "README", entry.path
Chris@1517 138 assert_equal "file", entry.kind
Chris@1517 139 assert_equal '0', entry.lastrev.revision
Chris@1517 140 assert_equal scmid, entry.lastrev.identifier
Chris@1517 141 end
Chris@1517 142 end
Chris@1517 143 ["sources", "/sources", "/sources/"].each do |path|
Chris@1517 144 ["0", "0885933ad4f6", "0885933ad4f68d77c2649cd11f8311276e7ef7ce"].each do |rev|
Chris@1517 145 entry = @repository.entry(path, rev)
Chris@1517 146 assert_kind_of Redmine::Scm::Adapters::Entry, entry
Chris@1517 147 assert_equal "sources", entry.path
Chris@1517 148 assert_equal "dir", entry.kind
Chris@1517 149 end
Chris@1517 150 end
Chris@1517 151 ["sources/watchers_controller.rb", "/sources/watchers_controller.rb"].each do |path|
Chris@1517 152 ["0", "0885933ad4f6", "0885933ad4f68d77c2649cd11f8311276e7ef7ce"].each do |rev|
Chris@1517 153 entry = @repository.entry(path, rev)
Chris@1517 154 assert_kind_of Redmine::Scm::Adapters::Entry, entry
Chris@1517 155 assert_equal "sources/watchers_controller.rb", entry.path
Chris@1517 156 assert_equal "file", entry.kind
Chris@1517 157 assert_equal '0', entry.lastrev.revision
Chris@1517 158 assert_equal scmid, entry.lastrev.identifier
Chris@1517 159 end
Chris@1517 160 end
Chris@1517 161 end
Chris@1517 162 private :assert_entry
Chris@1517 163
Chris@1517 164 def test_entry_short_id
Chris@1517 165 assert_equal 0, @repository.changesets.count
Chris@1517 166 create_rev0_short_id
Chris@1517 167 assert_equal 1, @repository.changesets.count
Chris@1517 168 assert_entry(true)
Chris@1517 169 end
Chris@1517 170
Chris@1517 171 def test_entry_long_id
Chris@1517 172 assert_entry(false)
Chris@1517 173 end
Chris@1517 174
Chris@1517 175 def test_fetch_changesets_from_scratch
Chris@1517 176 assert_equal 0, @repository.changesets.count
Chris@1517 177 @repository.fetch_changesets
Chris@1517 178 @project.reload
Chris@1517 179 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 180 assert_equal 46, @repository.filechanges.count
Chris@1517 181 rev0 = @repository.changesets.find_by_revision('0')
Chris@1517 182 assert_equal "Initial import.\nThe repository contains 3 files.",
Chris@1517 183 rev0.comments
Chris@1517 184 assert_equal "0885933ad4f68d77c2649cd11f8311276e7ef7ce", rev0.scmid
Chris@1517 185 first_rev = @repository.changesets.first
Chris@1517 186 last_rev = @repository.changesets.last
Chris@1517 187 assert_equal "#{NUM_REV - 1}", first_rev.revision
Chris@1517 188 assert_equal "0", last_rev.revision
Chris@1517 189 end
Chris@1517 190
Chris@1517 191 def test_fetch_changesets_keep_short_id
Chris@1517 192 assert_equal 0, @repository.changesets.count
Chris@1517 193 create_rev0_short_id
Chris@1517 194 assert_equal 1, @repository.changesets.count
Chris@1517 195 @repository.fetch_changesets
Chris@1517 196 @project.reload
Chris@1517 197 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 198 rev1 = @repository.changesets.find_by_revision('1')
Chris@1517 199 assert_equal "9d5b5b004199", rev1.scmid
Chris@1517 200 end
Chris@1517 201
Chris@1517 202 def test_fetch_changesets_keep_long_id
Chris@1517 203 assert_equal 0, @repository.changesets.count
Chris@1517 204 Changeset.create!(:repository => @repository,
Chris@1517 205 :committed_on => Time.now,
Chris@1517 206 :revision => '0',
Chris@1517 207 :scmid => '0885933ad4f68d77c2649cd11f8311276e7ef7ce',
Chris@1517 208 :comments => 'test')
Chris@1517 209 assert_equal 1, @repository.changesets.count
Chris@1517 210 @repository.fetch_changesets
Chris@1517 211 @project.reload
Chris@1517 212 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 213 rev1 = @repository.changesets.find_by_revision('1')
Chris@1517 214 assert_equal "9d5b5b00419901478496242e0768deba1ce8c51e", rev1.scmid
Chris@1517 215 end
Chris@1517 216
Chris@1517 217 def test_fetch_changesets_incremental
Chris@1517 218 assert_equal 0, @repository.changesets.count
Chris@1517 219 @repository.fetch_changesets
Chris@1517 220 @project.reload
Chris@1517 221 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 222 # Remove changesets with revision > 2
Chris@1517 223 @repository.changesets.each {|c| c.destroy if c.revision.to_i > 2}
Chris@1517 224 @project.reload
Chris@1517 225 @repository.reload
Chris@1517 226 assert_equal 3, @repository.changesets.count
Chris@1517 227
Chris@1517 228 @repository.fetch_changesets
Chris@1517 229 @project.reload
Chris@1517 230 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 231 end
Chris@1517 232
Chris@1517 233 def test_isodatesec
Chris@1517 234 # Template keyword 'isodatesec' supported in Mercurial 1.0 and higher
Chris@1517 235 if @repository.scm.class.client_version_above?([1, 0])
Chris@1517 236 assert_equal 0, @repository.changesets.count
Chris@1517 237 @repository.fetch_changesets
Chris@1517 238 @project.reload
Chris@1517 239 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 240 rev0_committed_on = Time.gm(2007, 12, 14, 9, 22, 52)
Chris@1517 241 assert_equal @repository.changesets.find_by_revision('0').committed_on, rev0_committed_on
Chris@1517 242 end
Chris@1517 243 end
Chris@1517 244
Chris@1517 245 def test_changeset_order_by_revision
Chris@1517 246 assert_equal 0, @repository.changesets.count
Chris@1517 247 @repository.fetch_changesets
Chris@1517 248 @project.reload
Chris@1517 249 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 250
Chris@1517 251 c0 = @repository.latest_changeset
Chris@1517 252 c1 = @repository.changesets.find_by_revision('0')
Chris@1517 253 # sorted by revision (id), not by date
Chris@1517 254 assert c0.revision.to_i > c1.revision.to_i
Chris@1517 255 assert c0.committed_on < c1.committed_on
Chris@1517 256 end
Chris@1517 257
Chris@1517 258 def test_latest_changesets
Chris@1517 259 assert_equal 0, @repository.changesets.count
Chris@1517 260 @repository.fetch_changesets
Chris@1517 261 @project.reload
Chris@1517 262 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 263
Chris@1517 264 # with_limit
Chris@1517 265 changesets = @repository.latest_changesets('', nil, 2)
Chris@1517 266 assert_equal ["#{NUM_REV - 1}", "#{NUM_REV - 2}"], changesets.collect(&:revision)
Chris@1517 267
Chris@1517 268 # with_filepath
Chris@1517 269 changesets = @repository.latest_changesets(
Chris@1517 270 '/sql_escape/percent%dir/percent%file1.txt', nil)
Chris@1517 271 assert_equal %w|30 11 10 9|, changesets.collect(&:revision)
Chris@1517 272
Chris@1517 273 changesets = @repository.latest_changesets(
Chris@1517 274 '/sql_escape/underscore_dir/understrike_file.txt', nil)
Chris@1517 275 assert_equal %w|30 12 9|, changesets.collect(&:revision)
Chris@1517 276
Chris@1517 277 changesets = @repository.latest_changesets('README', nil)
Chris@1517 278 assert_equal %w|31 30 28 17 8 6 1 0|, changesets.collect(&:revision)
Chris@1517 279
Chris@1517 280 changesets = @repository.latest_changesets('README','8')
Chris@1517 281 assert_equal %w|8 6 1 0|, changesets.collect(&:revision)
Chris@1517 282
Chris@1517 283 changesets = @repository.latest_changesets('README','8', 2)
Chris@1517 284 assert_equal %w|8 6|, changesets.collect(&:revision)
Chris@1517 285
Chris@1517 286 # with_dirpath
Chris@1517 287 changesets = @repository.latest_changesets('images', nil)
Chris@1517 288 assert_equal %w|1 0|, changesets.collect(&:revision)
Chris@1517 289
Chris@1517 290 path = 'sql_escape/percent%dir'
Chris@1517 291 changesets = @repository.latest_changesets(path, nil)
Chris@1517 292 assert_equal %w|30 13 11 10 9|, changesets.collect(&:revision)
Chris@1517 293
Chris@1517 294 changesets = @repository.latest_changesets(path, '11')
Chris@1517 295 assert_equal %w|11 10 9|, changesets.collect(&:revision)
Chris@1517 296
Chris@1517 297 changesets = @repository.latest_changesets(path, '11', 2)
Chris@1517 298 assert_equal %w|11 10|, changesets.collect(&:revision)
Chris@1517 299
Chris@1517 300 path = 'sql_escape/underscore_dir'
Chris@1517 301 changesets = @repository.latest_changesets(path, nil)
Chris@1517 302 assert_equal %w|30 13 12 9|, changesets.collect(&:revision)
Chris@1517 303
Chris@1517 304 changesets = @repository.latest_changesets(path, '12')
Chris@1517 305 assert_equal %w|12 9|, changesets.collect(&:revision)
Chris@1517 306
Chris@1517 307 changesets = @repository.latest_changesets(path, '12', 1)
Chris@1517 308 assert_equal %w|12|, changesets.collect(&:revision)
Chris@1517 309 end
Chris@1517 310
Chris@1517 311 def assert_latest_changesets_tag
Chris@1517 312 changesets = @repository.latest_changesets('', 'tag_test.00')
Chris@1517 313 assert_equal %w|5 4 3 2 1 0|, changesets.collect(&:revision)
Chris@1517 314 end
Chris@1517 315 private :assert_latest_changesets_tag
Chris@1517 316
Chris@1517 317 def test_latest_changesets_tag
Chris@1517 318 assert_equal 0, @repository.changesets.count
Chris@1517 319 @repository.fetch_changesets
Chris@1517 320 @project.reload
Chris@1517 321 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 322 assert_latest_changesets_tag
Chris@1517 323 end
Chris@1517 324
Chris@1517 325 def test_latest_changesets_tag_short_id
Chris@1517 326 assert_equal 0, @repository.changesets.count
Chris@1517 327 create_rev0_short_id
Chris@1517 328 assert_equal 1, @repository.changesets.count
Chris@1517 329 @repository.fetch_changesets
Chris@1517 330 @project.reload
Chris@1517 331 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 332 assert_latest_changesets_tag
Chris@1517 333 end
Chris@1517 334
Chris@1517 335 def test_latest_changesets_tag_with_path
Chris@1517 336 assert_equal 0, @repository.changesets.count
Chris@1517 337 @repository.fetch_changesets
Chris@1517 338 @project.reload
Chris@1517 339 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 340
Chris@1517 341 changesets = @repository.latest_changesets('sources', 'tag_test.00')
Chris@1517 342 assert_equal %w|4 3 2 1 0|, changesets.collect(&:revision)
Chris@1517 343 end
Chris@1517 344
Chris@1517 345 def test_latest_changesets_tag_with_limit
Chris@1517 346 assert_equal 0, @repository.changesets.count
Chris@1517 347 @repository.fetch_changesets
Chris@1517 348 @project.reload
Chris@1517 349 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 350
Chris@1517 351 changesets = @repository.latest_changesets('', 'tag_test.00', 2)
Chris@1517 352 assert_equal %w|5 4|, changesets.collect(&:revision)
Chris@1517 353
Chris@1517 354 changesets = @repository.latest_changesets('sources', 'tag_test.00', 2)
Chris@1517 355 assert_equal %w|4 3|, changesets.collect(&:revision)
Chris@1517 356 end
Chris@1517 357
Chris@1517 358 def test_latest_changesets_branch
Chris@1517 359 assert_equal 0, @repository.changesets.count
Chris@1517 360 @repository.fetch_changesets
Chris@1517 361 @project.reload
Chris@1517 362 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 363
Chris@1517 364 if @repository.scm.class.client_version_above?([1, 6])
Chris@1517 365 changesets = @repository.latest_changesets('', @branch_char_1)
Chris@1517 366 assert_equal %w|27 26|, changesets.collect(&:revision)
Chris@1517 367 end
Chris@1517 368
Chris@1517 369 changesets = @repository.latest_changesets("latin-1-dir/test-#{@char_1}-subdir", @branch_char_1)
Chris@1517 370 assert_equal %w|27|, changesets.collect(&:revision)
Chris@1517 371 end
Chris@1517 372
Chris@1517 373 def assert_latest_changesets_default_branch
Chris@1517 374 changesets = @repository.latest_changesets('', 'default')
Chris@1517 375 assert_equal %w|31 28 24 6 4 3 2 1 0|, changesets.collect(&:revision)
Chris@1517 376 end
Chris@1517 377 private :assert_latest_changesets_default_branch
Chris@1517 378
Chris@1517 379 def test_latest_changesets_default_branch
Chris@1517 380 assert_equal 0, @repository.changesets.count
Chris@1517 381 @repository.fetch_changesets
Chris@1517 382 @project.reload
Chris@1517 383 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 384 assert_latest_changesets_default_branch
Chris@1517 385 end
Chris@1517 386
Chris@1517 387 def test_latest_changesets_default_branch_short_id
Chris@1517 388 assert_equal 0, @repository.changesets.count
Chris@1517 389 create_rev0_short_id
Chris@1517 390 assert_equal 1, @repository.changesets.count
Chris@1517 391 @repository.fetch_changesets
Chris@1517 392 @project.reload
Chris@1517 393 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 394 assert_latest_changesets_default_branch
Chris@1517 395 end
Chris@1517 396
Chris@1517 397 def assert_copied_files(is_short_scmid=true)
Chris@1517 398 cs1 = @repository.changesets.find_by_revision('13')
Chris@1517 399 assert_not_nil cs1
Chris@1517 400 c1 = cs1.filechanges.sort_by(&:path)
Chris@1517 401 assert_equal 2, c1.size
Chris@1517 402
Chris@1517 403 hex1 = "3a330eb329586ea2adb3f83237c23310e744ebe9"
Chris@1517 404 scmid1 = scmid_for_assert(hex1, is_short_scmid)
Chris@1517 405 assert_equal 'A', c1[0].action
Chris@1517 406 assert_equal '/sql_escape/percent%dir/percentfile1.txt', c1[0].path
Chris@1517 407 assert_equal '/sql_escape/percent%dir/percent%file1.txt', c1[0].from_path
Chris@1517 408 assert_equal scmid1, c1[0].from_revision
Chris@1517 409
Chris@1517 410 assert_equal 'A', c1[1].action
Chris@1517 411 assert_equal '/sql_escape/underscore_dir/understrike-file.txt', c1[1].path
Chris@1517 412 assert_equal '/sql_escape/underscore_dir/understrike_file.txt', c1[1].from_path
Chris@1517 413
Chris@1517 414 cs2 = @repository.changesets.find_by_revision('15')
Chris@1517 415 c2 = cs2.filechanges
Chris@1517 416 assert_equal 1, c2.size
Chris@1517 417
Chris@1517 418 hex2 = "933ca60293d78f7c7979dd123cc0c02431683575"
Chris@1517 419 scmid2 = scmid_for_assert(hex2, is_short_scmid)
Chris@1517 420 assert_equal 'A', c2[0].action
Chris@1517 421 assert_equal '/README (1)[2]&,%.-3_4', c2[0].path
Chris@1517 422 assert_equal '/README', c2[0].from_path
Chris@1517 423 assert_equal scmid2, c2[0].from_revision
Chris@1517 424
Chris@1517 425 cs3 = @repository.changesets.find_by_revision('19')
Chris@1517 426 c3 = cs3.filechanges
Chris@1517 427
Chris@1517 428 hex3 = "5d9891a1b4258ea256552aa856e388f2da28256a"
Chris@1517 429 scmid3 = scmid_for_assert(hex3, is_short_scmid)
Chris@1517 430 assert_equal 1, c3.size
Chris@1517 431 assert_equal 'A', c3[0].action
Chris@1517 432 assert_equal "/latin-1-dir/test-#{@char_1}-1.txt", c3[0].path
Chris@1517 433 assert_equal "/latin-1-dir/test-#{@char_1}.txt", c3[0].from_path
Chris@1517 434 assert_equal scmid3, c3[0].from_revision
Chris@1517 435 end
Chris@1517 436 private :assert_copied_files
Chris@1517 437
Chris@1517 438 def test_copied_files_short_id
Chris@1517 439 assert_equal 0, @repository.changesets.count
Chris@1517 440 create_rev0_short_id
Chris@1517 441 assert_equal 1, @repository.changesets.count
Chris@1517 442 @repository.fetch_changesets
Chris@1517 443 @project.reload
Chris@1517 444 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 445 assert_copied_files(true)
Chris@1517 446 end
Chris@1517 447
Chris@1517 448 def test_copied_files_long_id
Chris@1517 449 assert_equal 0, @repository.changesets.count
Chris@1517 450 @repository.fetch_changesets
Chris@1517 451 @project.reload
Chris@1517 452 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 453 assert_copied_files(false)
Chris@1517 454 end
Chris@1517 455
Chris@1517 456 def test_find_changeset_by_name
Chris@1517 457 assert_equal 0, @repository.changesets.count
Chris@1517 458 @repository.fetch_changesets
Chris@1517 459 @project.reload
Chris@1517 460 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 461 %w|2 400bb8672109 400|.each do |r|
Chris@1517 462 assert_equal '2', @repository.find_changeset_by_name(r).revision
Chris@1517 463 end
Chris@1517 464 end
Chris@1517 465
Chris@1517 466 def test_find_changeset_by_invalid_name
Chris@1517 467 assert_equal 0, @repository.changesets.count
Chris@1517 468 @repository.fetch_changesets
Chris@1517 469 @project.reload
Chris@1517 470 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 471 assert_nil @repository.find_changeset_by_name('100000')
Chris@1517 472 end
Chris@1517 473
Chris@1517 474 def test_identifier
Chris@1517 475 assert_equal 0, @repository.changesets.count
Chris@1517 476 @repository.fetch_changesets
Chris@1517 477 @project.reload
Chris@1517 478 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 479 c = @repository.changesets.find_by_revision('2')
Chris@1517 480 assert_equal c.scmid, c.identifier
Chris@1517 481 end
Chris@1517 482
Chris@1517 483 def test_format_identifier
Chris@1517 484 assert_equal 0, @repository.changesets.count
Chris@1517 485 @repository.fetch_changesets
Chris@1517 486 @project.reload
Chris@1517 487 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 488 c = @repository.changesets.find_by_revision('2')
Chris@1517 489 assert_equal '2:400bb8672109', c.format_identifier
Chris@1517 490 end
Chris@1517 491
Chris@1517 492 def test_format_identifier_long_id
Chris@1517 493 assert_equal 0, @repository.changesets.count
Chris@1517 494 Changeset.create!(:repository => @repository,
Chris@1517 495 :committed_on => Time.now,
Chris@1517 496 :revision => '0',
Chris@1517 497 :scmid => '0885933ad4f68d77c2649cd11f8311276e7ef7ce',
Chris@1517 498 :comments => 'test')
Chris@1517 499 c = @repository.changesets.find_by_revision('0')
Chris@1517 500 assert_equal '0:0885933ad4f6', c.format_identifier
Chris@1517 501 end
Chris@1517 502
Chris@1517 503 def test_find_changeset_by_empty_name
Chris@1517 504 assert_equal 0, @repository.changesets.count
Chris@1517 505 @repository.fetch_changesets
Chris@1517 506 @project.reload
Chris@1517 507 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 508 ['', ' ', nil].each do |r|
Chris@1517 509 assert_nil @repository.find_changeset_by_name(r)
Chris@1517 510 end
Chris@1517 511 end
Chris@1517 512
Chris@1517 513 def assert_parents(is_short_scmid=true)
Chris@1517 514 r1 = @repository.changesets.find_by_revision('0')
Chris@1517 515 assert_equal [], r1.parents
Chris@1517 516 r2 = @repository.changesets.find_by_revision('1')
Chris@1517 517 hex2 = "0885933ad4f68d77c2649cd11f8311276e7ef7ce"
Chris@1517 518 scmid2 = scmid_for_assert(hex2, is_short_scmid)
Chris@1517 519 assert_equal 1, r2.parents.length
Chris@1517 520 assert_equal scmid2, r2.parents[0].identifier
Chris@1517 521 r3 = @repository.changesets.find_by_revision('30')
Chris@1517 522 assert_equal 2, r3.parents.length
Chris@1517 523 r4 = [r3.parents[0].identifier, r3.parents[1].identifier].sort
Chris@1517 524 hex41 = "3a330eb329586ea2adb3f83237c23310e744ebe9"
Chris@1517 525 scmid41 = scmid_for_assert(hex41, is_short_scmid)
Chris@1517 526 hex42 = "a94b0528f24fe05ebaef496ae0500bb050772e36"
Chris@1517 527 scmid42 = scmid_for_assert(hex42, is_short_scmid)
Chris@1517 528 assert_equal scmid41, r4[0]
Chris@1517 529 assert_equal scmid42, r4[1]
Chris@1517 530 end
Chris@1517 531 private :assert_parents
Chris@1517 532
Chris@1517 533 def test_parents_short_id
Chris@1517 534 assert_equal 0, @repository.changesets.count
Chris@1517 535 create_rev0_short_id
Chris@1517 536 assert_equal 1, @repository.changesets.count
Chris@1517 537 @repository.fetch_changesets
Chris@1517 538 @project.reload
Chris@1517 539 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 540 assert_parents(true)
Chris@1517 541 end
Chris@1517 542
Chris@1517 543 def test_parents_long_id
Chris@1517 544 assert_equal 0, @repository.changesets.count
Chris@1517 545 @repository.fetch_changesets
Chris@1517 546 @project.reload
Chris@1517 547 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 548 assert_parents(false)
Chris@1517 549 end
Chris@1517 550
Chris@1517 551 def test_activities
Chris@1517 552 c = Changeset.new(:repository => @repository,
Chris@1517 553 :committed_on => Time.now,
Chris@1517 554 :revision => '123',
Chris@1517 555 :scmid => 'abc400bb8672',
Chris@1517 556 :comments => 'test')
Chris@1517 557 assert c.event_title.include?('123:abc400bb8672:')
Chris@1517 558 assert_equal 'abc400bb8672', c.event_url[:rev]
Chris@1517 559 end
Chris@1517 560
Chris@1517 561 def test_previous
Chris@1517 562 assert_equal 0, @repository.changesets.count
Chris@1517 563 @repository.fetch_changesets
Chris@1517 564 @project.reload
Chris@1517 565 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 566 %w|28 3ae45e2d177d 3ae45|.each do |r1|
Chris@1517 567 changeset = @repository.find_changeset_by_name(r1)
Chris@1517 568 %w|27 7bbf4c738e71 7bbf|.each do |r2|
Chris@1517 569 assert_equal @repository.find_changeset_by_name(r2), changeset.previous
Chris@1517 570 end
Chris@1517 571 end
Chris@1517 572 end
Chris@1517 573
Chris@1517 574 def test_previous_nil
Chris@1517 575 assert_equal 0, @repository.changesets.count
Chris@1517 576 @repository.fetch_changesets
Chris@1517 577 @project.reload
Chris@1517 578 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 579 %w|0 0885933ad4f6 0885|.each do |r1|
Chris@1517 580 changeset = @repository.find_changeset_by_name(r1)
Chris@1517 581 assert_nil changeset.previous
Chris@1517 582 end
Chris@1517 583 end
Chris@1517 584
Chris@1517 585 def test_next
Chris@1517 586 assert_equal 0, @repository.changesets.count
Chris@1517 587 @repository.fetch_changesets
Chris@1517 588 @project.reload
Chris@1517 589 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 590 %w|27 7bbf4c738e71 7bbf|.each do |r2|
Chris@1517 591 changeset = @repository.find_changeset_by_name(r2)
Chris@1517 592 %w|28 3ae45e2d177d 3ae45|.each do |r1|
Chris@1517 593 assert_equal @repository.find_changeset_by_name(r1), changeset.next
Chris@1517 594 end
Chris@1517 595 end
Chris@1517 596 end
Chris@1517 597
Chris@1517 598 def test_next_nil
Chris@1517 599 assert_equal 0, @repository.changesets.count
Chris@1517 600 @repository.fetch_changesets
Chris@1517 601 @project.reload
Chris@1517 602 assert_equal NUM_REV, @repository.changesets.count
Chris@1517 603 ["#{NUM_REV - 1}", "2e6d54642923", "2e6d5"].each do |r1|
Chris@1517 604 changeset = @repository.find_changeset_by_name(r1)
Chris@1517 605 assert_nil changeset.next
Chris@1517 606 end
Chris@1517 607 end
Chris@1517 608
Chris@1517 609 def test_scmid_for_inserting_db_short_id
Chris@1517 610 assert_equal 0, @repository.changesets.count
Chris@1517 611 create_rev0_short_id
Chris@1517 612 assert_equal 1, @repository.changesets.count
Chris@1517 613 rev = "0123456789012345678901234567890123456789"
Chris@1517 614 assert_equal 12, @repository.scmid_for_inserting_db(rev).length
Chris@1517 615 end
Chris@1517 616
Chris@1517 617 def test_scmid_for_inserting_db_long_id
Chris@1517 618 rev = "0123456789012345678901234567890123456789"
Chris@1517 619 assert_equal 0, @repository.changesets.count
Chris@1517 620 assert_equal 40, @repository.scmid_for_inserting_db(rev).length
Chris@1517 621 Changeset.create!(:repository => @repository,
Chris@1517 622 :committed_on => Time.now,
Chris@1517 623 :revision => '0',
Chris@1517 624 :scmid => rev,
Chris@1517 625 :comments => 'test')
Chris@1517 626 assert_equal 1, @repository.changesets.count
Chris@1517 627 assert_equal 40, @repository.scmid_for_inserting_db(rev).length
Chris@1517 628 end
Chris@1517 629
Chris@1517 630 def test_scmid_for_assert
Chris@1517 631 rev = "0123456789012345678901234567890123456789"
Chris@1517 632 assert_equal rev, scmid_for_assert(rev, false)
Chris@1517 633 assert_equal "012345678901", scmid_for_assert(rev, true)
Chris@1517 634 end
Chris@1517 635
Chris@1517 636 private
Chris@1517 637
Chris@1517 638 def scmid_for_assert(hex, is_short=true)
Chris@1517 639 is_short ? hex[0, 12] : hex
Chris@1517 640 end
Chris@1517 641
Chris@1517 642 def create_rev0_short_id
Chris@1517 643 Changeset.create!(:repository => @repository,
Chris@1517 644 :committed_on => Time.now,
Chris@1517 645 :revision => '0',
Chris@1517 646 :scmid => '0885933ad4f6',
Chris@1517 647 :comments => 'test')
Chris@1517 648 end
Chris@1517 649 else
Chris@1517 650 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
Chris@1517 651 def test_fake; assert true end
Chris@1517 652 end
Chris@1517 653 end