Large blobs should be binary

This commit is contained in:
Joshua Peek
2011-09-28 10:14:46 -05:00
parent caa39a2bcf
commit 6e03f954bc
2 changed files with 23 additions and 2 deletions

View File

@@ -92,8 +92,22 @@ module Linguist
#
# Return true or false
def binary?
return false if data.empty?
encoding.nil? || detect_encoding[:type] == :binary
# Large blobs aren't even loaded into memory
if data.nil?
true
# Treat blank files as text
elsif data == ""
false
# Charlock doesn't know what to think
elsif encoding.nil?
true
# If Charlock says its binary
else
detect_encoding[:type] == :binary
end
end
# Public: Is the blob text?

View File

@@ -84,6 +84,13 @@ class TestBlob < Test::Unit::TestCase
end
def test_binary
# Large blobs aren't loaded
large_blob = blob("git.exe")
large_blob.instance_eval do
def data; end
end
assert large_blob.binary?
assert blob("git.deb").binary?
assert blob("git.exe").binary?
assert blob("hello.pbc").binary?