aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/tap_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/test/tap_test.rb')
-rw-r--r--Library/Homebrew/test/tap_test.rb319
1 files changed, 0 insertions, 319 deletions
diff --git a/Library/Homebrew/test/tap_test.rb b/Library/Homebrew/test/tap_test.rb
deleted file mode 100644
index 25ecb5b74..000000000
--- 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