diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index 71c6443dd0..57629775d8 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -200,7 +200,7 @@ class Pathname return archive_ext if archive_ext # Don't treat version numbers as extname. - return "" if basename.match?(/\b\d+\.\d+[^\.]*\Z/) + return "" if basename.match?(/\b\d+\.\d+[^\.]*\Z/) && !basename.end_with?(".7z") File.extname(basename) end diff --git a/Library/Homebrew/test/pathname_spec.rb b/Library/Homebrew/test/pathname_spec.rb index 4b5f4305d3..5f846fde13 100644 --- a/Library/Homebrew/test/pathname_spec.rb +++ b/Library/Homebrew/test/pathname_spec.rb @@ -137,6 +137,11 @@ describe Pathname do it "does not treat version numbers as extensions" do expect(described_class.new("foo-0.1").extname).to eq("") expect(described_class.new("foo-1.0-rc1").extname).to eq("") + expect(described_class.new("foo-1.2.3").extname).to eq "" + end + + it "supports `.7z` with version numbers" do + expect(described_class.new("snap7-full-1.4.2.7z").extname).to eq ".7z" end end