diff options
| author | Jack Nagel | 2012-05-28 20:43:32 -0500 |
|---|---|---|
| committer | Jack Nagel | 2012-05-30 22:32:49 -0500 |
| commit | 2a6575ad2831f00eccbf6c989cde26f0930dde45 (patch) | |
| tree | cb2236058a117f5dbfc4357eb1ad68ed8b26fe8a /Library | |
| parent | 53ce9dba536caeba5c884e3f904d91f9529f6b80 (diff) | |
| download | brew-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.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 |
