Move shebang detection into classifier

Fixes #203
This commit is contained in:
Joshua Peek
2012-08-03 15:07:36 -05:00
parent fbbaff09cd
commit 16a67cb852
24 changed files with 178 additions and 275 deletions

View File

@@ -45,10 +45,6 @@ class TestBlob < Test::Unit::TestCase
assert_equal "application/pdf", blob("Binary/foo.pdf").content_type
assert_equal "image/png", blob("Binary/foo.png").content_type
assert_equal "text/plain; charset=iso-8859-2", blob("Text/README").content_type
assert_equal "text/plain; charset=iso-8859-1", blob("Perl/script.pl").content_type
assert_equal "text/plain; charset=iso-8859-1", blob("Python/script.py").content_type
assert_equal "text/plain; charset=iso-8859-1", blob("Ruby/script.rb").content_type
assert_equal "text/plain; charset=iso-8859-1", blob("Shell/script.sh").content_type
end
def test_disposition
@@ -280,25 +276,6 @@ class TestBlob < Test::Unit::TestCase
assert_equal Lexer['Ruby'], blob("Ruby/foo.rb").lexer
end
def test_shebang_script
assert_equal 'sh', script_blob("Shell/script.sh").shebang_script
assert_equal 'bash', script_blob("Shell/script.bash").shebang_script
assert_equal 'zsh', script_blob("Shell/script.zsh").shebang_script
assert_equal 'perl', script_blob("Perl/script.pl").shebang_script
assert_equal 'ruby', script_blob("Ruby/script.rb").shebang_script
assert_equal 'ruby', script_blob("Ruby/script2.rb").shebang_script
assert_equal 'python', script_blob("Python/script.py").shebang_script
assert_equal 'node', script_blob("JavaScript/script.js").shebang_script
assert_equal 'groovy', script_blob("Groovy/script.groovy").shebang_script
assert_equal 'macruby', script_blob("Ruby/macruby-script").shebang_script
assert_equal 'rake', script_blob("Ruby/script.rake").shebang_script
assert_equal 'foo', script_blob("Text/script.foo").shebang_script
assert_equal 'nush', script_blob("Nu/script.nu").shebang_script
assert_equal 'scala', script_blob("Scala/script.scala").shebang_script
assert_equal 'racket', script_blob("Racket/script.rkt").shebang_script
assert_equal nil, script_blob("Ruby/foo.rb").shebang_script
end
def test_colorize
assert_equal <<-HTML, blob("Ruby/foo.rb").colorize
<div class="highlight"><pre><span class="k">module</span> <span class="nn">Foo</span>

View File

@@ -54,11 +54,8 @@ class TestClassifier < Test::Unit::TestCase
def test_classify_ambiguous_languages
Samples.each do |sample|
language = Linguist::Language.find_by_name(sample[:language])
next unless language.overrides.any?
extname = File.extname(sample[:path])
languages = Language.all.select { |l| l.extensions.include?(extname) }.map(&:name)
language = Linguist::Language.find_by_name(sample[:language])
languages = Language.find_by_filename(sample[:path]).map(&:name)
next unless languages.length > 1
results = Classifier.classify(Samples::DATA, File.read(sample[:path]), languages)

View File

@@ -8,16 +8,6 @@ class TestLanguage < Test::Unit::TestCase
Lexer = Pygments::Lexer
def test_ambiguous_extensions
assert Language.ambiguous?('.cls')
assert Language.ambiguous?('.h')
assert Language.ambiguous?('.m')
assert Language.ambiguous?('.pl')
assert Language.ambiguous?('.r')
assert Language.ambiguous?('.t')
assert Language.ambiguous?('.v')
end
def test_lexer
assert_equal Lexer['ActionScript 3'], Language['ActionScript'].lexer
assert_equal Lexer['Bash'], Language['Gentoo Ebuild'].lexer

View File

@@ -85,6 +85,17 @@ class TestTokenizer < Test::Unit::TestCase
assert_equal %w(#import <Cocoa/Cocoa.h> int main \( int argc char *argv [ ] \) { NSLog \( @ \) ; return ; }), tokenize(:"Objective-C/hello.m")
end
def test_shebang
assert_equal "SHEBANG#!sh", tokenize(:"Shell/sh.script!")[0]
assert_equal "SHEBANG#!bash", tokenize(:"Shell/bash.script!")[0]
assert_equal "SHEBANG#!zsh", tokenize(:"Shell/zsh.script!")[0]
assert_equal "SHEBANG#!perl", tokenize(:"Perl/perl.script!")[0]
assert_equal "SHEBANG#!python", tokenize(:"Python/python.script!")[0]
assert_equal "SHEBANG#!ruby", tokenize(:"Ruby/ruby.script!")[0]
assert_equal "SHEBANG#!ruby", tokenize(:"Ruby/ruby2.script!")[0]
assert_equal "SHEBANG#!node", tokenize(:"JavaScript/js.script!")[0]
end
def test_javascript_tokens
assert_equal %w( \( function \( \) { console.log \( \) ; } \) .call \( this \) ;), tokenize(:"JavaScript/hello.js")
end
@@ -95,7 +106,6 @@ class TestTokenizer < Test::Unit::TestCase
def test_ruby_tokens
assert_equal %w(module Foo end), tokenize(:"Ruby/foo.rb")
assert_equal %w(# /usr/bin/env ruby puts), tokenize(:"Ruby/script.rb")
assert_equal %w(task default do puts end), tokenize(:"Ruby/filenames/Rakefile")
end
end