aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMarkus Reiter2017-02-09 03:04:07 +0100
committerMarkus Reiter2017-02-10 17:19:19 +0100
commitc431758f2dff931b69b16ab412dabacbe77380c0 (patch)
tree27aa15ea136d090954181ac78a48014c9bc87988 /Library
parente5e8f545b72f4a8849a915dfba1acce5f39ef3ab (diff)
downloadbrew-c431758f2dff931b69b16ab412dabacbe77380c0.tar.bz2
Convert Zap test to spec.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cask/spec/cask/artifact/zap_spec.rb (renamed from Library/Homebrew/cask/test/cask/artifact/zap_test.rb)32
-rw-r--r--Library/Homebrew/cask/spec/support/fake_system_command.rb77
2 files changed, 93 insertions, 16 deletions
diff --git a/Library/Homebrew/cask/test/cask/artifact/zap_test.rb b/Library/Homebrew/cask/spec/cask/artifact/zap_spec.rb
index 37a65f863..bd14cd6de 100644
--- a/Library/Homebrew/cask/test/cask/artifact/zap_test.rb
+++ b/Library/Homebrew/cask/spec/cask/artifact/zap_spec.rb
@@ -1,4 +1,4 @@
-require "test_helper"
+require "spec_helper"
# TODO: test that zap removes an alternate version of the same Cask
describe Hbc::Artifact::Zap do
@@ -8,9 +8,9 @@ describe Hbc::Artifact::Zap do
Hbc::Artifact::Zap.new(cask, command: Hbc::FakeSystemCommand)
}
- before do
+ before(:each) do
shutup do
- TestHelper.install_without_artifacts(cask)
+ InstallHelper.install_without_artifacts(cask)
end
end
@@ -21,7 +21,7 @@ describe Hbc::Artifact::Zap do
end
}
- describe "when using launchctl" do
+ context "when using launchctl" do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-zap-launchctl.rb") }
let(:launchctl_list_cmd) { %w[/bin/launchctl list my.fancy.package.service] }
let(:launchctl_remove_cmd) { %w[/bin/launchctl remove my.fancy.package.service] }
@@ -41,7 +41,7 @@ describe Hbc::Artifact::Zap do
EOS
}
- describe "when launchctl job is owned by user" do
+ context "when launchctl job is owned by user" do
it "can zap" do
Hbc::FakeSystemCommand.stubs_command(
launchctl_list_cmd,
@@ -78,7 +78,7 @@ describe Hbc::Artifact::Zap do
end
end
- describe "when using pkgutil" do
+ context "when using pkgutil" do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-zap-pkgutil.rb") }
let(:main_pkg_id) { "my.fancy.package.main" }
let(:agent_pkg_id) { "my.fancy.package.agent" }
@@ -164,7 +164,7 @@ describe Hbc::Artifact::Zap do
end
end
- describe "when using kext" do
+ context "when using kext" do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-zap-kext.rb") }
let(:kext_id) { "my.fancy.package.kernelextension" }
@@ -189,7 +189,7 @@ describe Hbc::Artifact::Zap do
end
end
- describe "when using quit" do
+ context "when using quit" do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-zap-quit.rb") }
let(:bundle_id) { "my.fancy.package.app" }
let(:quit_application_script) {
@@ -209,7 +209,7 @@ describe Hbc::Artifact::Zap do
end
end
- describe "when using signal" do
+ context "when using signal" do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-zap-signal.rb") }
let(:bundle_id) { "my.fancy.package.app" }
let(:signals) { %w[TERM KILL] }
@@ -221,14 +221,14 @@ describe Hbc::Artifact::Zap do
)
signals.each do |signal|
- Process.expects(:kill).with(signal, *unix_pids)
+ expect(Process).to receive(:kill).with(signal, *unix_pids)
end
subject
end
end
- describe "when using delete" do
+ context "when using delete" do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-zap-delete.rb") }
it "can zap" do
@@ -242,7 +242,7 @@ describe Hbc::Artifact::Zap do
end
end
- describe "when using trash" do
+ context "when using trash" do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-zap-trash.rb") }
it "can zap" do
@@ -256,7 +256,7 @@ describe Hbc::Artifact::Zap do
end
end
- describe "when using rmdir" do
+ context "when using rmdir" do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-zap-rmdir.rb") }
let(:dir_pathname) { Pathname.new("#{TEST_FIXTURE_DIR}/cask/empty_directory") }
@@ -273,7 +273,7 @@ describe Hbc::Artifact::Zap do
end
end
- describe "when using script" do
+ context "when using script" do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-zap-script.rb") }
let(:script_pathname) { cask.staged_path.join("MyFancyPkg", "FancyUninstaller.tool") }
@@ -288,7 +288,7 @@ describe Hbc::Artifact::Zap do
end
end
- describe "when using early_script" do
+ context "when using early_script" do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-zap-early-script.rb") }
let(:script_pathname) { cask.staged_path.join("MyFancyPkg", "FancyUninstaller.tool") }
@@ -303,7 +303,7 @@ describe Hbc::Artifact::Zap do
end
end
- describe "when using login_item" do
+ context "when using login_item" do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-zap-login-item.rb") }
it "can zap" do
diff --git a/Library/Homebrew/cask/spec/support/fake_system_command.rb b/Library/Homebrew/cask/spec/support/fake_system_command.rb
new file mode 100644
index 000000000..b9390d482
--- /dev/null
+++ b/Library/Homebrew/cask/spec/support/fake_system_command.rb
@@ -0,0 +1,77 @@
+def sudo(*args)
+ %w[/usr/bin/sudo -E --] + args.flatten
+end
+
+module Hbc
+ class FakeSystemCommand
+ def self.responses
+ @responses ||= {}
+ end
+
+ def self.expectations
+ @expectations ||= {}
+ end
+
+ def self.system_calls
+ @system_calls ||= Hash.new(0)
+ end
+
+ def self.clear
+ @responses = nil
+ @expectations = nil
+ @system_calls = nil
+ end
+
+ def self.stubs_command(command, response = "")
+ responses[command] = response
+ end
+
+ def self.expects_command(command, response = "", times = 1)
+ stubs_command(command, response)
+ expectations[command] = times
+ end
+
+ def self.expect_and_pass_through(command, times = 1)
+ pass_through = ->(cmd, opts) { Hbc::SystemCommand.run(cmd, opts) }
+ expects_command(command, pass_through, times)
+ end
+
+ def self.verify_expectations!
+ expectations.each do |command, times|
+ unless system_calls[command] == times
+ raise("expected #{command.inspect} to be run #{times} times, but got #{system_calls[command]}")
+ end
+ end
+ end
+
+ def self.run(command_string, options = {})
+ command = Hbc::SystemCommand.new(command_string, options).command
+ puts command
+ unless responses.key?(command)
+ raise("no response faked for #{command.inspect}, faked responses are: #{responses.inspect}")
+ end
+ system_calls[command] += 1
+
+ response = responses[command]
+ if response.respond_to?(:call)
+ response.call(command_string, options)
+ else
+ Hbc::SystemCommand::Result.new(command, response, "", 0)
+ end
+ end
+
+ def self.run!(command, options = {})
+ run(command, options.merge(must_succeed: true))
+ end
+ end
+end
+
+RSpec.configure do |config|
+ config.after(:each) do
+ begin
+ Hbc::FakeSystemCommand.verify_expectations!
+ ensure
+ Hbc::FakeSystemCommand.clear
+ end
+ end
+end