diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2017-02-26 15:22:08 -0800 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2017-02-28 11:19:49 -0800 |
commit | 7ee1d70692864b4496176acac9e6ed8196aa53cb (patch) | |
tree | f149e79f9b38c2923dc1f69857d53386cc6720ce | |
parent | ec52255d450f04055ae3a558043874f8eae97cfa (diff) | |
download | chef-7ee1d70692864b4496176acac9e6ed8196aa53cb.tar.gz |
Chef 13: script resources (and e.g. bash) require 'code' property
Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
-rw-r--r-- | lib/chef/resource/script.rb | 30 | ||||
-rw-r--r-- | spec/functional/resource/bash_spec.rb | 56 |
2 files changed, 15 insertions, 71 deletions
diff --git a/lib/chef/resource/script.rb b/lib/chef/resource/script.rb index e1d71c2924..5039e2d8fe 100644 --- a/lib/chef/resource/script.rb +++ b/lib/chef/resource/script.rb @@ -28,12 +28,10 @@ class Chef def initialize(name, run_context = nil) super @command = nil - @code = nil - @interpreter = nil - @flags = nil @default_guard_interpreter = :default end + # FIXME: remove this and use an execute sub-resource instead of inheriting from Execute def command(arg = nil) unless arg.nil? raise Chef::Exceptions::Script, "Do not use the command attribute on a #{resource_name} resource, use the 'code' attribute instead." @@ -41,29 +39,9 @@ class Chef super end - def code(arg = nil) - set_or_return( - :code, - arg, - :kind_of => [ String ] - ) - end - - def interpreter(arg = nil) - set_or_return( - :interpreter, - arg, - :kind_of => [ String ] - ) - end - - def flags(arg = nil) - set_or_return( - :flags, - arg, - :kind_of => [ String ] - ) - end + property :code, String, required: true + property :interpreter, String + property :flags, String end end diff --git a/spec/functional/resource/bash_spec.rb b/spec/functional/resource/bash_spec.rb index a2e174d557..4a5fee64bc 100644 --- a/spec/functional/resource/bash_spec.rb +++ b/spec/functional/resource/bash_spec.rb @@ -1,6 +1,6 @@ # # Author:: Serdar Sutay (<serdar@chef.io>) -# Copyright:: Copyright 2014-2016, Chef Software Inc. +# Copyright:: Copyright 2014-2017, Chef Software Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -23,59 +23,25 @@ describe Chef::Resource::Bash, :unix_only do let(:code) { "echo hello" } let(:resource) do resource = Chef::Resource::Bash.new("foo_resource", run_context) - resource.code(code) + resource.code(code) unless code.nil? resource end describe "when setting the command attribute" do let (:command) { "wizard racket" } - # in Chef-12 the `command` attribute is largely useless, but does set the identity attribute - # so that notifications need to target the value of the command. it will not run the `command` - # and if it is given without a code block then it does nothing and always succeeds. - describe "in Chef-12", chef: "< 13" do - it "gets the commmand attribute from the name" do - expect(resource.command).to eql("foo_resource") - end - - it "sets the resource identity to the command name" do - resource.command command - expect(resource.identity).to eql(command) - end - - it "warns when the code is not present and a useless `command` is present" do - expect(Chef::Log).to receive(:warn).with(/coding error/) - expect(Chef::Log).to receive(:warn).with(/deprecated/) - resource.code nil - resource.command command - expect { resource.run_action(:run) }.not_to raise_error - end - - describe "when the code is not present" do - let(:code) { nil } - it "warns" do - expect(Chef::Log).to receive(:warn) - expect { resource.run_action(:run) }.not_to raise_error - end - end + it "should raise an exception when trying to set the command" do + expect { resource.command command }.to raise_error(Chef::Exceptions::Script) end - # in Chef-13 the `command` attribute needs to be for internal use only - describe "in Chef-13", chef: ">= 13" do - it "should raise an exception when trying to set the command" do - expect { resource.command command }.to raise_error # FIXME: add a real error in Chef-13 - end - - it "should initialize the command to nil" do - expect(resource.command).to be_nil - end + it "should initialize the command to nil" do + expect(resource.command).to be_nil + end - describe "when the code is not present" do - let(:code) { nil } - it "raises an exception" do - expect { resource.run_action(:run) }.to raise_error # FIXME: add a real error in Chef-13 - expect { resource.run_action(:run) }.not_to raise_error - end + describe "when the code is not present" do + let(:code) { nil } + it "raises an exception" do + expect { resource.run_action(:run) }.to raise_error(Chef::Exceptions::ValidationFailed) end end end |