aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cask/spec/support/shared_examples
diff options
context:
space:
mode:
authorMarkus Reiter2017-02-10 20:30:18 +0100
committerGitHub2017-02-10 20:30:18 +0100
commit5a90d6e853af68b94b9a3c21f94b283abd32638d (patch)
tree7ccaf0268385f3d7c0d52e866426798a2f524917 /Library/Homebrew/cask/spec/support/shared_examples
parent943959b4f2b127496488cf8bf5544cc7ddc410b0 (diff)
parent31b9dc28e3105d9164fb28d7e29985ba1f1775eb (diff)
downloadbrew-5a90d6e853af68b94b9a3c21f94b283abd32638d.tar.bz2
Merge pull request #1978 from reitermarkus/convert-to-spec
Convert all Cask tests to RSpec.
Diffstat (limited to 'Library/Homebrew/cask/spec/support/shared_examples')
-rw-r--r--Library/Homebrew/cask/spec/support/shared_examples/dsl_base.rb23
-rw-r--r--Library/Homebrew/cask/spec/support/shared_examples/staged.rb143
2 files changed, 166 insertions, 0 deletions
diff --git a/Library/Homebrew/cask/spec/support/shared_examples/dsl_base.rb b/Library/Homebrew/cask/spec/support/shared_examples/dsl_base.rb
new file mode 100644
index 000000000..400ff40f6
--- /dev/null
+++ b/Library/Homebrew/cask/spec/support/shared_examples/dsl_base.rb
@@ -0,0 +1,23 @@
+require "hbc/dsl/base"
+
+shared_examples Hbc::DSL::Base do
+ it "supports the token method" do
+ expect(dsl.token).to eq(cask.token)
+ end
+
+ it "supports the version method" do
+ expect(dsl.version).to eq(cask.version)
+ end
+
+ it "supports the caskroom_path method" do
+ expect(dsl.caskroom_path).to eq(cask.caskroom_path)
+ end
+
+ it "supports the staged_path method" do
+ expect(dsl.staged_path).to eq(cask.staged_path)
+ end
+
+ it "supports the appdir method" do
+ expect(dsl.appdir).to eq(cask.appdir)
+ end
+end
diff --git a/Library/Homebrew/cask/spec/support/shared_examples/staged.rb b/Library/Homebrew/cask/spec/support/shared_examples/staged.rb
new file mode 100644
index 000000000..f791696ac
--- /dev/null
+++ b/Library/Homebrew/cask/spec/support/shared_examples/staged.rb
@@ -0,0 +1,143 @@
+require "spec_helper"
+
+require "hbc/staged"
+
+shared_examples Hbc::Staged do
+ let(:fake_pathname_exists) {
+ fake_pathname = Pathname.new("/path/to/file/that/exists")
+ allow(fake_pathname).to receive(:exist?).and_return(true)
+ allow(fake_pathname).to receive(:expand_path).and_return(fake_pathname)
+ fake_pathname
+ }
+
+ let(:fake_pathname_does_not_exist) {
+ fake_pathname = Pathname.new("/path/to/file/that/does/not/exist")
+ allow(fake_pathname).to receive(:exist?).and_return(false)
+ allow(fake_pathname).to receive(:expand_path).and_return(fake_pathname)
+ fake_pathname
+ }
+
+ it "can run system commands with list-form arguments" do
+ Hbc::FakeSystemCommand.expects_command(
+ ["echo", "homebrew-cask", "rocks!"]
+ )
+
+ shutup do
+ staged.system_command("echo", args: ["homebrew-cask", "rocks!"])
+ end
+ end
+
+ it "can get the Info.plist file for the primary app" do
+ expect(staged.info_plist_file.to_s).to include Hbc.appdir.join("TestCask.app/Contents/Info.plist")
+ end
+
+ it "can execute commands on the Info.plist file" do
+ allow(staged).to receive(:bundle_identifier).and_return("com.example.BasicCask")
+
+ Hbc::FakeSystemCommand.expects_command(
+ ["/usr/libexec/PlistBuddy", "-c", "Print CFBundleIdentifier", staged.info_plist_file]
+ )
+
+ shutup do
+ staged.plist_exec("Print CFBundleIdentifier")
+ end
+ end
+
+ it "can set a key in the Info.plist file" do
+ allow(staged).to receive(:bundle_identifier).and_return("com.example.BasicCask")
+
+ Hbc::FakeSystemCommand.expects_command(
+ ["/usr/libexec/PlistBuddy", "-c", "Set :JVMOptions:JVMVersion 1.6+", staged.info_plist_file]
+ )
+
+ shutup do
+ staged.plist_set(":JVMOptions:JVMVersion", "1.6+")
+ end
+ end
+
+ it "can set the permissions of a file" do
+ fake_pathname = fake_pathname_exists
+ allow(staged).to receive(:Pathname).and_return(fake_pathname)
+
+ Hbc::FakeSystemCommand.expects_command(
+ ["/bin/chmod", "-R", "--", "777", fake_pathname]
+ )
+
+ shutup do
+ staged.set_permissions(fake_pathname.to_s, "777")
+ end
+ end
+
+ it "can set the permissions of multiple files" do
+ fake_pathname = fake_pathname_exists
+ allow(staged).to receive(:Pathname).and_return(fake_pathname)
+
+ Hbc::FakeSystemCommand.expects_command(
+ ["/bin/chmod", "-R", "--", "777", fake_pathname, fake_pathname]
+ )
+
+ shutup do
+ staged.set_permissions([fake_pathname.to_s, fake_pathname.to_s], "777")
+ end
+ end
+
+ it "cannot set the permissions of a file that does not exist" do
+ fake_pathname = fake_pathname_does_not_exist
+ allow(staged).to receive(:Pathname).and_return(fake_pathname)
+ staged.set_permissions(fake_pathname.to_s, "777")
+ end
+
+ it "can set the ownership of a file" do
+ fake_pathname = fake_pathname_exists
+
+ allow(staged).to receive(:current_user).and_return("fake_user")
+ allow(staged).to receive(:Pathname).and_return(fake_pathname)
+
+ Hbc::FakeSystemCommand.expects_command(
+ ["/usr/bin/sudo", "-E", "--", "/usr/sbin/chown", "-R", "--", "fake_user:staff", fake_pathname]
+ )
+
+ shutup do
+ staged.set_ownership(fake_pathname.to_s)
+ end
+ end
+
+ it "can set the ownership of multiple files" do
+ fake_pathname = fake_pathname_exists
+
+ allow(staged).to receive(:current_user).and_return("fake_user")
+ allow(staged).to receive(:Pathname).and_return(fake_pathname)
+
+ Hbc::FakeSystemCommand.expects_command(
+ ["/usr/bin/sudo", "-E", "--", "/usr/sbin/chown", "-R", "--", "fake_user:staff", fake_pathname, fake_pathname]
+ )
+
+ shutup do
+ staged.set_ownership([fake_pathname.to_s, fake_pathname.to_s])
+ end
+ end
+
+ it "can set the ownership of a file with a different user and group" do
+ fake_pathname = fake_pathname_exists
+
+ allow(staged).to receive(:Pathname).and_return(fake_pathname)
+
+ Hbc::FakeSystemCommand.expects_command(
+ ["/usr/bin/sudo", "-E", "--", "/usr/sbin/chown", "-R", "--", "other_user:other_group", fake_pathname]
+ )
+
+ shutup do
+ staged.set_ownership(fake_pathname.to_s, user: "other_user", group: "other_group")
+ end
+ end
+
+ it "cannot set the ownership of a file that does not exist" do
+ allow(staged).to receive(:current_user).and_return("fake_user")
+ fake_pathname = fake_pathname_does_not_exist
+ allow(staged).to receive(:Pathname).and_return(fake_pathname)
+
+ shutup do
+ staged.set_ownership(fake_pathname.to_s)
+ end
+ end
+end