aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorJack Nagel2012-05-28 20:43:32 -0500
committerJack Nagel2012-05-30 22:32:49 -0500
commit2a6575ad2831f00eccbf6c989cde26f0930dde45 (patch)
treecb2236058a117f5dbfc4357eb1ad68ed8b26fe8a /Library
parent53ce9dba536caeba5c884e3f904d91f9529f6b80 (diff)
downloadbrew-2a6575ad2831f00eccbf6c989cde26f0930dde45.tar.bz2
cleaner: use new Mach-O pathname methods in clean_file
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cleaner.rb7
-rw-r--r--Library/Homebrew/test/test_cleaner.rb38
2 files changed, 41 insertions, 4 deletions
diff --git a/Library/Homebrew/cleaner.rb b/Library/Homebrew/cleaner.rb
index ea5ece779..3950cd846 100644
--- a/Library/Homebrew/cleaner.rb
+++ b/Library/Homebrew/cleaner.rb
@@ -55,15 +55,14 @@ class Cleaner
def clean_file path
perms = 0444
- case `/usr/bin/file -h '#{path}'`
- when /Mach-O dynamically linked shared library/
+ if path.dylib?
# Stripping libraries is causing no end of trouble. Lets just give up,
# and try to do it manually in instances where it makes sense.
#strip path, '-SxX'
- when /Mach-O [^ ]* ?executable/
+ elsif path.mach_o_executable?
strip path
perms = 0555
- when /text executable/
+ elsif path.text_executable?
perms = 0555
end
path.chmod perms
diff --git a/Library/Homebrew/test/test_cleaner.rb b/Library/Homebrew/test/test_cleaner.rb
new file mode 100644
index 000000000..e9e9c96ef
--- /dev/null
+++ b/Library/Homebrew/test/test_cleaner.rb
@@ -0,0 +1,38 @@
+require 'testing_env'
+
+require 'extend/ARGV' # needs to be after test/unit to avoid conflict with OptionsParser
+ARGV.extend(HomebrewArgvExtension)
+
+require 'cleaner'
+
+class CleanerTestBall < Formula
+ def initialize name=nil
+ @url="file:///#{TEST_FOLDER}/tarballs/testball-0.1.tbz"
+ @homepage = 'http://example.com/'
+ super "cleanertestball"
+ end
+
+ def install
+ TEST_FOLDER.cd do
+ bin.mkpath
+ lib.mkpath
+ cp 'mach/a.out', bin
+ cp 'mach/fat.dylib', lib
+ cp 'mach/x86_64.dylib', lib
+ cp 'mach/i386.dylib', lib
+ end
+ end
+end
+
+class CleanerTests < Test::Unit::TestCase
+ def test_clean_file
+ f = CleanerTestBall.new
+ nostdout { f.brew { f.install } }
+
+ assert_nothing_raised { Cleaner.new f }
+ assert_equal 0100555, (f.bin/'a.out').stat.mode
+ assert_equal 0100444, (f.lib/'fat.dylib').stat.mode
+ assert_equal 0100444, (f.lib/'x86_64.dylib').stat.mode
+ assert_equal 0100444, (f.lib/'i386.dylib').stat.mode
+ end
+end