aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMarkus Reiter2017-05-19 21:48:21 +0200
committerMarkus Reiter2017-05-22 02:51:16 +0200
commit66e9a060dea952a23bb6f9b40d88f2571254be6a (patch)
tree6ecea103b37f14428303851f88c265e1d6d5dbd4 /Library
parent1f5828c72de87ce87df31fad1c1046a6bcf4a994 (diff)
downloadbrew-66e9a060dea952a23bb6f9b40d88f2571254be6a.tar.bz2
Refactor `CLI::Home`.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cask/lib/hbc/cli/home.rb23
-rw-r--r--Library/Homebrew/test/cask/cli/home_spec.rb41
2 files changed, 24 insertions, 40 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/cli/home.rb b/Library/Homebrew/cask/lib/hbc/cli/home.rb
index 66be49186..882cb67af 100644
--- a/Library/Homebrew/cask/lib/hbc/cli/home.rb
+++ b/Library/Homebrew/cask/lib/hbc/cli/home.rb
@@ -1,19 +1,28 @@
module Hbc
class CLI
class Home < Base
- def self.run(*cask_tokens)
- if cask_tokens.empty?
+ def self.run(*args)
+ new(*args).run
+ end
+
+ def run
+ casks = @args.map(&CaskLoader.public_method(:load))
+
+ if casks.empty?
odebug "Opening project homepage"
- system "/usr/bin/open", "--", "https://caskroom.github.io/"
+ self.class.open_url "https://caskroom.github.io/"
else
- cask_tokens.each do |cask_token|
- odebug "Opening homepage for Cask #{cask_token}"
- cask = CaskLoader.load(cask_token)
- system "/usr/bin/open", "--", cask.homepage
+ casks.each do |cask|
+ odebug "Opening homepage for Cask #{cask}"
+ self.class.open_url cask.homepage
end
end
end
+ def self.open_url(url)
+ SystemCommand.run!(OS::PATH_OPEN, args: ["--", url])
+ end
+
def self.help
"opens the homepage of the given Cask"
end
diff --git a/Library/Homebrew/test/cask/cli/home_spec.rb b/Library/Homebrew/test/cask/cli/home_spec.rb
index 7be26dd4c..e985fb6cd 100644
--- a/Library/Homebrew/test/cask/cli/home_spec.rb
+++ b/Library/Homebrew/test/cask/cli/home_spec.rb
@@ -1,46 +1,21 @@
-# monkeypatch for testing
-module Hbc
- class CLI
- class Home
- def self.system(*command)
- system_commands << command
- end
-
- def self.reset!
- @system_commands = []
- end
-
- def self.system_commands
- @system_commands ||= []
- end
- end
- end
-end
-
describe Hbc::CLI::Home, :cask do
before do
- Hbc::CLI::Home.reset!
+ allow(described_class).to receive(:open_url)
end
it "opens the homepage for the specified Cask" do
- Hbc::CLI::Home.run("local-caffeine")
- expect(Hbc::CLI::Home.system_commands).to eq [
- ["/usr/bin/open", "--", "http://example.com/local-caffeine"],
- ]
+ expect(described_class).to receive(:open_url).with("http://example.com/local-caffeine")
+ described_class.run("local-caffeine")
end
it "works for multiple Casks" do
- Hbc::CLI::Home.run("local-caffeine", "local-transmission")
- expect(Hbc::CLI::Home.system_commands).to eq [
- ["/usr/bin/open", "--", "http://example.com/local-caffeine"],
- ["/usr/bin/open", "--", "http://example.com/local-transmission"],
- ]
+ expect(described_class).to receive(:open_url).with("http://example.com/local-caffeine")
+ expect(described_class).to receive(:open_url).with("http://example.com/local-transmission")
+ described_class.run("local-caffeine", "local-transmission")
end
it "opens the project page when no Cask is specified" do
- Hbc::CLI::Home.run
- expect(Hbc::CLI::Home.system_commands).to eq [
- ["/usr/bin/open", "--", "https://caskroom.github.io/"],
- ]
+ expect(described_class).to receive(:open_url).with("https://caskroom.github.io/")
+ described_class.run
end
end