diff options
-rw-r--r-- | lib/chef/mixin/properties.rb | 1 | ||||
-rw-r--r-- | lib/chef/property.rb | 12 | ||||
-rw-r--r-- | spec/unit/mixin/properties_spec.rb | 6 |
3 files changed, 17 insertions, 2 deletions
diff --git a/lib/chef/mixin/properties.rb b/lib/chef/mixin/properties.rb index bb08f773da..6b95b87063 100644 --- a/lib/chef/mixin/properties.rb +++ b/lib/chef/mixin/properties.rb @@ -76,6 +76,7 @@ class Chef # be run in the context of the instance (and able to access other # properties). # @option options [String] :description A description of the property. + # @option options [String] :introduced The release that introduced this property # @option options [Boolean] :desired_state `true` if this property is # part of desired state. Defaults to `true`. # @option options [Boolean] :identity `true` if this property diff --git a/lib/chef/property.rb b/lib/chef/property.rb index 8ee9930c33..be54c8bfa1 100644 --- a/lib/chef/property.rb +++ b/lib/chef/property.rb @@ -65,6 +65,7 @@ class Chef # tied to this property. Must include a leading `@`. Defaults to `@<name>`. # `nil` means the property is opaque and not tied to a specific instance # variable. + # @option options [String] :introduced The release that introduced this property # @option options [Boolean] :desired_state `true` if this property is part of desired # state. Defaults to `true`. # @option options [Boolean] :identity `true` if this property is part of object @@ -168,6 +169,15 @@ class Chef end # + # When this property was introduced + # + # @return [String] + # + def introduced + options[:introduced] + end + + # # The instance variable associated with this property. # # Defaults to `@<name>` @@ -262,7 +272,7 @@ class Chef # def validation_options @validation_options ||= options.reject do |k, v| - [:declared_in, :name, :instance_variable_name, :desired_state, :identity, :default, :name_property, :coerce, :required, :nillable, :sensitive, :description].include?(k) + [:declared_in, :name, :instance_variable_name, :desired_state, :identity, :default, :name_property, :coerce, :required, :nillable, :sensitive, :description, :introduced].include?(k) end end diff --git a/spec/unit/mixin/properties_spec.rb b/spec/unit/mixin/properties_spec.rb index faf2d98558..ee0c252381 100644 --- a/spec/unit/mixin/properties_spec.rb +++ b/spec/unit/mixin/properties_spec.rb @@ -11,7 +11,7 @@ module ChefMixinPropertiesSpec property :a, "a", default: "a" property :ab, %w{a b}, default: "a" property :ac, %w{a c}, default: "a" - property :d, "d", description: "The d property" + property :d, "d", description: "The d property", introduced: "14.0" end context "and a module B with properties b, ab and bc" do @@ -41,6 +41,10 @@ module ChefMixinPropertiesSpec expect(A.properties[:d].description).to eq "The d property" end + it "A.properties can get the release that introduced `d`" do + expect(A.properties[:d].introduced).to eq "14.0" + end + it "B.properties has b, ab, and bc with types 'b', nil and ['b', 'c']" do expect(B.properties.keys).to eq [ :b, :ab, :bc ] expect(B.properties[:b].validation_options[:is]).to eq "b" |