annotate test/unit/repository_git_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 cbb26bc654de
children 433d4f72a19b
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
Chris@0 20 class RepositoryGitTest < ActiveSupport::TestCase
Chris@245 21 fixtures :projects, :repositories, :enabled_modules, :users, :roles
Chris@245 22
Chris@909 23 REPOSITORY_PATH = Rails.root.join('tmp/test/git_repository').to_s
Chris@0 24 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
Chris@245 25
Chris@909 26 NUM_REV = 21
Chris@909 27
Chris@245 28 FELIX_HEX = "Felix Sch\xC3\xA4fer"
Chris@441 29 CHAR_1_HEX = "\xc3\x9c"
Chris@245 30
Chris@441 31 ## Ruby uses ANSI api to fork a process on Windows.
Chris@441 32 ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
Chris@441 33 ## and these are incompatible with ASCII.
Chris@441 34 # WINDOWS_PASS = Redmine::Platform.mswin?
Chris@441 35 WINDOWS_PASS = false
Chris@245 36
Chris@909 37 ## Git, Mercurial and CVS path encodings are binary.
Chris@909 38 ## Subversion supports URL encoding for path.
Chris@909 39 ## Redmine Mercurial adapter and extension use URL encoding.
Chris@909 40 ## Git accepts only binary path in command line parameter.
Chris@909 41 ## So, there is no way to use binary command line parameter in JRuby.
Chris@909 42 JRUBY_SKIP = (RUBY_PLATFORM == 'java')
Chris@909 43 JRUBY_SKIP_STR = "TODO: This test fails in JRuby"
Chris@909 44
Chris@441 45 if File.directory?(REPOSITORY_PATH)
Chris@441 46 def setup
Chris@441 47 klass = Repository::Git
Chris@441 48 assert_equal "Git", klass.scm_name
Chris@441 49 assert klass.scm_adapter_class
Chris@441 50 assert_not_equal "", klass.scm_command
Chris@441 51 assert_equal true, klass.scm_available
Chris@441 52
Chris@441 53 @project = Project.find(3)
Chris@441 54 @repository = Repository::Git.create(
Chris@441 55 :project => @project,
Chris@441 56 :url => REPOSITORY_PATH,
Chris@441 57 :path_encoding => 'ISO-8859-1'
Chris@441 58 )
Chris@441 59 assert @repository
Chris@441 60 @char_1 = CHAR_1_HEX.dup
Chris@441 61 if @char_1.respond_to?(:force_encoding)
Chris@441 62 @char_1.force_encoding('UTF-8')
Chris@441 63 end
Chris@441 64 end
Chris@441 65
Chris@0 66 def test_fetch_changesets_from_scratch
Chris@441 67 assert_nil @repository.extra_info
Chris@441 68
Chris@909 69 assert_equal 0, @repository.changesets.count
Chris@0 70 @repository.fetch_changesets
Chris@909 71 @project.reload
Chris@245 72
Chris@909 73 assert_equal NUM_REV, @repository.changesets.count
Chris@441 74 assert_equal 33, @repository.changes.count
Chris@245 75
Chris@0 76 commit = @repository.changesets.find(:first, :order => 'committed_on ASC')
Chris@0 77 assert_equal "Initial import.\nThe repository contains 3 files.", commit.comments
Chris@0 78 assert_equal "jsmith <jsmith@foo.bar>", commit.committer
Chris@0 79 assert_equal User.find_by_login('jsmith'), commit.user
Chris@0 80 # TODO: add a commit with commit time <> author time to the test repository
Chris@0 81 assert_equal "2007-12-14 09:22:52".to_time, commit.committed_on
Chris@0 82 assert_equal "2007-12-14".to_date, commit.commit_date
Chris@0 83 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", commit.revision
Chris@0 84 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", commit.scmid
Chris@0 85 assert_equal 3, commit.changes.count
Chris@0 86 change = commit.changes.sort_by(&:path).first
Chris@0 87 assert_equal "README", change.path
Chris@0 88 assert_equal "A", change.action
Chris@441 89
Chris@441 90 assert_equal 4, @repository.extra_info["branches"].size
Chris@0 91 end
Chris@441 92
Chris@0 93 def test_fetch_changesets_incremental
Chris@909 94 assert_equal 0, @repository.changesets.count
Chris@0 95 @repository.fetch_changesets
Chris@909 96 @project.reload
Chris@909 97 assert_equal NUM_REV, @repository.changesets.count
Chris@441 98 assert_equal 33, @repository.changes.count
Chris@441 99 extra_info_db = @repository.extra_info["branches"]
Chris@441 100 assert_equal 4, extra_info_db.size
Chris@441 101 assert_equal "1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127",
Chris@441 102 extra_info_db["latin-1-path-encoding"]["last_scmid"]
Chris@441 103 assert_equal "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
Chris@441 104 extra_info_db["master"]["last_scmid"]
Chris@441 105
Chris@441 106 del_revs = [
Chris@441 107 "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
Chris@441 108 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b",
Chris@441 109 "4f26664364207fa8b1af9f8722647ab2d4ac5d43",
Chris@441 110 "deff712f05a90d96edbd70facc47d944be5897e3",
Chris@441 111 "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
Chris@441 112 "7e61ac704deecde634b51e59daa8110435dcb3da",
Chris@441 113 ]
Chris@441 114 @repository.changesets.each do |rev|
Chris@441 115 rev.destroy if del_revs.detect {|r| r == rev.scmid.to_s }
Chris@441 116 end
Chris@909 117 @project.reload
Chris@245 118 cs1 = @repository.changesets
Chris@441 119 assert_equal 15, cs1.count
Chris@441 120 h = @repository.extra_info.dup
Chris@441 121 h["branches"]["master"]["last_scmid"] =
Chris@441 122 "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8"
Chris@441 123 @repository.merge_extra_info(h)
Chris@441 124 @repository.save
Chris@909 125 @project.reload
Chris@441 126 extra_info_db_1 = @repository.extra_info["branches"]
Chris@441 127 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
Chris@441 128 extra_info_db_1["master"]["last_scmid"]
Chris@245 129
Chris@0 130 @repository.fetch_changesets
Chris@909 131 @project.reload
Chris@909 132 assert_equal NUM_REV, @repository.changesets.count
Chris@441 133 end
Chris@441 134
Chris@441 135 def test_fetch_changesets_invalid_rev
Chris@909 136 assert_equal 0, @repository.changesets.count
Chris@441 137 @repository.fetch_changesets
Chris@909 138 @project.reload
Chris@909 139 assert_equal NUM_REV, @repository.changesets.count
Chris@441 140 extra_info_db = @repository.extra_info["branches"]
Chris@441 141 assert_equal 4, extra_info_db.size
Chris@441 142 assert_equal "1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127",
Chris@441 143 extra_info_db["latin-1-path-encoding"]["last_scmid"]
Chris@441 144 assert_equal "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
Chris@441 145 extra_info_db["master"]["last_scmid"]
Chris@441 146
Chris@441 147 del_revs = [
Chris@441 148 "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
Chris@441 149 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b",
Chris@441 150 "4f26664364207fa8b1af9f8722647ab2d4ac5d43",
Chris@441 151 "deff712f05a90d96edbd70facc47d944be5897e3",
Chris@441 152 "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
Chris@441 153 "7e61ac704deecde634b51e59daa8110435dcb3da",
Chris@441 154 ]
Chris@441 155 @repository.changesets.each do |rev|
Chris@441 156 rev.destroy if del_revs.detect {|r| r == rev.scmid.to_s }
Chris@441 157 end
Chris@909 158 @project.reload
Chris@441 159 cs1 = @repository.changesets
Chris@441 160 assert_equal 15, cs1.count
Chris@441 161 h = @repository.extra_info.dup
Chris@441 162 h["branches"]["master"]["last_scmid"] =
Chris@441 163 "abcd1234efgh"
Chris@441 164 @repository.merge_extra_info(h)
Chris@441 165 @repository.save
Chris@909 166 @project.reload
Chris@441 167 extra_info_db_1 = @repository.extra_info["branches"]
Chris@441 168 assert_equal "abcd1234efgh",
Chris@441 169 extra_info_db_1["master"]["last_scmid"]
Chris@441 170
Chris@441 171 @repository.fetch_changesets
Chris@909 172 @project.reload
Chris@441 173 assert_equal 15, @repository.changesets.count
Chris@441 174 end
Chris@441 175
Chris@909 176 def test_parents
Chris@909 177 assert_equal 0, @repository.changesets.count
Chris@909 178 @repository.fetch_changesets
Chris@909 179 @project.reload
Chris@909 180 assert_equal NUM_REV, @repository.changesets.count
Chris@909 181 r1 = @repository.find_changeset_by_name("7234cb2750b63")
Chris@909 182 assert_equal [], r1.parents
Chris@909 183 r2 = @repository.find_changeset_by_name("899a15dba03a3")
Chris@909 184 assert_equal 1, r2.parents.length
Chris@909 185 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
Chris@909 186 r2.parents[0].identifier
Chris@909 187 r3 = @repository.find_changeset_by_name("32ae898b720c2")
Chris@909 188 assert_equal 2, r3.parents.length
Chris@909 189 r4 = [r3.parents[0].identifier, r3.parents[1].identifier].sort
Chris@909 190 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", r4[0]
Chris@909 191 assert_equal "7e61ac704deecde634b51e59daa8110435dcb3da", r4[1]
Chris@909 192 end
Chris@909 193
Chris@441 194 def test_db_consistent_ordering_init
Chris@441 195 assert_nil @repository.extra_info
Chris@909 196 assert_equal 0, @repository.changesets.count
Chris@441 197 @repository.fetch_changesets
Chris@909 198 @project.reload
Chris@441 199 assert_equal 1, @repository.extra_info["db_consistent"]["ordering"]
Chris@441 200 end
Chris@441 201
Chris@441 202 def test_db_consistent_ordering_before_1_2
Chris@441 203 assert_nil @repository.extra_info
Chris@909 204 assert_equal 0, @repository.changesets.count
Chris@441 205 @repository.fetch_changesets
Chris@909 206 @project.reload
Chris@909 207 assert_equal NUM_REV, @repository.changesets.count
Chris@441 208 assert_not_nil @repository.extra_info
Chris@441 209 @repository.write_attribute(:extra_info, nil)
Chris@441 210 @repository.save
Chris@441 211 assert_nil @repository.extra_info
Chris@909 212 assert_equal NUM_REV, @repository.changesets.count
Chris@441 213 @repository.fetch_changesets
Chris@909 214 @project.reload
Chris@441 215 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
Chris@441 216
Chris@441 217 del_revs = [
Chris@441 218 "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
Chris@441 219 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b",
Chris@441 220 "4f26664364207fa8b1af9f8722647ab2d4ac5d43",
Chris@441 221 "deff712f05a90d96edbd70facc47d944be5897e3",
Chris@441 222 "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
Chris@441 223 "7e61ac704deecde634b51e59daa8110435dcb3da",
Chris@441 224 ]
Chris@441 225 @repository.changesets.each do |rev|
Chris@441 226 rev.destroy if del_revs.detect {|r| r == rev.scmid.to_s }
Chris@441 227 end
Chris@909 228 @project.reload
Chris@441 229 cs1 = @repository.changesets
Chris@441 230 assert_equal 15, cs1.count
Chris@441 231 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
Chris@441 232 h = @repository.extra_info.dup
Chris@441 233 h["branches"]["master"]["last_scmid"] =
Chris@441 234 "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8"
Chris@441 235 @repository.merge_extra_info(h)
Chris@441 236 @repository.save
Chris@909 237 @project.reload
Chris@441 238 extra_info_db_1 = @repository.extra_info["branches"]
Chris@441 239 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
Chris@441 240 extra_info_db_1["master"]["last_scmid"]
Chris@441 241
Chris@441 242 @repository.fetch_changesets
Chris@909 243 assert_equal NUM_REV, @repository.changesets.count
Chris@441 244 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
Chris@441 245 end
Chris@441 246
Chris@441 247 def test_latest_changesets
Chris@909 248 assert_equal 0, @repository.changesets.count
Chris@441 249 @repository.fetch_changesets
Chris@909 250 @project.reload
Chris@909 251 assert_equal NUM_REV, @repository.changesets.count
Chris@441 252 # with limit
Chris@441 253 changesets = @repository.latest_changesets('', nil, 2)
Chris@441 254 assert_equal 2, changesets.size
Chris@441 255
Chris@441 256 # with path
Chris@441 257 changesets = @repository.latest_changesets('images', nil)
Chris@441 258 assert_equal [
Chris@441 259 'deff712f05a90d96edbd70facc47d944be5897e3',
Chris@441 260 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 261 '7234cb2750b63f47bff735edc50a1c0a433c2518',
Chris@441 262 ], changesets.collect(&:revision)
Chris@441 263
Chris@441 264 changesets = @repository.latest_changesets('README', nil)
Chris@441 265 assert_equal [
Chris@441 266 '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf',
Chris@441 267 '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8',
Chris@441 268 '713f4944648826f558cf548222f813dabe7cbb04',
Chris@441 269 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
Chris@441 270 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 271 '7234cb2750b63f47bff735edc50a1c0a433c2518',
Chris@441 272 ], changesets.collect(&:revision)
Chris@441 273
Chris@441 274 # with path, revision and limit
Chris@441 275 changesets = @repository.latest_changesets('images', '899a15dba')
Chris@441 276 assert_equal [
Chris@441 277 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 278 '7234cb2750b63f47bff735edc50a1c0a433c2518',
Chris@441 279 ], changesets.collect(&:revision)
Chris@441 280
Chris@441 281 changesets = @repository.latest_changesets('images', '899a15dba', 1)
Chris@441 282 assert_equal [
Chris@441 283 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 284 ], changesets.collect(&:revision)
Chris@441 285
Chris@441 286 changesets = @repository.latest_changesets('README', '899a15dba')
Chris@441 287 assert_equal [
Chris@441 288 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 289 '7234cb2750b63f47bff735edc50a1c0a433c2518',
Chris@441 290 ], changesets.collect(&:revision)
Chris@441 291
Chris@441 292 changesets = @repository.latest_changesets('README', '899a15dba', 1)
Chris@441 293 assert_equal [
Chris@441 294 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 295 ], changesets.collect(&:revision)
Chris@441 296
Chris@441 297 # with path, tag and limit
Chris@441 298 changesets = @repository.latest_changesets('images', 'tag01.annotated')
Chris@441 299 assert_equal [
Chris@441 300 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 301 '7234cb2750b63f47bff735edc50a1c0a433c2518',
Chris@441 302 ], changesets.collect(&:revision)
Chris@441 303
Chris@441 304 changesets = @repository.latest_changesets('images', 'tag01.annotated', 1)
Chris@441 305 assert_equal [
Chris@441 306 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 307 ], changesets.collect(&:revision)
Chris@441 308
Chris@441 309 changesets = @repository.latest_changesets('README', 'tag01.annotated')
Chris@441 310 assert_equal [
Chris@441 311 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 312 '7234cb2750b63f47bff735edc50a1c0a433c2518',
Chris@441 313 ], changesets.collect(&:revision)
Chris@441 314
Chris@441 315 changesets = @repository.latest_changesets('README', 'tag01.annotated', 1)
Chris@441 316 assert_equal [
Chris@441 317 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 318 ], changesets.collect(&:revision)
Chris@441 319
Chris@441 320 # with path, branch and limit
Chris@441 321 changesets = @repository.latest_changesets('images', 'test_branch')
Chris@441 322 assert_equal [
Chris@441 323 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 324 '7234cb2750b63f47bff735edc50a1c0a433c2518',
Chris@441 325 ], changesets.collect(&:revision)
Chris@441 326
Chris@441 327 changesets = @repository.latest_changesets('images', 'test_branch', 1)
Chris@441 328 assert_equal [
Chris@441 329 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 330 ], changesets.collect(&:revision)
Chris@441 331
Chris@441 332 changesets = @repository.latest_changesets('README', 'test_branch')
Chris@441 333 assert_equal [
Chris@441 334 '713f4944648826f558cf548222f813dabe7cbb04',
Chris@441 335 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
Chris@441 336 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
Chris@441 337 '7234cb2750b63f47bff735edc50a1c0a433c2518',
Chris@441 338 ], changesets.collect(&:revision)
Chris@441 339
Chris@441 340 changesets = @repository.latest_changesets('README', 'test_branch', 2)
Chris@441 341 assert_equal [
Chris@441 342 '713f4944648826f558cf548222f813dabe7cbb04',
Chris@441 343 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
Chris@441 344 ], changesets.collect(&:revision)
Chris@441 345
Chris@909 346 if JRUBY_SKIP
Chris@909 347 puts JRUBY_SKIP_STR
Chris@909 348 else
Chris@909 349 # latin-1 encoding path
Chris@909 350 changesets = @repository.latest_changesets(
Chris@909 351 "latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89')
Chris@909 352 assert_equal [
Chris@441 353 '64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
Chris@441 354 '4fc55c43bf3d3dc2efb66145365ddc17639ce81e',
Chris@441 355 ], changesets.collect(&:revision)
Chris@441 356
Chris@909 357 changesets = @repository.latest_changesets(
Chris@441 358 "latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89', 1)
Chris@909 359 assert_equal [
Chris@441 360 '64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
Chris@441 361 ], changesets.collect(&:revision)
Chris@909 362 end
Chris@441 363 end
Chris@441 364
Chris@441 365 def test_latest_changesets_latin_1_dir
Chris@441 366 if WINDOWS_PASS
Chris@441 367 #
Chris@909 368 elsif JRUBY_SKIP
Chris@909 369 puts JRUBY_SKIP_STR
Chris@441 370 else
Chris@909 371 assert_equal 0, @repository.changesets.count
Chris@441 372 @repository.fetch_changesets
Chris@909 373 @project.reload
Chris@909 374 assert_equal NUM_REV, @repository.changesets.count
Chris@441 375 changesets = @repository.latest_changesets(
Chris@441 376 "latin-1-dir/test-#{@char_1}-subdir", '1ca7f5ed')
Chris@441 377 assert_equal [
Chris@441 378 '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127',
Chris@441 379 ], changesets.collect(&:revision)
Chris@441 380 end
Chris@0 381 end
Chris@119 382
Chris@119 383 def test_find_changeset_by_name
Chris@909 384 assert_equal 0, @repository.changesets.count
Chris@119 385 @repository.fetch_changesets
Chris@909 386 @project.reload
Chris@909 387 assert_equal NUM_REV, @repository.changesets.count
Chris@119 388 ['7234cb2750b63f47bff735edc50a1c0a433c2518', '7234cb2750b'].each do |r|
Chris@119 389 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518',
Chris@119 390 @repository.find_changeset_by_name(r).revision
Chris@119 391 end
Chris@119 392 end
Chris@119 393
Chris@119 394 def test_find_changeset_by_empty_name
Chris@909 395 assert_equal 0, @repository.changesets.count
Chris@119 396 @repository.fetch_changesets
Chris@909 397 @project.reload
Chris@909 398 assert_equal NUM_REV, @repository.changesets.count
Chris@119 399 ['', ' ', nil].each do |r|
Chris@119 400 assert_nil @repository.find_changeset_by_name(r)
Chris@119 401 end
Chris@119 402 end
Chris@119 403
Chris@119 404 def test_identifier
Chris@909 405 assert_equal 0, @repository.changesets.count
Chris@119 406 @repository.fetch_changesets
Chris@909 407 @project.reload
Chris@909 408 assert_equal NUM_REV, @repository.changesets.count
Chris@441 409 c = @repository.changesets.find_by_revision(
Chris@441 410 '7234cb2750b63f47bff735edc50a1c0a433c2518')
Chris@119 411 assert_equal c.scmid, c.identifier
Chris@119 412 end
Chris@119 413
Chris@119 414 def test_format_identifier
Chris@909 415 assert_equal 0, @repository.changesets.count
Chris@119 416 @repository.fetch_changesets
Chris@909 417 @project.reload
Chris@909 418 assert_equal NUM_REV, @repository.changesets.count
Chris@441 419 c = @repository.changesets.find_by_revision(
Chris@441 420 '7234cb2750b63f47bff735edc50a1c0a433c2518')
Chris@119 421 assert_equal '7234cb27', c.format_identifier
Chris@119 422 end
Chris@119 423
Chris@119 424 def test_activities
Chris@119 425 c = Changeset.new(:repository => @repository,
Chris@119 426 :committed_on => Time.now,
Chris@119 427 :revision => 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
Chris@119 428 :scmid => 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
Chris@119 429 :comments => 'test')
Chris@119 430 assert c.event_title.include?('abc7234c:')
Chris@119 431 assert_equal 'abc7234cb2750b63f47bff735edc50a1c0a433c2', c.event_url[:rev]
Chris@119 432 end
Chris@245 433
Chris@245 434 def test_log_utf8
Chris@909 435 assert_equal 0, @repository.changesets.count
Chris@245 436 @repository.fetch_changesets
Chris@909 437 @project.reload
Chris@909 438 assert_equal NUM_REV, @repository.changesets.count
Chris@441 439 str_felix_hex = FELIX_HEX.dup
Chris@245 440 if str_felix_hex.respond_to?(:force_encoding)
Chris@245 441 str_felix_hex.force_encoding('UTF-8')
Chris@245 442 end
Chris@441 443 c = @repository.changesets.find_by_revision(
Chris@441 444 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b')
Chris@245 445 assert_equal "#{str_felix_hex} <felix@fachschaften.org>", c.committer
Chris@245 446 end
Chris@441 447
Chris@441 448 def test_previous
Chris@909 449 assert_equal 0, @repository.changesets.count
Chris@441 450 @repository.fetch_changesets
Chris@909 451 @project.reload
Chris@909 452 assert_equal NUM_REV, @repository.changesets.count
Chris@441 453 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
Chris@441 454 changeset = @repository.find_changeset_by_name(r1)
Chris@441 455 %w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
Chris@441 456 assert_equal @repository.find_changeset_by_name(r2), changeset.previous
Chris@441 457 end
Chris@441 458 end
Chris@441 459 end
Chris@441 460
Chris@441 461 def test_previous_nil
Chris@909 462 assert_equal 0, @repository.changesets.count
Chris@441 463 @repository.fetch_changesets
Chris@909 464 @project.reload
Chris@909 465 assert_equal NUM_REV, @repository.changesets.count
Chris@441 466 %w|7234cb2750b63f47bff735edc50a1c0a433c2518 7234cb2|.each do |r1|
Chris@441 467 changeset = @repository.find_changeset_by_name(r1)
Chris@441 468 assert_nil changeset.previous
Chris@441 469 end
Chris@441 470 end
Chris@441 471
Chris@441 472 def test_next
Chris@909 473 assert_equal 0, @repository.changesets.count
Chris@441 474 @repository.fetch_changesets
Chris@909 475 @project.reload
Chris@909 476 assert_equal NUM_REV, @repository.changesets.count
Chris@441 477 %w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
Chris@441 478 changeset = @repository.find_changeset_by_name(r2)
Chris@441 479 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
Chris@441 480 assert_equal @repository.find_changeset_by_name(r1), changeset.next
Chris@441 481 end
Chris@441 482 end
Chris@441 483 end
Chris@441 484
Chris@441 485 def test_next_nil
Chris@909 486 assert_equal 0, @repository.changesets.count
Chris@441 487 @repository.fetch_changesets
Chris@909 488 @project.reload
Chris@909 489 assert_equal NUM_REV, @repository.changesets.count
Chris@441 490 %w|67e7792ce20ccae2e4bb73eed09bb397819c8834 67e7792ce20cca|.each do |r1|
Chris@441 491 changeset = @repository.find_changeset_by_name(r1)
Chris@441 492 assert_nil changeset.next
Chris@441 493 end
Chris@441 494 end
Chris@0 495 else
Chris@0 496 puts "Git test repository NOT FOUND. Skipping unit tests !!!"
Chris@0 497 def test_fake; assert true end
Chris@0 498 end
Chris@0 499 end