From 3dcbb84fb5fd1601e669ea15c9ddb1056c839325 Mon Sep 17 00:00:00 2001 From: Markus Reiter <me@reitermark.us> Date: Mon, 27 Feb 2017 23:07:22 +0100 Subject: [PATCH] Convert Tap test to spec. --- Library/Homebrew/test/tap_spec.rb | 346 ++++++++++++++++++++++++++++++ Library/Homebrew/test/tap_test.rb | 319 --------------------------- 2 files changed, 346 insertions(+), 319 deletions(-) create mode 100644 Library/Homebrew/test/tap_spec.rb delete mode 100644 Library/Homebrew/test/tap_test.rb diff --git a/Library/Homebrew/test/tap_spec.rb b/Library/Homebrew/test/tap_spec.rb new file mode 100644 index 0000000000..b0ad1506d9 --- /dev/null +++ b/Library/Homebrew/test/tap_spec.rb @@ -0,0 +1,346 @@ +RSpec::Matchers.alias_matcher :have_formula_file, :be_formula_file +RSpec::Matchers.alias_matcher :have_custom_remote, :be_custom_remote + +describe Tap do + include FileUtils + + subject { Tap.new("Homebrew", "foo") } + let(:path) { Tap::TAP_DIRECTORY/"homebrew/homebrew-foo" } + let(:formula_file) { path/"Formula/foo.rb" } + let(:alias_file) { path/"Aliases/bar" } + let(:cmd_file) { path/"cmd/brew-tap-cmd.rb" } + let(:manpage_file) { path/"manpages/brew-tap-cmd.1" } + let(:bash_completion_file) { path/"completions/bash/brew-tap-cmd" } + let(:zsh_completion_file) { path/"completions/zsh/_brew-tap-cmd" } + let(:fish_completion_file) { path/"completions/fish/brew-tap-cmd.fish" } + + before(:each) do + path.mkpath + end + + def setup_tap_files + formula_file.write <<-EOS.undent + class Foo < Formula + url "https://example.com/foo-1.0.tar.gz" + end + EOS + + alias_file.parent.mkpath + ln_s formula_file, alias_file + + (path/"formula_renames.json").write <<-EOS.undent + { "oldname": "foo" } + EOS + + (path/"tap_migrations.json").write <<-EOS.undent + { "removed-formula": "homebrew/foo" } + EOS + + [ + cmd_file, + manpage_file, + bash_completion_file, + zsh_completion_file, + fish_completion_file, + ].each do |f| + f.parent.mkpath + touch f + end + + chmod 0755, cmd_file + end + + def setup_git_repo + path.cd do + shutup do + system "git", "init" + system "git", "remote", "add", "origin", "https://github.com/Homebrew/homebrew-foo" + system "git", "add", "--all" + system "git", "commit", "-m", "init" + end + end + end + + specify "::fetch" do + begin + expect(described_class.fetch("Homebrew", "homebrew")).to be_kind_of(CoreTap) + tap = described_class.fetch("Homebrew", "foo") + expect(tap).to be_kind_of(Tap) + expect(tap.name).to eq("homebrew/foo") + + expect { + described_class.fetch("foo") + }.to raise_error(/Invalid tap name/) + + expect { + described_class.fetch("homebrew/homebrew/bar") + }.to raise_error(/Invalid tap name/) + + expect { + described_class.fetch("homebrew", "homebrew/baz") + }.to raise_error(/Invalid tap name/) + ensure + described_class.clear_cache + end + end + + specify "#names" do + expect(described_class.names.sort).to eq(["homebrew/core", "homebrew/foo"]) + end + + specify "attributes" do + expect(subject.user).to eq("Homebrew") + expect(subject.repo).to eq("foo") + expect(subject.name).to eq("homebrew/foo") + expect(subject.path).to eq(path) + expect(subject).to be_installed + expect(subject).to be_official + expect(subject).not_to be_a_core_tap + end + + specify "#issues_url" do + begin + t = described_class.new("someone", "foo") + path = Tap::TAP_DIRECTORY/"someone/homebrew-foo" + path.mkpath + cd path do + shutup { system "git", "init" } + system "git", "remote", "add", "origin", + "https://github.com/someone/homebrew-foo" + end + expect(t.issues_url).to eq("https://github.com/someone/homebrew-foo/issues") + expect(subject.issues_url).to eq("https://github.com/Homebrew/homebrew-foo/issues") + + (Tap::TAP_DIRECTORY/"someone/homebrew-no-git").mkpath + expect(described_class.new("someone", "no-git").issues_url).to be nil + ensure + path.parent.rmtree + end + end + + specify "files" do + setup_tap_files + + expect(subject.formula_files).to eq([formula_file]) + expect(subject.formula_names).to eq(["homebrew/foo/foo"]) + expect(subject.alias_files).to eq([alias_file]) + expect(subject.aliases).to eq(["homebrew/foo/bar"]) + expect(subject.alias_table).to eq("homebrew/foo/bar" => "homebrew/foo/foo") + expect(subject.alias_reverse_table).to eq("homebrew/foo/foo" => ["homebrew/foo/bar"]) + expect(subject.formula_renames).to eq("oldname" => "foo") + expect(subject.tap_migrations).to eq("removed-formula" => "homebrew/foo") + expect(subject.command_files).to eq([cmd_file]) + expect(subject.to_hash).to be_kind_of(Hash) + expect(subject).to have_formula_file(formula_file) + expect(subject).to have_formula_file("Formula/foo.rb") + expect(subject).not_to have_formula_file("bar.rb") + expect(subject).not_to have_formula_file("Formula/baz.sh") + end + + describe "#remote" do + it "returns the remote URL" do + setup_git_repo + + expect(subject.remote).to eq("https://github.com/Homebrew/homebrew-foo") + expect { described_class.new("Homebrew", "bar").remote }.to raise_error(TapUnavailableError) + expect(subject).not_to have_custom_remote + + services_tap = described_class.new("Homebrew", "services") + services_tap.path.mkpath + services_tap.path.cd do + shutup do + system "git", "init" + system "git", "remote", "add", "origin", "https://github.com/Homebrew/homebrew-services" + end + end + expect(services_tap).not_to be_private + end + + it "returns nil if the Tap is not a Git repo" do + expect(subject.remote).to be nil + end + + it "returns nil if Git is not available" do + setup_git_repo + allow(Utils).to receive(:git_available?).and_return(false) + expect(subject.remote).to be nil + end + end + + specify "Git variant" do + touch path/"README" + setup_git_repo + + expect(subject.git_head).to eq("0453e16c8e3fac73104da50927a86221ca0740c2") + expect(subject.git_short_head).to eq("0453") + expect(subject.git_last_commit).to match(/\A\d+ .+ ago\Z/) + expect(subject.git_last_commit_date).to eq("2017-01-22") + end + + specify "#private?" do + skip "HOMEBREW_GITHUB_API_TOKEN is required" unless GitHub.api_credentials + expect(subject).to be_private + end + + describe "#install" do + it "raises an error when the Tap is already tapped" do + setup_git_repo + already_tapped_tap = described_class.new("Homebrew", "foo") + expect(already_tapped_tap).to be_installed + expect { already_tapped_tap.install }.to raise_error(TapAlreadyTappedError) + end + + it "raises an error when the Tap is already tapped with the right remote" do + setup_git_repo + already_tapped_tap = described_class.new("Homebrew", "foo") + expect(already_tapped_tap).to be_installed + right_remote = subject.remote + expect { already_tapped_tap.install clone_target: right_remote }.to raise_error(TapAlreadyTappedError) + end + + it "raises an error when the remote doesn't match" do + setup_git_repo + already_tapped_tap = described_class.new("Homebrew", "foo") + touch subject.path/".git/shallow" + expect(already_tapped_tap).to be_installed + wrong_remote = "#{subject.remote}-oops" + expect { already_tapped_tap.install clone_target: wrong_remote, full_clone: true }.to raise_error(TapRemoteMismatchError) + end + + it "raises an error when the Tap is already unshallow" do + setup_git_repo + already_tapped_tap = described_class.new("Homebrew", "foo") + expect { already_tapped_tap.install full_clone: true }.to raise_error(TapAlreadyUnshallowError) + end + + specify "Git error" do + tap = described_class.new("user", "repo") + + expect { + shutup { tap.install clone_target: "file:///not/existed/remote/url" } + }.to raise_error(ErrorDuringExecution) + + expect(tap).not_to be_installed + expect(Tap::TAP_DIRECTORY/"user").not_to exist + end + end + + describe "#uninstall" do + it "raises an error if the Tap is not available" do + tap = described_class.new("Homebrew", "bar") + expect { tap.uninstall }.to raise_error(TapUnavailableError) + end + end + + specify "#install and #uninstall" do + begin + setup_tap_files + setup_git_repo + + tap = Tap.new("Homebrew", "bar") + shutup do + tap.install clone_target: subject.path/".git" + end + expect(tap).to be_installed + expect(HOMEBREW_PREFIX/"share/man/man1/brew-tap-cmd.1").to be_a_file + expect(HOMEBREW_PREFIX/"etc/bash_completion.d/brew-tap-cmd").to be_a_file + expect(HOMEBREW_PREFIX/"share/zsh/site-functions/_brew-tap-cmd").to be_a_file + expect(HOMEBREW_PREFIX/"share/fish/vendor_completions.d/brew-tap-cmd.fish").to be_a_file + shutup do + tap.uninstall + end + expect(tap).not_to be_installed + expect(HOMEBREW_PREFIX/"share/man/man1/brew-tap-cmd.1").not_to exist + expect(HOMEBREW_PREFIX/"share/man/man1").not_to exist + expect(HOMEBREW_PREFIX/"etc/bash_completion.d/brew-tap-cmd").not_to exist + expect(HOMEBREW_PREFIX/"share/zsh/site-functions/_brew-tap-cmd").not_to exist + expect(HOMEBREW_PREFIX/"share/fish/vendor_completions.d/brew-tap-cmd.fish").not_to exist + ensure + (HOMEBREW_PREFIX/"etc").rmtree if (HOMEBREW_PREFIX/"etc").exist? + (HOMEBREW_PREFIX/"share").rmtree if (HOMEBREW_PREFIX/"share").exist? + end + end + + specify "#link_completions_and_manpages" do + begin + setup_tap_files + setup_git_repo + tap = Tap.new("Homebrew", "baz") + shutup { tap.install clone_target: subject.path/".git" } + (HOMEBREW_PREFIX/"share/man/man1/brew-tap-cmd.1").delete + (HOMEBREW_PREFIX/"etc/bash_completion.d/brew-tap-cmd").delete + (HOMEBREW_PREFIX/"share/zsh/site-functions/_brew-tap-cmd").delete + (HOMEBREW_PREFIX/"share/fish/vendor_completions.d/brew-tap-cmd.fish").delete + shutup { tap.link_completions_and_manpages } + expect(HOMEBREW_PREFIX/"share/man/man1/brew-tap-cmd.1").to be_a_file + expect(HOMEBREW_PREFIX/"etc/bash_completion.d/brew-tap-cmd").to be_a_file + expect(HOMEBREW_PREFIX/"share/zsh/site-functions/_brew-tap-cmd").to be_a_file + expect(HOMEBREW_PREFIX/"share/fish/vendor_completions.d/brew-tap-cmd.fish").to be_a_file + shutup { tap.uninstall } + ensure + (HOMEBREW_PREFIX/"etc").rmtree if (HOMEBREW_PREFIX/"etc").exist? + (HOMEBREW_PREFIX/"share").rmtree if (HOMEBREW_PREFIX/"share").exist? + end + end + + specify "#pin and #unpin" do + expect(subject).not_to be_pinned + expect { subject.unpin }.to raise_error(TapPinStatusError) + subject.pin + expect(subject).to be_pinned + expect { subject.pin }.to raise_error(TapPinStatusError) + subject.unpin + expect(subject).not_to be_pinned + end + + specify "#config" do + setup_git_repo + + expect(subject.config["foo"]).to be nil + subject.config["foo"] = "bar" + expect(subject.config["foo"]).to eq("bar") + subject.config["foo"] = nil + expect(subject.config["foo"]).to be nil + end +end + +describe CoreTap do + include FileUtils + + specify "attributes" do + expect(subject.user).to eq("Homebrew") + expect(subject.repo).to eq("core") + expect(subject.name).to eq("homebrew/core") + expect(subject.command_files).to eq([]) + expect(subject).to be_installed + expect(subject).not_to be_pinned + expect(subject).to be_official + expect(subject).to be_a_core_tap + end + + specify "forbidden operations" do + expect { subject.uninstall }.to raise_error(RuntimeError) + expect { subject.pin }.to raise_error(RuntimeError) + expect { subject.unpin }.to raise_error(RuntimeError) + end + + specify "files" do + formula_file = subject.formula_dir/"foo.rb" + formula_file.write <<-EOS.undent + class Foo < Formula + url "https://example.com/foo-1.0.tar.gz" + end + EOS + + alias_file = subject.alias_dir/"bar" + alias_file.parent.mkpath + ln_s formula_file, alias_file + + expect(subject.formula_files).to eq([formula_file]) + expect(subject.formula_names).to eq(["foo"]) + expect(subject.alias_files).to eq([alias_file]) + expect(subject.aliases).to eq(["bar"]) + expect(subject.alias_table).to eq("bar" => "foo") + expect(subject.alias_reverse_table).to eq("foo" => ["bar"]) + end +end diff --git a/Library/Homebrew/test/tap_test.rb b/Library/Homebrew/test/tap_test.rb deleted file mode 100644 index 25ecb5b74f..0000000000 --- a/Library/Homebrew/test/tap_test.rb +++ /dev/null @@ -1,319 +0,0 @@ -require "testing_env" - -class TapTest < Homebrew::TestCase - include FileUtils - - def setup - super - @path = Tap::TAP_DIRECTORY/"homebrew/homebrew-foo" - @path.mkpath - @tap = Tap.new("Homebrew", "foo") - end - - def setup_tap_files - @formula_file = @path/"Formula/foo.rb" - @formula_file.write <<-EOS.undent - class Foo < Formula - url "https://example.com/foo-1.0.tar.gz" - end - EOS - @alias_file = @path/"Aliases/bar" - @alias_file.parent.mkpath - ln_s @formula_file, @alias_file - (@path/"formula_renames.json").write <<-EOS.undent - { "oldname": "foo" } - EOS - (@path/"tap_migrations.json").write <<-EOS.undent - { "removed-formula": "homebrew/foo" } - EOS - @cmd_file = @path/"cmd/brew-tap-cmd.rb" - @cmd_file.parent.mkpath - touch @cmd_file - chmod 0755, @cmd_file - @manpage_file = @path/"manpages/brew-tap-cmd.1" - @manpage_file.parent.mkpath - touch @manpage_file - @bash_completion_file = @path/"completions/bash/brew-tap-cmd" - @bash_completion_file.parent.mkpath - touch @bash_completion_file - @zsh_completion_file = @path/"completions/zsh/_brew-tap-cmd" - @zsh_completion_file.parent.mkpath - touch @zsh_completion_file - @fish_completion_file = @path/"completions/fish/brew-tap-cmd.fish" - @fish_completion_file.parent.mkpath - touch @fish_completion_file - end - - def setup_git_repo - @path.cd do - shutup do - system "git", "init" - system "git", "remote", "add", "origin", "https://github.com/Homebrew/homebrew-foo" - system "git", "add", "--all" - system "git", "commit", "-m", "init" - end - end - end - - def test_fetch - assert_kind_of CoreTap, Tap.fetch("Homebrew", "homebrew") - tap = Tap.fetch("Homebrew", "foo") - assert_kind_of Tap, tap - assert_equal "homebrew/foo", tap.name - - assert_match "Invalid tap name", - assert_raises { Tap.fetch("foo") }.message - assert_match "Invalid tap name", - assert_raises { Tap.fetch("homebrew/homebrew/bar") }.message - assert_match "Invalid tap name", - assert_raises { Tap.fetch("homebrew", "homebrew/baz") }.message - ensure - Tap.clear_cache - end - - def test_names - assert_equal ["homebrew/core", "homebrew/foo"], Tap.names.sort - end - - def test_attributes - assert_equal "Homebrew", @tap.user - assert_equal "foo", @tap.repo - assert_equal "homebrew/foo", @tap.name - assert_equal @path, @tap.path - assert_predicate @tap, :installed? - assert_predicate @tap, :official? - refute_predicate @tap, :core_tap? - end - - def test_issues_url - t = Tap.new("someone", "foo") - path = Tap::TAP_DIRECTORY/"someone/homebrew-foo" - path.mkpath - cd path do - shutup { system "git", "init" } - system "git", "remote", "add", "origin", - "https://github.com/someone/homebrew-foo" - end - assert_equal "https://github.com/someone/homebrew-foo/issues", t.issues_url - assert_equal "https://github.com/Homebrew/homebrew-foo/issues", @tap.issues_url - - (Tap::TAP_DIRECTORY/"someone/homebrew-no-git").mkpath - assert_nil Tap.new("someone", "no-git").issues_url - ensure - path.parent.rmtree - end - - def test_files - setup_tap_files - - assert_equal [@formula_file], @tap.formula_files - assert_equal ["homebrew/foo/foo"], @tap.formula_names - assert_equal [@alias_file], @tap.alias_files - assert_equal ["homebrew/foo/bar"], @tap.aliases - assert_equal @tap.alias_table, "homebrew/foo/bar" => "homebrew/foo/foo" - assert_equal @tap.alias_reverse_table, "homebrew/foo/foo" => ["homebrew/foo/bar"] - assert_equal @tap.formula_renames, "oldname" => "foo" - assert_equal @tap.tap_migrations, "removed-formula" => "homebrew/foo" - assert_equal [@cmd_file], @tap.command_files - assert_kind_of Hash, @tap.to_hash - assert_equal true, @tap.formula_file?(@formula_file) - assert_equal true, @tap.formula_file?("Formula/foo.rb") - assert_equal false, @tap.formula_file?("bar.rb") - assert_equal false, @tap.formula_file?("Formula/baz.sh") - end - - def test_remote - setup_git_repo - - assert_equal "https://github.com/Homebrew/homebrew-foo", @tap.remote - assert_raises(TapUnavailableError) { Tap.new("Homebrew", "bar").remote } - refute_predicate @tap, :custom_remote? - - services_tap = Tap.new("Homebrew", "services") - services_tap.path.mkpath - services_tap.path.cd do - shutup do - system "git", "init" - system "git", "remote", "add", "origin", "https://github.com/Homebrew/homebrew-services" - end - end - refute_predicate services_tap, :private? - end - - def test_remote_not_git_repo - assert_nil @tap.remote - end - - def test_remote_git_not_available - setup_git_repo - Utils.stubs(:git_available?).returns(false) - assert_nil @tap.remote - end - - def test_git_variant - touch @path/"README" - setup_git_repo - - assert_equal "0453e16c8e3fac73104da50927a86221ca0740c2", @tap.git_head - assert_equal "0453", @tap.git_short_head - assert_match(/\A\d+ .+ ago\Z/, @tap.git_last_commit) - assert_equal "2017-01-22", @tap.git_last_commit_date - end - - def test_private_remote - skip "HOMEBREW_GITHUB_API_TOKEN is required" unless GitHub.api_credentials - assert_predicate @tap, :private? - end - - def test_install_tap_already_tapped_error - setup_git_repo - already_tapped_tap = Tap.new("Homebrew", "foo") - assert_equal true, already_tapped_tap.installed? - assert_raises(TapAlreadyTappedError) { already_tapped_tap.install } - end - - def test_install_tap_remote_match_already_tapped_error - setup_git_repo - already_tapped_tap = Tap.new("Homebrew", "foo") - assert_equal true, already_tapped_tap.installed? - right_remote = @tap.remote - assert_raises(TapAlreadyTappedError) { already_tapped_tap.install clone_target: right_remote } - end - - def test_install_tap_remote_mismatch_error - setup_git_repo - already_tapped_tap = Tap.new("Homebrew", "foo") - touch @tap.path/".git/shallow" - assert_equal true, already_tapped_tap.installed? - wrong_remote = "#{@tap.remote}-oops" - assert_raises(TapRemoteMismatchError) { already_tapped_tap.install clone_target: wrong_remote, full_clone: true } - end - - def test_install_tap_already_unshallow_error - setup_git_repo - already_tapped_tap = Tap.new("Homebrew", "foo") - assert_raises(TapAlreadyUnshallowError) { already_tapped_tap.install full_clone: true } - end - - def test_uninstall_tap_unavailable_error - tap = Tap.new("Homebrew", "bar") - assert_raises(TapUnavailableError) { tap.uninstall } - end - - def test_install_git_error - tap = Tap.new("user", "repo") - assert_raises(ErrorDuringExecution) do - shutup { tap.install clone_target: "file:///not/existed/remote/url" } - end - refute_predicate tap, :installed? - refute_predicate Tap::TAP_DIRECTORY/"user", :exist? - end - - def test_install_and_uninstall - setup_tap_files - setup_git_repo - - tap = Tap.new("Homebrew", "bar") - shutup { tap.install clone_target: @tap.path/".git" } - assert_predicate tap, :installed? - assert_predicate HOMEBREW_PREFIX/"share/man/man1/brew-tap-cmd.1", :file? - assert_predicate HOMEBREW_PREFIX/"etc/bash_completion.d/brew-tap-cmd", :file? - assert_predicate HOMEBREW_PREFIX/"share/zsh/site-functions/_brew-tap-cmd", :file? - assert_predicate HOMEBREW_PREFIX/"share/fish/vendor_completions.d/brew-tap-cmd.fish", :file? - shutup { tap.uninstall } - refute_predicate tap, :installed? - refute_predicate HOMEBREW_PREFIX/"share/man/man1/brew-tap-cmd.1", :exist? - refute_predicate HOMEBREW_PREFIX/"share/man/man1", :exist? - refute_predicate HOMEBREW_PREFIX/"etc/bash_completion.d/brew-tap-cmd", :exist? - refute_predicate HOMEBREW_PREFIX/"share/zsh/site-functions/_brew-tap-cmd", :exist? - refute_predicate HOMEBREW_PREFIX/"share/fish/vendor_completions.d/brew-tap-cmd.fish", :exist? - ensure - (HOMEBREW_PREFIX/"etc").rmtree if (HOMEBREW_PREFIX/"etc").exist? - (HOMEBREW_PREFIX/"share").rmtree if (HOMEBREW_PREFIX/"share").exist? - end - - def test_link_completions_and_manpages - setup_tap_files - setup_git_repo - tap = Tap.new("Homebrew", "baz") - shutup { tap.install clone_target: @tap.path/".git" } - (HOMEBREW_PREFIX/"share/man/man1/brew-tap-cmd.1").delete - (HOMEBREW_PREFIX/"etc/bash_completion.d/brew-tap-cmd").delete - (HOMEBREW_PREFIX/"share/zsh/site-functions/_brew-tap-cmd").delete - (HOMEBREW_PREFIX/"share/fish/vendor_completions.d/brew-tap-cmd.fish").delete - shutup { tap.link_completions_and_manpages } - assert_predicate HOMEBREW_PREFIX/"share/man/man1/brew-tap-cmd.1", :file? - assert_predicate HOMEBREW_PREFIX/"etc/bash_completion.d/brew-tap-cmd", :file? - assert_predicate HOMEBREW_PREFIX/"share/zsh/site-functions/_brew-tap-cmd", :file? - assert_predicate HOMEBREW_PREFIX/"share/fish/vendor_completions.d/brew-tap-cmd.fish", :file? - shutup { tap.uninstall } - ensure - (HOMEBREW_PREFIX/"etc").rmtree if (HOMEBREW_PREFIX/"etc").exist? - (HOMEBREW_PREFIX/"share").rmtree if (HOMEBREW_PREFIX/"share").exist? - end - - def test_pin_and_unpin - refute_predicate @tap, :pinned? - assert_raises(TapPinStatusError) { @tap.unpin } - @tap.pin - assert_predicate @tap, :pinned? - assert_raises(TapPinStatusError) { @tap.pin } - @tap.unpin - refute_predicate @tap, :pinned? - end - - def test_config - setup_git_repo - - assert_nil @tap.config["foo"] - @tap.config["foo"] = "bar" - assert_equal "bar", @tap.config["foo"] - @tap.config["foo"] = nil - assert_nil @tap.config["foo"] - end -end - -class CoreTapTest < Homebrew::TestCase - include FileUtils - - def setup - super - @repo = CoreTap.new - end - - def test_attributes - assert_equal "Homebrew", @repo.user - assert_equal "core", @repo.repo - assert_equal "homebrew/core", @repo.name - assert_equal [], @repo.command_files - assert_predicate @repo, :installed? - refute_predicate @repo, :pinned? - assert_predicate @repo, :official? - assert_predicate @repo, :core_tap? - end - - def test_forbidden_operations - assert_raises(RuntimeError) { @repo.uninstall } - assert_raises(RuntimeError) { @repo.pin } - assert_raises(RuntimeError) { @repo.unpin } - end - - def test_files - @formula_file = @repo.formula_dir/"foo.rb" - @formula_file.write <<-EOS.undent - class Foo < Formula - url "https://example.com/foo-1.0.tar.gz" - end - EOS - @alias_file = @repo.alias_dir/"bar" - @alias_file.parent.mkpath - ln_s @formula_file, @alias_file - - assert_equal [@formula_file], @repo.formula_files - assert_equal ["foo"], @repo.formula_names - assert_equal [@alias_file], @repo.alias_files - assert_equal ["bar"], @repo.aliases - assert_equal @repo.alias_table, "bar" => "foo" - assert_equal @repo.alias_reverse_table, "foo" => ["bar"] - end -end -- GitLab