diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 368550c320..3f28b0bb4c 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -86,6 +86,9 @@ module Homebrew let(:custom_spdx_id) { "zzz" } let(:standard_mismatch_spdx_id) { "0BSD" } + let(:license_array) { ["0BSD", "GPL-3.0"] } + let(:license_array_mismatch) { ["0BSD", "MIT"] } + let(:license_array_nonstandard) { ["0BSD", "zzz", "MIT"] } 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 @@ -123,6 +126,18 @@ module Homebrew expect(fa.problems.first).to match "Formula foo contains non standard SPDX license: [\"zzz\"]." end + it "detects if license array contains a non-standard spdx-id" do + fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true + class Foo < Formula + url "https://brew.sh/foo-1.0.tgz" + license "#{custom_spdx_id}" + end + RUBY + + fa.audit_license + expect(fa.problems.first).to match "Formula foo contains non standard SPDX license: [\"zzz\"]." + end + it "verifies that a license info is a standard spdx id" do fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true class Foo < Formula @@ -135,6 +150,18 @@ module Homebrew expect(fa.problems).to be_empty end + it "verifies that a license array contains only standard spdx id" do + fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true + class Foo < Formula + url "https://brew.sh/foo-1.0.tgz" + license #{license_array} + end + RUBY + + fa.audit_license + expect(fa.problems).to be_empty + end + it "checks online and verifies that a standard license id is the same "\ "as what is indicated on its Github repo" do fa = formula_auditor "cask", <<~RUBY, spdx_data: spdx_data, online: true, core_tap: true, new_formula: true @@ -163,6 +190,35 @@ module Homebrew expect(fa.problems.first).to match "License mismatch - GitHub license is: [\"GPL-3.0\"], "\ "but Formulae license states: #{Array(standard_mismatch_spdx_id)}." end + + it "checks online and detects that an array of license does not contain "\ + "what is indicated on its Github repository" do + fa = formula_auditor "cask", <<~RUBY, online: true, spdx_data: spdx_data, core_tap: true, new_formula: true + class Cask < Formula + url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" + head "https://github.com/cask/cask.git" + license #{license_array_mismatch} + end + RUBY + + fa.audit_license + expect(fa.problems.first).to match "License mismatch - GitHub license is: [\"GPL-3.0\"], "\ + "but Formulae license states: #{Array(license_array_mismatch)}." + end + + it "checks online and verifies that an array of license contains "\ + "what is indicated on its Github repository" do + fa = formula_auditor "cask", <<~RUBY, online: true, spdx_data: spdx_data, core_tap: true, new_formula: true + class Cask < Formula + url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" + head "https://github.com/cask/cask.git" + license #{license_array} + end + RUBY + + fa.audit_license + expect(fa.problems).to be_empty + end end describe "#audit_file" do