ridley 2.4.2 → 2.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 362b667bff0340e4cba7d750a251c91003811218
4
- data.tar.gz: 173dd3384ef80483faa2d7f4137e2ffca339a310
3
+ metadata.gz: 76add10f7d0cfee05331ae99481f011e868261db
4
+ data.tar.gz: 571ef4c873bbb8ab9697d87f008b0f6dfea9fdbb
5
5
  SHA512:
6
- metadata.gz: 21d2e559ff5a3dc38a4dbae1fed6b33013aa8612771bac3199442ed7844eeea767fcc5a8affa920df3a2c48f2872b33709b81cab643655d4f9d683105325d215
7
- data.tar.gz: 07af89b3508d66d6533ac7b8c7353ca015d461fd240a9942b6af6466b6457b85027fffa8067b4e18f4405abc98ef34e614284a5830c55fd8407455c56e934158
6
+ metadata.gz: a9e15f5a280702aa0b60f05dfddf10da424c0ab4c0c885cc92fe8e29bb47ba0b115fa015e26f605012c4809fca15af79b4557be197e1c75269f3b350b7d24fc1
7
+ data.tar.gz: 1b1daa08465102f140943cbc8f4209d15136f6c3006d25f4fb87b85e843ae0f9984cbd56476a19d4ed86bd3097a27261179512f50d390ee6516d2587ec5bdace
@@ -1 +1 @@
1
- 2.0.0-p353
1
+ 2.0.0-p353
@@ -1,3 +1,7 @@
1
+ # 2.4.3
2
+
3
+ * [#245](https://github.com/RiotGames/ridley/pull/245) Fix for numeric and boolean attribute types
4
+
1
5
  # 2.4.2
2
6
 
3
7
  * [#244](https://github.com/RiotGames/ridley/pull/244) Fix a bug with deleting deeply nested environment attributes.
@@ -393,14 +393,14 @@ module Ridley::Chef
393
393
  :description => { :kind_of => String },
394
394
  :choice => { :kind_of => [ Array ], :default => [] },
395
395
  :calculated => { :equal_to => [ true, false ], :default => false },
396
- :type => { :equal_to => [ "string", "array", "hash", "symbol" ], :default => "string" },
396
+ :type => { :equal_to => [ "string", "array", "hash", "symbol", "boolean", "numeric" ], :default => "string" },
397
397
  :required => { :equal_to => [ "required", "recommended", "optional", true, false ], :default => "optional" },
398
398
  :recipes => { :kind_of => [ Array ], :default => [] },
399
- :default => { :kind_of => [ String, Array, Hash ] }
399
+ :default => { :kind_of => [ String, Array, Hash, Symbol, Numeric, TrueClass, FalseClass ] }
400
400
  }
401
401
  )
402
402
  options[:required] = remap_required_attribute(options[:required]) unless options[:required].nil?
403
- validate_string_array(options[:choice])
403
+ validate_choice_array(options)
404
404
  validate_calculated_default_rule(options)
405
405
  validate_choice_default_rule(options)
406
406
 
@@ -488,6 +488,34 @@ module Ridley::Chef
488
488
  end
489
489
  end
490
490
 
491
+ # Validate the choice of the options hash
492
+ #
493
+ # Raise an exception if the members of the array do not match the defaults
494
+ # === Parameters
495
+ # opts<Hash>:: The options hash
496
+ def validate_choice_array(opts)
497
+ if opts[:choice].kind_of?(Array)
498
+ case opts[:type]
499
+ when "string"
500
+ validator = [ String ]
501
+ when "array"
502
+ validator = [ Array ]
503
+ when "hash"
504
+ validator = [ Hash ]
505
+ when "symbol"
506
+ validator = [ Symbol ]
507
+ when "boolean"
508
+ validator = [ TrueClass, FalseClass ]
509
+ when "numeric"
510
+ validator = [ Numeric ]
511
+ end
512
+
513
+ opts[:choice].each do |choice|
514
+ validate( {:choice => choice}, {:choice => {:kind_of => validator}} )
515
+ end
516
+ end
517
+ end
518
+
491
519
  # For backwards compatibility, remap Boolean values to String
492
520
  # true is mapped to "required"
493
521
  # false is mapped to "optional"
@@ -1,3 +1,3 @@
1
1
  module Ridley
2
- VERSION = "2.4.2"
2
+ VERSION = "2.4.3"
3
3
  end
@@ -5,3 +5,15 @@ license "Apache 2.0"
5
5
  description "Installs/Configures example_cookbook"
6
6
  long_description IO.read(File.join(File.dirname(__FILE__), "README.md"))
7
7
  version "0.1.0"
