From fbb3ccbfd6d6ea896bf1ae7b5f20ea8c267511fe Mon Sep 17 00:00:00 2001 From: Tim Visher Date: Wed, 27 Apr 2022 23:34:14 -0400 Subject: [PATCH] Keep `info/#{f.name}/dir` files in cleaner Still cleans `info/dir` and `info//dir` files. Fixes https://github.com/Homebrew/homebrew-core/issues/100190 --- Library/Homebrew/cleaner.rb | 2 +- Library/Homebrew/test/cleaner_spec.rb | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) 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