diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2014-10-22 17:37:16 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2014-10-22 17:37:16 +0000 |
commit | 2d1866d966d94c688f9cb87c5bf3f096dffac844 (patch) | |
tree | 7a733c1cc51448ab69b3f892285305dbfb0ae15e /test/unit/lib | |
parent | a6ec78a4dc658e3517ed682792016b6530458696 (diff) | |
download | redmine-2d1866d966d94c688f9cb87c5bf3f096dffac844.tar.gz redmine-2d1866d966d94c688f9cb87c5bf3f096dffac844.zip |
Merged rails-4.1 branch (#14534).
git-svn-id: http://svn.redmine.org/redmine/trunk@13482 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test/unit/lib')
-rw-r--r-- | test/unit/lib/redmine/codeset_util_test.rb | 65 | ||||
-rw-r--r-- | test/unit/lib/redmine/export/pdf_test.rb | 96 | ||||
-rw-r--r-- | test/unit/lib/redmine/hook_test.rb | 1 | ||||
-rw-r--r-- | test/unit/lib/redmine/i18n_test.rb | 88 | ||||
-rw-r--r-- | test/unit/lib/redmine/scm/adapters/bazaar_adapter_test.rb | 343 | ||||
-rw-r--r-- | test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb | 149 | ||||
-rw-r--r-- | test/unit/lib/redmine/scm/adapters/darcs_adapter_test.rb | 71 | ||||
-rw-r--r-- | test/unit/lib/redmine/scm/adapters/git_adapter_test.rb | 1028 | ||||
-rw-r--r-- | test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb | 781 | ||||
-rw-r--r-- | test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb | 74 | ||||
-rw-r--r-- | test/unit/lib/redmine/unified_diff_test.rb | 36 | ||||
-rw-r--r-- | test/unit/lib/redmine/wiki_formatting/macros_test.rb | 14 |
12 files changed, 1310 insertions, 1436 deletions
diff --git a/test/unit/lib/redmine/codeset_util_test.rb b/test/unit/lib/redmine/codeset_util_test.rb index 496ab5f09..0758ec485 100644 --- a/test/unit/lib/redmine/codeset_util_test.rb +++ b/test/unit/lib/redmine/codeset_util_test.rb @@ -21,14 +21,9 @@ class Redmine::CodesetUtilTest < ActiveSupport::TestCase def test_to_utf8_by_setting_from_latin1 with_settings :repositories_encodings => 'UTF-8,ISO-8859-1' do - s1 = "Texte encod\xc3\xa9" - s2 = "Texte encod\xe9" - s3 = s2.dup - if s1.respond_to?(:force_encoding) - s1.force_encoding("UTF-8") - s2.force_encoding("ASCII-8BIT") - s3.force_encoding("UTF-8") - end + s1 = "Texte encod\xc3\xa9".force_encoding("UTF-8") + s2 = "Texte encod\xe9".force_encoding("ASCII-8BIT") + s3 = s2.dup.force_encoding("UTF-8") assert_equal s1, Redmine::CodesetUtil.to_utf8_by_setting(s2) assert_equal s1, Redmine::CodesetUtil.to_utf8_by_setting(s3) end @@ -36,14 +31,9 @@ class Redmine::CodesetUtilTest < ActiveSupport::TestCase def test_to_utf8_by_setting_from_euc_jp with_settings :repositories_encodings => 'UTF-8,EUC-JP' do - s1 = "\xe3\x83\xac\xe3\x83\x83\xe3\x83\x89\xe3\x83\x9e\xe3\x82\xa4\xe3\x83\xb3" - s2 = "\xa5\xec\xa5\xc3\xa5\xc9\xa5\xde\xa5\xa4\xa5\xf3" - s3 = s2.dup - if s1.respond_to?(:force_encoding) - s1.force_encoding("UTF-8") - s2.force_encoding("ASCII-8BIT") - s3.force_encoding("UTF-8") - end + s1 = "\xe3\x83\xac\xe3\x83\x83\xe3\x83\x89\xe3\x83\x9e\xe3\x82\xa4\xe3\x83\xb3".force_encoding("UTF-8") + s2 = "\xa5\xec\xa5\xc3\xa5\xc9\xa5\xde\xa5\xa4\xa5\xf3".force_encoding("ASCII-8BIT") + s3 = s2.dup.force_encoding("UTF-8") assert_equal s1, Redmine::CodesetUtil.to_utf8_by_setting(s2) assert_equal s1, Redmine::CodesetUtil.to_utf8_by_setting(s3) end @@ -51,14 +41,9 @@ class Redmine::CodesetUtilTest < ActiveSupport::TestCase def test_to_utf8_by_setting_should_be_converted_all_latin1 with_settings :repositories_encodings => 'ISO-8859-1' do - s1 = "\xc3\x82\xc2\x80" - s2 = "\xC2\x80" - s3 = s2.dup - if s1.respond_to?(:force_encoding) - s1.force_encoding("UTF-8") - s2.force_encoding("ASCII-8BIT") - s3.force_encoding("UTF-8") - end + s1 = "\xc3\x82\xc2\x80".force_encoding("UTF-8") + s2 = "\xC2\x80".force_encoding("ASCII-8BIT") + s3 = s2.dup.force_encoding("UTF-8") assert_equal s1, Redmine::CodesetUtil.to_utf8_by_setting(s2) assert_equal s1, Redmine::CodesetUtil.to_utf8_by_setting(s3) end @@ -70,45 +55,33 @@ class Redmine::CodesetUtilTest < ActiveSupport::TestCase end def test_to_utf8_by_setting_returns_ascii_as_utf8 - s1 = "ASCII" - s2 = s1.dup - if s1.respond_to?(:force_encoding) - s1.force_encoding("UTF-8") - s2.force_encoding("ISO-8859-1") - end + s1 = "ASCII".force_encoding("UTF-8") + s2 = s1.dup.force_encoding("ISO-8859-1") str1 = Redmine::CodesetUtil.to_utf8_by_setting(s1) str2 = Redmine::CodesetUtil.to_utf8_by_setting(s2) assert_equal s1, str1 assert_equal s1, str2 - if s1.respond_to?(:force_encoding) - assert_equal "UTF-8", str1.encoding.to_s - assert_equal "UTF-8", str2.encoding.to_s - end + assert_equal "UTF-8", str1.encoding.to_s + assert_equal "UTF-8", str2.encoding.to_s end def test_to_utf8_by_setting_invalid_utf8_sequences_should_be_stripped with_settings :repositories_encodings => '' do # s1 = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") - s1 = "Texte encod\xe9 en ISO-8859-1." - s1.force_encoding("ASCII-8BIT") if s1.respond_to?(:force_encoding) + s1 = "Texte encod\xe9 en ISO-8859-1.".force_encoding("ASCII-8BIT") str = Redmine::CodesetUtil.to_utf8_by_setting(s1) - if str.respond_to?(:force_encoding) - assert str.valid_encoding? - assert_equal "UTF-8", str.encoding.to_s - end + assert str.valid_encoding? + assert_equal "UTF-8", str.encoding.to_s assert_equal "Texte encod? en ISO-8859-1.", str end end def test_to_utf8_by_setting_invalid_utf8_sequences_should_be_stripped_ja_jis with_settings :repositories_encodings => 'ISO-2022-JP' do - s1 = "test\xb5\xfetest\xb5\xfe" - s1.force_encoding("ASCII-8BIT") if s1.respond_to?(:force_encoding) + s1 = "test\xb5\xfetest\xb5\xfe".force_encoding("ASCII-8BIT") str = Redmine::CodesetUtil.to_utf8_by_setting(s1) - if str.respond_to?(:force_encoding) - assert str.valid_encoding? - assert_equal "UTF-8", str.encoding.to_s - end + assert str.valid_encoding? + assert_equal "UTF-8", str.encoding.to_s assert_equal "test??test??", str end end diff --git a/test/unit/lib/redmine/export/pdf_test.rb b/test/unit/lib/redmine/export/pdf_test.rb index a0821d62d..8af672660 100644 --- a/test/unit/lib/redmine/export/pdf_test.rb +++ b/test/unit/lib/redmine/export/pdf_test.rb @@ -27,11 +27,10 @@ class PdfTest < ActiveSupport::TestCase end def test_rdm_pdf_iconv_cannot_convert_ja_cp932 - encoding = ( RUBY_PLATFORM == 'java' ? "SJIS" : "CP932" ) utf8_txt_1 = "\xe7\x8b\x80\xe6\x85\x8b" utf8_txt_2 = "\xe7\x8b\x80\xe6\x85\x8b\xe7\x8b\x80" utf8_txt_3 = "\xe7\x8b\x80\xe7\x8b\x80\xe6\x85\x8b\xe7\x8b\x80" - if utf8_txt_1.respond_to?(:force_encoding) + ["CP932", "SJIS"].each do |encoding| txt_1 = Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(utf8_txt_1, encoding) txt_2 = Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(utf8_txt_2, encoding) txt_3 = Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(utf8_txt_3, encoding) @@ -41,88 +40,65 @@ class PdfTest < ActiveSupport::TestCase assert_equal "ASCII-8BIT", txt_1.encoding.to_s assert_equal "ASCII-8BIT", txt_2.encoding.to_s assert_equal "ASCII-8BIT", txt_3.encoding.to_s - elsif RUBY_PLATFORM == 'java' - assert_equal "??", - Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(utf8_txt_1, encoding) - assert_equal "???", - Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(utf8_txt_2, encoding) - assert_equal "????", - Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(utf8_txt_3, encoding) - else - assert_equal "???\x91\xd4", - Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(utf8_txt_1, encoding) - assert_equal "???\x91\xd4???", - Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(utf8_txt_2, encoding) - assert_equal "??????\x91\xd4???", - Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(utf8_txt_3, encoding) end end def test_rdm_pdf_iconv_invalid_utf8_should_be_replaced_en - str1 = "Texte encod\xe9 en ISO-8859-1" - str2 = "\xe9a\xe9b\xe9c\xe9d\xe9e test" - str1.force_encoding("UTF-8") if str1.respond_to?(:force_encoding) - str2.force_encoding("ASCII-8BIT") if str2.respond_to?(:force_encoding) + str1 = "Texte encod\xe9 en ISO-8859-1".force_encoding("UTF-8") + str2 = "\xe9a\xe9b\xe9c\xe9d\xe9e test".force_encoding("ASCII-8BIT") txt_1 = Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(str1, 'UTF-8') txt_2 = Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(str2, 'UTF-8') - if txt_1.respond_to?(:force_encoding) - assert_equal "ASCII-8BIT", txt_1.encoding.to_s - assert_equal "ASCII-8BIT", txt_2.encoding.to_s - end + assert_equal "ASCII-8BIT", txt_1.encoding.to_s + assert_equal "ASCII-8BIT", txt_2.encoding.to_s assert_equal "Texte encod? en ISO-8859-1", txt_1 assert_equal "?a?b?c?d?e test", txt_2 end def test_rdm_pdf_iconv_invalid_utf8_should_be_replaced_ja - str1 = "Texte encod\xe9 en ISO-8859-1" - str2 = "\xe9a\xe9b\xe9c\xe9d\xe9e test" - str1.force_encoding("UTF-8") if str1.respond_to?(:force_encoding) - str2.force_encoding("ASCII-8BIT") if str2.respond_to?(:force_encoding) + str1 = "Texte encod\xe9 en ISO-8859-1".force_encoding("UTF-8") + str2 = "\xe9a\xe9b\xe9c\xe9d\xe9e test".force_encoding("ASCII-8BIT") encoding = ( RUBY_PLATFORM == 'java' ? "SJIS" : "CP932" ) txt_1 = Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(str1, encoding) txt_2 = Redmine::Export::PDF::RDMPdfEncoding::rdm_from_utf8(str2, encoding) - if txt_1.respond_to?(:force_encoding) - assert_equal "ASCII-8BIT", txt_1.encoding.to_s - assert_equal "ASCII-8BIT", txt_2.encoding.to_s - end + assert_equal "ASCII-8BIT", txt_1.encoding.to_s + assert_equal "ASCII-8BIT", txt_2.encoding.to_s assert_equal "Texte encod? en ISO-8859-1", txt_1 assert_equal "?a?b?c?d?e test", txt_2 end def test_attach - set_fixtures_attachments_directory + ["CP932", "SJIS"].each do |encoding| + set_fixtures_attachments_directory - str2 = "\x83e\x83X\x83g" - str2.force_encoding("ASCII-8BIT") if str2.respond_to?(:force_encoding) - encoding = ( RUBY_PLATFORM == 'java' ? "SJIS" : "CP932" ) + str2 = "\x83e\x83X\x83g".force_encoding("ASCII-8BIT") - a1 = Attachment.find(17) - a2 = Attachment.find(19) + a1 = Attachment.find(17) + a2 = Attachment.find(19) + User.current = User.find(1) + assert a1.readable? + assert a1.visible? + assert a2.readable? + assert a2.visible? - User.current = User.find(1) - assert a1.readable? - assert a1.visible? - assert a2.readable? - assert a2.visible? + aa1 = Redmine::Export::PDF::RDMPdfEncoding::attach(Attachment.all, "Testfile.PNG", "UTF-8") + assert_not_nil aa1 + assert_equal 17, aa1.id - aa1 = Redmine::Export::PDF::RDMPdfEncoding::attach(Attachment.all, "Testfile.PNG", "UTF-8") - assert_not_nil aa1 - assert_equal 17, aa1.id - aa2 = Redmine::Export::PDF::RDMPdfEncoding::attach(Attachment.all, "test#{str2}.png", encoding) - assert_not_nil aa2 - assert_equal 19, aa2.id + aa2 = Redmine::Export::PDF::RDMPdfEncoding::attach(Attachment.all, "test#{str2}.png", encoding) + assert_not_nil aa2 + assert_equal 19, aa2.id - User.current = nil - assert a1.readable? - assert (! a1.visible?) - assert a2.readable? - assert (! a2.visible?) + User.current = nil + assert a1.readable? + assert (! a1.visible?) + assert a2.readable? + assert (! a2.visible?) + aa1 = Redmine::Export::PDF::RDMPdfEncoding::attach(Attachment.all, "Testfile.PNG", "UTF-8") + assert_equal nil, aa1 + aa2 = Redmine::Export::PDF::RDMPdfEncoding::attach(Attachment.all, "test#{str2}.png", encoding) + assert_equal nil, aa2 - aa1 = Redmine::Export::PDF::RDMPdfEncoding::attach(Attachment.all, "Testfile.PNG", "UTF-8") - assert_equal nil, aa1 - aa2 = Redmine::Export::PDF::RDMPdfEncoding::attach(Attachment.all, "test#{str2}.png", encoding) - assert_equal nil, aa2 - - set_tmp_attachments_directory + set_tmp_attachments_directory + end end end diff --git a/test/unit/lib/redmine/hook_test.rb b/test/unit/lib/redmine/hook_test.rb index 1352d251e..af9ca9ded 100644 --- a/test/unit/lib/redmine/hook_test.rb +++ b/test/unit/lib/redmine/hook_test.rb @@ -66,6 +66,7 @@ class Redmine::Hook::ManagerTest < ActionView::TestCase def setup @hook_module = Redmine::Hook + @hook_module.clear_listeners end def teardown diff --git a/test/unit/lib/redmine/i18n_test.rb b/test/unit/lib/redmine/i18n_test.rb index 6d3561486..a267fd7b9 100644 --- a/test/unit/lib/redmine/i18n_test.rb +++ b/test/unit/lib/redmine/i18n_test.rb @@ -32,47 +32,50 @@ class Redmine::I18nTest < ActiveSupport::TestCase def test_date_format_default set_language_if_valid 'en' today = Date.today - Setting.date_format = '' - assert_equal I18n.l(today), format_date(today) + with_settings :date_format => '' do + assert_equal I18n.l(today), format_date(today) + end end def test_date_format set_language_if_valid 'en' today = Date.today - Setting.date_format = '%d %m %Y' - assert_equal today.strftime('%d %m %Y'), format_date(today) + with_settings :date_format => '%d %m %Y' do + assert_equal today.strftime('%d %m %Y'), format_date(today) + end end def test_date_format_default_with_user_locale set_language_if_valid 'es' today = now = Time.parse('2011-02-20 14:00:00') - Setting.date_format = '%d %B %Y' - User.current.language = 'fr' - s1 = "20 f\xc3\xa9vrier 2011" - s1.force_encoding("UTF-8") if s1.respond_to?(:force_encoding) - assert_equal s1, format_date(today) - User.current.language = nil - assert_equal '20 Febrero 2011', format_date(today) + with_settings :date_format => '%d %B %Y' do + User.current.language = 'fr' + s1 = "20 f\xc3\xa9vrier 2011".force_encoding("UTF-8") + assert_equal s1, format_date(today) + User.current.language = nil + assert_equal '20 Febrero 2011', format_date(today) + end end def test_date_and_time_for_each_language - Setting.date_format = '' - valid_languages.each do |lang| - set_language_if_valid lang - assert_nothing_raised "#{lang} failure" do - format_date(Date.today) - format_time(Time.now) - format_time(Time.now, false) - assert_not_equal 'default', ::I18n.l(Date.today, :format => :default), - "date.formats.default missing in #{lang}" - assert_not_equal 'time', ::I18n.l(Time.now, :format => :time), - "time.formats.time missing in #{lang}" + with_settings :date_format => '' do + valid_languages.each do |lang| + set_language_if_valid lang + assert_nothing_raised "#{lang} failure" do + format_date(Date.today) + format_time(Time.now) + format_time(Time.now, false) + assert_not_equal 'default', ::I18n.l(Date.today, :format => :default), + "date.formats.default missing in #{lang}" + assert_not_equal 'time', ::I18n.l(Time.now, :format => :time), + "time.formats.time missing in #{lang}" + end + assert l('date.day_names').is_a?(Array) + assert_equal 7, l('date.day_names').size + + assert l('date.month_names').is_a?(Array) + assert_equal 13, l('date.month_names').size end - assert l('date.day_names').is_a?(Array) - assert_equal 7, l('date.day_names').size - - assert l('date.month_names').is_a?(Array) - assert_equal 13, l('date.month_names').size end end @@ -134,10 +137,10 @@ class Redmine::I18nTest < ActiveSupport::TestCase def test_utc_time_format set_language_if_valid 'en' now = Time.now - Setting.date_format = '%d %m %Y' - Setting.time_format = '%H %M' - assert_equal now.strftime('%d %m %Y %H %M'), format_time(now.utc) - assert_equal now.strftime('%H %M'), format_time(now.utc, false) + with_settings :date_format => '%d %m %Y', :time_format => '%H %M' do + assert_equal now.strftime('%d %m %Y %H %M'), format_time(now.utc) + assert_equal now.strftime('%H %M'), format_time(now.utc, false) + end end def test_number_to_human_size_for_each_language @@ -175,8 +178,7 @@ class Redmine::I18nTest < ActiveSupport::TestCase set_language_if_valid 'bs' assert_equal "KM -1000,20", number_to_currency(-1000.2) set_language_if_valid 'de' - euro_sign = "\xe2\x82\xac" - euro_sign.force_encoding('UTF-8') if euro_sign.respond_to?(:force_encoding) + euro_sign = "\xe2\x82\xac".force_encoding('UTF-8') assert_equal "-1000,20 #{euro_sign}", number_to_currency(-1000.2) end @@ -193,8 +195,7 @@ class Redmine::I18nTest < ActiveSupport::TestCase assert_nil options.detect {|option| option.size != 2} assert_nil options.detect {|option| !option.first.is_a?(String) || !option.last.is_a?(String)} assert_include ["English", "en"], options - ja = "Japanese (\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e)" - ja.force_encoding('UTF-8') if ja.respond_to?(:force_encoding) + ja = "Japanese (\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e)".force_encoding('UTF-8') assert_include [ja, "ja"], options end @@ -238,30 +239,21 @@ class Redmine::I18nTest < ActiveSupport::TestCase def test_utf8 set_language_if_valid 'ja' - str_ja_yes = "\xe3\x81\xaf\xe3\x81\x84" + str_ja_yes = "\xe3\x81\xaf\xe3\x81\x84".force_encoding('UTF-8') i18n_ja_yes = l(:general_text_Yes) - if str_ja_yes.respond_to?(:force_encoding) - str_ja_yes.force_encoding('UTF-8') - assert_equal "UTF-8", i18n_ja_yes.encoding.to_s - end assert_equal str_ja_yes, i18n_ja_yes + assert_equal "UTF-8", i18n_ja_yes.encoding.to_s end def test_traditional_chinese_locale set_language_if_valid 'zh-TW' - str_tw = "Traditional Chinese (\xe7\xb9\x81\xe9\xab\x94\xe4\xb8\xad\xe6\x96\x87)" - if str_tw.respond_to?(:force_encoding) - str_tw.force_encoding('UTF-8') - end + str_tw = "Traditional Chinese (\xe7\xb9\x81\xe9\xab\x94\xe4\xb8\xad\xe6\x96\x87)".force_encoding('UTF-8') assert_equal str_tw, l(:general_lang_name) end def test_french_locale set_language_if_valid 'fr' - str_fr = "Fran\xc3\xa7ais" - if str_fr.respond_to?(:force_encoding) - str_fr.force_encoding('UTF-8') - end + str_fr = "Fran\xc3\xa7ais".force_encoding('UTF-8') assert_equal str_fr, l(:general_lang_name) end end diff --git a/test/unit/lib/redmine/scm/adapters/bazaar_adapter_test.rb b/test/unit/lib/redmine/scm/adapters/bazaar_adapter_test.rb index a4699ef4d..272b7ba13 100644 --- a/test/unit/lib/redmine/scm/adapters/bazaar_adapter_test.rb +++ b/test/unit/lib/redmine/scm/adapters/bazaar_adapter_test.rb @@ -16,210 +16,203 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require File.expand_path('../../../../../../test_helper', __FILE__) -begin - require 'mocha/setup' - - class BazaarAdapterTest < ActiveSupport::TestCase - REPOSITORY_PATH = Rails.root.join('tmp/test/bazaar_repository').to_s - REPOSITORY_PATH.gsub!(/\/+/, '/') - - if File.directory?(REPOSITORY_PATH) - def setup - @adapter = Redmine::Scm::Adapters::BazaarAdapter.new( - File.join(REPOSITORY_PATH, "trunk") - ) - end - def test_scm_version - to_test = { "Bazaar (bzr) 2.1.2\n" => [2,1,2], - "2.1.1\n1.7\n1.8" => [2,1,1], - "2.0.1\r\n1.8.1\r\n1.9.1" => [2,0,1]} - to_test.each do |s, v| - test_scm_version_for(s, v) - end - end +class BazaarAdapterTest < ActiveSupport::TestCase + REPOSITORY_PATH = Rails.root.join('tmp/test/bazaar_repository').to_s + REPOSITORY_PATH.gsub!(/\/+/, '/') - def test_cat - cat = @adapter.cat('directory/document.txt') - assert cat =~ /Write the contents of a file as of a given revision to standard output/ - end + if File.directory?(REPOSITORY_PATH) + def setup + @adapter = Redmine::Scm::Adapters::BazaarAdapter.new( + File.join(REPOSITORY_PATH, "trunk") + ) + end - def test_cat_path_invalid - assert_nil @adapter.cat('invalid') + def test_scm_version + to_test = { "Bazaar (bzr) 2.1.2\n" => [2,1,2], + "2.1.1\n1.7\n1.8" => [2,1,1], + "2.0.1\r\n1.8.1\r\n1.9.1" => [2,0,1]} + to_test.each do |s, v| + test_scm_version_for(s, v) end + end - def test_cat_revision_invalid - assert_nil @adapter.cat('doc-mkdir.txt', '12345678') - end + def test_cat + cat = @adapter.cat('directory/document.txt') + assert cat =~ /Write the contents of a file as of a given revision to standard output/ + end - def test_diff - diff1 = @adapter.diff('doc-mkdir.txt', 3, 2) - assert_equal 21, diff1.size - buf = diff1[14].gsub(/\r\n|\r|\n/, "") - assert_equal "-Display more information.", buf - end + def test_cat_path_invalid + assert_nil @adapter.cat('invalid') + end - def test_diff_path_invalid - assert_equal [], @adapter.diff('invalid', 1) - end + def test_cat_revision_invalid + assert_nil @adapter.cat('doc-mkdir.txt', '12345678') + end - def test_diff_revision_invalid - assert_equal [], @adapter.diff(nil, 12345678) - assert_equal [], @adapter.diff(nil, 12345678, 87654321) - end + def test_diff + diff1 = @adapter.diff('doc-mkdir.txt', 3, 2) + assert_equal 21, diff1.size + buf = diff1[14].gsub(/\r\n|\r|\n/, "") + assert_equal "-Display more information.", buf + end - def test_annotate - annotate = @adapter.annotate('doc-mkdir.txt') - assert_equal 17, annotate.lines.size - assert_equal '1', annotate.revisions[0].identifier - assert_equal 'jsmith@', annotate.revisions[0].author - assert_equal 'mkdir', annotate.lines[0] - end + def test_diff_path_invalid + assert_equal [], @adapter.diff('invalid', 1) + end - def test_annotate_path_invalid - assert_nil @adapter.annotate('invalid') - end + def test_diff_revision_invalid + assert_equal [], @adapter.diff(nil, 12345678) + assert_equal [], @adapter.diff(nil, 12345678, 87654321) + end - def test_annotate_revision_invalid - assert_nil @adapter.annotate('doc-mkdir.txt', '12345678') - end + def test_annotate + annotate = @adapter.annotate('doc-mkdir.txt') + assert_equal 17, annotate.lines.size + assert_equal '1', annotate.revisions[0].identifier + assert_equal 'jsmith@', annotate.revisions[0].author + assert_equal 'mkdir', annotate.lines[0] + end - def test_branch_conf_path - p = "c:\\test\\test\\" - bcp = Redmine::Scm::Adapters::BazaarAdapter.branch_conf_path(p) - assert_equal File.join("c:\\test\\test", ".bzr", "branch", "branch.conf"), bcp - p = "c:\\test\\test\\.bzr" - bcp = Redmine::Scm::Adapters::BazaarAdapter.branch_conf_path(p) - assert_equal File.join("c:\\test\\test", ".bzr", "branch", "branch.conf"), bcp - p = "c:\\test\\test\\.bzr\\" - bcp = Redmine::Scm::Adapters::BazaarAdapter.branch_conf_path(p) - assert_equal File.join("c:\\test\\test", ".bzr", "branch", "branch.conf"), bcp - p = "c:\\test\\test" - bcp = Redmine::Scm::Adapters::BazaarAdapter.branch_conf_path(p) - assert_equal File.join("c:\\test\\test", ".bzr", "branch", "branch.conf"), bcp - p = "\\\\server\\test\\test\\" - bcp = Redmine::Scm::Adapters::BazaarAdapter.branch_conf_path(p) - assert_equal File.join("\\\\server\\test\\test", ".bzr", "branch", "branch.conf"), bcp - end + def test_annotate_path_invalid + assert_nil @adapter.annotate('invalid') + end - def test_append_revisions_only_true - assert_equal true, @adapter.append_revisions_only - end + def test_annotate_revision_invalid + assert_nil @adapter.annotate('doc-mkdir.txt', '12345678') + end - def test_append_revisions_only_false - adpt = Redmine::Scm::Adapters::BazaarAdapter.new( - File.join(REPOSITORY_PATH, "empty-branch") - ) - assert_equal false, adpt.append_revisions_only - end + def test_branch_conf_path + p = "c:\\test\\test\\" + bcp = Redmine::Scm::Adapters::BazaarAdapter.branch_conf_path(p) + assert_equal File.join("c:\\test\\test", ".bzr", "branch", "branch.conf"), bcp + p = "c:\\test\\test\\.bzr" + bcp = Redmine::Scm::Adapters::BazaarAdapter.branch_conf_path(p) + assert_equal File.join("c:\\test\\test", ".bzr", "branch", "branch.conf"), bcp + p = "c:\\test\\test\\.bzr\\" + bcp = Redmine::Scm::Adapters::BazaarAdapter.branch_conf_path(p) + assert_equal File.join("c:\\test\\test", ".bzr", "branch", "branch.conf"), bcp + p = "c:\\test\\test" + bcp = Redmine::Scm::Adapters::BazaarAdapter.branch_conf_path(p) + assert_equal File.join("c:\\test\\test", ".bzr", "branch", "branch.conf"), bcp + p = "\\\\server\\test\\test\\" + bcp = Redmine::Scm::Adapters::BazaarAdapter.branch_conf_path(p) + assert_equal File.join("\\\\server\\test\\test", ".bzr", "branch", "branch.conf"), bcp + end - def test_append_revisions_only_shared_repo - adpt = Redmine::Scm::Adapters::BazaarAdapter.new( - REPOSITORY_PATH - ) - assert_equal false, adpt.append_revisions_only - end + def test_append_revisions_only_true + assert_equal true, @adapter.append_revisions_only + end - def test_info_not_nil - assert_not_nil @adapter.info - end + def test_append_revisions_only_false + adpt = Redmine::Scm::Adapters::BazaarAdapter.new( + File.join(REPOSITORY_PATH, "empty-branch") + ) + assert_equal false, adpt.append_revisions_only + end - def test_info_nil - adpt = Redmine::Scm::Adapters::BazaarAdapter.new( - "/invalid/invalid/" - ) - assert_nil adpt.info - end + def test_append_revisions_only_shared_repo + adpt = Redmine::Scm::Adapters::BazaarAdapter.new( + REPOSITORY_PATH + ) + assert_equal false, adpt.append_revisions_only + end - def test_info - info = @adapter.info - assert_equal 4, info.lastrev.identifier.to_i - end + def test_info_not_nil + assert_not_nil @adapter.info + end - def test_info_emtpy - adpt = Redmine::Scm::Adapters::BazaarAdapter.new( - File.join(REPOSITORY_PATH, "empty-branch") - ) - assert_equal 0, adpt.info.lastrev.identifier.to_i - end + def test_info_nil + adpt = Redmine::Scm::Adapters::BazaarAdapter.new( + "/invalid/invalid/" + ) + assert_nil adpt.info + end - def test_entries_path_invalid - assert_equal [], @adapter.entries('invalid') - end + def test_info + info = @adapter.info + assert_equal 4, info.lastrev.identifier.to_i + end - def test_entries_revision_invalid - assert_nil @adapter.entries(nil, 12345678) - end + def test_info_emtpy + adpt = Redmine::Scm::Adapters::BazaarAdapter.new( + File.join(REPOSITORY_PATH, "empty-branch") + ) + assert_equal 0, adpt.info.lastrev.identifier.to_i + end - def test_revisions - revisions = @adapter.revisions(nil, 4, 2) - assert_equal 3, revisions.size - assert_equal 2, revisions[2].identifier - assert_equal 'jsmith@foo.bar-20071203175224-v0eog5d5wrgdrshg', revisions[2].scmid - assert_equal 4, revisions[0].identifier - assert_equal 'jsmith@foo.bar-20071203175422-t40bf8li5zz0c4cg', revisions[0].scmid - assert_equal 2, revisions[0].paths.size - assert_equal 'D', revisions[0].paths[0][:action] - assert_equal '/doc-deleted.txt', revisions[0].paths[0][:path] - assert_equal 'docdeleted.txt-20071203175320-iwwj561ojuubs3gt-1', revisions[0].paths[0][:revision] - assert_equal 'M', revisions[0].paths[1][:action] - assert_equal '/directory/doc-ls.txt', revisions[0].paths[1][:path] - assert_equal 'docls.txt-20071203175005-a3hyc3mn0shl7cgu-1', revisions[0].paths[1][:revision] - end + def test_entries_path_invalid + assert_equal [], @adapter.entries('invalid') + end - def test_revisions_path_invalid - assert_nil @adapter.revisions('invalid') - end + def test_entries_revision_invalid + assert_nil @adapter.entries(nil, 12345678) + end - def test_revisions_revision_invalid - assert_nil @adapter.revisions(nil, 12345678) - assert_nil @adapter.revisions(nil, 12345678, 87654321) - end + def test_revisions + revisions = @adapter.revisions(nil, 4, 2) + assert_equal 3, revisions.size + assert_equal 2, revisions[2].identifier + assert_equal 'jsmith@foo.bar-20071203175224-v0eog5d5wrgdrshg', revisions[2].scmid + assert_equal 4, revisions[0].identifier + assert_equal 'jsmith@foo.bar-20071203175422-t40bf8li5zz0c4cg', revisions[0].scmid + assert_equal 2, revisions[0].paths.size + assert_equal 'D', revisions[0].paths[0][:action] + assert_equal '/doc-deleted.txt', revisions[0].paths[0][:path] + assert_equal 'docdeleted.txt-20071203175320-iwwj561ojuubs3gt-1', revisions[0].paths[0][:revision] + assert_equal 'M', revisions[0].paths[1][:action] + assert_equal '/directory/doc-ls.txt', revisions[0].paths[1][:path] + assert_equal 'docls.txt-20071203175005-a3hyc3mn0shl7cgu-1', revisions[0].paths[1][:revision] + end - def test_entry - entry = @adapter.entry() - assert_equal "", entry.path - assert_equal "dir", entry.kind - entry = @adapter.entry('') - assert_equal "", entry.path + def test_revisions_path_invalid + assert_nil @adapter.revisions('invalid') + end + + def test_revisions_revision_invalid + assert_nil @adapter.revisions(nil, 12345678) + assert_nil @adapter.revisions(nil, 12345678, 87654321) + end + + def test_entry + entry = @adapter.entry() + assert_equal "", entry.path + assert_equal "dir", entry.kind + entry = @adapter.entry('') + assert_equal "", entry.path + assert_equal "dir", entry.kind + assert_nil @adapter.entry('invalid') + assert_nil @adapter.entry('/invalid') + assert_nil @adapter.entry('/invalid/') + assert_nil @adapter.entry('invalid/invalid') + assert_nil @adapter.entry('invalid/invalid/') + assert_nil @adapter.entry('/invalid/invalid') + assert_nil @adapter.entry('/invalid/invalid/') + ["doc-ls.txt", "/doc-ls.txt"].each do |path| + entry = @adapter.entry(path, 2) + assert_equal "doc-ls.txt", entry.path + assert_equal "file", entry.kind + end + ["directory", "/directory", "/directory/"].each do |path| + entry = @adapter.entry(path, 2) + assert_equal "directory", entry.path assert_equal "dir", entry.kind - assert_nil @adapter.entry('invalid') - assert_nil @adapter.entry('/invalid') - assert_nil @adapter.entry('/invalid/') - assert_nil @adapter.entry('invalid/invalid') - assert_nil @adapter.entry('invalid/invalid/') - assert_nil @adapter.entry('/invalid/invalid') - assert_nil @adapter.entry('/invalid/invalid/') - ["doc-ls.txt", "/doc-ls.txt"].each do |path| - entry = @adapter.entry(path, 2) - assert_equal "doc-ls.txt", entry.path - assert_equal "file", entry.kind - end - ["directory", "/directory", "/directory/"].each do |path| - entry = @adapter.entry(path, 2) - assert_equal "directory", entry.path - assert_equal "dir", entry.kind - end - ["directory/document.txt", "/directory/document.txt"].each do |path| - entry = @adapter.entry(path, 2) - assert_equal "directory/document.txt", entry.path - assert_equal "file", entry.kind - end end + ["directory/document.txt", "/directory/document.txt"].each do |path| + entry = @adapter.entry(path, 2) + assert_equal "directory/document.txt", entry.path + assert_equal "file", entry.kind + end + end - private + private - def test_scm_version_for(scm_command_version, version) - @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version) - assert_equal version, @adapter.class.scm_command_version - end - else - puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!" - def test_fake; assert true end + def test_scm_version_for(scm_command_version, version) + @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version) + assert_equal version, @adapter.class.scm_command_version end - end -rescue LoadError - class BazaarMochaFake < ActiveSupport::TestCase - def test_fake; assert(false, "Requires mocha to run those tests") end + else + puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end end end diff --git a/test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb b/test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb index cf5ab791c..504a3ad78 100644 --- a/test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb +++ b/test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb @@ -16,100 +16,91 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require File.expand_path('../../../../../../test_helper', __FILE__) -begin - require 'mocha/setup' - class CvsAdapterTest < ActiveSupport::TestCase - REPOSITORY_PATH = Rails.root.join('tmp/test/cvs_repository').to_s - REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? - MODULE_NAME = 'test' +class CvsAdapterTest < ActiveSupport::TestCase + REPOSITORY_PATH = Rails.root.join('tmp/test/cvs_repository').to_s + REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? + MODULE_NAME = 'test' - if File.directory?(REPOSITORY_PATH) - def setup - @adapter = Redmine::Scm::Adapters::CvsAdapter.new(MODULE_NAME, REPOSITORY_PATH) - end + if File.directory?(REPOSITORY_PATH) + def setup + @adapter = Redmine::Scm::Adapters::CvsAdapter.new(MODULE_NAME, REPOSITORY_PATH) + end - def test_scm_version - to_test = { "\nConcurrent Versions System (CVS) 1.12.13 (client/server)\n" => [1,12,13], - "\r\n1.12.12\r\n1.12.11" => [1,12,12], - "1.12.11\r\n1.12.10\r\n" => [1,12,11]} - to_test.each do |s, v| - test_scm_version_for(s, v) - end + def test_scm_version + to_test = { "\nConcurrent Versions System (CVS) 1.12.13 (client/server)\n" => [1,12,13], + "\r\n1.12.12\r\n1.12.11" => [1,12,12], + "1.12.11\r\n1.12.10\r\n" => [1,12,11]} + to_test.each do |s, v| + test_scm_version_for(s, v) end + end - def test_revisions_all - cnt = 0 - @adapter.revisions('', nil, nil, :log_encoding => 'UTF-8') do |revision| - cnt += 1 - end - assert_equal 16, cnt + def test_revisions_all + cnt = 0 + @adapter.revisions('', nil, nil, :log_encoding => 'UTF-8') do |revision| + cnt += 1 end + assert_equal 16, cnt + end - def test_revisions_from_rev3 - rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22) - cnt = 0 - @adapter.revisions('', rev3_committed_on, nil, :log_encoding => 'UTF-8') do |revision| - cnt += 1 - end - assert_equal 4, cnt + def test_revisions_from_rev3 + rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22) + cnt = 0 + @adapter.revisions('', rev3_committed_on, nil, :log_encoding => 'UTF-8') do |revision| + cnt += 1 end + assert_equal 4, cnt + end - def test_entries_rev3 - rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22) - entries = @adapter.entries('sources', rev3_committed_on) - assert_equal 2, entries.size - assert_equal entries[0].name, "watchers_controller.rb" - assert_equal entries[0].lastrev.time, Time.gm(2007, 12, 13, 16, 27, 22) - end + def test_entries_rev3 + rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22) + entries = @adapter.entries('sources', rev3_committed_on) + assert_equal 2, entries.size + assert_equal entries[0].name, "watchers_controller.rb" + assert_equal entries[0].lastrev.time, Time.gm(2007, 12, 13, 16, 27, 22) + end - def test_path_encoding_default_utf8 - adpt1 = Redmine::Scm::Adapters::CvsAdapter.new( - MODULE_NAME, - REPOSITORY_PATH - ) - assert_equal "UTF-8", adpt1.path_encoding - adpt2 = Redmine::Scm::Adapters::CvsAdapter.new( - MODULE_NAME, - REPOSITORY_PATH, - nil, - nil, - "" - ) - assert_equal "UTF-8", adpt2.path_encoding - end + def test_path_encoding_default_utf8 + adpt1 = Redmine::Scm::Adapters::CvsAdapter.new( + MODULE_NAME, + REPOSITORY_PATH + ) + assert_equal "UTF-8", adpt1.path_encoding + adpt2 = Redmine::Scm::Adapters::CvsAdapter.new( + MODULE_NAME, + REPOSITORY_PATH, + nil, + nil, + "" + ) + assert_equal "UTF-8", adpt2.path_encoding + end - def test_root_url_path - to_test = { - ':pserver:cvs_user:cvs_password@123.456.789.123:9876/repo' => '/repo', - ':pserver:cvs_user:cvs_password@123.456.789.123/repo' => '/repo', - ':pserver:cvs_user:cvs_password@cvs_server:/repo' => '/repo', - ':pserver:cvs_user:cvs_password@cvs_server:9876/repo' => '/repo', - ':pserver:cvs_user:cvs_password@cvs_server/repo' => '/repo', - ':pserver:cvs_user:cvs_password@cvs_server/path/repo' => '/path/repo', - ':ext:cvsservername:/path' => '/path' - } + def test_root_url_path + to_test = { + ':pserver:cvs_user:cvs_password@123.456.789.123:9876/repo' => '/repo', + ':pserver:cvs_user:cvs_password@123.456.789.123/repo' => '/repo', + ':pserver:cvs_user:cvs_password@cvs_server:/repo' => '/repo', + ':pserver:cvs_user:cvs_password@cvs_server:9876/repo' => '/repo', + ':pserver:cvs_user:cvs_password@cvs_server/repo' => '/repo', + ':pserver:cvs_user:cvs_password@cvs_server/path/repo' => '/path/repo', + ':ext:cvsservername:/path' => '/path' + } - to_test.each do |string, expected| - assert_equal expected, Redmine::Scm::Adapters::CvsAdapter.new('foo', string).send(:root_url_path), "#{string} failed" - end + to_test.each do |string, expected| + assert_equal expected, Redmine::Scm::Adapters::CvsAdapter.new('foo', string).send(:root_url_path), "#{string} failed" end + end - private + private - def test_scm_version_for(scm_command_version, version) - @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version) - assert_equal version, @adapter.class.scm_command_version - end - else - puts "Cvs test repository NOT FOUND. Skipping unit tests !!!" - def test_fake; assert true end + def test_scm_version_for(scm_command_version, version) + @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version) + assert_equal version, @adapter.class.scm_command_version end - end - -rescue LoadError - class CvsMochaFake < ActiveSupport::TestCase - def test_fake; assert(false, "Requires mocha to run those tests") end + else + puts "Cvs test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end end end - diff --git a/test/unit/lib/redmine/scm/adapters/darcs_adapter_test.rb b/test/unit/lib/redmine/scm/adapters/darcs_adapter_test.rb index b6f877521..e28c84946 100644 --- a/test/unit/lib/redmine/scm/adapters/darcs_adapter_test.rb +++ b/test/unit/lib/redmine/scm/adapters/darcs_adapter_test.rb @@ -16,54 +16,45 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require File.expand_path('../../../../../../test_helper', __FILE__) -begin - require 'mocha/setup' - class DarcsAdapterTest < ActiveSupport::TestCase - REPOSITORY_PATH = Rails.root.join('tmp/test/darcs_repository').to_s +class DarcsAdapterTest < ActiveSupport::TestCase + REPOSITORY_PATH = Rails.root.join('tmp/test/darcs_repository').to_s - if File.directory?(REPOSITORY_PATH) - def setup - @adapter = Redmine::Scm::Adapters::DarcsAdapter.new(REPOSITORY_PATH) - end - - def test_darcsversion - to_test = { "1.0.9 (release)\n" => [1,0,9] , - "2.2.0 (release)\n" => [2,2,0] } - to_test.each do |s, v| - test_darcsversion_for(s, v) - end - end + if File.directory?(REPOSITORY_PATH) + def setup + @adapter = Redmine::Scm::Adapters::DarcsAdapter.new(REPOSITORY_PATH) + end - def test_revisions - id1 = '20080308225258-98289-761f654d669045eabee90b91b53a21ce5593cadf.gz' - revs = @adapter.revisions('', nil, nil, {:with_path => true}) - assert_equal 6, revs.size - assert_equal id1, revs[5].scmid - paths = revs[5].paths - assert_equal 5, paths.size - assert_equal 'A', paths[0][:action] - assert_equal '/README', paths[0][:path] - assert_equal 'A', paths[1][:action] - assert_equal '/images', paths[1][:path] + def test_darcsversion + to_test = { "1.0.9 (release)\n" => [1,0,9] , + "2.2.0 (release)\n" => [2,2,0] } + to_test.each do |s, v| + test_darcsversion_for(s, v) end + end - private + def test_revisions + id1 = '20080308225258-98289-761f654d669045eabee90b91b53a21ce5593cadf.gz' + revs = @adapter.revisions('', nil, nil, {:with_path => true}) + assert_equal 6, revs.size + assert_equal id1, revs[5].scmid + paths = revs[5].paths + assert_equal 5, paths.size + assert_equal 'A', paths[0][:action] + assert_equal '/README', paths[0][:path] + assert_equal 'A', paths[1][:action] + assert_equal '/images', paths[1][:path] + end - def test_darcsversion_for(darcsversion, version) - @adapter.class.expects(:darcs_binary_version_from_command_line).returns(darcsversion) - assert_equal version, @adapter.class.darcs_binary_version - end + private - else - puts "Darcs test repository NOT FOUND. Skipping unit tests !!!" - def test_fake; assert true end + def test_darcsversion_for(darcsversion, version) + @adapter.class.expects(:darcs_binary_version_from_command_line).returns(darcsversion) + assert_equal version, @adapter.class.darcs_binary_version end - end -rescue LoadError - class DarcsMochaFake < ActiveSupport::TestCase - def test_fake; assert(false, "Requires mocha to run those tests") end + else + puts "Darcs test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end end end - diff --git a/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb b/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb index a140d25dc..7342b2244 100644 --- a/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb +++ b/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb @@ -16,594 +16,582 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require File.expand_path('../../../../../../test_helper', __FILE__) -begin - require 'mocha/setup' - - class GitAdapterTest < ActiveSupport::TestCase - REPOSITORY_PATH = Rails.root.join('tmp/test/git_repository').to_s - - FELIX_HEX = "Felix Sch\xC3\xA4fer" - CHAR_1_HEX = "\xc3\x9c" - - ## Git, Mercurial and CVS path encodings are binary. - ## Subversion supports URL encoding for path. - ## Redmine Mercurial adapter and extension use URL encoding. - ## Git accepts only binary path in command line parameter. - ## So, there is no way to use binary command line parameter in JRuby. - JRUBY_SKIP = (RUBY_PLATFORM == 'java') - JRUBY_SKIP_STR = "TODO: This test fails in JRuby" - - if File.directory?(REPOSITORY_PATH) - ## Ruby uses ANSI api to fork a process on Windows. - ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem - ## and these are incompatible with ASCII. - ## Git for Windows (msysGit) changed internal API from ANSI to Unicode in 1.7.10 - ## http://code.google.com/p/msysgit/issues/detail?id=80 - ## So, Latin-1 path tests fail on Japanese Windows - WINDOWS_PASS = (Redmine::Platform.mswin? && - Redmine::Scm::Adapters::GitAdapter.client_version_above?([1, 7, 10])) - WINDOWS_SKIP_STR = "TODO: This test fails in Git for Windows above 1.7.10" - - def setup - adapter_class = Redmine::Scm::Adapters::GitAdapter - assert adapter_class - assert adapter_class.client_command - assert_equal true, adapter_class.client_available - assert_equal true, adapter_class.client_version_above?([1]) - assert_equal true, adapter_class.client_version_above?([1, 0]) - - @adapter = Redmine::Scm::Adapters::GitAdapter.new( - REPOSITORY_PATH, - nil, - nil, - nil, - 'ISO-8859-1' - ) - assert @adapter - @char_1 = CHAR_1_HEX.dup - @str_felix_hex = FELIX_HEX.dup - if @char_1.respond_to?(:force_encoding) - @char_1.force_encoding('UTF-8') - @str_felix_hex.force_encoding('ASCII-8BIT') - end - end - def test_scm_version - to_test = { "git version 1.7.3.4\n" => [1,7,3,4], - "1.6.1\n1.7\n1.8" => [1,6,1], - "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]} - to_test.each do |s, v| - test_scm_version_for(s, v) - end - end +class GitAdapterTest < ActiveSupport::TestCase + REPOSITORY_PATH = Rails.root.join('tmp/test/git_repository').to_s + + FELIX_HEX = "Felix Sch\xC3\xA4fer" + CHAR_1_HEX = "\xc3\x9c" + + ## Git, Mercurial and CVS path encodings are binary. + ## Subversion supports URL encoding for path. + ## Redmine Mercurial adapter and extension use URL encoding. + ## Git accepts only binary path in command line parameter. + ## So, there is no way to use binary command line parameter in JRuby. + JRUBY_SKIP = (RUBY_PLATFORM == 'java') + JRUBY_SKIP_STR = "TODO: This test fails in JRuby" + + if File.directory?(REPOSITORY_PATH) + ## Ruby uses ANSI api to fork a process on Windows. + ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem + ## and these are incompatible with ASCII. + ## Git for Windows (msysGit) changed internal API from ANSI to Unicode in 1.7.10 + ## http://code.google.com/p/msysgit/issues/detail?id=80 + ## So, Latin-1 path tests fail on Japanese Windows + WINDOWS_PASS = (Redmine::Platform.mswin? && + Redmine::Scm::Adapters::GitAdapter.client_version_above?([1, 7, 10])) + WINDOWS_SKIP_STR = "TODO: This test fails in Git for Windows above 1.7.10" + + def setup + adapter_class = Redmine::Scm::Adapters::GitAdapter + assert adapter_class + assert adapter_class.client_command + assert_equal true, adapter_class.client_available + assert_equal true, adapter_class.client_version_above?([1]) + assert_equal true, adapter_class.client_version_above?([1, 0]) + + @adapter = Redmine::Scm::Adapters::GitAdapter.new( + REPOSITORY_PATH, + nil, + nil, + nil, + 'ISO-8859-1' + ) + assert @adapter + @char_1 = CHAR_1_HEX.dup.force_encoding('UTF-8') + @str_felix_hex = FELIX_HEX.dup.force_encoding('ASCII-8BIT') + end - def test_branches - brs = [] - @adapter.branches.each do |b| - brs << b - end - assert_equal 6, brs.length - br_issue_8857 = brs[0] - assert_equal 'issue-8857', br_issue_8857.to_s - assert_equal '2a682156a3b6e77a8bf9cd4590e8db757f3c6c78', br_issue_8857.revision - assert_equal br_issue_8857.scmid, br_issue_8857.revision - assert_equal false, br_issue_8857.is_default - br_latin_1_path = brs[1] - assert_equal 'latin-1-path-encoding', br_latin_1_path.to_s - assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', br_latin_1_path.revision - assert_equal br_latin_1_path.scmid, br_latin_1_path.revision - assert_equal false, br_latin_1_path.is_default - br_master = brs[2] - assert_equal 'master', br_master.to_s - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', br_master.revision - assert_equal br_master.scmid, br_master.revision - assert_equal false, br_master.is_default - br_master_20120212 = brs[3] - assert_equal 'master-20120212', br_master_20120212.to_s - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', br_master_20120212.revision - assert_equal br_master_20120212.scmid, br_master_20120212.revision - assert_equal true, br_master_20120212.is_default - br_latin_1 = brs[-2] - assert_equal 'test-latin-1', br_latin_1.to_s - assert_equal '67e7792ce20ccae2e4bb73eed09bb397819c8834', br_latin_1.revision - assert_equal br_latin_1.scmid, br_latin_1.revision - assert_equal false, br_latin_1.is_default - br_test = brs[-1] - assert_equal 'test_branch', br_test.to_s - assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', br_test.revision - assert_equal br_test.scmid, br_test.revision - assert_equal false, br_test.is_default + def test_scm_version + to_test = { "git version 1.7.3.4\n" => [1,7,3,4], + "1.6.1\n1.7\n1.8" => [1,6,1], + "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]} + to_test.each do |s, v| + test_scm_version_for(s, v) end + end - def test_default_branch - assert_equal 'master-20120212', @adapter.default_branch - end + def test_branches + brs = [] + @adapter.branches.each do |b| + brs << b + end + assert_equal 6, brs.length + br_issue_8857 = brs[0] + assert_equal 'issue-8857', br_issue_8857.to_s + assert_equal '2a682156a3b6e77a8bf9cd4590e8db757f3c6c78', br_issue_8857.revision + assert_equal br_issue_8857.scmid, br_issue_8857.revision + assert_equal false, br_issue_8857.is_default + br_latin_1_path = brs[1] + assert_equal 'latin-1-path-encoding', br_latin_1_path.to_s + assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', br_latin_1_path.revision + assert_equal br_latin_1_path.scmid, br_latin_1_path.revision + assert_equal false, br_latin_1_path.is_default + br_master = brs[2] + assert_equal 'master', br_master.to_s + assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', br_master.revision + assert_equal br_master.scmid, br_master.revision + assert_equal false, br_master.is_default + br_master_20120212 = brs[3] + assert_equal 'master-20120212', br_master_20120212.to_s + assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', br_master_20120212.revision + assert_equal br_master_20120212.scmid, br_master_20120212.revision + assert_equal true, br_master_20120212.is_default + br_latin_1 = brs[-2] + assert_equal 'test-latin-1', br_latin_1.to_s + assert_equal '67e7792ce20ccae2e4bb73eed09bb397819c8834', br_latin_1.revision + assert_equal br_latin_1.scmid, br_latin_1.revision + assert_equal false, br_latin_1.is_default + br_test = brs[-1] + assert_equal 'test_branch', br_test.to_s + assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', br_test.revision + assert_equal br_test.scmid, br_test.revision + assert_equal false, br_test.is_default + end - def test_tags - assert_equal [ - "tag00.lightweight", - "tag01.annotated", - ], @adapter.tags - end + def test_default_branch + assert_equal 'master-20120212', @adapter.default_branch + end - def test_revisions_master_all - revs1 = [] - @adapter.revisions('', nil, "master",{}) do |rev| - revs1 << rev - end - assert_equal 15, revs1.length - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 0].identifier - assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier - - revs2 = [] - @adapter.revisions('', nil, "master", - {:reverse => true}) do |rev| - revs2 << rev - end - assert_equal 15, revs2.length - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier - assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier - end + def test_tags + assert_equal [ + "tag00.lightweight", + "tag01.annotated", + ], @adapter.tags + end - def test_revisions_master_merged_rev - revs1 = [] - @adapter.revisions('', - "713f4944648826f558cf548222f813dabe7cbb04", - "master", - {:reverse => true}) do |rev| - revs1 << rev - end - assert_equal 8, revs1.length - assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', revs1[ 0].identifier - assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 1].identifier - # 4a07fe31b is not a child of 713f49446 - assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 2].identifier - # Merged revision - assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 3].identifier - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier - - revs2 = [] - @adapter.revisions('', - "fba357b886984ee71185ad2065e65fc0417d9b92", - "master", - {:reverse => true}) do |rev| - revs2 << rev - end - assert_equal 7, revs2.length - assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs2[ 0].identifier - # 4a07fe31b is not a child of fba357b8869 - assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs2[ 1].identifier - # Merged revision - assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs2[ 2].identifier - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier + def test_revisions_master_all + revs1 = [] + @adapter.revisions('', nil, "master",{}) do |rev| + revs1 << rev end + assert_equal 15, revs1.length + assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 0].identifier + assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier - def test_revisions_branch_latin_1_path_encoding_all - revs1 = [] - @adapter.revisions('', nil, "latin-1-path-encoding",{}) do |rev| - revs1 << rev - end - assert_equal 8, revs1.length - assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[ 0].identifier - assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier - - revs2 = [] - @adapter.revisions('', nil, "latin-1-path-encoding", - {:reverse => true}) do |rev| - revs2 << rev - end - assert_equal 8, revs2.length - assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier - assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier + revs2 = [] + @adapter.revisions('', nil, "master", + {:reverse => true}) do |rev| + revs2 << rev end + assert_equal 15, revs2.length + assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier + assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier + end - def test_revisions_branch_latin_1_path_encoding_with_rev - revs1 = [] - @adapter.revisions('', - '7234cb2750b63f47bff735edc50a1c0a433c2518', - "latin-1-path-encoding", - {:reverse => true}) do |rev| - revs1 << rev - end - assert_equal 7, revs1.length - assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 0].identifier - assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier + def test_revisions_master_merged_rev + revs1 = [] + @adapter.revisions('', + "713f4944648826f558cf548222f813dabe7cbb04", + "master", + {:reverse => true}) do |rev| + revs1 << rev + end + assert_equal 8, revs1.length + assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', revs1[ 0].identifier + assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 1].identifier + # 4a07fe31b is not a child of 713f49446 + assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 2].identifier + # Merged revision + assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 3].identifier + assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier + + revs2 = [] + @adapter.revisions('', + "fba357b886984ee71185ad2065e65fc0417d9b92", + "master", + {:reverse => true}) do |rev| + revs2 << rev + end + assert_equal 7, revs2.length + assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs2[ 0].identifier + # 4a07fe31b is not a child of fba357b8869 + assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs2[ 1].identifier + # Merged revision + assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs2[ 2].identifier + assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier + end - revs2 = [] - @adapter.revisions('', - '57ca437c0acbbcb749821fdf3726a1367056d364', - "latin-1-path-encoding", - {:reverse => true}) do |rev| - revs2 << rev - end - assert_equal 3, revs2.length - assert_equal '4fc55c43bf3d3dc2efb66145365ddc17639ce81e', revs2[ 0].identifier - assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier + def test_revisions_branch_latin_1_path_encoding_all + revs1 = [] + @adapter.revisions('', nil, "latin-1-path-encoding",{}) do |rev| + revs1 << rev end + assert_equal 8, revs1.length + assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[ 0].identifier + assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier - def test_revisions_invalid_rev - assert_equal [], @adapter.revisions('', '1234abcd', "master") - assert_raise Redmine::Scm::Adapters::CommandFailed do - revs1 = [] - @adapter.revisions('', - '1234abcd', - "master", - {:reverse => true}) do |rev| - revs1 << rev - end - end + revs2 = [] + @adapter.revisions('', nil, "latin-1-path-encoding", + {:reverse => true}) do |rev| + revs2 << rev end + assert_equal 8, revs2.length + assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier + assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier + end - def test_revisions_includes_master_two_revs - revs1 = [] - @adapter.revisions('', nil, nil, - {:reverse => true, - :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'], - :excludes => ['4f26664364207fa8b1af9f8722647ab2d4ac5d43']}) do |rev| - revs1 << rev - end - assert_equal 2, revs1.length - assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier - end + def test_revisions_branch_latin_1_path_encoding_with_rev + revs1 = [] + @adapter.revisions('', + '7234cb2750b63f47bff735edc50a1c0a433c2518', + "latin-1-path-encoding", + {:reverse => true}) do |rev| + revs1 << rev + end + assert_equal 7, revs1.length + assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 0].identifier + assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier + + revs2 = [] + @adapter.revisions('', + '57ca437c0acbbcb749821fdf3726a1367056d364', + "latin-1-path-encoding", + {:reverse => true}) do |rev| + revs2 << rev + end + assert_equal 3, revs2.length + assert_equal '4fc55c43bf3d3dc2efb66145365ddc17639ce81e', revs2[ 0].identifier + assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier + end - def test_revisions_includes_master_two_revs_from_origin + def test_revisions_invalid_rev + assert_equal [], @adapter.revisions('', '1234abcd', "master") + assert_raise Redmine::Scm::Adapters::CommandFailed do revs1 = [] - @adapter.revisions('', nil, nil, - {:reverse => true, - :includes => ['899a15dba03a3b350b89c3f537e4bbe02a03cdc9'], - :excludes => []}) do |rev| + @adapter.revisions('', + '1234abcd', + "master", + {:reverse => true}) do |rev| revs1 << rev end - assert_equal 2, revs1.length - assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[ 0].identifier - assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 1].identifier end + end - def test_revisions_includes_merged_revs - revs1 = [] - @adapter.revisions('', nil, nil, - {:reverse => true, - :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'], - :excludes => ['fba357b886984ee71185ad2065e65fc0417d9b92']}) do |rev| - revs1 << rev - end - assert_equal 7, revs1.length - assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 0].identifier - assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 1].identifier - assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 2].identifier - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier - end + def test_revisions_includes_master_two_revs + revs1 = [] + @adapter.revisions('', nil, nil, + {:reverse => true, + :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'], + :excludes => ['4f26664364207fa8b1af9f8722647ab2d4ac5d43']}) do |rev| + revs1 << rev + end + assert_equal 2, revs1.length + assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier + assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier + end - def test_revisions_includes_two_heads - revs1 = [] - @adapter.revisions('', nil, nil, - {:reverse => true, - :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', - '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127'], - :excludes => ['4f26664364207fa8b1af9f8722647ab2d4ac5d43', - '4fc55c43bf3d3dc2efb66145365ddc17639ce81e']}) do |rev| - revs1 << rev - end - assert_equal 4, revs1.length - assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 1].identifier - assert_equal '64f1f3e89ad1cb57976ff0ad99a107012ba3481d', revs1[-2].identifier - assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier - end + def test_revisions_includes_master_two_revs_from_origin + revs1 = [] + @adapter.revisions('', nil, nil, + {:reverse => true, + :includes => ['899a15dba03a3b350b89c3f537e4bbe02a03cdc9'], + :excludes => []}) do |rev| + revs1 << rev + end + assert_equal 2, revs1.length + assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[ 0].identifier + assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 1].identifier + end - def test_revisions_disjointed_histories_revisions + def test_revisions_includes_merged_revs + revs1 = [] + @adapter.revisions('', nil, nil, + {:reverse => true, + :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'], + :excludes => ['fba357b886984ee71185ad2065e65fc0417d9b92']}) do |rev| + revs1 << rev + end + assert_equal 7, revs1.length + assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 0].identifier + assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 1].identifier + assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 2].identifier + assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier + end + + def test_revisions_includes_two_heads + revs1 = [] + @adapter.revisions('', nil, nil, + {:reverse => true, + :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', + '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127'], + :excludes => ['4f26664364207fa8b1af9f8722647ab2d4ac5d43', + '4fc55c43bf3d3dc2efb66145365ddc17639ce81e']}) do |rev| + revs1 << rev + end + assert_equal 4, revs1.length + assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier + assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 1].identifier + assert_equal '64f1f3e89ad1cb57976ff0ad99a107012ba3481d', revs1[-2].identifier + assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier + end + + def test_revisions_disjointed_histories_revisions + revs1 = [] + @adapter.revisions('', nil, nil, + {:reverse => true, + :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', + '92397af84d22f27389c822848ecd5b463c181583'], + :excludes => ['95488a44bc25f7d1f97d775a31359539ff333a63', + '4f26664364207fa8b1af9f8722647ab2d4ac5d43'] }) do |rev| + revs1 << rev + end + assert_equal 4, revs1.length + assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier + assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 1].identifier + assert_equal 'bc201c95999c4f10d018b0aa03b541cd6a2ff0ee', revs1[-2].identifier + assert_equal '92397af84d22f27389c822848ecd5b463c181583', revs1[-1].identifier + end + + def test_revisions_invalid_rev_excludes + assert_equal [], + @adapter.revisions('', nil, nil, + {:reverse => true, + :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'], + :excludes => ['0123abcd4567']}) + assert_raise Redmine::Scm::Adapters::CommandFailed do revs1 = [] @adapter.revisions('', nil, nil, {:reverse => true, - :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', - '92397af84d22f27389c822848ecd5b463c181583'], - :excludes => ['95488a44bc25f7d1f97d775a31359539ff333a63', - '4f26664364207fa8b1af9f8722647ab2d4ac5d43'] }) do |rev| + :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'], + :excludes => ['0123abcd4567']}) do |rev| revs1 << rev end - assert_equal 4, revs1.length - assert_equal 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b', revs1[ 0].identifier - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 1].identifier - assert_equal 'bc201c95999c4f10d018b0aa03b541cd6a2ff0ee', revs1[-2].identifier - assert_equal '92397af84d22f27389c822848ecd5b463c181583', revs1[-1].identifier - end - - def test_revisions_invalid_rev_excludes - assert_equal [], - @adapter.revisions('', nil, nil, - {:reverse => true, - :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'], - :excludes => ['0123abcd4567']}) - assert_raise Redmine::Scm::Adapters::CommandFailed do - revs1 = [] - @adapter.revisions('', nil, nil, - {:reverse => true, - :includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'], - :excludes => ['0123abcd4567']}) do |rev| - revs1 << rev - end - end end + end - def test_getting_revisions_with_spaces_in_filename - assert_equal 1, @adapter.revisions("filemane with spaces.txt", - nil, "master").length - end + def test_getting_revisions_with_spaces_in_filename + assert_equal 1, @adapter.revisions("filemane with spaces.txt", + nil, "master").length + end - def test_parents - revs1 = [] - @adapter.revisions('', - nil, - "master", - {:reverse => true}) do |rev| - revs1 << rev - end - assert_equal 15, revs1.length - assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", - revs1[0].identifier - assert_equal nil, revs1[0].parents - assert_equal "899a15dba03a3b350b89c3f537e4bbe02a03cdc9", - revs1[1].identifier - assert_equal 1, revs1[1].parents.length - assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", - revs1[1].parents[0] - assert_equal "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf", - revs1[10].identifier - assert_equal 2, revs1[10].parents.length - assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", - revs1[10].parents[0] - assert_equal "7e61ac704deecde634b51e59daa8110435dcb3da", - revs1[10].parents[1] - end + def test_parents + revs1 = [] + @adapter.revisions('', + nil, + "master", + {:reverse => true}) do |rev| + revs1 << rev + end + assert_equal 15, revs1.length + assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", + revs1[0].identifier + assert_equal nil, revs1[0].parents + assert_equal "899a15dba03a3b350b89c3f537e4bbe02a03cdc9", + revs1[1].identifier + assert_equal 1, revs1[1].parents.length + assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", + revs1[1].parents[0] + assert_equal "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf", + revs1[10].identifier + assert_equal 2, revs1[10].parents.length + assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", + revs1[10].parents[0] + assert_equal "7e61ac704deecde634b51e59daa8110435dcb3da", + revs1[10].parents[1] + end - def test_getting_revisions_with_leading_and_trailing_spaces_in_filename - assert_equal " filename with a leading space.txt ", - @adapter.revisions(" filename with a leading space.txt ", - nil, "master")[0].paths[0][:path] - end + def test_getting_revisions_with_leading_and_trailing_spaces_in_filename + assert_equal " filename with a leading space.txt ", + @adapter.revisions(" filename with a leading space.txt ", + nil, "master")[0].paths[0][:path] + end - def test_getting_entries_with_leading_and_trailing_spaces_in_filename - assert_equal " filename with a leading space.txt ", - @adapter.entries('', - '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name - end + def test_getting_entries_with_leading_and_trailing_spaces_in_filename + assert_equal " filename with a leading space.txt ", + @adapter.entries('', + '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name + end - def test_annotate - annotate = @adapter.annotate('sources/watchers_controller.rb') - assert_kind_of Redmine::Scm::Adapters::Annotate, annotate - assert_equal 41, annotate.lines.size - assert_equal "# This program is free software; you can redistribute it and/or", - annotate.lines[4].strip - assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", - annotate.revisions[4].identifier - assert_equal "jsmith", annotate.revisions[4].author - end + def test_annotate + annotate = @adapter.annotate('sources/watchers_controller.rb') + assert_kind_of Redmine::Scm::Adapters::Annotate, annotate + assert_equal 41, annotate.lines.size + assert_equal "# This program is free software; you can redistribute it and/or", + annotate.lines[4].strip + assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", + annotate.revisions[4].identifier + assert_equal "jsmith", annotate.revisions[4].author + end - def test_annotate_moved_file - annotate = @adapter.annotate('renamed_test.txt') - assert_kind_of Redmine::Scm::Adapters::Annotate, annotate - assert_equal 2, annotate.lines.size - end + def test_annotate_moved_file + annotate = @adapter.annotate('renamed_test.txt') + assert_kind_of Redmine::Scm::Adapters::Annotate, annotate + assert_equal 2, annotate.lines.size + end - def test_last_rev - last_rev = @adapter.lastrev("README", - "4f26664364207fa8b1af9f8722647ab2d4ac5d43") - assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid - assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier - assert_equal "Adam Soltys <asoltys@gmail.com>", last_rev.author - assert_equal Time.gm(2009, 6, 24, 5, 27, 38), last_rev.time - end + def test_last_rev + last_rev = @adapter.lastrev("README", + "4f26664364207fa8b1af9f8722647ab2d4ac5d43") + assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid + assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier + assert_equal "Adam Soltys <asoltys@gmail.com>", last_rev.author + assert_equal Time.gm(2009, 6, 24, 5, 27, 38), last_rev.time + end - def test_last_rev_with_spaces_in_filename - last_rev = @adapter.lastrev("filemane with spaces.txt", - "ed5bb786bbda2dee66a2d50faf51429dbc043a7b") - last_rev_author = last_rev.author - assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid - assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier - assert_equal "#{@str_felix_hex} <felix@fachschaften.org>", - last_rev.author - assert_equal Time.gm(2010, 9, 18, 19, 59, 46), last_rev.time - end + def test_last_rev_with_spaces_in_filename + last_rev = @adapter.lastrev("filemane with spaces.txt", + "ed5bb786bbda2dee66a2d50faf51429dbc043a7b") + last_rev_author = last_rev.author + assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid + assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier + assert_equal "#{@str_felix_hex} <felix@fachschaften.org>", + last_rev.author + assert_equal Time.gm(2010, 9, 18, 19, 59, 46), last_rev.time + end - def test_latin_1_path - if WINDOWS_PASS - puts WINDOWS_SKIP_STR - elsif JRUBY_SKIP - puts JRUBY_SKIP_STR - else - p2 = "latin-1-dir/test-#{@char_1}-2.txt" - ['4fc55c43bf3d3dc2efb66145365ddc17639ce81e', '4fc55c43bf3'].each do |r1| - assert @adapter.diff(p2, r1) - assert @adapter.cat(p2, r1) - assert_equal 1, @adapter.annotate(p2, r1).lines.length - ['64f1f3e89ad1cb57976ff0ad99a107012ba3481d', '64f1f3e89ad1cb5797'].each do |r2| - assert @adapter.diff(p2, r1, r2) - end + def test_latin_1_path + if WINDOWS_PASS + puts WINDOWS_SKIP_STR + elsif JRUBY_SKIP + puts JRUBY_SKIP_STR + else + p2 = "latin-1-dir/test-#{@char_1}-2.txt" + ['4fc55c43bf3d3dc2efb66145365ddc17639ce81e', '4fc55c43bf3'].each do |r1| + assert @adapter.diff(p2, r1) + assert @adapter.cat(p2, r1) + assert_equal 1, @adapter.annotate(p2, r1).lines.length + ['64f1f3e89ad1cb57976ff0ad99a107012ba3481d', '64f1f3e89ad1cb5797'].each do |r2| + assert @adapter.diff(p2, r1, r2) end end end + end - def test_latin_1_user_annotate - ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', '83ca5fd546063a'].each do |r1| - annotate = @adapter.annotate(" filename with a leading space.txt ", r1) - assert_kind_of Redmine::Scm::Adapters::Annotate, annotate - assert_equal 1, annotate.lines.size - assert_equal "And this is a file with a leading and trailing space...", - annotate.lines[0].strip - assert_equal "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c", - annotate.revisions[0].identifier - assert_equal @str_felix_hex, annotate.revisions[0].author - end + def test_latin_1_user_annotate + ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', '83ca5fd546063a'].each do |r1| + annotate = @adapter.annotate(" filename with a leading space.txt ", r1) + assert_kind_of Redmine::Scm::Adapters::Annotate, annotate + assert_equal 1, annotate.lines.size + assert_equal "And this is a file with a leading and trailing space...", + annotate.lines[0].strip + assert_equal "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c", + annotate.revisions[0].identifier + assert_equal @str_felix_hex, annotate.revisions[0].author end + end - def test_entries_tag - entries1 = @adapter.entries(nil, 'tag01.annotated', - options = {:report_last_commit => true}) - assert entries1 - assert_equal 3, entries1.size - assert_equal 'sources', entries1[1].name - assert_equal 'sources', entries1[1].path - assert_equal 'dir', entries1[1].kind - readme = entries1[2] - assert_equal 'README', readme.name - assert_equal 'README', readme.path - assert_equal 'file', readme.kind - assert_equal 27, readme.size - assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', readme.lastrev.identifier - assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time - end + def test_entries_tag + entries1 = @adapter.entries(nil, 'tag01.annotated', + options = {:report_last_commit => true}) + assert entries1 + assert_equal 3, entries1.size + assert_equal 'sources', entries1[1].name + assert_equal 'sources', entries1[1].path + assert_equal 'dir', entries1[1].kind + readme = entries1[2] + assert_equal 'README', readme.name + assert_equal 'README', readme.path + assert_equal 'file', readme.kind + assert_equal 27, readme.size + assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', readme.lastrev.identifier + assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time + end - def test_entries_branch - entries1 = @adapter.entries(nil, 'test_branch', - options = {:report_last_commit => true}) - assert entries1 - assert_equal 4, entries1.size - assert_equal 'sources', entries1[1].name - assert_equal 'sources', entries1[1].path - assert_equal 'dir', entries1[1].kind - readme = entries1[2] - assert_equal 'README', readme.name - assert_equal 'README', readme.path - assert_equal 'file', readme.kind - assert_equal 159, readme.size - assert_equal '713f4944648826f558cf548222f813dabe7cbb04', readme.lastrev.identifier - assert_equal Time.gm(2009, 6, 19, 4, 37, 23), readme.lastrev.time - end + def test_entries_branch + entries1 = @adapter.entries(nil, 'test_branch', + options = {:report_last_commit => true}) + assert entries1 + assert_equal 4, entries1.size + assert_equal 'sources', entries1[1].name + assert_equal 'sources', entries1[1].path + assert_equal 'dir', entries1[1].kind + readme = entries1[2] + assert_equal 'README', readme.name + assert_equal 'README', readme.path + assert_equal 'file', readme.kind + assert_equal 159, readme.size + assert_equal '713f4944648826f558cf548222f813dabe7cbb04', readme.lastrev.identifier + assert_equal Time.gm(2009, 6, 19, 4, 37, 23), readme.lastrev.time + end - def test_entries_wrong_path_encoding - adpt = Redmine::Scm::Adapters::GitAdapter.new( - REPOSITORY_PATH, - nil, - nil, - nil, - 'EUC-JP' - ) - entries1 = adpt.entries('latin-1-dir', '64f1f3e8') - assert entries1 - assert_equal 3, entries1.size - f1 = entries1[1] - assert_equal nil, f1.name - assert_equal nil, f1.path - assert_equal 'file', f1.kind - end + def test_entries_wrong_path_encoding + adpt = Redmine::Scm::Adapters::GitAdapter.new( + REPOSITORY_PATH, + nil, + nil, + nil, + 'EUC-JP' + ) + entries1 = adpt.entries('latin-1-dir', '64f1f3e8') + assert entries1 + assert_equal 3, entries1.size + f1 = entries1[1] + assert_equal nil, f1.name + assert_equal nil, f1.path + assert_equal 'file', f1.kind + end + + def test_entries_latin_1_files + entries1 = @adapter.entries('latin-1-dir', '64f1f3e8') + assert entries1 + assert_equal 3, entries1.size + f1 = entries1[1] + assert_equal "test-#{@char_1}-2.txt", f1.name + assert_equal "latin-1-dir/test-#{@char_1}-2.txt", f1.path + assert_equal 'file', f1.kind + end - def test_entries_latin_1_files - entries1 = @adapter.entries('latin-1-dir', '64f1f3e8') + def test_entries_latin_1_dir + if WINDOWS_PASS + puts WINDOWS_SKIP_STR + elsif JRUBY_SKIP + puts JRUBY_SKIP_STR + else + entries1 = @adapter.entries("latin-1-dir/test-#{@char_1}-subdir", + '1ca7f5ed') assert entries1 assert_equal 3, entries1.size f1 = entries1[1] assert_equal "test-#{@char_1}-2.txt", f1.name - assert_equal "latin-1-dir/test-#{@char_1}-2.txt", f1.path + assert_equal "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-2.txt", f1.path assert_equal 'file', f1.kind end + end - def test_entries_latin_1_dir - if WINDOWS_PASS - puts WINDOWS_SKIP_STR - elsif JRUBY_SKIP - puts JRUBY_SKIP_STR - else - entries1 = @adapter.entries("latin-1-dir/test-#{@char_1}-subdir", - '1ca7f5ed') - assert entries1 - assert_equal 3, entries1.size - f1 = entries1[1] - assert_equal "test-#{@char_1}-2.txt", f1.name - assert_equal "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-2.txt", f1.path - assert_equal 'file', f1.kind - end - end - - def test_entry - entry = @adapter.entry() - assert_equal "", entry.path + def test_entry + entry = @adapter.entry() + assert_equal "", entry.path + assert_equal "dir", entry.kind + entry = @adapter.entry('') + assert_equal "", entry.path + assert_equal "dir", entry.kind + assert_nil @adapter.entry('invalid') + assert_nil @adapter.entry('/invalid') + assert_nil @adapter.entry('/invalid/') + assert_nil @adapter.entry('invalid/invalid') + assert_nil @adapter.entry('invalid/invalid/') + assert_nil @adapter.entry('/invalid/invalid') + assert_nil @adapter.entry('/invalid/invalid/') + ["README", "/README"].each do |path| + entry = @adapter.entry(path, '7234cb2750b63f') + assert_equal "README", entry.path + assert_equal "file", entry.kind + end + ["sources", "/sources", "/sources/"].each do |path| + entry = @adapter.entry(path, '7234cb2750b63f') + assert_equal "sources", entry.path assert_equal "dir", entry.kind - entry = @adapter.entry('') - assert_equal "", entry.path - assert_equal "dir", entry.kind - assert_nil @adapter.entry('invalid') - assert_nil @adapter.entry('/invalid') - assert_nil @adapter.entry('/invalid/') - assert_nil @adapter.entry('invalid/invalid') - assert_nil @adapter.entry('invalid/invalid/') - assert_nil @adapter.entry('/invalid/invalid') - assert_nil @adapter.entry('/invalid/invalid/') - ["README", "/README"].each do |path| - entry = @adapter.entry(path, '7234cb2750b63f') - assert_equal "README", entry.path - assert_equal "file", entry.kind - end - ["sources", "/sources", "/sources/"].each do |path| - entry = @adapter.entry(path, '7234cb2750b63f') - assert_equal "sources", entry.path - assert_equal "dir", entry.kind - end - ["sources/watchers_controller.rb", "/sources/watchers_controller.rb"].each do |path| - entry = @adapter.entry(path, '7234cb2750b63f') - assert_equal "sources/watchers_controller.rb", entry.path - assert_equal "file", entry.kind - end end - - def test_path_encoding_default_utf8 - adpt1 = Redmine::Scm::Adapters::GitAdapter.new( - REPOSITORY_PATH - ) - assert_equal "UTF-8", adpt1.path_encoding - adpt2 = Redmine::Scm::Adapters::GitAdapter.new( - REPOSITORY_PATH, - nil, - nil, - nil, - "" - ) - assert_equal "UTF-8", adpt2.path_encoding + ["sources/watchers_controller.rb", "/sources/watchers_controller.rb"].each do |path| + entry = @adapter.entry(path, '7234cb2750b63f') + assert_equal "sources/watchers_controller.rb", entry.path + assert_equal "file", entry.kind end + end - def test_cat_path_invalid - assert_nil @adapter.cat('invalid') - end + def test_path_encoding_default_utf8 + adpt1 = Redmine::Scm::Adapters::GitAdapter.new( + REPOSITORY_PATH + ) + assert_equal "UTF-8", adpt1.path_encoding + adpt2 = Redmine::Scm::Adapters::GitAdapter.new( + REPOSITORY_PATH, + nil, + nil, + nil, + "" + ) + assert_equal "UTF-8", adpt2.path_encoding + end - def test_cat_revision_invalid - assert @adapter.cat('README') - assert_nil @adapter.cat('README', '1234abcd5678') - end + def test_cat_path_invalid + assert_nil @adapter.cat('invalid') + end - def test_diff_path_invalid - assert_equal [], @adapter.diff('invalid', '713f4944648826f5') - end + def test_cat_revision_invalid + assert @adapter.cat('README') + assert_nil @adapter.cat('README', '1234abcd5678') + end - def test_diff_revision_invalid - assert_nil @adapter.diff(nil, '1234abcd5678') - assert_nil @adapter.diff(nil, '713f4944648826f5', '1234abcd5678') - assert_nil @adapter.diff(nil, '1234abcd5678', '713f4944648826f5') - end + def test_diff_path_invalid + assert_equal [], @adapter.diff('invalid', '713f4944648826f5') + end - def test_annotate_path_invalid - assert_nil @adapter.annotate('invalid') - end + def test_diff_revision_invalid + assert_nil @adapter.diff(nil, '1234abcd5678') + assert_nil @adapter.diff(nil, '713f4944648826f5', '1234abcd5678') + assert_nil @adapter.diff(nil, '1234abcd5678', '713f4944648826f5') + end - def test_annotate_revision_invalid - assert @adapter.annotate('README') - assert_nil @adapter.annotate('README', '1234abcd5678') - end + def test_annotate_path_invalid + assert_nil @adapter.annotate('invalid') + end - private + def test_annotate_revision_invalid + assert @adapter.annotate('README') + assert_nil @adapter.annotate('README', '1234abcd5678') + end - def test_scm_version_for(scm_command_version, version) - @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version) - assert_equal version, @adapter.class.scm_command_version - end + private - else - puts "Git test repository NOT FOUND. Skipping unit tests !!!" - def test_fake; assert true end + def test_scm_version_for(scm_command_version, version) + @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version) + assert_equal version, @adapter.class.scm_command_version end - end -rescue LoadError - class GitMochaFake < ActiveSupport::TestCase - def test_fake; assert(false, "Requires mocha to run those tests") end + else + puts "Git test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end end end diff --git a/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb b/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb index 7f062d1f1..ebbb75008 100644 --- a/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb +++ b/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb @@ -16,221 +16,184 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require File.expand_path('../../../../../../test_helper', __FILE__) -begin - require 'mocha/setup' - - class MercurialAdapterTest < ActiveSupport::TestCase - HELPERS_DIR = Redmine::Scm::Adapters::MercurialAdapter::HELPERS_DIR - TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME - TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION - - REPOSITORY_PATH = Rails.root.join('tmp/test/mercurial_repository').to_s - CHAR_1_HEX = "\xc3\x9c" - - if File.directory?(REPOSITORY_PATH) - def setup - adapter_class = Redmine::Scm::Adapters::MercurialAdapter - assert adapter_class - assert adapter_class.client_command - assert_equal true, adapter_class.client_available - assert_equal true, adapter_class.client_version_above?([0, 9, 5]) - - @adapter = Redmine::Scm::Adapters::MercurialAdapter.new( - REPOSITORY_PATH, - nil, - nil, - nil, - 'ISO-8859-1') - @diff_c_support = true - @char_1 = CHAR_1_HEX.dup - @tag_char_1 = "tag-#{CHAR_1_HEX}-00" - @branch_char_0 = "branch-#{CHAR_1_HEX}-00" - @branch_char_1 = "branch-#{CHAR_1_HEX}-01" - if @tag_char_1.respond_to?(:force_encoding) - @char_1.force_encoding('UTF-8') - @tag_char_1.force_encoding('UTF-8') - @branch_char_0.force_encoding('UTF-8') - @branch_char_1.force_encoding('UTF-8') - end - end - def test_hgversion - to_test = { "Mercurial Distributed SCM (version 0.9.5)\n" => [0,9,5], - "Mercurial Distributed SCM (1.0)\n" => [1,0], - "Mercurial Distributed SCM (1e4ddc9ac9f7+20080325)\n" => nil, - "Mercurial Distributed SCM (1.0.1+20080525)\n" => [1,0,1], - "Mercurial Distributed SCM (1916e629a29d)\n" => nil, - "Mercurial SCM Distribuito (versione 0.9.5)\n" => [0,9,5], - "(1.6)\n(1.7)\n(1.8)" => [1,6], - "(1.7.1)\r\n(1.8.1)\r\n(1.9.1)" => [1,7,1]} - - to_test.each do |s, v| - test_hgversion_for(s, v) - end - end +class MercurialAdapterTest < ActiveSupport::TestCase + HELPERS_DIR = Redmine::Scm::Adapters::MercurialAdapter::HELPERS_DIR + TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME + TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION + + REPOSITORY_PATH = repository_path('mercurial') + CHAR_1_HEX = "\xc3\x9c" + + if File.directory?(REPOSITORY_PATH) + def setup + adapter_class = Redmine::Scm::Adapters::MercurialAdapter + assert adapter_class + assert adapter_class.client_command + assert_equal true, adapter_class.client_available + assert_equal true, adapter_class.client_version_above?([0, 9, 5]) + + @adapter = Redmine::Scm::Adapters::MercurialAdapter.new( + REPOSITORY_PATH, + nil, + nil, + nil, + 'ISO-8859-1') + @diff_c_support = true + @char_1 = CHAR_1_HEX.dup.force_encoding('UTF-8') + @tag_char_1 = "tag-#{CHAR_1_HEX}-00".force_encoding('UTF-8') + @branch_char_0 = "branch-#{CHAR_1_HEX}-00".force_encoding('UTF-8') + @branch_char_1 = "branch-#{CHAR_1_HEX}-01".force_encoding('UTF-8') + end - def test_template_path - to_test = { - [1,2] => "1.0", - [] => "1.0", - [1,2,1] => "1.0", - [1,7] => "1.0", - [1,7,1] => "1.0", - [2,0] => "1.0", - } - to_test.each do |v, template| - test_template_path_for(v, template) - end + def test_hgversion + to_test = { "Mercurial Distributed SCM (version 0.9.5)\n" => [0,9,5], + "Mercurial Distributed SCM (1.0)\n" => [1,0], + "Mercurial Distributed SCM (1e4ddc9ac9f7+20080325)\n" => nil, + "Mercurial Distributed SCM (1.0.1+20080525)\n" => [1,0,1], + "Mercurial Distributed SCM (1916e629a29d)\n" => nil, + "Mercurial SCM Distribuito (versione 0.9.5)\n" => [0,9,5], + "(1.6)\n(1.7)\n(1.8)" => [1,6], + "(1.7.1)\r\n(1.8.1)\r\n(1.9.1)" => [1,7,1]} + + to_test.each do |s, v| + test_hgversion_for(s, v) end + end - def test_info - [REPOSITORY_PATH, REPOSITORY_PATH + "/", - REPOSITORY_PATH + "//"].each do |repo| - adp = Redmine::Scm::Adapters::MercurialAdapter.new(repo) - repo_path = adp.info.root_url.gsub(/\\/, "/") - assert_equal REPOSITORY_PATH, repo_path - assert_equal '33', adp.info.lastrev.revision - assert_equal '2e6d546429230f377d7d19c2078abd2dd909f235',adp.info.lastrev.scmid - end + def test_template_path + to_test = { + [1,2] => "1.0", + [] => "1.0", + [1,2,1] => "1.0", + [1,7] => "1.0", + [1,7,1] => "1.0", + [2,0] => "1.0", + } + to_test.each do |v, template| + test_template_path_for(v, template) end + end - def test_revisions - revisions = @adapter.revisions(nil, 2, 4) - assert_equal 3, revisions.size - assert_equal '2', revisions[0].revision - assert_equal '400bb86721098697c7d17b3724c794c57636de70', revisions[0].scmid - assert_equal '4', revisions[2].revision - assert_equal 'def6d2f1254a56fb8fbe9ec3b5c0451674dbd8b8', revisions[2].scmid - - revisions = @adapter.revisions(nil, 2, 4, {:limit => 2}) - assert_equal 2, revisions.size - assert_equal '2', revisions[0].revision - assert_equal '400bb86721098697c7d17b3724c794c57636de70', revisions[0].scmid + def test_info + [REPOSITORY_PATH, REPOSITORY_PATH + "/", + REPOSITORY_PATH + "//"].each do |repo| + adp = Redmine::Scm::Adapters::MercurialAdapter.new(repo) + repo_path = adp.info.root_url.gsub(/\\/, "/") + assert_equal REPOSITORY_PATH, repo_path + assert_equal '33', adp.info.lastrev.revision + assert_equal '2e6d546429230f377d7d19c2078abd2dd909f235',adp.info.lastrev.scmid end + end - def test_parents - revs1 = @adapter.revisions(nil, 0, 0) - assert_equal 1, revs1.size - assert_equal [], revs1[0].parents - revs2 = @adapter.revisions(nil, 1, 1) - assert_equal 1, revs2.size - assert_equal 1, revs2[0].parents.size - assert_equal "0885933ad4f68d77c2649cd11f8311276e7ef7ce", revs2[0].parents[0] - revs3 = @adapter.revisions(nil, 30, 30) - assert_equal 1, revs3.size - assert_equal 2, revs3[0].parents.size - assert_equal "a94b0528f24fe05ebaef496ae0500bb050772e36", revs3[0].parents[0] - assert_equal "3a330eb329586ea2adb3f83237c23310e744ebe9", revs3[0].parents[1] - end + def test_revisions + revisions = @adapter.revisions(nil, 2, 4) + assert_equal 3, revisions.size + assert_equal '2', revisions[0].revision + assert_equal '400bb86721098697c7d17b3724c794c57636de70', revisions[0].scmid + assert_equal '4', revisions[2].revision + assert_equal 'def6d2f1254a56fb8fbe9ec3b5c0451674dbd8b8', revisions[2].scmid + + revisions = @adapter.revisions(nil, 2, 4, {:limit => 2}) + assert_equal 2, revisions.size + assert_equal '2', revisions[0].revision + assert_equal '400bb86721098697c7d17b3724c794c57636de70', revisions[0].scmid + end - def test_diff - if @adapter.class.client_version_above?([1, 2]) - assert_nil @adapter.diff(nil, '100000') - end - assert_nil @adapter.diff(nil, '100000', '200000') - [2, '400bb8672109', '400', 400].each do |r1| - diff1 = @adapter.diff(nil, r1) - if @diff_c_support - assert_equal 28, diff1.size - buf = diff1[24].gsub(/\r\n|\r|\n/, "") - assert_equal "+ return true unless klass.respond_to?('watched_by')", buf - else - assert_equal 0, diff1.size - end - [4, 'def6d2f1254a'].each do |r2| - diff2 = @adapter.diff(nil, r1, r2) - assert_equal 49, diff2.size - buf = diff2[41].gsub(/\r\n|\r|\n/, "") - assert_equal "+class WelcomeController < ApplicationController", buf - diff3 = @adapter.diff('sources/watchers_controller.rb', r1, r2) - assert_equal 20, diff3.size - buf = diff3[12].gsub(/\r\n|\r|\n/, "") - assert_equal "+ @watched.remove_watcher(user)", buf - - diff4 = @adapter.diff(nil, r2, r1) - assert_equal 49, diff4.size - buf = diff4[41].gsub(/\r\n|\r|\n/, "") - assert_equal "-class WelcomeController < ApplicationController", buf - diff5 = @adapter.diff('sources/watchers_controller.rb', r2, r1) - assert_equal 20, diff5.size - buf = diff5[9].gsub(/\r\n|\r|\n/, "") - assert_equal "- @watched.remove_watcher(user)", buf - end - end - end + def test_parents + revs1 = @adapter.revisions(nil, 0, 0) + assert_equal 1, revs1.size + assert_equal [], revs1[0].parents + revs2 = @adapter.revisions(nil, 1, 1) + assert_equal 1, revs2.size + assert_equal 1, revs2[0].parents.size + assert_equal "0885933ad4f68d77c2649cd11f8311276e7ef7ce", revs2[0].parents[0] + revs3 = @adapter.revisions(nil, 30, 30) + assert_equal 1, revs3.size + assert_equal 2, revs3[0].parents.size + assert_equal "a94b0528f24fe05ebaef496ae0500bb050772e36", revs3[0].parents[0] + assert_equal "3a330eb329586ea2adb3f83237c23310e744ebe9", revs3[0].parents[1] + end - def test_diff_made_by_revision + def test_diff + if @adapter.class.client_version_above?([1, 2]) + assert_nil @adapter.diff(nil, '100000') + end + assert_nil @adapter.diff(nil, '100000', '200000') + [2, '400bb8672109', '400', 400].each do |r1| + diff1 = @adapter.diff(nil, r1) if @diff_c_support - [24, '24', '4cddb4e45f52'].each do |r1| - diff1 = @adapter.diff(nil, r1) - assert_equal 5, diff1.size - buf = diff1[4].gsub(/\r\n|\r|\n/, "") - assert_equal '+0885933ad4f68d77c2649cd11f8311276e7ef7ce tag-init-revision', buf - end + assert_equal 28, diff1.size + buf = diff1[24].gsub(/\r\n|\r|\n/, "") + assert_equal "+ return true unless klass.respond_to?('watched_by')", buf + else + assert_equal 0, diff1.size + end + [4, 'def6d2f1254a'].each do |r2| + diff2 = @adapter.diff(nil, r1, r2) + assert_equal 49, diff2.size + buf = diff2[41].gsub(/\r\n|\r|\n/, "") + assert_equal "+class WelcomeController < ApplicationController", buf + diff3 = @adapter.diff('sources/watchers_controller.rb', r1, r2) + assert_equal 20, diff3.size + buf = diff3[12].gsub(/\r\n|\r|\n/, "") + assert_equal "+ @watched.remove_watcher(user)", buf + + diff4 = @adapter.diff(nil, r2, r1) + assert_equal 49, diff4.size + buf = diff4[41].gsub(/\r\n|\r|\n/, "") + assert_equal "-class WelcomeController < ApplicationController", buf + diff5 = @adapter.diff('sources/watchers_controller.rb', r2, r1) + assert_equal 20, diff5.size + buf = diff5[9].gsub(/\r\n|\r|\n/, "") + assert_equal "- @watched.remove_watcher(user)", buf end end + end - def test_cat - [2, '400bb8672109', '400', 400].each do |r| - buf = @adapter.cat('sources/welcome_controller.rb', r) - assert buf - lines = buf.split("\r\n") - assert_equal 25, lines.length - assert_equal 'class WelcomeController < ApplicationController', lines[17] + def test_diff_made_by_revision + if @diff_c_support + [24, '24', '4cddb4e45f52'].each do |r1| + diff1 = @adapter.diff(nil, r1) + assert_equal 5, diff1.size + buf = diff1[4].gsub(/\r\n|\r|\n/, "") + assert_equal '+0885933ad4f68d77c2649cd11f8311276e7ef7ce tag-init-revision', buf end - assert_nil @adapter.cat('sources/welcome_controller.rb') end + end - def test_annotate - assert_equal [], @adapter.annotate("sources/welcome_controller.rb").lines - [2, '400bb8672109', '400', 400].each do |r| - ann = @adapter.annotate('sources/welcome_controller.rb', r) - assert ann - assert_equal '1', ann.revisions[17].revision - assert_equal '9d5b5b004199', ann.revisions[17].identifier - assert_equal 'jsmith', ann.revisions[0].author - assert_equal 25, ann.lines.length - assert_equal 'class WelcomeController < ApplicationController', ann.lines[17] - end + def test_cat + [2, '400bb8672109', '400', 400].each do |r| + buf = @adapter.cat('sources/welcome_controller.rb', r) + assert buf + lines = buf.split("\r\n") + assert_equal 25, lines.length + assert_equal 'class WelcomeController < ApplicationController', lines[17] end + assert_nil @adapter.cat('sources/welcome_controller.rb') + end - def test_entries - assert_nil @adapter.entries(nil, '100000') - - assert_equal 1, @adapter.entries("sources", 3).size - assert_equal 1, @adapter.entries("sources", 'b3a615152df8').size - - [2, '400bb8672109', '400', 400].each do |r| - entries1 = @adapter.entries(nil, r) - assert entries1 - assert_equal 3, entries1.size - assert_equal 'sources', entries1[1].name - assert_equal 'sources', entries1[1].path - assert_equal 'dir', entries1[1].kind - readme = entries1[2] - assert_equal 'README', readme.name - assert_equal 'README', readme.path - assert_equal 'file', readme.kind - assert_equal 27, readme.size - assert_equal '1', readme.lastrev.revision - assert_equal '9d5b5b00419901478496242e0768deba1ce8c51e', readme.lastrev.identifier - # 2007-12-14 10:24:01 +0100 - assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time - - entries2 = @adapter.entries('sources', r) - assert entries2 - assert_equal 2, entries2.size - assert_equal 'watchers_controller.rb', entries2[0].name - assert_equal 'sources/watchers_controller.rb', entries2[0].path - assert_equal 'file', entries2[0].kind - assert_equal 'welcome_controller.rb', entries2[1].name - assert_equal 'sources/welcome_controller.rb', entries2[1].path - assert_equal 'file', entries2[1].kind - end + def test_annotate + assert_equal [], @adapter.annotate("sources/welcome_controller.rb").lines + [2, '400bb8672109', '400', 400].each do |r| + ann = @adapter.annotate('sources/welcome_controller.rb', r) + assert ann + assert_equal '1', ann.revisions[17].revision + assert_equal '9d5b5b004199', ann.revisions[17].identifier + assert_equal 'jsmith', ann.revisions[0].author + assert_equal 25, ann.lines.length + assert_equal 'class WelcomeController < ApplicationController', ann.lines[17] end + end + + def test_entries + assert_nil @adapter.entries(nil, '100000') - def test_entries_tag - entries1 = @adapter.entries(nil, 'tag_test.00') + assert_equal 1, @adapter.entries("sources", 3).size + assert_equal 1, @adapter.entries("sources", 'b3a615152df8').size + + [2, '400bb8672109', '400', 400].each do |r| + entries1 = @adapter.entries(nil, r) assert entries1 assert_equal 3, entries1.size assert_equal 'sources', entries1[1].name @@ -240,236 +203,260 @@ begin assert_equal 'README', readme.name assert_equal 'README', readme.path assert_equal 'file', readme.kind - assert_equal 21, readme.size - assert_equal '0', readme.lastrev.revision - assert_equal '0885933ad4f68d77c2649cd11f8311276e7ef7ce', readme.lastrev.identifier - # 2007-12-14 10:22:52 +0100 - assert_equal Time.gm(2007, 12, 14, 9, 22, 52), readme.lastrev.time + assert_equal 27, readme.size + assert_equal '1', readme.lastrev.revision + assert_equal '9d5b5b00419901478496242e0768deba1ce8c51e', readme.lastrev.identifier + # 2007-12-14 10:24:01 +0100 + assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time + + entries2 = @adapter.entries('sources', r) + assert entries2 + assert_equal 2, entries2.size + assert_equal 'watchers_controller.rb', entries2[0].name + assert_equal 'sources/watchers_controller.rb', entries2[0].path + assert_equal 'file', entries2[0].kind + assert_equal 'welcome_controller.rb', entries2[1].name + assert_equal 'sources/welcome_controller.rb', entries2[1].path + assert_equal 'file', entries2[1].kind end + end - def test_entries_branch - entries1 = @adapter.entries(nil, 'test-branch-00') - assert entries1 - assert_equal 5, entries1.size - assert_equal 'sql_escape', entries1[2].name - assert_equal 'sql_escape', entries1[2].path - assert_equal 'dir', entries1[2].kind - readme = entries1[4] - assert_equal 'README', readme.name - assert_equal 'README', readme.path - assert_equal 'file', readme.kind - assert_equal 365, readme.size - assert_equal '8', readme.lastrev.revision - assert_equal 'c51f5bb613cd60793c2a9fe9df29332e74bb949f', readme.lastrev.identifier - # 2001-02-01 00:00:00 -0900 - assert_equal Time.gm(2001, 2, 1, 9, 0, 0), readme.lastrev.time - end + def test_entries_tag + entries1 = @adapter.entries(nil, 'tag_test.00') + assert entries1 + assert_equal 3, entries1.size + assert_equal 'sources', entries1[1].name + assert_equal 'sources', entries1[1].path + assert_equal 'dir', entries1[1].kind + readme = entries1[2] + assert_equal 'README', readme.name + assert_equal 'README', readme.path + assert_equal 'file', readme.kind + assert_equal 21, readme.size + assert_equal '0', readme.lastrev.revision + assert_equal '0885933ad4f68d77c2649cd11f8311276e7ef7ce', readme.lastrev.identifier + # 2007-12-14 10:22:52 +0100 + assert_equal Time.gm(2007, 12, 14, 9, 22, 52), readme.lastrev.time + end - def test_entry - entry = @adapter.entry() - assert_equal "", entry.path - assert_equal "dir", entry.kind - entry = @adapter.entry('') - assert_equal "", entry.path - assert_equal "dir", entry.kind - assert_nil @adapter.entry('invalid') - assert_nil @adapter.entry('/invalid') - assert_nil @adapter.entry('/invalid/') - assert_nil @adapter.entry('invalid/invalid') - assert_nil @adapter.entry('invalid/invalid/') - assert_nil @adapter.entry('/invalid/invalid') - assert_nil @adapter.entry('/invalid/invalid/') - ["README", "/README"].each do |path| - ["0", "0885933ad4f6", "0885933ad4f68d77c2649cd11f8311276e7ef7ce"].each do |rev| - entry = @adapter.entry(path, rev) - assert_equal "README", entry.path - assert_equal "file", entry.kind - assert_equal '0', entry.lastrev.revision - assert_equal '0885933ad4f68d77c2649cd11f8311276e7ef7ce', entry.lastrev.identifier - end + def test_entries_branch + entries1 = @adapter.entries(nil, 'test-branch-00') + assert entries1 + assert_equal 5, entries1.size + assert_equal 'sql_escape', entries1[2].name + assert_equal 'sql_escape', entries1[2].path + assert_equal 'dir', entries1[2].kind + readme = entries1[4] + assert_equal 'README', readme.name + assert_equal 'README', readme.path + assert_equal 'file', readme.kind + assert_equal 365, readme.size + assert_equal '8', readme.lastrev.revision + assert_equal 'c51f5bb613cd60793c2a9fe9df29332e74bb949f', readme.lastrev.identifier + # 2001-02-01 00:00:00 -0900 + assert_equal Time.gm(2001, 2, 1, 9, 0, 0), readme.lastrev.time + end + + def test_entry + entry = @adapter.entry() + assert_equal "", entry.path + assert_equal "dir", entry.kind + entry = @adapter.entry('') + assert_equal "", entry.path + assert_equal "dir", entry.kind + assert_nil @adapter.entry('invalid') + assert_nil @adapter.entry('/invalid') + assert_nil @adapter.entry('/invalid/') + assert_nil @adapter.entry('invalid/invalid') + assert_nil @adapter.entry('invalid/invalid/') + assert_nil @adapter.entry('/invalid/invalid') + assert_nil @adapter.entry('/invalid/invalid/') + ["README", "/README"].each do |path| + ["0", "0885933ad4f6", "0885933ad4f68d77c2649cd11f8311276e7ef7ce"].each do |rev| + entry = @adapter.entry(path, rev) + assert_equal "README", entry.path + assert_equal "file", entry.kind + assert_equal '0', entry.lastrev.revision + assert_equal '0885933ad4f68d77c2649cd11f8311276e7ef7ce', entry.lastrev.identifier end - ["sources", "/sources", "/sources/"].each do |path| - ["0", "0885933ad4f6", "0885933ad4f68d77c2649cd11f8311276e7ef7ce"].each do |rev| - entry = @adapter.entry(path, rev) - assert_equal "sources", entry.path - assert_equal "dir", entry.kind - end + end + ["sources", "/sources", "/sources/"].each do |path| + ["0", "0885933ad4f6", "0885933ad4f68d77c2649cd11f8311276e7ef7ce"].each do |rev| + entry = @adapter.entry(path, rev) + assert_equal "sources", entry.path + assert_equal "dir", entry.kind end - ["sources/watchers_controller.rb", "/sources/watchers_controller.rb"].each do |path| - ["0", "0885933ad4f6", "0885933ad4f68d77c2649cd11f8311276e7ef7ce"].each do |rev| - entry = @adapter.entry(path, rev) - assert_equal "sources/watchers_controller.rb", entry.path - assert_equal "file", entry.kind - assert_equal '0', entry.lastrev.revision - assert_equal '0885933ad4f68d77c2649cd11f8311276e7ef7ce', entry.lastrev.identifier - end + end + ["sources/watchers_controller.rb", "/sources/watchers_controller.rb"].each do |path| + ["0", "0885933ad4f6", "0885933ad4f68d77c2649cd11f8311276e7ef7ce"].each do |rev| + entry = @adapter.entry(path, rev) + assert_equal "sources/watchers_controller.rb", entry.path + assert_equal "file", entry.kind + assert_equal '0', entry.lastrev.revision + assert_equal '0885933ad4f68d77c2649cd11f8311276e7ef7ce', entry.lastrev.identifier end end + end - def test_locate_on_outdated_repository - assert_equal 1, @adapter.entries("images", 0).size - assert_equal 2, @adapter.entries("images").size - assert_equal 2, @adapter.entries("images", 2).size - end + def test_locate_on_outdated_repository + assert_equal 1, @adapter.entries("images", 0).size + assert_equal 2, @adapter.entries("images").size + assert_equal 2, @adapter.entries("images", 2).size + end - def test_access_by_nodeid - path = 'sources/welcome_controller.rb' - assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109') - end + def test_access_by_nodeid + path = 'sources/welcome_controller.rb' + assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109') + end - def test_access_by_fuzzy_nodeid - path = 'sources/welcome_controller.rb' - # falls back to nodeid - assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400') - end + def test_access_by_fuzzy_nodeid + path = 'sources/welcome_controller.rb' + # falls back to nodeid + assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400') + end - def test_tags - assert_equal [@tag_char_1, 'tag_test.00', 'tag-init-revision'], @adapter.tags - end + def test_tags + assert_equal [@tag_char_1, 'tag_test.00', 'tag-init-revision'], @adapter.tags + end - def test_tagmap - tm = { - @tag_char_1 => 'adf805632193500ad3b615cd04f58f9b0769f576', - 'tag_test.00' => '6987191f453a5f6557018d522feea2c450d5588d', - 'tag-init-revision' => '0885933ad4f68d77c2649cd11f8311276e7ef7ce', - } - assert_equal tm, @adapter.tagmap - end + def test_tagmap + tm = { + @tag_char_1 => 'adf805632193500ad3b615cd04f58f9b0769f576', + 'tag_test.00' => '6987191f453a5f6557018d522feea2c450d5588d', + 'tag-init-revision' => '0885933ad4f68d77c2649cd11f8311276e7ef7ce', + } + assert_equal tm, @adapter.tagmap + end - def test_branches - brs = [] - @adapter.branches.each do |b| - brs << b - end - assert_equal 7, brs.length - assert_equal 'default', brs[0].to_s - assert_equal '31', brs[0].revision - assert_equal '31eeee7395c8c78e66dd54c50addd078d10b2355', brs[0].scmid - assert_equal 'test-branch-01', brs[1].to_s - assert_equal '30', brs[1].revision - assert_equal 'ad4dc4f80284a4f9168b77e0b6de288e5d207ee7', brs[1].scmid - assert_equal @branch_char_1, brs[2].to_s - assert_equal '27', brs[2].revision - assert_equal '7bbf4c738e7145149d2e5eb1eed1d3a8ddd3b914', brs[2].scmid - assert_equal 'branch (1)[2]&,%.-3_4', brs[3].to_s - assert_equal '25', brs[3].revision - assert_equal 'afc61e85bde74de930e5846c8451bd55b5bafc9c', brs[3].scmid - assert_equal @branch_char_0, brs[4].to_s - assert_equal '23', brs[4].revision - assert_equal 'c8d3e4887474af6a589190140508037ebaa9d9c3', brs[4].scmid - assert_equal 'test_branch.latin-1', brs[5].to_s - assert_equal '22', brs[5].revision - assert_equal 'c2ffe7da686aa3d956e59f2a2854cf8980a8b768', brs[5].scmid - assert_equal 'test-branch-00', brs[6].to_s - assert_equal '13', brs[6].revision - assert_equal '3a330eb329586ea2adb3f83237c23310e744ebe9', brs[6].scmid + def test_branches + brs = [] + @adapter.branches.each do |b| + brs << b end + assert_equal 7, brs.length + assert_equal 'default', brs[0].to_s + assert_equal '31', brs[0].revision + assert_equal '31eeee7395c8c78e66dd54c50addd078d10b2355', brs[0].scmid + assert_equal 'test-branch-01', brs[1].to_s + assert_equal '30', brs[1].revision + assert_equal 'ad4dc4f80284a4f9168b77e0b6de288e5d207ee7', brs[1].scmid + assert_equal @branch_char_1, brs[2].to_s + assert_equal '27', brs[2].revision + assert_equal '7bbf4c738e7145149d2e5eb1eed1d3a8ddd3b914', brs[2].scmid + assert_equal 'branch (1)[2]&,%.-3_4', brs[3].to_s + assert_equal '25', brs[3].revision + assert_equal 'afc61e85bde74de930e5846c8451bd55b5bafc9c', brs[3].scmid + assert_equal @branch_char_0, brs[4].to_s + assert_equal '23', brs[4].revision + assert_equal 'c8d3e4887474af6a589190140508037ebaa9d9c3', brs[4].scmid + assert_equal 'test_branch.latin-1', brs[5].to_s + assert_equal '22', brs[5].revision + assert_equal 'c2ffe7da686aa3d956e59f2a2854cf8980a8b768', brs[5].scmid + assert_equal 'test-branch-00', brs[6].to_s + assert_equal '13', brs[6].revision + assert_equal '3a330eb329586ea2adb3f83237c23310e744ebe9', brs[6].scmid + end - def test_branchmap - bm = { - 'default' => '31eeee7395c8c78e66dd54c50addd078d10b2355', - 'test_branch.latin-1' => 'c2ffe7da686aa3d956e59f2a2854cf8980a8b768', - 'branch (1)[2]&,%.-3_4' => 'afc61e85bde74de930e5846c8451bd55b5bafc9c', - 'test-branch-00' => '3a330eb329586ea2adb3f83237c23310e744ebe9', - "test-branch-01" => 'ad4dc4f80284a4f9168b77e0b6de288e5d207ee7', - @branch_char_0 => 'c8d3e4887474af6a589190140508037ebaa9d9c3', - @branch_char_1 => '7bbf4c738e7145149d2e5eb1eed1d3a8ddd3b914', - } - assert_equal bm, @adapter.branchmap - end + def test_branchmap + bm = { + 'default' => '31eeee7395c8c78e66dd54c50addd078d10b2355', + 'test_branch.latin-1' => 'c2ffe7da686aa3d956e59f2a2854cf8980a8b768', + 'branch (1)[2]&,%.-3_4' => 'afc61e85bde74de930e5846c8451bd55b5bafc9c', + 'test-branch-00' => '3a330eb329586ea2adb3f83237c23310e744ebe9', + "test-branch-01" => 'ad4dc4f80284a4f9168b77e0b6de288e5d207ee7', + @branch_char_0 => 'c8d3e4887474af6a589190140508037ebaa9d9c3', + @branch_char_1 => '7bbf4c738e7145149d2e5eb1eed1d3a8ddd3b914', + } + assert_equal bm, @adapter.branchmap + end - def test_path_space - p = 'README (1)[2]&,%.-3_4' - [15, '933ca60293d7'].each do |r1| - assert @adapter.diff(p, r1) - assert @adapter.cat(p, r1) - assert_equal 1, @adapter.annotate(p, r1).lines.length - [25, 'afc61e85bde7'].each do |r2| - assert @adapter.diff(p, r1, r2) - end + def test_path_space + p = 'README (1)[2]&,%.-3_4' + [15, '933ca60293d7'].each do |r1| + assert @adapter.diff(p, r1) + assert @adapter.cat(p, r1) + assert_equal 1, @adapter.annotate(p, r1).lines.length + [25, 'afc61e85bde7'].each do |r2| + assert @adapter.diff(p, r1, r2) end end + end - def test_tag_non_ascii - p = "latin-1-dir/test-#{@char_1}-1.txt" - assert @adapter.cat(p, @tag_char_1) - assert_equal 1, @adapter.annotate(p, @tag_char_1).lines.length - end + def test_tag_non_ascii + p = "latin-1-dir/test-#{@char_1}-1.txt" + assert @adapter.cat(p, @tag_char_1) + assert_equal 1, @adapter.annotate(p, @tag_char_1).lines.length + end - def test_branch_non_ascii - p = "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-1.txt" - assert @adapter.cat(p, @branch_char_1) - assert_equal 1, @adapter.annotate(p, @branch_char_1).lines.length - end + def test_branch_non_ascii + p = "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-1.txt" + assert @adapter.cat(p, @branch_char_1) + assert_equal 1, @adapter.annotate(p, @branch_char_1).lines.length + end - def test_nodes_in_branch - [ - 'default', - @branch_char_1, - 'branch (1)[2]&,%.-3_4', - @branch_char_0, - 'test_branch.latin-1', - 'test-branch-00', - ].each do |bra| - nib0 = @adapter.nodes_in_branch(bra) - assert nib0 - nib1 = @adapter.nodes_in_branch(bra, :limit => 1) - assert_equal 1, nib1.size - case bra - when 'branch (1)[2]&,%.-3_4' - if @adapter.class.client_version_above?([1, 6]) - assert_equal 3, nib0.size - assert_equal 'afc61e85bde74de930e5846c8451bd55b5bafc9c', nib0[0] - nib2 = @adapter.nodes_in_branch(bra, :limit => 2) - assert_equal 2, nib2.size - assert_equal '933ca60293d78f7c7979dd123cc0c02431683575', nib2[1] - end - when @branch_char_1 - if @adapter.class.client_version_above?([1, 6]) - assert_equal 2, nib0.size - assert_equal '08ff3227303ec0dfcc818efa8e9cc652fe81859f', nib0[1] - nib2 = @adapter.nodes_in_branch(bra, :limit => 1) - assert_equal 1, nib2.size - assert_equal '7bbf4c738e7145149d2e5eb1eed1d3a8ddd3b914', nib2[0] - end - end + def test_nodes_in_branch + [ + 'default', + @branch_char_1, + 'branch (1)[2]&,%.-3_4', + @branch_char_0, + 'test_branch.latin-1', + 'test-branch-00', + ].each do |bra| + nib0 = @adapter.nodes_in_branch(bra) + assert nib0 + nib1 = @adapter.nodes_in_branch(bra, :limit => 1) + assert_equal 1, nib1.size + case bra + when 'branch (1)[2]&,%.-3_4' + if @adapter.class.client_version_above?([1, 6]) + assert_equal 3, nib0.size + assert_equal 'afc61e85bde74de930e5846c8451bd55b5bafc9c', nib0[0] + nib2 = @adapter.nodes_in_branch(bra, :limit => 2) + assert_equal 2, nib2.size + assert_equal '933ca60293d78f7c7979dd123cc0c02431683575', nib2[1] + end + when @branch_char_1 + if @adapter.class.client_version_above?([1, 6]) + assert_equal 2, nib0.size + assert_equal '08ff3227303ec0dfcc818efa8e9cc652fe81859f', nib0[1] + nib2 = @adapter.nodes_in_branch(bra, :limit => 1) + assert_equal 1, nib2.size + assert_equal '7bbf4c738e7145149d2e5eb1eed1d3a8ddd3b914', nib2[0] + end end end + end - def test_path_encoding_default_utf8 - adpt1 = Redmine::Scm::Adapters::MercurialAdapter.new( - REPOSITORY_PATH - ) - assert_equal "UTF-8", adpt1.path_encoding - adpt2 = Redmine::Scm::Adapters::MercurialAdapter.new( - REPOSITORY_PATH, - nil, - nil, - nil, - "" - ) - assert_equal "UTF-8", adpt2.path_encoding - end + def test_path_encoding_default_utf8 + adpt1 = Redmine::Scm::Adapters::MercurialAdapter.new( + REPOSITORY_PATH + ) + assert_equal "UTF-8", adpt1.path_encoding + adpt2 = Redmine::Scm::Adapters::MercurialAdapter.new( + REPOSITORY_PATH, + nil, + nil, + nil, + "" + ) + assert_equal "UTF-8", adpt2.path_encoding + end - private + private - def test_hgversion_for(hgversion, version) - @adapter.class.expects(:hgversion_from_command_line).returns(hgversion) - assert_equal version, @adapter.class.hgversion - end + def test_hgversion_for(hgversion, version) + @adapter.class.expects(:hgversion_from_command_line).returns(hgversion) + assert_equal version, @adapter.class.hgversion + end - def test_template_path_for(version, template) - assert_equal "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}", - @adapter.class.template_path_for(version) - assert File.exist?(@adapter.class.template_path_for(version)) - end - else - puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!" - def test_fake; assert true end + def test_template_path_for(version, template) + assert_equal "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}", + @adapter.class.template_path_for(version) + assert File.exist?(@adapter.class.template_path_for(version)) end - end -rescue LoadError - class MercurialMochaFake < ActiveSupport::TestCase - def test_fake; assert(false, "Requires mocha to run those tests") end + else + puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end end end diff --git a/test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb b/test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb index f272c0a0e..161f7d2e7 100644 --- a/test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb +++ b/test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb @@ -17,55 +17,47 @@ require File.expand_path('../../../../../../test_helper', __FILE__) -begin - require 'mocha/setup' +class SubversionAdapterTest < ActiveSupport::TestCase - class SubversionAdapterTest < ActiveSupport::TestCase - - if repository_configured?('subversion') - def setup - @adapter = Redmine::Scm::Adapters::SubversionAdapter.new(self.class.subversion_repository_url) - end + if repository_configured?('subversion') + def setup + @adapter = Redmine::Scm::Adapters::SubversionAdapter.new(self.class.subversion_repository_url) + end - def test_client_version - v = Redmine::Scm::Adapters::SubversionAdapter.client_version - assert v.is_a?(Array) - end + def test_client_version + v = Redmine::Scm::Adapters::SubversionAdapter.client_version + assert v.is_a?(Array) + end - def test_scm_version - to_test = { "svn, version 1.6.13 (r1002816)\n" => [1,6,13], - "svn, versione 1.6.13 (r1002816)\n" => [1,6,13], - "1.6.1\n1.7\n1.8" => [1,6,1], - "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]} - to_test.each do |s, v| - test_scm_version_for(s, v) - end + def test_scm_version + to_test = { "svn, version 1.6.13 (r1002816)\n" => [1,6,13], + "svn, versione 1.6.13 (r1002816)\n" => [1,6,13], + "1.6.1\n1.7\n1.8" => [1,6,1], + "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]} + to_test.each do |s, v| + test_scm_version_for(s, v) end + end - def test_info_not_nil - assert_not_nil @adapter.info - end + def test_info_not_nil + assert_not_nil @adapter.info + end - def test_info_nil - adpt = Redmine::Scm::Adapters::SubversionAdapter.new( - "file:///invalid/invalid/" - ) - assert_nil adpt.info - end + def test_info_nil + adpt = Redmine::Scm::Adapters::SubversionAdapter.new( + "file:///invalid/invalid/" + ) + assert_nil adpt.info + end - private + private - def test_scm_version_for(scm_version, version) - @adapter.class.expects(:scm_version_from_command_line).returns(scm_version) - assert_equal version, @adapter.class.svn_binary_version - end - else - puts "Subversion test repository NOT FOUND. Skipping unit tests !!!" - def test_fake; assert true end + def test_scm_version_for(scm_version, version) + @adapter.class.expects(:scm_version_from_command_line).returns(scm_version) + assert_equal version, @adapter.class.svn_binary_version end - end -rescue LoadError - class SubversionMochaFake < ActiveSupport::TestCase - def test_fake; assert(false, "Requires mocha to run those tests") end + else + puts "Subversion test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end end end diff --git a/test/unit/lib/redmine/unified_diff_test.rb b/test/unit/lib/redmine/unified_diff_test.rb index 4956e52f6..e3130fd28 100644 --- a/test/unit/lib/redmine/unified_diff_test.rb +++ b/test/unit/lib/redmine/unified_diff_test.rb @@ -223,8 +223,7 @@ DIFF def test_utf8_ja ja = " text_tip_issue_end_day: " - ja += "\xe3\x81\x93\xe3\x81\xae\xe6\x97\xa5\xe3\x81\xab\xe7\xb5\x82\xe4\xba\x86\xe3\x81\x99\xe3\x82\x8b<span>\xe3\x82\xbf\xe3\x82\xb9\xe3\x82\xaf</span>" - ja.force_encoding('UTF-8') if ja.respond_to?(:force_encoding) + ja += "\xe3\x81\x93\xe3\x81\xae\xe6\x97\xa5\xe3\x81\xab\xe7\xb5\x82\xe4\xba\x86\xe3\x81\x99\xe3\x82\x8b<span>\xe3\x82\xbf\xe3\x82\xb9\xe3\x82\xaf</span>".force_encoding('UTF-8') with_settings :repositories_encodings => '' do diff = Redmine::UnifiedDiff.new(read_diff_fixture('issue-12641-ja.diff'), :type => 'inline') assert_equal 1, diff.size @@ -234,8 +233,7 @@ DIFF end def test_utf8_ru - ru = " other: "\xd0\xbe\xd0\xba\xd0\xbe\xd0\xbb\xd0\xbe %{count} \xd1\x87\xd0\xb0\xd1\x81<span>\xd0\xb0</span>"" - ru.force_encoding('UTF-8') if ru.respond_to?(:force_encoding) + ru = " other: "\xd0\xbe\xd0\xba\xd0\xbe\xd0\xbb\xd0\xbe %{count} \xd1\x87\xd0\xb0\xd1\x81<span>\xd0\xb0</span>"".force_encoding('UTF-8') with_settings :repositories_encodings => '' do diff = Redmine::UnifiedDiff.new(read_diff_fixture('issue-12641-ru.diff'), :type => 'inline') assert_equal 1, diff.size @@ -279,10 +277,8 @@ DIFF end def test_offset_range_japanese_1 - ja1 = "\xe6\x97\xa5\xe6\x9c\xac<span></span>" - ja1.force_encoding('UTF-8') if ja1.respond_to?(:force_encoding) - ja2 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xaa\x9e</span>" - ja2.force_encoding('UTF-8') if ja2.respond_to?(:force_encoding) + ja1 = "\xe6\x97\xa5\xe6\x9c\xac<span></span>".force_encoding('UTF-8') + ja2 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xaa\x9e</span>".force_encoding('UTF-8') with_settings :repositories_encodings => '' do diff = Redmine::UnifiedDiff.new( read_diff_fixture('issue-13644-1.diff'), :type => 'sbs') @@ -294,10 +290,8 @@ DIFF end def test_offset_range_japanese_2 - ja1 = "<span></span>\xe6\x97\xa5\xe6\x9c\xac" - ja1.force_encoding('UTF-8') if ja1.respond_to?(:force_encoding) - ja2 = "<span>\xe3\x81\xab\xe3\x81\xa3\xe3\x81\xbd\xe3\x82\x93</span>\xe6\x97\xa5\xe6\x9c\xac" - ja2.force_encoding('UTF-8') if ja2.respond_to?(:force_encoding) + ja1 = "<span></span>\xe6\x97\xa5\xe6\x9c\xac".force_encoding('UTF-8') + ja2 = "<span>\xe3\x81\xab\xe3\x81\xa3\xe3\x81\xbd\xe3\x82\x93</span>\xe6\x97\xa5\xe6\x9c\xac".force_encoding('UTF-8') with_settings :repositories_encodings => '' do diff = Redmine::UnifiedDiff.new( read_diff_fixture('issue-13644-2.diff'), :type => 'sbs') @@ -310,10 +304,8 @@ DIFF def test_offset_range_japanese_3 # UTF-8 The 1st byte differs. - ja1 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xa8\x98</span>" - ja1.force_encoding('UTF-8') if ja1.respond_to?(:force_encoding) - ja2 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe5\xa8\x98</span>" - ja2.force_encoding('UTF-8') if ja2.respond_to?(:force_encoding) + ja1 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xa8\x98</span>".force_encoding('UTF-8') + ja2 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe5\xa8\x98</span>".force_encoding('UTF-8') with_settings :repositories_encodings => '' do diff = Redmine::UnifiedDiff.new( read_diff_fixture('issue-13644-3.diff'), :type => 'sbs') @@ -326,10 +318,8 @@ DIFF def test_offset_range_japanese_4 # UTF-8 The 2nd byte differs. - ja1 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xa8\x98</span>" - ja1.force_encoding('UTF-8') if ja1.respond_to?(:force_encoding) - ja2 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xaa\x98</span>" - ja2.force_encoding('UTF-8') if ja2.respond_to?(:force_encoding) + ja1 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xa8\x98</span>".force_encoding('UTF-8') + ja2 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xaa\x98</span>".force_encoding('UTF-8') with_settings :repositories_encodings => '' do diff = Redmine::UnifiedDiff.new( read_diff_fixture('issue-13644-4.diff'), :type => 'sbs') @@ -342,10 +332,8 @@ DIFF def test_offset_range_japanese_5 # UTF-8 The 2nd byte differs. - ja1 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xa8\x98</span>ok" - ja1.force_encoding('UTF-8') if ja1.respond_to?(:force_encoding) - ja2 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xaa\x98</span>ok" - ja2.force_encoding('UTF-8') if ja2.respond_to?(:force_encoding) + ja1 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xa8\x98</span>ok".force_encoding('UTF-8') + ja2 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xaa\x98</span>ok".force_encoding('UTF-8') with_settings :repositories_encodings => '' do diff = Redmine::UnifiedDiff.new( read_diff_fixture('issue-13644-5.diff'), :type => 'sbs') diff --git a/test/unit/lib/redmine/wiki_formatting/macros_test.rb b/test/unit/lib/redmine/wiki_formatting/macros_test.rb index 7f5308d1b..8c218849d 100644 --- a/test/unit/lib/redmine/wiki_formatting/macros_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/macros_test.rb @@ -207,12 +207,14 @@ class Redmine::WikiFormatting::MacrosTest < ActionView::TestCase def test_macro_collapse text = "{{collapse\n*Collapsed* block of text\n}}" - result = textilizable(text) - - assert_select_in result, 'div.collapsed-text' - assert_select_in result, 'strong', :text => 'Collapsed' - assert_select_in result, 'a.collapsible.collapsed', :text => 'Show' - assert_select_in result, 'a.collapsible', :text => 'Hide' + with_locale 'en' do + result = textilizable(text) + + assert_select_in result, 'div.collapsed-text' + assert_select_in result, 'strong', :text => 'Collapsed' + assert_select_in result, 'a.collapsible.collapsed', :text => 'Show' + assert_select_in result, 'a.collapsible', :text => 'Hide' + end end def test_macro_collapse_with_one_arg |