annotate .svn/pristine/fd/fd3cf4d6d773d3c54f6502ba7ca3721b3e053fbc.svn-base @ 1628:9c5f8e24dadc live tip

Quieten this cron script
author Chris Cannam
date Tue, 25 Aug 2020 11:38:49 +0100
parents cbb26bc654de
children
rev   line source
Chris@909 1 # encoding: utf-8
Chris@909 2
Chris@909 3 # This file includes UTF-8 "Felix Schäfer".
Chris@909 4 # We need to consider Ruby 1.9 compatibility.
Chris@909 5
Chris@909 6 require File.expand_path('../../../../../../test_helper', __FILE__)
Chris@909 7 begin
Chris@909 8 require 'mocha'
Chris@909 9
Chris@909 10 class GitAdapterTest < ActiveSupport::TestCase
Chris@909 11 REPOSITORY_PATH = Rails.root.join('tmp/test/git_repository').to_s
Chris@909 12
Chris@909 13 FELIX_UTF8 = "Felix Schäfer"
Chris@909 14 FELIX_HEX = "Felix Sch\xC3\xA4fer"
Chris@909 15 CHAR_1_HEX = "\xc3\x9c"
Chris@909 16
Chris@909 17 ## Ruby uses ANSI api to fork a process on Windows.
Chris@909 18 ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
Chris@909 19 ## and these are incompatible with ASCII.
Chris@909 20 # WINDOWS_PASS = Redmine::Platform.mswin?
Chris@909 21 WINDOWS_PASS = false
Chris@909 22
Chris@909 23 ## Git, Mercurial and CVS path encodings are binary.
Chris@909 24 ## Subversion supports URL encoding for path.
Chris@909 25 ## Redmine Mercurial adapter and extension use URL encoding.
Chris@909 26 ## Git accepts only binary path in command line parameter.
Chris@909 27 ## So, there is no way to use binary command line parameter in JRuby.
Chris@909 28 JRUBY_SKIP = (RUBY_PLATFORM == 'java')
Chris@909 29 JRUBY_SKIP_STR = "TODO: This test fails in JRuby"
Chris@909 30
Chris@909 31 if File.directory?(REPOSITORY_PATH)
Chris@909 32 def setup
Chris@909 33 adapter_class = Redmine::Scm::Adapters::GitAdapter
Chris@909 34 assert adapter_class
Chris@909 35 assert adapter_class.client_command
Chris@909 36 assert_equal true, adapter_class.client_available
Chris@909 37 assert_equal true, adapter_class.client_version_above?([1])
Chris@909 38 assert_equal true, adapter_class.client_version_above?([1, 0])
Chris@909 39
Chris@909 40 @adapter = Redmine::Scm::Adapters::GitAdapter.new(
Chris@909 41 REPOSITORY_PATH,
Chris@909 42 nil,
Chris@909 43 nil,
Chris@909 44 nil,
Chris@909 45 'ISO-8859-1'
Chris@909 46 )
Chris@909 47 assert @adapter
Chris@909 48 @char_1 = CHAR_1_HEX.dup
Chris@909 49 if @char_1.respond_to?(:force_encoding)
Chris@909 50 @char_1.force_encoding('UTF-8')
Chris@909 51 end
Chris@909 52 end
Chris@909 53
Chris@909 54 def test_scm_version
Chris@909 55 to_test = { "git version 1.7.3.4\n" => [1,7,3,4],
Chris@909 56 "1.6.1\n1.7\n1.8" => [1,6,1],
Chris@909 57 "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]}
Chris@909 58 to_test.each do |s, v|
Chris@909 59 test_scm_version_for(s, v)
Chris@909 60 end
Chris@909 61 end
Chris@909 62
Chris@909 63 def test_branches
Chris@909 64 brs = []
Chris@909 65 @adapter.branches.each do |b|
Chris@909 66 brs << b
Chris@909 67 end
Chris@909 68 assert_equal 4, brs.length
Chris@909 69 assert_equal 'latin-1-path-encoding', brs[0].to_s
Chris@909 70 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', brs[0].revision
Chris@909 71 assert_equal brs[0].scmid, brs[0].revision
Chris@909 72 assert_equal 'master', brs[1].to_s
Chris@909 73 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', brs[1].revision
Chris@909 74 assert_equal brs[1].scmid, brs[1].revision
Chris@909 75 assert_equal 'test-latin-1', brs[2].to_s
Chris@909 76 assert_equal '67e7792ce20ccae2e4bb73eed09bb397819c8834', brs[2].revision
Chris@909 77 assert_equal brs[2].scmid, brs[2].revision
Chris@909 78 assert_equal 'test_branch', brs[3].to_s
Chris@909 79 assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', brs[3].revision
Chris@909 80 assert_equal brs[3].scmid, brs[3].revision
Chris@909 81 end
Chris@909 82
Chris@909 83 def test_tags
Chris@909 84 assert_equal [
Chris@909 85 "tag00.lightweight",
Chris@909 86 "tag01.annotated",
Chris@909 87 ], @adapter.tags
Chris@909 88 end
Chris@909 89
Chris@909 90 def test_getting_all_revisions
Chris@909 91 assert_equal 21, @adapter.revisions('',nil,nil,:all => true).length
Chris@909 92 end
Chris@909 93
Chris@909 94 def test_getting_certain_revisions
Chris@909 95 assert_equal 1, @adapter.revisions('','899a15d^','899a15d').length
Chris@909 96 end
Chris@909 97
Chris@909 98 def test_revisions_reverse
Chris@909 99 revs1 = @adapter.revisions('',nil,nil,{:all => true, :reverse => true })
Chris@909 100 assert_equal 21, revs1.length
Chris@909 101 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[0].identifier
Chris@909 102 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[20].identifier
Chris@909 103 end
Chris@909 104
Chris@909 105 def test_revisions_reverse_with_time
Chris@909 106 since2 = Time.gm(2010, 9, 30, 0, 0, 0)
Chris@909 107 revs2 = @adapter.revisions('', nil, nil,
Chris@909 108 {:all => true, :since => since2, :reverse => true})
Chris@909 109 assert_equal 6, revs2.length
Chris@909 110 assert_equal '67e7792ce20ccae2e4bb73eed09bb397819c8834', revs2[0].identifier
Chris@909 111 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[5].identifier
Chris@909 112 end
Chris@909 113
Chris@909 114 def test_revisions_master_all
Chris@909 115 revs1 = []
Chris@909 116 @adapter.revisions('', nil, "master",{}) do |rev|
Chris@909 117 revs1 << rev
Chris@909 118 end
Chris@909 119 assert_equal 15, revs1.length
Chris@909 120 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 0].identifier
Chris@909 121 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier
Chris@909 122
Chris@909 123 revs2 = []
Chris@909 124 @adapter.revisions('', nil, "master",
Chris@909 125 {:reverse => true}) do |rev|
Chris@909 126 revs2 << rev
Chris@909 127 end
Chris@909 128 assert_equal 15, revs2.length
Chris@909 129 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier
Chris@909 130 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier
Chris@909 131 end
Chris@909 132
Chris@909 133 def test_revisions_master_merged_rev
Chris@909 134 revs1 = []
Chris@909 135 @adapter.revisions('',
Chris@909 136 "713f4944648826f558cf548222f813dabe7cbb04",
Chris@909 137 "master",
Chris@909 138 {:reverse => true}) do |rev|
Chris@909 139 revs1 << rev
Chris@909 140 end
Chris@909 141 assert_equal 8, revs1.length
Chris@909 142 assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', revs1[ 0].identifier
Chris@909 143 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 1].identifier
Chris@909 144 # 4a07fe31b is not a child of 713f49446
Chris@909 145 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 2].identifier
Chris@909 146 # Merged revision
Chris@909 147 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 3].identifier
Chris@909 148 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier
Chris@909 149
Chris@909 150 revs2 = []
Chris@909 151 @adapter.revisions('',
Chris@909 152 "fba357b886984ee71185ad2065e65fc0417d9b92",
Chris@909 153 "master",
Chris@909 154 {:reverse => true}) do |rev|
Chris@909 155 revs2 << rev
Chris@909 156 end
Chris@909 157 assert_equal 7, revs2.length
Chris@909 158 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs2[ 0].identifier
Chris@909 159 # 4a07fe31b is not a child of fba357b8869
Chris@909 160 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs2[ 1].identifier
Chris@909 161 # Merged revision
Chris@909 162 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs2[ 2].identifier
Chris@909 163 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier
Chris@909 164 end
Chris@909 165
Chris@909 166 def test_revisions_branch_latin_1_path_encoding_all
Chris@909 167 revs1 = []
Chris@909 168 @adapter.revisions('', nil, "latin-1-path-encoding",{}) do |rev|
Chris@909 169 revs1 << rev
Chris@909 170 end
Chris@909 171 assert_equal 8, revs1.length
Chris@909 172 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[ 0].identifier
Chris@909 173 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier
Chris@909 174
Chris@909 175 revs2 = []
Chris@909 176 @adapter.revisions('', nil, "latin-1-path-encoding",
Chris@909 177 {:reverse => true}) do |rev|
Chris@909 178 revs2 << rev
Chris@909 179 end
Chris@909 180 assert_equal 8, revs2.length
Chris@909 181 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier
Chris@909 182 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier
Chris@909 183 end
Chris@909 184
Chris@909 185 def test_revisions_branch_latin_1_path_encoding_with_rev
Chris@909 186 revs1 = []
Chris@909 187 @adapter.revisions('',
Chris@909 188 '7234cb2750b63f47bff735edc50a1c0a433c2518',
Chris@909 189 "latin-1-path-encoding",
Chris@909 190 {:reverse => true}) do |rev|
Chris@909 191 revs1 << rev
Chris@909 192 end
Chris@909 193 assert_equal 7, revs1.length
Chris@909 194 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 0].identifier
Chris@909 195 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier
Chris@909 196
Chris@909 197 revs2 = []
Chris@909 198 @adapter.revisions('',
Chris@909 199 '57ca437c0acbbcb749821fdf3726a1367056d364',
Chris@909 200 "latin-1-path-encoding",
Chris@909 201 {:reverse => true}) do |rev|
Chris@909 202 revs2 << rev
Chris@909 203 end
Chris@909 204 assert_equal 3, revs2.length
Chris@909 205 assert_equal '4fc55c43bf3d3dc2efb66145365ddc17639ce81e', revs2[ 0].identifier
Chris@909 206 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier
Chris@909 207 end
Chris@909 208
Chris@909 209 def test_revisions_invalid_rev
Chris@909 210 revs1 = []
Chris@909 211 @adapter.revisions('',
Chris@909 212 '1234abcd',
Chris@909 213 "master",
Chris@909 214 {:reverse => true}) do |rev|
Chris@909 215 revs1 << rev
Chris@909 216 end
Chris@909 217 assert_equal [], revs1
Chris@909 218 end
Chris@909 219
Chris@909 220 def test_getting_revisions_with_spaces_in_filename
Chris@909 221 assert_equal 1, @adapter.revisions("filemane with spaces.txt",
Chris@909 222 nil, nil, :all => true).length
Chris@909 223 end
Chris@909 224
Chris@909 225 def test_parents
Chris@909 226 revs1 = []
Chris@909 227 @adapter.revisions('',
Chris@909 228 nil,
Chris@909 229 "master",
Chris@909 230 {:reverse => true}) do |rev|
Chris@909 231 revs1 << rev
Chris@909 232 end
Chris@909 233 assert_equal 15, revs1.length
Chris@909 234 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
Chris@909 235 revs1[0].identifier
Chris@909 236 assert_equal nil, revs1[0].parents
Chris@909 237 assert_equal "899a15dba03a3b350b89c3f537e4bbe02a03cdc9",
Chris@909 238 revs1[1].identifier
Chris@909 239 assert_equal 1, revs1[1].parents.length
Chris@909 240 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
Chris@909 241 revs1[1].parents[0]
Chris@909 242 assert_equal "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
Chris@909 243 revs1[10].identifier
Chris@909 244 assert_equal 2, revs1[10].parents.length
Chris@909 245 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
Chris@909 246 revs1[10].parents[0]
Chris@909 247 assert_equal "7e61ac704deecde634b51e59daa8110435dcb3da",
Chris@909 248 revs1[10].parents[1]
Chris@909 249 end
Chris@909 250
Chris@909 251 def test_getting_revisions_with_leading_and_trailing_spaces_in_filename
Chris@909 252 assert_equal " filename with a leading space.txt ",
Chris@909 253 @adapter.revisions(" filename with a leading space.txt ",
Chris@909 254 nil, nil, :all => true)[0].paths[0][:path]
Chris@909 255 end
Chris@909 256
Chris@909 257 def test_getting_entries_with_leading_and_trailing_spaces_in_filename
Chris@909 258 assert_equal " filename with a leading space.txt ",
Chris@909 259 @adapter.entries('',
Chris@909 260 '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name
Chris@909 261 end
Chris@909 262
Chris@909 263 def test_annotate
Chris@909 264 annotate = @adapter.annotate('sources/watchers_controller.rb')
Chris@909 265 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
Chris@909 266 assert_equal 41, annotate.lines.size
Chris@909 267 assert_equal "# This program is free software; you can redistribute it and/or",
Chris@909 268 annotate.lines[4].strip
Chris@909 269 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
Chris@909 270 annotate.revisions[4].identifier
Chris@909 271 assert_equal "jsmith", annotate.revisions[4].author
Chris@909 272 end
Chris@909 273
Chris@909 274 def test_annotate_moved_file
Chris@909 275 annotate = @adapter.annotate('renamed_test.txt')
Chris@909 276 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
Chris@909 277 assert_equal 2, annotate.lines.size
Chris@909 278 end
Chris@909 279
Chris@909 280 def test_last_rev
Chris@909 281 last_rev = @adapter.lastrev("README",
Chris@909 282 "4f26664364207fa8b1af9f8722647ab2d4ac5d43")
Chris@909 283 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid
Chris@909 284 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier
Chris@909 285 assert_equal "Adam Soltys <asoltys@gmail.com>", last_rev.author
Chris@909 286 assert_equal "2009-06-24 05:27:38".to_time, last_rev.time
Chris@909 287 end
Chris@909 288
Chris@909 289 def test_last_rev_with_spaces_in_filename
Chris@909 290 last_rev = @adapter.lastrev("filemane with spaces.txt",
Chris@909 291 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b")
Chris@909 292 str_felix_utf8 = FELIX_UTF8.dup
Chris@909 293 str_felix_hex = FELIX_HEX.dup
Chris@909 294 last_rev_author = last_rev.author
Chris@909 295 if last_rev_author.respond_to?(:force_encoding)
Chris@909 296 last_rev_author.force_encoding('UTF-8')
Chris@909 297 end
Chris@909 298 assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid
Chris@909 299 assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier
Chris@909 300 assert_equal "#{str_felix_utf8} <felix@fachschaften.org>",
Chris@909 301 last_rev.author
Chris@909 302 assert_equal "#{str_felix_hex} <felix@fachschaften.org>",
Chris@909 303 last_rev.author
Chris@909 304 assert_equal "2010-09-18 19:59:46".to_time, last_rev.time
Chris@909 305 end
Chris@909 306
Chris@909 307 def test_latin_1_path
Chris@909 308 if WINDOWS_PASS
Chris@909 309 #
Chris@909 310 elsif JRUBY_SKIP
Chris@909 311 puts JRUBY_SKIP_STR
Chris@909 312 else
Chris@909 313 p2 = "latin-1-dir/test-#{@char_1}-2.txt"
Chris@909 314 ['4fc55c43bf3d3dc2efb66145365ddc17639ce81e', '4fc55c43bf3'].each do |r1|
Chris@909 315 assert @adapter.diff(p2, r1)
Chris@909 316 assert @adapter.cat(p2, r1)
Chris@909 317 assert_equal 1, @adapter.annotate(p2, r1).lines.length
Chris@909 318 ['64f1f3e89ad1cb57976ff0ad99a107012ba3481d', '64f1f3e89ad1cb5797'].each do |r2|
Chris@909 319 assert @adapter.diff(p2, r1, r2)
Chris@909 320 end
Chris@909 321 end
Chris@909 322 end
Chris@909 323 end
Chris@909 324
Chris@909 325 def test_entries_tag
Chris@909 326 entries1 = @adapter.entries(nil, 'tag01.annotated',
Chris@909 327 options = {:report_last_commit => true})
Chris@909 328 assert entries1
Chris@909 329 assert_equal 3, entries1.size
Chris@909 330 assert_equal 'sources', entries1[1].name
Chris@909 331 assert_equal 'sources', entries1[1].path
Chris@909 332 assert_equal 'dir', entries1[1].kind
Chris@909 333 readme = entries1[2]
Chris@909 334 assert_equal 'README', readme.name
Chris@909 335 assert_equal 'README', readme.path
Chris@909 336 assert_equal 'file', readme.kind
Chris@909 337 assert_equal 27, readme.size
Chris@909 338 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', readme.lastrev.identifier
Chris@909 339 assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time
Chris@909 340 end
Chris@909 341
Chris@909 342 def test_entries_branch
Chris@909 343 entries1 = @adapter.entries(nil, 'test_branch',
Chris@909 344 options = {:report_last_commit => true})
Chris@909 345 assert entries1
Chris@909 346 assert_equal 4, entries1.size
Chris@909 347 assert_equal 'sources', entries1[1].name
Chris@909 348 assert_equal 'sources', entries1[1].path
Chris@909 349 assert_equal 'dir', entries1[1].kind
Chris@909 350 readme = entries1[2]
Chris@909 351 assert_equal 'README', readme.name
Chris@909 352 assert_equal 'README', readme.path
Chris@909 353 assert_equal 'file', readme.kind
Chris@909 354 assert_equal 159, readme.size
Chris@909 355 assert_equal '713f4944648826f558cf548222f813dabe7cbb04', readme.lastrev.identifier
Chris@909 356 assert_equal Time.gm(2009, 6, 19, 4, 37, 23), readme.lastrev.time
Chris@909 357 end
Chris@909 358
Chris@909 359 def test_entries_latin_1_files
Chris@909 360 entries1 = @adapter.entries('latin-1-dir', '64f1f3e8')
Chris@909 361 assert entries1
Chris@909 362 assert_equal 3, entries1.size
Chris@909 363 f1 = entries1[1]
Chris@909 364 assert_equal "test-#{@char_1}-2.txt", f1.name
Chris@909 365 assert_equal "latin-1-dir/test-#{@char_1}-2.txt", f1.path
Chris@909 366 assert_equal 'file', f1.kind
Chris@909 367 end
Chris@909 368
Chris@909 369 def test_entries_latin_1_dir
Chris@909 370 if WINDOWS_PASS
Chris@909 371 #
Chris@909 372 elsif JRUBY_SKIP
Chris@909 373 puts JRUBY_SKIP_STR
Chris@909 374 else
Chris@909 375 entries1 = @adapter.entries("latin-1-dir/test-#{@char_1}-subdir",
Chris@909 376 '1ca7f5ed')
Chris@909 377 assert entries1
Chris@909 378 assert_equal 3, entries1.size
Chris@909 379 f1 = entries1[1]
Chris@909 380 assert_equal "test-#{@char_1}-2.txt", f1.name
Chris@909 381 assert_equal "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-2.txt", f1.path
Chris@909 382 assert_equal 'file', f1.kind
Chris@909 383 end
Chris@909 384 end
Chris@909 385
Chris@909 386 def test_path_encoding_default_utf8
Chris@909 387 adpt1 = Redmine::Scm::Adapters::GitAdapter.new(
Chris@909 388 REPOSITORY_PATH
Chris@909 389 )
Chris@909 390 assert_equal "UTF-8", adpt1.path_encoding
Chris@909 391 adpt2 = Redmine::Scm::Adapters::GitAdapter.new(
Chris@909 392 REPOSITORY_PATH,
Chris@909 393 nil,
Chris@909 394 nil,
Chris@909 395 nil,
Chris@909 396 ""
Chris@909 397 )
Chris@909 398 assert_equal "UTF-8", adpt2.path_encoding
Chris@909 399 end
Chris@909 400
Chris@909 401 def test_cat_path_invalid
Chris@909 402 assert_nil @adapter.cat('invalid')
Chris@909 403 end
Chris@909 404
Chris@909 405 def test_cat_revision_invalid
Chris@909 406 assert @adapter.cat('README')
Chris@909 407 assert_nil @adapter.cat('README', 'abcd1234efgh')
Chris@909 408 end
Chris@909 409
Chris@909 410 def test_diff_path_invalid
Chris@909 411 assert_equal [], @adapter.diff('invalid', '713f4944648826f5')
Chris@909 412 end
Chris@909 413
Chris@909 414 def test_diff_revision_invalid
Chris@909 415 assert_nil @adapter.diff(nil, 'abcd1234efgh')
Chris@909 416 assert_nil @adapter.diff(nil, '713f4944648826f5', 'abcd1234efgh')
Chris@909 417 assert_nil @adapter.diff(nil, 'abcd1234efgh', '713f4944648826f5')
Chris@909 418 end
Chris@909 419
Chris@909 420 def test_annotate_path_invalid
Chris@909 421 assert_nil @adapter.annotate('invalid')
Chris@909 422 end
Chris@909 423
Chris@909 424 def test_annotate_revision_invalid
Chris@909 425 assert @adapter.annotate('README')
Chris@909 426 assert_nil @adapter.annotate('README', 'abcd1234efgh')
Chris@909 427 end
Chris@909 428
Chris@909 429 private
Chris@909 430
Chris@909 431 def test_scm_version_for(scm_command_version, version)
Chris@909 432 @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version)
Chris@909 433 assert_equal version, @adapter.class.scm_command_version
Chris@909 434 end
Chris@909 435
Chris@909 436 else
Chris@909 437 puts "Git test repository NOT FOUND. Skipping unit tests !!!"
Chris@909 438 def test_fake; assert true end
Chris@909 439 end
Chris@909 440 end
Chris@909 441
Chris@909 442 rescue LoadError
Chris@909 443 class GitMochaFake < ActiveSupport::TestCase
Chris@909 444 def test_fake; assert(false, "Requires mocha to run those tests") end
Chris@909 445 end
Chris@909 446 end