(show_error_not_found; return) unless @entry
@annotate = @repository.scm.annotate(@path, @rev)
- (render_error l(:error_scm_annotate); return) if @annotate.nil? || @annotate.empty?
+ if @annotate.nil? || @annotate.empty?
+ (render_error l(:error_scm_annotate); return)
+ end
+ ann_buf_size = 0
+ @annotate.lines.each do |buf|
+ ann_buf_size += buf.size
+ end
+ if ann_buf_size > Setting.file_max_size_displayed.to_i.kilobyte
+ (render_error l(:error_scm_annotate_big_text_file); return)
+ end
@changeset = @repository.find_changeset_by_name(@rev)
end
error_scm_not_found: "The entry or revision was not found in the repository."
error_scm_command_failed: "An error occurred when trying to access the repository: %{value}"
error_scm_annotate: "The entry does not exist or cannot be annotated."
+ error_scm_annotate_big_text_file: "The entry cannot be annotated, as it exceeds the maximum text file size."
error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
error_scm_not_found: "The entry or revision was not found in the repository."
error_scm_command_failed: "An error occurred when trying to access the repository: %{value}"
error_scm_annotate: "The entry does not exist or cannot be annotated."
+ error_scm_annotate_big_text_file: "The entry cannot be annotated, as it exceeds the maximum text file size."
error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
error_can_t_load_default_data: "No se ha podido cargar la configuración por defecto: %{value}"
error_issue_not_found_in_project: 'La petición no se encuentra o no está asociada a este proyecto'
error_scm_annotate: "No existe la entrada o no ha podido ser anotada"
+ error_scm_annotate_big_text_file: "La entrada no puede anotarse, al superar el tamaño máximo para ficheros de texto."
error_scm_command_failed: "Se produjo un error al acceder al repositorio: %{value}"
error_scm_not_found: "La entrada y/o la revisión no existe en el repositorio."
field_account: Cuenta
:content => /cannot be annotated/
end
+ def test_annotate_error_when_too_big
+ with_settings :file_max_size_displayed => 1 do
+ get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 'deff712f'
+ assert_response 500
+ assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ },
+ :content => /exceeds the maximum text file size/
+
+ get :annotate, :id => PRJ_ID, :path => ['README'], :rev => '7234cb2'
+ assert_response :success
+ assert_template 'annotate'
+ end
+ end
+
def test_annotate_latin_1
if @ruby19_non_utf8_pass
puts_ruby19_non_utf8_pass()