Project

General

Profile

Defect #29259 » allow-preview-for-any-text-files.diff

Go MAEDA, 2018-08-05 09:31

View differences:

app/models/attachment.rb (working copy)
235 235
  end
236 236

  
237 237
  def is_text?
238
    Redmine::MimeType.is_type?('text', filename)
238
    if Redmine::MimeType.is_type?('text', filename)
239
      true
240
    else
241
      data = File.read(diskfile, 4096) rescue false
242
      ! Redmine::Utils.binary?(data)
243
    end
239 244
  end
240 245

  
241 246
  def is_image?
lib/redmine/scm/adapters/abstract_adapter.rb (working copy)
425 425

  
426 426
      module ScmData
427 427
        def self.binary?(data)
428
          unless data.empty?
429
            data.count( "^ -~", "^\r\n" ).fdiv(data.size) > 0.3 || data.index( "\x00" )
430
          end
428
          Redmine::Utils.binary?(data)
431 429
        end
432 430
      end
433 431
    end
lib/redmine/utils.rb (working copy)
61 61
          end
62 62
        end
63 63
      end
64

  
65
      def binary?(data)
66
        unless data.empty?
67
          data.count( "^ -~", "^\r\n" ).fdiv(data.size) > 0.3 || data.index( "\x00" )
68
        end
69
      end
64 70
    end
65 71

  
66 72
    module Shell
test/fixtures/files/hello.go (working copy)
1
package main
2

  
3
import "fmt"
4

  
5
func main() {
6
  fmt.Println("Hello, world!")
7
}
test/unit/attachment_test.rb (working copy)
444 444
    puts '(ImageMagick convert not available)'
445 445
  end
446 446

  
447
  def test_is_text
448
    files = [
449
      {:name => 'testfile.txt', :type => 'text/plain'},
450
      {:name => 'hello.go', :type => 'text/plain'},
451
      {:name => '2006/07/060719210727_archive.zip', :type => 'application/octet-stream'}
452
    ]
453

  
454
    a_text, a_go, a_bin = files.map do |f|
455
      a = Attachment.new(:container => Issue.find(1),
456
        :file => uploaded_test_file(f[:name], f[:type]),
457
        :author => User.find(1))
458
      a.save!
459
      a
460
    end
461

  
462
    assert a_text.is_text?
463
    assert a_go.is_text?
464
    assert_not a_bin.is_text?
465
  end
466

  
447 467
end
(1-1/3)