From 899783b35ad39de9744830f9e3fd22af812fcd29 Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Tue, 17 Nov 2020 17:57:48 -0500 Subject: [PATCH] migrate license mismatch allowlist to Homebrew/core --- Library/Homebrew/formula_auditor.rb | 8 ++------ Library/Homebrew/test/dev-cmd/audit_spec.rb | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/Library/Homebrew/formula_auditor.rb b/Library/Homebrew/formula_auditor.rb index 8c193c4603..0392b11e7e 100644 --- a/Library/Homebrew/formula_auditor.rb +++ b/Library/Homebrew/formula_auditor.rb @@ -165,11 +165,6 @@ module Homebrew "LGPL-3.0" => ["LGPL-3.0-only", "LGPL-3.0-or-later"], }.freeze - PERMITTED_FORMULA_LICENSE_MISMATCHES = { - "cmockery" => "0.1.2", - "scw@1" => "1.20", - }.freeze - def audit_license if formula.license.present? licenses, exceptions = SPDX.parse_license_expression formula.license @@ -213,7 +208,7 @@ module Homebrew return unless github_license return if (licenses + ["NOASSERTION"]).include?(github_license) return if PERMITTED_LICENSE_MISMATCHES[github_license]&.any? { |license| licenses.include? license } - return if PERMITTED_FORMULA_LICENSE_MISMATCHES[formula.name] == formula.version + return if tap_audit_exception :permitted_formula_license_mismatches, formula.name problem "Formula license #{licenses} does not match GitHub license #{Array(github_license)}." @@ -821,6 +816,7 @@ module Homebrew end def tap_audit_exception(list, formula, value = nil) + return false if @tap_audit_exceptions.blank? return false unless @tap_audit_exceptions.key? list list = @tap_audit_exceptions[list] diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 4548be2e0f..4a54b8d1a8 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -423,6 +423,23 @@ module Homebrew .to eq 'Formula license ["0BSD"] does not match GitHub license ["GPL-3.0"].' end + it "allows a formula-specified license that differes from its GitHub "\ + "repository for formulae on the mismatched license allowlist" do + formula_text = <<~RUBY + class Cask < Formula + url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" + head "https://github.com/cask/cask.git" + license "0BSD" + end + RUBY + fa = formula_auditor "cask", formula_text, spdx_license_data: spdx_license_data, + online: true, core_tap: true, new_formula: true, + tap_audit_exceptions: { permitted_formula_license_mismatches: ["cask"] } + + fa.audit_license + expect(fa.problems).to be_empty + end + it "checks online and detects that an array of license does not contain "\ "what is indicated on its Github repository" do formula_text = <<~RUBY