From 9bc3baa1dcf9c081f34ffc08e8a24cc81baeecfb Mon Sep 17 00:00:00 2001 From: Dawa Ometto Date: Sat, 31 Jul 2021 10:29:13 +0200 Subject: [PATCH] Force utf8 encoding for diffs --- lib/gollum/app.rb | 6 +++--- test/test_app.rb | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/gollum/app.rb b/lib/gollum/app.rb index cfe66cf4..0260dd21 100644 --- a/lib/gollum/app.rb +++ b/lib/gollum/app.rb @@ -410,7 +410,7 @@ module Precious else sha2, sha1 = sha1, "#{sha1}^" if !sha2 @versions = [sha1, sha2] - @diff = wiki.repo.diff(@versions.first, @versions.last, @page.path) + @diff = wiki.repo.diff(@versions.first, @versions.last, @page.path).force_encoding('utf-8') @message = 'The patch does not apply.' mustache :compare end @@ -475,7 +475,7 @@ module Precious @versions = [start_version, end_version] wiki = wikip.wiki @page = wikip.page - @diff = wiki.repo.diff(@versions.first, @versions.last, @page.path) + @diff = wiki.repo.diff(@versions.first, @versions.last, @page.path).force_encoding('utf-8') if @diff.empty? @message = 'Could not compare these two revisions, no differences were found.' mustache :error @@ -519,7 +519,7 @@ module Precious @commit = wiki.repo.commit(version) parent = @commit.parent parent_id = parent.nil? ? nil : parent.id - @diff = wiki.repo.diff(parent_id, version) + @diff = wiki.repo.diff(parent_id, version).force_encoding('utf-8') mustache :commit rescue Gollum::Git::NoSuchShaFound @message = "Invalid commit: #{@version}" diff --git a/test/test_app.rb b/test/test_app.rb index be0e2df7..6973e2e7 100644 --- a/test/test_app.rb +++ b/test/test_app.rb @@ -47,6 +47,15 @@ context "Frontend" do get '/gollum/assets/mathjax/MathJax.js' assert last_response.ok? end + + test 'compare with utf8' do + commit = { :name => 'user1', :email => 'user1' } + @wiki.write_page('Utf8', :markdown, '\n中文', commit) + page = @wiki.page('Utf8') + @wiki.update_page(page, nil, nil, "No utf-8", commit) + get "/gollum/compare/Utf8.md/#{page.versions.first.id}..#{page.versions.last.id}" + assert last_response.body.include?('
+\n中文
') + end test "UTF-8 headers href preserved" do page = 'utfh1'