audit: forbid deprecated licenses with --strict
This commit is contained in:
parent
02969cdfd1
commit
fb5b541dcd
@ -364,6 +364,21 @@ module Homebrew
|
|||||||
problem "Formula #{formula.name} contains non-standard SPDX licenses: #{non_standard_licenses}."
|
problem "Formula #{formula.name} contains non-standard SPDX licenses: #{non_standard_licenses}."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if @strict
|
||||||
|
deprecated_licenses = formula.license.map do |license|
|
||||||
|
next if license == :public_domain
|
||||||
|
next if @spdx_data["licenses"].any? do |spdx|
|
||||||
|
spdx["licenseId"] == license && !spdx["isDeprecatedLicenseId"]
|
||||||
|
end
|
||||||
|
|
||||||
|
license
|
||||||
|
end.compact
|
||||||
|
|
||||||
|
if deprecated_licenses.present?
|
||||||
|
problem "Formula #{formula.name} contains deprecated SPDX licenses: #{deprecated_licenses}."
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return unless @online
|
return unless @online
|
||||||
|
|
||||||
user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula
|
user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula
|
||||||
|
|||||||
@ -85,10 +85,12 @@ module Homebrew
|
|||||||
}
|
}
|
||||||
|
|
||||||
let(:custom_spdx_id) { "zzz" }
|
let(:custom_spdx_id) { "zzz" }
|
||||||
|
let(:deprecated_spdx_id) { "GPL-1.0" }
|
||||||
let(:standard_mismatch_spdx_id) { "0BSD" }
|
let(:standard_mismatch_spdx_id) { "0BSD" }
|
||||||
let(:license_array) { ["0BSD", "GPL-3.0"] }
|
let(:license_array) { ["0BSD", "GPL-3.0"] }
|
||||||
let(:license_array_mismatch) { ["0BSD", "MIT"] }
|
let(:license_array_mismatch) { ["0BSD", "MIT"] }
|
||||||
let(:license_array_nonstandard) { ["0BSD", "zzz", "MIT"] }
|
let(:license_array_nonstandard) { ["0BSD", "zzz", "MIT"] }
|
||||||
|
let(:license_array_deprecated) { ["0BSD", "GPL-1.0", "MIT"] }
|
||||||
|
|
||||||
it "does not check if the formula is not a new formula" do
|
it "does not check if the formula is not a new formula" do
|
||||||
fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: false
|
fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: false
|
||||||
@ -124,6 +126,18 @@ module Homebrew
|
|||||||
expect(fa.problems.first).to match "Formula foo contains non-standard SPDX licenses: [\"zzz\"]."
|
expect(fa.problems.first).to match "Formula foo contains non-standard SPDX licenses: [\"zzz\"]."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "detects if license is a deprecated spdx-id" do
|
||||||
|
fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true, strict: true
|
||||||
|
class Foo < Formula
|
||||||
|
url "https://brew.sh/foo-1.0.tgz"
|
||||||
|
license "#{deprecated_spdx_id}"
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
|
||||||
|
fa.audit_license
|
||||||
|
expect(fa.problems.first).to match "Formula foo contains deprecated SPDX licenses: [\"GPL-1.0\"]."
|
||||||
|
end
|
||||||
|
|
||||||
it "detects if license array contains a non-standard spdx-id" do
|
it "detects if license array contains a non-standard spdx-id" do
|
||||||
fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true
|
fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true
|
||||||
class Foo < Formula
|
class Foo < Formula
|
||||||
@ -136,6 +150,18 @@ module Homebrew
|
|||||||
expect(fa.problems.first).to match "Formula foo contains non-standard SPDX licenses: [\"zzz\"]."
|
expect(fa.problems.first).to match "Formula foo contains non-standard SPDX licenses: [\"zzz\"]."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "detects if license array contains a deprecated spdx-id" do
|
||||||
|
fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true, strict: true
|
||||||
|
class Foo < Formula
|
||||||
|
url "https://brew.sh/foo-1.0.tgz"
|
||||||
|
license #{license_array_deprecated}
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
|
||||||
|
fa.audit_license
|
||||||
|
expect(fa.problems.first).to match "Formula foo contains deprecated SPDX licenses: [\"GPL-1.0\"]."
|
||||||
|
end
|
||||||
|
|
||||||
it "verifies that a license info is a standard spdx id" do
|
it "verifies that a license info is a standard spdx id" do
|
||||||
fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true
|
fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true
|
||||||
class Foo < Formula
|
class Foo < Formula
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user