##// END OF EJS Templates
Limit the size of repository files displayed inline too....
Jean-Philippe Lang -
r2442:1c5a2ddfb07c
parent child
Show More
@@ -117,8 +117,8 class RepositoriesController < ApplicationController
117 117
118 118 @content = @repository.cat(@path, @rev)
119 119 show_error_not_found and return unless @content
120 if 'raw' == params[:format] || @content.is_binary_data?
121 # Force the download if it's a binary file
120 if 'raw' == params[:format] || @content.is_binary_data? || (@entry.size && @entry.size > Setting.file_max_size_displayed.to_i.kilobyte)
121 # Force the download
122 122 send_data @content, :filename => @path.split('/').last
123 123 else
124 124 # Prevent empty lines when displaying a file with Windows style eol
@@ -94,6 +94,16 class RepositoriesSubversionControllerTest < Test::Unit::TestCase
94 94 assert_response :success
95 95 assert_template 'entry'
96 96 end
97
98 def test_entry_should_send_if_too_big
99 # no files in the test repo is larger than 1KB...
100 with_settings :file_max_size_displayed => 0 do
101 get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c']
102 assert_response :success
103 assert_template ''
104 assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition']
105 end
106 end
97 107
98 108 def test_entry_at_given_revision
99 109 get :entry, :id => 1, :path => ['subversion_test', 'helloworld.rb'], :rev => 2
@@ -113,6 +123,8 class RepositoriesSubversionControllerTest < Test::Unit::TestCase
113 123 def test_entry_download
114 124 get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'], :format => 'raw'
115 125 assert_response :success
126 assert_template ''
127 assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition']
116 128 end
117 129
118 130 def test_directory_entry
@@ -64,4 +64,11 class Test::Unit::TestCase
64 64 Dir.mkdir "#{RAILS_ROOT}/tmp/test/attachments" unless File.directory?("#{RAILS_ROOT}/tmp/test/attachments")
65 65 Attachment.storage_path = "#{RAILS_ROOT}/tmp/test/attachments"
66 66 end
67
68 def with_settings(options, &block)
69 saved_settings = options.keys.inject({}) {|h, k| h[k] = Setting[k].dup; h}
70 options.each {|k, v| Setting[k] = v}
71 yield
72 saved_settings.each {|k, v| Setting[k] = v}
73 end
67 74 end
General Comments 0
You need to be logged in to leave comments. Login now