tap: add tests for formula list methods

This commit is contained in:
Rylan Polster 2020-11-30 12:29:07 -05:00
parent ba63619f8e
commit f8ff0f465f
2 changed files with 106 additions and 0 deletions

View File

@ -241,6 +241,10 @@ RSpec.configure do |config|
CoreTap.instance.path/".git", CoreTap.instance.path/".git",
CoreTap.instance.alias_dir, CoreTap.instance.alias_dir,
CoreTap.instance.path/"formula_renames.json", CoreTap.instance.path/"formula_renames.json",
CoreTap.instance.path/"tap_migrations.json",
CoreTap.instance.path/"audit_exceptions",
CoreTap.instance.path/"style_exceptions",
CoreTap.instance.path/"pypi_formula_mappings.json",
*Pathname.glob("#{HOMEBREW_CELLAR}/*/"), *Pathname.glob("#{HOMEBREW_CELLAR}/*/"),
] ]

View File

@ -18,6 +18,8 @@ describe Tap do
before do before do
path.mkpath path.mkpath
(path/"audit_exceptions").mkpath
(path/"style_exceptions").mkpath
end end
def setup_tap_files def setup_tap_files
@ -38,6 +40,27 @@ describe Tap do
{ "removed-formula": "homebrew/foo" } { "removed-formula": "homebrew/foo" }
JSON JSON
%w[audit_exceptions style_exceptions].each do |exceptions_directory|
(path/"#{exceptions_directory}/formula_list.json").write <<~JSON
[ "foo", "bar" ]
JSON
(path/"#{exceptions_directory}/formula_hash.json").write <<~JSON
{ "foo": "foo1", "bar": "bar1" }
JSON
end
(path/"pypi_formula_mappings.json").write <<~JSON
{
"formula1": "foo",
"formula2": {
"package_name": "foo",
"extra_packages": ["bar"],
"exclude_packages": ["baz"]
}
}
JSON
[ [
cmd_file, cmd_file,
manpage_file, manpage_file,
@ -320,6 +343,66 @@ describe Tap do
expect(described_class.each).to be_an_instance_of(Enumerator) expect(described_class.each).to be_an_instance_of(Enumerator)
end end
end end
describe "Formula Lists" do
describe "#formula_renames" do
it "returns the formula_renames hash" do
setup_tap_files
expected_result = { "oldname" => "foo" }
expect(subject.formula_renames).to eq expected_result
end
end
describe "#tap_migrations" do
it "returns the tap_migrations hash" do
setup_tap_files
expected_result = { "removed-formula" => "homebrew/foo" }
expect(subject.tap_migrations).to eq expected_result
end
end
describe "#audit_exceptions" do
it "returns the audit_exceptions hash" do
setup_tap_files
expected_result = {
formula_list: ["foo", "bar"],
formula_hash: { "foo" => "foo1", "bar" => "bar1" },
}
expect(subject.audit_exceptions).to eq expected_result
end
end
describe "#style_exceptions" do
it "returns the style_exceptions hash" do
setup_tap_files
expected_result = {
formula_list: ["foo", "bar"],
formula_hash: { "foo" => "foo1", "bar" => "bar1" },
}
expect(subject.style_exceptions).to eq expected_result
end
end
describe "#pypi_formula_mappings" do
it "returns the pypi_formula_mappings hash" do
setup_tap_files
expected_result = {
"formula1" => "foo",
"formula2" => {
"package_name" => "foo",
"extra_packages" => ["bar"],
"exclude_packages" => ["baz"],
},
}
expect(subject.pypi_formula_mappings).to eq expected_result
end
end
end
end end
describe CoreTap do describe CoreTap do
@ -341,6 +424,7 @@ describe CoreTap do
end end
specify "files" do specify "files" do
path = CoreTap::TAP_DIRECTORY/"homebrew/homebrew-core"
formula_file = subject.formula_dir/"foo.rb" formula_file = subject.formula_dir/"foo.rb"
formula_file.write <<~RUBY formula_file.write <<~RUBY
class Foo < Formula class Foo < Formula
@ -348,6 +432,18 @@ describe CoreTap do
end end
RUBY RUBY
formula_list_file_json = '{ "foo": "foo1", "bar": "bar1" }'
formula_list_file_contents = { "foo" => "foo1", "bar" => "bar1" }
%w[
formula_renames.json
tap_migrations.json
audit_exceptions/formula_list.json
style_exceptions/formula_hash.json
pypi_formula_mappings.json
].each do |file|
(path/file).write formula_list_file_json
end
alias_file = subject.alias_dir/"bar" alias_file = subject.alias_dir/"bar"
alias_file.parent.mkpath alias_file.parent.mkpath
ln_s formula_file, alias_file ln_s formula_file, alias_file
@ -358,5 +454,11 @@ describe CoreTap do
expect(subject.aliases).to eq(["bar"]) expect(subject.aliases).to eq(["bar"])
expect(subject.alias_table).to eq("bar" => "foo") expect(subject.alias_table).to eq("bar" => "foo")
expect(subject.alias_reverse_table).to eq("foo" => ["bar"]) expect(subject.alias_reverse_table).to eq("foo" => ["bar"])
expect(subject.formula_renames).to eq formula_list_file_contents
expect(subject.tap_migrations).to eq formula_list_file_contents
expect(subject.audit_exceptions).to eq({ formula_list: formula_list_file_contents })
expect(subject.style_exceptions).to eq({ formula_hash: formula_list_file_contents })
expect(subject.pypi_formula_mappings).to eq formula_list_file_contents
end end
end end