From 7002359f7a39351a6e6805815d19aac301982a7c Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Fri, 15 Jun 2012 20:02:49 -0500 Subject: [PATCH] Improve Pathname#text_executable? regexp file(1) does not allow leading whitespace on shebang lines, and there appears to be no restrictions on what characters follow '#!', either. While at it, fix an erroneous shebang test. Signed-off-by: Jack Nagel --- Library/Homebrew/extend/pathname.rb | 2 +- Library/Homebrew/test/test_mach.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index d171a6d6bd..907679f992 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -272,7 +272,7 @@ class Pathname end def text_executable? - %r[#!\s*(/.+)+] === open('r') { |f| f.readline } + %r[^#!\s*.+] === open('r') { |f| f.readline } rescue EOFError false end diff --git a/Library/Homebrew/test/test_mach.rb b/Library/Homebrew/test/test_mach.rb index 9b9c3cd9b5..a0efb6928c 100644 --- a/Library/Homebrew/test/test_mach.rb +++ b/Library/Homebrew/test/test_mach.rb @@ -135,7 +135,7 @@ class TextExecutableTests < Test::Unit::TestCase def test_malformed_shebang pn = Pathname.new('baz') - pn.write '#! ' + pn.write ' #!' assert !pn.universal? assert !pn.i386? assert !pn.x86_64? @@ -146,7 +146,7 @@ class TextExecutableTests < Test::Unit::TestCase assert !pn.text_executable? assert_equal [], pn.archs assert pn.arch == :dunno - assert_match /text executable/, `/usr/bin/file -h '#{pn}'`.chomp + assert_no_match /text executable/, `/usr/bin/file -h '#{pn}'`.chomp end def teardown