Project

General

Profile

Defect #29259 » 0002-Attachment-preview-does-not-support-source-code-in-s.patch

Go MAEDA, 2019-05-02 08:38

View differences:

app/models/attachment.rb
237 237
  end
238 238

  
239 239
  def is_text?
240
    Redmine::MimeType.is_type?('text', filename)
240
    Redmine::MimeType.is_type?('text', filename) || Redmine::SyntaxHighlighting.filename_supported?(filename)
241 241
  end
242 242

  
243 243
  def is_image?
lib/redmine/syntax_highlighting.rb
52 52
      rescue
53 53
        false
54 54
      end
55

  
56
      def filename_supported?(filename)
57
        if highlighter.respond_to? :filename_supported?
58
          highlighter.filename_supported? filename
59
        else
60
          false
61
        end
62
      end
55 63
    end
56 64

  
57 65
    module Rouge
......
101 109
        def language_supported?(language)
102 110
          find_lexer(language.to_s.downcase) ? true : false
103 111
        end
112

  
113
        def filename_supported?(filename)
114
          !::Rouge::Lexer.guesses(:filename => filename).empty?
115
        end
104 116
        
105 117
        private
106 118
        # Alias names used by CodeRay and not supported by Rouge
test/fixtures/files/hello.js
1
document.write('Hello, World!');
test/unit/attachment_test.rb
502 502
    puts '(ImageMagick convert not available)'
503 503
  end
504 504

  
505
  def test_is_text
506
    js_attachment = Attachment.new(
507
      :container => Issue.find(1), 
508
      :file => uploaded_test_file('hello.js', 'application/javascript'),
509
      :author => User.find(1))
510

  
511
    to_test = {
512
      js_attachment => true,               # hello.js (application/javascript)
513
      attachments(:attachments_003) => false, # logo.gif (image/gif)
514
      attachments(:attachments_004) => true,  # source.rb (application/x-ruby)
515
      attachments(:attachments_015) => true,  # private.diff (text/x-diff)
516
      attachments(:attachments_016) => false, # testfile.png (image/png)
517
    }
518
    to_test.each do |attachment, expected|
519
      assert_equal expected, attachment.is_text?
520
    end
521
  end
505 522
end
test/unit/lib/redmine/syntax_highlighting/rouge_test.rb
20 20
require File.expand_path('../../../../../test_helper', __FILE__)
21 21

  
22 22
class Redmine::SyntaxHighlighting::RougeTest < ActiveSupport::TestCase
23
  def test_filename_supported
24
    to_test = {
25
      'application.js' => true,
26
      'Gemfile' => true,
27
      'AUTOEXEC.BAT' => false,
28
      'HELLO.C' => true
29
    }
30
    to_test.each do |filename, expected|
31
      assert_equal expected, Redmine::SyntaxHighlighting::Rouge.filename_supported?(filename)
32
    end
33
  end
34

  
23 35
  def test_highlight_by_filename_should_distinguish_perl_and_prolog
24 36
    raw_perl = <<'RAW_PERL'
25 37
#!/usr/bin/perl
(3-3/3)