diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2012-06-26 16:57:09 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2012-06-26 16:57:09 +0000 |
commit | 6529035ee128c9b995a7a85d347f20ed1412f3ab (patch) | |
tree | 733c327486b8187c5927030eae9d157c519e8e68 | |
parent | 7f6ac407ef11b94a3e99e4a712320f3a6faa22ec (diff) | |
download | redmine-6529035ee128c9b995a7a85d347f20ed1412f3ab.tar.gz redmine-6529035ee128c9b995a7a85d347f20ed1412f3ab.zip |
Fixed that wiki diff may produce html (#11209).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9895 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | lib/redmine/helpers/diff.rb | 9 | ||||
-rw-r--r-- | test/functional/wiki_controller_test.rb | 14 |
2 files changed, 16 insertions, 7 deletions
diff --git a/lib/redmine/helpers/diff.rb b/lib/redmine/helpers/diff.rb index b11a5692e..86c87e9f9 100644 --- a/lib/redmine/helpers/diff.rb +++ b/lib/redmine/helpers/diff.rb @@ -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 diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb index b87a26aee..f4e82d7d0 100644 --- a/test/functional/wiki_controller_test.rb +++ b/test/functional/wiki_controller_test.rb @@ -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 |