From 6529035ee128c9b995a7a85d347f20ed1412f3ab Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Tue, 26 Jun 2012 16:57:09 +0000 Subject: [PATCH] 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 --- lib/redmine/helpers/diff.rb | 9 +++++---- 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] = '' + words[add_at] - words[add_to] = words[add_to] + '' + words[add_at] = ''.html_safe + words[add_at] + words[add_to] = words[add_to] + ''.html_safe end if del_at - words.insert del_at - del_off + dels + words_add, '' + deleted + '' + words.insert del_at - del_off + dels + words_add, ''.html_safe + deleted + ''.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