From: Jean-Baptiste Barth Date: Mon, 13 Jun 2011 22:09:01 +0000 (+0000) Subject: Do not cache I18n strings when truncating a long diff (#5089). X-Git-Tag: 1.3.0~1818 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=115d22729848c84bd669e4a5017c360a620213a6;p=redmine.git Do not cache I18n strings when truncating a long diff (#5089). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6073 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index b660408ff..a30353eb9 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -208,7 +208,7 @@ class RepositoriesController < ApplicationController User.current.preference.save end @cache_key = "repositories/diff/#{@repository.id}/" + - Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}") + Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}-#{current_language}") unless read_fragment(@cache_key) @diff = @repository.diff(@path, @rev, @rev_to) show_error_not_found unless @diff diff --git a/test/functional/repositories_git_controller_test.rb b/test/functional/repositories_git_controller_test.rb index 06e2428d4..0ea9a6621 100644 --- a/test/functional/repositories_git_controller_test.rb +++ b/test/functional/repositories_git_controller_test.rb @@ -56,6 +56,8 @@ class RepositoriesGitControllerTest < ActionController::TestCase if @char_1.respond_to?(:force_encoding) @char_1.force_encoding('UTF-8') end + + Setting.default_language = 'en' end if File.directory?(REPOSITORY_PATH) @@ -219,6 +221,27 @@ class RepositoriesGitControllerTest < ActionController::TestCase end end + def test_diff_truncated + @repository.fetch_changesets + @repository.reload + Setting.diff_max_lines_displayed = 5 + + # Truncated diff of changeset 2f9c0091 + with_cache do + get :diff, :id => PRJ_ID, :type => 'inline', + :rev => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' + assert_response :success + assert @response.body.include?("... This diff was truncated") + + Setting.default_language = 'fr' + get :diff, :id => PRJ_ID, :type => 'inline', + :rev => '2f9c0091c754a91af7a9c478e36556b4bde8dcf7' + assert_response :success + assert ! @response.body.include?("... This diff was truncated") + assert @response.body.include?("... Ce diff") + end + end + def test_diff_two_revs @repository.fetch_changesets @repository.reload @@ -361,4 +384,12 @@ class RepositoriesGitControllerTest < ActionController::TestCase puts "Git test repository NOT FOUND. Skipping functional tests !!!" def test_fake; assert true end end + + private + def with_cache(&block) + before = ActionController::Base.perform_caching + ActionController::Base.perform_caching = true + block.call + ActionController::Base.perform_caching = before + end end