@content = @repository.cat(@path, @rev)
show_error_not_found and return unless @content
- if 'raw' == params[:format] || @content.is_binary_data?
- # Force the download if it's a binary file
+ if 'raw' == params[:format] || @content.is_binary_data? || (@entry.size && @entry.size > Setting.file_max_size_displayed.to_i.kilobyte)
+ # Force the download
send_data @content, :filename => @path.split('/').last
else
# Prevent empty lines when displaying a file with Windows style eol
assert_response :success
assert_template 'entry'
end
+
+ def test_entry_should_send_if_too_big
+ # no files in the test repo is larger than 1KB...
+ with_settings :file_max_size_displayed => 0 do
+ get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c']
+ assert_response :success
+ assert_template ''
+ assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition']
+ end
+ end
def test_entry_at_given_revision
get :entry, :id => 1, :path => ['subversion_test', 'helloworld.rb'], :rev => 2
def test_entry_download
get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'], :format => 'raw'
assert_response :success
+ assert_template ''
+ assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition']
end
def test_directory_entry
Dir.mkdir "#{RAILS_ROOT}/tmp/test/attachments" unless File.directory?("#{RAILS_ROOT}/tmp/test/attachments")
Attachment.storage_path = "#{RAILS_ROOT}/tmp/test/attachments"
end
+
+ def with_settings(options, &block)
+ saved_settings = options.keys.inject({}) {|h, k| h[k] = Setting[k].dup; h}
+ options.each {|k, v| Setting[k] = v}
+ yield
+ saved_settings.each {|k, v| Setting[k] = v}
+ end
end