diff options
author | John Keiser <john@johnkeiser.com> | 2015-06-04 10:27:26 -0700 |
---|---|---|
committer | John Keiser <john@johnkeiser.com> | 2015-06-18 15:26:08 -0700 |
commit | 3e7f7e428d4a79d0fa8f3bcdb597b0aaa34a3962 (patch) | |
tree | c3a7f97b49d408e1e4d85275d4f6f24e3fe91dd9 | |
parent | a0a6c8470159f37a5bbab806998787c07b827a9e (diff) | |
download | chef-3e7f7e428d4a79d0fa8f3bcdb597b0aaa34a3962.tar.gz |
Ensure validators don't run against initial values
-rw-r--r-- | lib/chef/mixin/params_validate.rb | 1 | ||||
-rw-r--r-- | spec/unit/property/validation_spec.rb | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/lib/chef/mixin/params_validate.rb b/lib/chef/mixin/params_validate.rb index 9cd70eede7..142c582cdd 100644 --- a/lib/chef/mixin/params_validate.rb +++ b/lib/chef/mixin/params_validate.rb @@ -252,6 +252,7 @@ class Chef # Compare the way "case" would (i.e. `===`) def _pv_is(opts, key, to_be, raise_error: true) + return true if !opts.has_key?(key.to_s) && !opts.has_key?(key.to_sym) value = _pv_opts_lookup(opts, key) to_be = [ to_be ].flatten(1) to_be.each do |tb| diff --git a/spec/unit/property/validation_spec.rb b/spec/unit/property/validation_spec.rb index d37d23b437..14be7dc271 100644 --- a/spec/unit/property/validation_spec.rb +++ b/spec/unit/property/validation_spec.rb @@ -74,6 +74,9 @@ describe "Chef::Resource.property validation" do def self.validation_test(validation, success_values, failure_values, getter_values=[], *tags) with_property ":x, #{validation}", *tags do + it "gets nil when retrieving the initial (non-set) value" do + expect(resource.x).to be_nil + end success_values.each do |v| it "value #{v.inspect} is valid" do resource.instance_eval { @x = 'default' } |