8
+
9
+ attribute "example_cookbook/test",
10
+ :display_name => "Test",
11
+ :description => "Test Attribute",
12
+ :choice => [
13
+ "test1",
14
+ "test2" ],
15
+ :type => "string",
16
+ :required => "recommended",
17
+ :recipes => [ 'example_cookbook::default' ],
18
+ :default => "test1"
19
+
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ridley::Chef::Cookbook::Metadata do
4
+
5
+ let(:metadata) do
6
+ described_class.new
7
+ end
8
+
9
+ before(:each) do
10
+ subject { metadata }
11
+ end
12
+
13
+ describe "#validate_choice_array" do
14
+ it "should limit the types allowed in the choice array." do
15
+ options = {
16
+ :type => "string",
17
+ :choice => [ "test1", "test2" ],
18
+ :default => "test1"
19
+ }
20
+ lambda {
21
+ subject.attribute("test_cookbook/test", options)
22
+ }.should_not raise_error
23
+
24
+ options = {
25
+ :type => "boolean",
26
+ :choice => [ true, false ],
27
+ :default => true
28
+ }
29
+ lambda {
30
+ subject.attribute("test_cookbook/test", options)
31
+ }.should_not raise_error
32
+
33
+ options = {
34
+ :type => "numeric",
35
+ :choice => [ 1337, 420 ],
36
+ :default => 1337
37
+ }
38
+ lambda {
39
+ subject.attribute("test_cookbook/test", options)
40
+ }.should_not raise_error
41
+
42
+ options = {
43
+ :type => "numeric",
44
+ :choice => [ true, "false" ],
45
+ :default => false
46
+ }
47
+ lambda {
48
+ subject.attribute("test_cookbook/test", options)
49
+ }.should raise_error
50
+ end
51
+ end
52
+ end
@@ -130,17 +130,17 @@ describe Ridley::CookbookResource do
130
130
  # the ignored files weren't uploaded, so we just check that the
131
131
  # non-ignored files are the ONLY thing uploaded
132
132
  sandbox_resource.should_receive(:create).with([
133
- "211a3a8798d4acd424af15ff8a2e28a5",
134
- "75077ba33d2887cc1746d1ef716bf8b7",
135
- "7b1ebd2ff580ca9dc46fb27ec1653bf2",
136
- "83128904bdb43eeeef131535c4a2ce8e",
137
- "a39eb80def9804f4b118099697cc2cd2",
138
- "b70ba735f3af47e5d6fc71b91775b34c",
139
- "cafb6869fca13f5c36f24a60de8fb982",
140
- "dbf3a6c4ab68a86172be748aced9f46e",
141
- "dc6461b5da25775f3ef6a9cc1f6cff9f",
142
- "e77856b411b6dcbb2c76c281091ad922",
143
- "e9a2e24281cfbd6be0a6b1af3b6d277e",
133
+ "211a3a8798d4acd424af15ff8a2e28a5",
134
+ "4f9051c3ac8031bdaff10300fa92e817",
135
+ "75077ba33d2887cc1746d1ef716bf8b7",
136
+ "7b1ebd2ff580ca9dc46fb27ec1653bf2",
137
+ "84e12365e6f4ebe7db6a0e6a92473b16",
138
+ "a39eb80def9804f4b118099697cc2cd2",
139
+ "b70ba735f3af47e5d6fc71b91775b34c",
140
+ "cafb6869fca13f5c36f24a60de8fb982",
141
+ "dbf3a6c4ab68a86172be748aced9f46e",
142
+ "dc6461b5da25775f3ef6a9cc1f6cff9f",
143
+ "e9a2e24281cfbd6be0a6b1af3b6d277e"
144
144
  ]).and_return(sandbox)
145
145
 
146
146
  subject.upload(cookbook_path, validate: false)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ridley
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.2
4
+ version: 2.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Winsor
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-28 00:00:00.000000000 Z
12
+ date: 2014-02-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: addressable
@@ -367,6 +367,7 @@ files:
367
367
  - spec/unit/ridley/bootstrap_context/windows_spec.rb
368
368
  - spec/unit/ridley/bootstrap_context_spec.rb
369
369
  - spec/unit/ridley/chef/chefignore_spec.rb
370
+ - spec/unit/ridley/chef/cookbook/metadata_spec.rb
370
371
  - spec/unit/ridley/chef/cookbook/syntax_check_spec.rb
371
372
  - spec/unit/ridley/chef/cookbook_spec.rb
372
373
  - spec/unit/ridley/chef/digester_spec.rb
@@ -466,6 +467,7 @@ test_files:
466
467
  - spec/unit/ridley/bootstrap_context/windows_spec.rb
467
468
  - spec/unit/ridley/bootstrap_context_spec.rb
468
469
  - spec/unit/ridley/chef/chefignore_spec.rb
470
+ - spec/unit/ridley/chef/cookbook/metadata_spec.rb
469
471
  - spec/unit/ridley/chef/cookbook/syntax_check_spec.rb
470
472
  - spec/unit/ridley/chef/cookbook_spec.rb
471
473
  - spec/unit/ridley/chef/digester_spec.rb