summaryrefslogtreecommitdiff
path: root/spec/unit
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2018-03-08 16:10:26 -0800
committerTim Smith <tsmith@chef.io>2018-03-20 10:24:17 -0700
commit7136bc0638e76c97bbbdcd2af3772def2a8dd2a1 (patch)
treebba0ca1acb5e893fecfa690048728c889d4a7ca2 /spec/unit
parenta1c333d0b260088029b681d296e47ea7376d402e (diff)
downloadchef-7136bc0638e76c97bbbdcd2af3772def2a8dd2a1.tar.gz
Update to the code from the homebrew 9.0 cookbook
This converts the Chef resources to shell_out and adds new properties for dealing with edge case installations. It also adds validation messaging / testing and lazy evals the stuff that uses the mixin. Signed-off-by: Tim Smith <tsmith@chef.io>
Diffstat (limited to 'spec/unit')
-rw-r--r--spec/unit/mixin/homebrew_user_spec.rb6
-rw-r--r--spec/unit/resource/homebrew_cask_spec.rb35
-rw-r--r--spec/unit/resource/homebrew_tap_spec.rb39
3 files changed, 75 insertions, 5 deletions
diff --git a/spec/unit/mixin/homebrew_user_spec.rb b/spec/unit/mixin/homebrew_user_spec.rb
index c9a6e6e909..67d79719aa 100644
--- a/spec/unit/mixin/homebrew_user_spec.rb
+++ b/spec/unit/mixin/homebrew_user_spec.rb
@@ -1,7 +1,7 @@
#
# Author:: Joshua Timberman (<joshua@chef.io>)
#
-# Copyright 2014-2016, Chef Software, Inc <legal@chef.io>
+# Copyright 2014-2018, Chef Software, Inc <legal@chef.io>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -23,10 +23,6 @@ class ExampleHomebrewUser
end
describe Chef::Mixin::HomebrewUser do
- before(:each) do
- node.default["homebrew"]["owner"] = nil
- end
-
let(:homebrew_user) { ExampleHomebrewUser.new }
let(:node) { Chef::Node.new }
diff --git a/spec/unit/resource/homebrew_cask_spec.rb b/spec/unit/resource/homebrew_cask_spec.rb
new file mode 100644
index 0000000000..9b04a0328d
--- /dev/null
+++ b/spec/unit/resource/homebrew_cask_spec.rb
@@ -0,0 +1,35 @@
+#
+# Copyright:: Copyright 2018, Chef Software, Inc.
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+require "spec_helper"
+
+describe Chef::Resource::HomebrewCask do
+
+ let(:resource) { Chef::Resource::HomebrewCask.new("myapp") }
+
+ it "has a resource name of :homebrew_cask" do
+ expect(resource.resource_name).to eql(:homebrew_cask)
+ end
+
+ it "has a default action of install" do
+ expect(resource.action).to eql([:install])
+ end
+
+ it "the cask_name property is the name property" do
+ expect(resource.cask_name).to eql("myapp")
+ end
+end
diff --git a/spec/unit/resource/homebrew_tap_spec.rb b/spec/unit/resource/homebrew_tap_spec.rb
new file mode 100644
index 0000000000..2b93c11c28
--- /dev/null
+++ b/spec/unit/resource/homebrew_tap_spec.rb
@@ -0,0 +1,39 @@
+#
+# Copyright:: Copyright 2018, Chef Software, Inc.
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+require "spec_helper"
+
+describe Chef::Resource::HomebrewTap do
+
+ let(:resource) { Chef::Resource::HomebrewTap.new("user/mytap") }
+
+ it "has a resource name of :homebrew_tap" do
+ expect(resource.resource_name).to eql(:homebrew_tap)
+ end
+
+ it "has a default action of tap" do
+ expect(resource.action).to eql([:tap])
+ end
+
+ it "the tap_name property is the name property" do
+ expect(resource.tap_name).to eql("user/mytap")
+ end
+
+ it "fails if tap_name isn't in the USER/TAP format" do
+ expect { resource.tap_name "mytap" }.to raise_error(ArgumentError)
+ end
+end