diff options
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/cleaner.rb | 7 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_cleaner.rb | 38 |
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 |
