diff --git a/test/unit/changeset_test.rb b/test/unit/changeset_test.rb index 187bd7a..e6bcb0e 100644 --- a/test/unit/changeset_test.rb +++ b/test/unit/changeset_test.rb @@ -322,6 +322,35 @@ class ChangesetTest < ActiveSupport::TestCase assert_equal s4, c.comments end + def test_invalid_utf8_sequences_in_paths_should_be_replaced + proj = Project.find(3) + str1 = "Texte encod\xe9 en ISO-8859-1" + str2 = "\xe9a\xe9b\xe9c\xe9d\xe9e" + str1.force_encoding("UTF-8") if str1.respond_to?(:force_encoding) + str2.force_encoding("ASCII-8BIT") if str2.respond_to?(:force_encoding) + r = Repository::Bazaar.create!( + :project => proj, + :url => '/tmp/test/bazaar', + :log_encoding => 'UTF-8' ) + assert r + cs = Changeset.new( + :repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => "test") + assert( cs.save ) + ch = Change.new( + :changeset => cs, + :action => "A", + :path => str1, + :from_path => str2, + :from_revision => "345") + assert( ch.save ) + assert_equal "Texte encod? en ISO-8859-1", ch.path + assert_equal "?a?b?c?d?e", ch.from_path + end + def test_comments_nil proj = Project.find(3) r = Repository::Bazaar.create!(