Convert postflight test to spec.

This commit is contained in:
Markus Reiter 2017-02-09 03:57:53 +01:00
parent ba61d3ca6b
commit e7c943b561
3 changed files with 63 additions and 30 deletions

View File

@ -1,4 +1,4 @@
require "test_helper"
require "spec_helper"
describe Hbc::DSL::Postflight do
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/basic-cask.rb") }

View File

@ -1,15 +1,19 @@
require "test_helper"
require "spec_helper"
shared_examples_for Hbc::Staged do
require "hbc/staged"
shared_examples Hbc::Staged do
let(:fake_pathname_exists) {
fake_pathname = Pathname("/path/to/file/that/exists")
fake_pathname.stubs(exist?: true, expand_path: fake_pathname)
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("/path/to/file/that/does/not/exist")
fake_pathname.stubs(exist?: false, expand_path: fake_pathname)
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
}
@ -17,93 +21,123 @@ shared_examples_for Hbc::Staged do
Hbc::FakeSystemCommand.expects_command(
["echo", "homebrew-cask", "rocks!"]
)
staged.system_command("echo", args: ["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
staged.info_plist_file.to_s.must_include Hbc.appdir.join("TestCask.app/Contents/Info.plist")
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
staged.stubs(bundle_identifier: "com.example.BasicCask")
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]
)
staged.plist_exec("Print CFBundleIdentifier")
shutup do
staged.plist_exec("Print CFBundleIdentifier")
end
end
it "can set a key in the Info.plist file" do
staged.stubs(bundle_identifier: "com.example.BasicCask")
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]
)
staged.plist_set(":JVMOptions:JVMVersion", "1.6+")
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
staged.stubs(Pathname: fake_pathname)
allow(staged).to receive(:Pathname).and_return(fake_pathname)
Hbc::FakeSystemCommand.expects_command(
["/bin/chmod", "-R", "--", "777", fake_pathname]
)
staged.set_permissions(fake_pathname.to_s, "777")
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
staged.stubs(:Pathname).returns(fake_pathname)
allow(staged).to receive(:Pathname).and_return(fake_pathname)
Hbc::FakeSystemCommand.expects_command(
["/bin/chmod", "-R", "--", "777", fake_pathname, fake_pathname]
)
staged.set_permissions([fake_pathname.to_s, fake_pathname.to_s], "777")
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
staged.stubs(Pathname: fake_pathname)
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
staged.stubs(current_user: "fake_user")
fake_pathname = fake_pathname_exists
staged.stubs(Pathname: fake_pathname)
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]
)
staged.set_ownership(fake_pathname.to_s)
shutup do
staged.set_ownership(fake_pathname.to_s)
end
end
it "can set the ownership of multiple files" do
staged.stubs(current_user: "fake_user")
fake_pathname = fake_pathname_exists
staged.stubs(Pathname: fake_pathname)
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]
)
staged.set_ownership([fake_pathname.to_s, fake_pathname.to_s])
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
staged.stubs(Pathname: fake_pathname)
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]
)
staged.set_ownership(fake_pathname.to_s, user: "other_user", group: "other_group")
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
staged.stubs(current_user: "fake_user")
allow(staged).to receive(:current_user).and_return("fake_user")
fake_pathname = fake_pathname_does_not_exist
staged.stubs(Pathname: fake_pathname)
staged.set_ownership(fake_pathname.to_s)
allow(staged).to receive(:Pathname).and_return(fake_pathname)
shutup do
staged.set_ownership(fake_pathname.to_s)
end
end
end

View File

@ -93,7 +93,6 @@ end
# Extend MiniTest API with support for RSpec-style shared examples
require "support/shared_examples"
require "support/shared_examples/staged.rb"
require "support/fake_dirs"
require "support/fake_system_command"