diff --git a/Library/Homebrew/cleaner.rb b/Library/Homebrew/cleaner.rb index ec60e9eac9..480054bda5 100644 --- a/Library/Homebrew/cleaner.rb +++ b/Library/Homebrew/cleaner.rb @@ -31,7 +31,7 @@ class Cleaner # Get rid of any info 'dir' files, so they don't conflict at the link stage Dir.glob(@f.info/"**/dir").each do |f| info_dir_file = Pathname(f) - observe_file_removal info_dir_file if info_dir_file.file? && !@f.skip_clean?(info_dir_file) + observe_file_removal info_dir_file if info_dir_file.file? && info_dir_file != Pathname("#{@f.info}/#{@f.name}/dir") && !@f.skip_clean?(info_dir_file) end rewrite_shebangs diff --git a/Library/Homebrew/test/cleaner_spec.rb b/Library/Homebrew/test/cleaner_spec.rb index dee1108929..3071639dac 100644 --- a/Library/Homebrew/test/cleaner_spec.rb +++ b/Library/Homebrew/test/cleaner_spec.rb @@ -136,6 +136,26 @@ describe Cleaner do expect(file).not_to exist end + + it "removes 'info/**/dir' files except for 'info//dir'" do + file = f.info/"dir" + arch_file = f.info/"i686-elf/dir" + name_file = f.info/"#{f.name}/dir" + + f.info.mkpath + (f.info/"i686-elf").mkpath + (f.info/"#{f.name}").mkpath + + touch file + touch arch_file + touch name_file + + cleaner.clean + + expect(file).not_to exist + expect(arch_file).not_to exist + expect(name_file).to exist + end end describe "::skip_clean" do