]> source.dussan.org Git - redmine.git/commitdiff
Fixed that wiki diff may produce html (#11209).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 26 Jun 2012 16:57:09 +0000 (16:57 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 26 Jun 2012 16:57:09 +0000 (16:57 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9895 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/helpers/diff.rb
test/functional/wiki_controller_test.rb

index b11a5692ed9f659021f5e4599daa42c21a809f1c..86c87e9f9a5c3b3070aaf8170d9c4db4e38a49e4 100644 (file)
@@ -50,16 +50,17 @@ module Redmine
               words_add += 1
             else
               del_at = pos unless del_at
-              deleted << ' ' + h(change[2])
+              deleted << ' ' unless deleted.empty?
+              deleted << h(change[2])
               words_del  += 1
             end
           end
           if add_at
-            words[add_at] = '<span class="diff_in">' + words[add_at]
-            words[add_to] = words[add_to] + '</span>'
+            words[add_at] = '<span class="diff_in">'.html_safe + words[add_at]
+            words[add_to] = words[add_to] + '</span>'.html_safe
           end
           if del_at
-            words.insert del_at - del_off + dels + words_add, '<span class="diff_out">' + deleted + '</span>'
+            words.insert del_at - del_off + dels + words_add, '<span class="diff_out">'.html_safe + deleted + '</span>'.html_safe
             dels += 1
             del_off += words_del
             words_del = 0
index b87a26aeeb46f9c4c0ab5a823f6ea211d3b86778..f4e82d7d0c308647d5875151623ad3f266b72eca 100644 (file)
@@ -495,11 +495,19 @@ class WikiControllerTest < ActionController::TestCase
   end
 
   def test_diff
-    get :diff, :project_id => 1, :id => 'CookBook_documentation', :version => 2, :version_from => 1
+    content = WikiPage.find(1).content
+    assert_difference 'WikiContent::Version.count', 2 do
+      content.text = "Line removed\nThis is a sample text for testing diffs"
+      content.save!
+      content.text = "This is a sample text for testing diffs\nLine added"
+      content.save!
+    end
+
+    get :diff, :project_id => 1, :id => 'CookBook_documentation', :version => content.version, :version_from => (content.version - 1)
     assert_response :success
     assert_template 'diff'
-    assert_tag :tag => 'span', :attributes => { :class => 'diff_in'},
-                               :content => /updated/
+    assert_select 'span.diff_out', :text => 'Line removed'
+    assert_select 'span.diff_in', :text => 'Line added'
   end
 
   def test_annotate