diff options
author | murphy <murphy@rubychan.de> | 2007-11-22 15:15:35 +0000 |
---|---|---|
committer | murphy <murphy@rubychan.de> | 2007-11-22 15:15:35 +0000 |
commit | fce733bc0566b191932663dcb9e70b6bf7de2590 (patch) | |
tree | ff5255091a4e8225b9e7fd71123c7d6e372eda15 /lib/coderay | |
parent | 499415cc2d1c3a81491cd827848e9d79ed9813f0 (diff) | |
download | coderay-fce733bc0566b191932663dcb9e70b6bf7de2590.tar.gz |
Fixed FileType shebang recognition for empty files. [Jeremy Hinegardner]
Diffstat (limited to 'lib/coderay')
-rw-r--r-- | lib/coderay/helpers/file_type.rb | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/lib/coderay/helpers/file_type.rb b/lib/coderay/helpers/file_type.rb index 3d29d78..8d86e57 100644 --- a/lib/coderay/helpers/file_type.rb +++ b/lib/coderay/helpers/file_type.rb @@ -1,3 +1,4 @@ +#!/usr/bin/env ruby module CodeRay # = FileType @@ -49,8 +50,11 @@ module FileType def shebang filename begin File.open filename, 'r' do |f| - first_line = f.gets - first_line[TypeFromShebang] + if first_line = f.gets + if type = first_line[TypeFromShebang] + type.to_sym + end + end end rescue IOError nil @@ -113,11 +117,12 @@ if $0 == __FILE__ end __END__ - require 'test/unit' class TC_FileType < Test::Unit::TestCase - + + include CodeRay + def test_fetch assert_raise FileType::UnknownFileType do FileType.fetch '' @@ -177,7 +182,7 @@ class TC_FileType < Test::Unit::TestCase assert_not_equal :yaml, FileType['YAML'] end - def test_shebang + def test_no_shebang dir = './test' if File.directory? dir Dir.chdir dir do @@ -185,5 +190,19 @@ class TC_FileType < Test::Unit::TestCase end end end + + def test_shebang_empty_file + require 'tmpdir' + tmpfile = File.join(Dir.tmpdir, 'bla') + File.open(tmpfile, 'w') { } # touch + assert_equal nil, FileType[tmpfile] + end + + def test_shebang + require 'tmpdir' + tmpfile = File.join(Dir.tmpdir, 'bla') + File.open(tmpfile, 'w') { |f| f.puts '#!/usr/bin/env ruby' } + assert_equal :ruby, FileType[tmpfile, true] + end end |