test-kitchen 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/.cane +1 -1
  3. data/.rubocop.yml +3 -0
  4. data/.travis.yml +20 -9
  5. data/CHANGELOG.md +219 -108
  6. data/Gemfile +10 -6
  7. data/Guardfile +38 -9
  8. data/README.md +11 -1
  9. data/Rakefile +21 -37
  10. data/bin/kitchen +4 -4
  11. data/features/kitchen_action_commands.feature +161 -0
  12. data/features/kitchen_console_command.feature +34 -0
  13. data/features/kitchen_diagnose_command.feature +64 -0
  14. data/features/kitchen_init_command.feature +29 -17
  15. data/features/kitchen_list_command.feature +2 -2
  16. data/features/kitchen_login_command.feature +56 -0
  17. data/features/{sink_command.feature → kitchen_sink_command.feature} +0 -0
  18. data/features/kitchen_test_command.feature +88 -0
  19. data/features/step_definitions/gem_steps.rb +8 -6
  20. data/features/step_definitions/git_steps.rb +4 -2
  21. data/features/step_definitions/output_steps.rb +5 -0
  22. data/features/support/env.rb +12 -9
  23. data/lib/kitchen.rb +60 -38
  24. data/lib/kitchen/base64_stream.rb +55 -0
  25. data/lib/kitchen/busser.rb +124 -58
  26. data/lib/kitchen/cli.rb +121 -38
  27. data/lib/kitchen/collection.rb +3 -3
  28. data/lib/kitchen/color.rb +4 -4
  29. data/lib/kitchen/command.rb +78 -11
  30. data/lib/kitchen/command/action.rb +3 -2
  31. data/lib/kitchen/command/console.rb +12 -5
  32. data/lib/kitchen/command/diagnose.rb +17 -3
  33. data/lib/kitchen/command/driver_discover.rb +26 -7
  34. data/lib/kitchen/command/exec.rb +41 -0
  35. data/lib/kitchen/command/list.rb +44 -14
  36. data/lib/kitchen/command/login.rb +2 -1
  37. data/lib/kitchen/command/sink.rb +2 -1
  38. data/lib/kitchen/command/test.rb +5 -4
  39. data/lib/kitchen/config.rb +146 -14
  40. data/lib/kitchen/configurable.rb +314 -0
  41. data/lib/kitchen/data_munger.rb +522 -18
  42. data/lib/kitchen/diagnostic.rb +43 -4
  43. data/lib/kitchen/driver.rb +4 -4
  44. data/lib/kitchen/driver/base.rb +80 -115
  45. data/lib/kitchen/driver/dummy.rb +34 -6
  46. data/lib/kitchen/driver/proxy.rb +14 -3
  47. data/lib/kitchen/driver/ssh_base.rb +61 -7
  48. data/lib/kitchen/errors.rb +109 -9
  49. data/lib/kitchen/generator/driver_create.rb +39 -5
  50. data/lib/kitchen/generator/init.rb +130 -45
  51. data/lib/kitchen/instance.rb +162 -28
  52. data/lib/kitchen/lazy_hash.rb +79 -7
  53. data/lib/kitchen/loader/yaml.rb +159 -27
  54. data/lib/kitchen/logger.rb +267 -21
  55. data/lib/kitchen/logging.rb +30 -3
  56. data/lib/kitchen/login_command.rb +11 -2
  57. data/lib/kitchen/metadata_chopper.rb +2 -2
  58. data/lib/kitchen/provisioner.rb +4 -4
  59. data/lib/kitchen/provisioner/base.rb +107 -103
  60. data/lib/kitchen/provisioner/chef/berkshelf.rb +36 -8
  61. data/lib/kitchen/provisioner/chef/librarian.rb +40 -11
  62. data/lib/kitchen/provisioner/chef_base.rb +206 -167
  63. data/lib/kitchen/provisioner/chef_solo.rb +25 -7
  64. data/lib/kitchen/provisioner/chef_zero.rb +105 -29
  65. data/lib/kitchen/provisioner/dummy.rb +1 -1
  66. data/lib/kitchen/provisioner/shell.rb +21 -6
  67. data/lib/kitchen/rake_tasks.rb +8 -3
  68. data/lib/kitchen/shell_out.rb +15 -18
  69. data/lib/kitchen/ssh.rb +122 -27
  70. data/lib/kitchen/state_file.rb +24 -7
  71. data/lib/kitchen/thor_tasks.rb +9 -4
  72. data/lib/kitchen/util.rb +43 -118
  73. data/lib/kitchen/version.rb +1 -1
  74. data/lib/vendor/hash_recursive_merge.rb +10 -2
  75. data/spec/kitchen/base64_stream_spec.rb +77 -0
  76. data/spec/kitchen/busser_spec.rb +490 -0
  77. data/spec/kitchen/collection_spec.rb +10 -10
  78. data/spec/kitchen/color_spec.rb +2 -2
  79. data/spec/kitchen/config_spec.rb +234 -62
  80. data/spec/kitchen/configurable_spec.rb +490 -0
  81. data/spec/kitchen/data_munger_spec.rb +1070 -862
  82. data/spec/kitchen/diagnostic_spec.rb +79 -0
  83. data/spec/kitchen/driver/base_spec.rb +80 -85
  84. data/spec/kitchen/driver/dummy_spec.rb +43 -14
  85. data/spec/kitchen/driver/proxy_spec.rb +134 -0
  86. data/spec/kitchen/driver/ssh_base_spec.rb +644 -0
  87. data/spec/kitchen/driver_spec.rb +15 -15
  88. data/spec/kitchen/errors_spec.rb +309 -0
  89. data/spec/kitchen/instance_spec.rb +143 -46
  90. data/spec/kitchen/lazy_hash_spec.rb +36 -9
  91. data/spec/kitchen/loader/yaml_spec.rb +237 -226
  92. data/spec/kitchen/logger_spec.rb +419 -0
  93. data/spec/kitchen/logging_spec.rb +59 -0
  94. data/spec/kitchen/login_command_spec.rb +49 -0
  95. data/spec/kitchen/metadata_chopper_spec.rb +82 -0
  96. data/spec/kitchen/platform_spec.rb +4 -4
  97. data/spec/kitchen/provisioner/base_spec.rb +65 -125
  98. data/spec/kitchen/provisioner/chef_base_spec.rb +798 -0
  99. data/spec/kitchen/provisioner/chef_solo_spec.rb +316 -0
  100. data/spec/kitchen/provisioner/chef_zero_spec.rb +624 -0
  101. data/spec/kitchen/provisioner/shell_spec.rb +269 -0
  102. data/spec/kitchen/provisioner_spec.rb +6 -6
  103. data/spec/kitchen/shell_out_spec.rb +143 -0
  104. data/spec/kitchen/ssh_spec.rb +683 -0
  105. data/spec/kitchen/state_file_spec.rb +28 -21
  106. data/spec/kitchen/suite_spec.rb +7 -7
  107. data/spec/kitchen/util_spec.rb +68 -10
  108. data/spec/kitchen_spec.rb +107 -0
  109. data/spec/spec_helper.rb +18 -13
  110. data/support/chef-client-zero.rb +10 -9
  111. data/support/chef_helpers.sh +16 -0
  112. data/support/download_helpers.sh +109 -0
  113. data/test-kitchen.gemspec +42 -33
  114. metadata +107 -33
@@ -16,9 +16,9 @@
16
16
  # See the License for the specific language governing permissions and
17
17
  # limitations under the License.
18
18
 
19
- require_relative '../spec_helper'
19
+ require_relative "../spec_helper"
20
20
 
21
- require 'kitchen/data_munger'
21
+ require "kitchen/data_munger"
22
22
 
23
23
  module Kitchen
24
24
 
@@ -27,7 +27,7 @@ module Kitchen
27
27
  describe "#platform_data" do
28
28
 
29
29
  it "returns an array of platform data" do
30
- DataMunger.new({
30
+ DataMunger.new(
31
31
  :platforms => [
32
32
  {
33
33
  :name => "one",
@@ -38,15 +38,15 @@ module Kitchen
38
38
  :misc => "things"
39
39
  }
40
40
  ]
41
- }).platform_data.must_equal([
42
- {
43
- :name => "one",
44
- :stuff => "junk"
45
- },
46
- {
47
- :name => "two",
48
- :misc => "things"
49
- }
41
+ ).platform_data.must_equal([
42
+ {
43
+ :name => "one",
44
+ :stuff => "junk"
45
+ },
46
+ {
47
+ :name => "two",
48
+ :misc => "things"
49
+ }
50
50
  ])
51
51
  end
52
52
 
@@ -58,7 +58,7 @@ module Kitchen
58
58
  describe "#suite_data" do
59
59
 
60
60
  it "returns an array of suite data" do
61
- DataMunger.new({
61
+ DataMunger.new(
62
62
  :suites => [
63
63
  {
64
64
  :name => "one",
@@ -69,15 +69,15 @@ module Kitchen
69
69
  :misc => "things"
70
70
  }
71
71
  ]
72
- }).suite_data.must_equal([
73
- {
74
- :name => "one",
75
- :stuff => "junk"
76
- },
77
- {
78
- :name => "two",
79
- :misc => "things"
80
- }
72
+ ).suite_data.must_equal([
73
+ {
74
+ :name => "one",
75
+ :stuff => "junk"
76
+ },
77
+ {
78
+ :name => "two",
79
+ :misc => "things"
80
+ }
81
81
  ])
82
82
  end
83
83
 
@@ -99,179 +99,217 @@ module Kitchen
99
99
  describe "from single source" do
100
100
 
101
101
  it "returns empty hash if no common #{key} hash is provided" do
102
- DataMunger.new({
103
- }).public_send("#{key}_data_for", "suite", "platform").must_equal({
104
- })
102
+ DataMunger.new(
103
+ {},
104
+ {}
105
+ ).public_send("#{key}_data_for", "suite", "platform").must_equal({})
105
106
  end
106
107
 
107
108
  it "drops common #{key} if hash is nil" do
108
- DataMunger.new({
109
- key => nil
110
- }).public_send("#{key}_data_for", "suite", "plat").must_equal({})
109
+ DataMunger.new(
110
+ {
111
+ key => nil
112
+ },
113
+ {}
114
+ ).public_send("#{key}_data_for", "suite", "plat").must_equal({})
111
115
  end
112
116
 
113
117
  it "returns kitchen config #{key} name" do
114
- DataMunger.new({
115
- }, {
116
- :defaults => {
117
- key => "thenoseknows"
118
+ DataMunger.new(
119
+ {},
120
+ {
121
+ :defaults => {
122
+ key => "thenoseknows"
123
+ }
118
124
  }
119
- }).public_send("#{key}_data_for", "suite", "platform").must_equal({
125
+ ).public_send("#{key}_data_for", "suite", "platform").must_equal(
120
126
  default_key => "thenoseknows"
121
- })
127
+ )
122
128
  end
123
129
 
124
130
  it "returns common #{key} name" do
125
- DataMunger.new({
126
- key => "starship"
127
- }).public_send("#{key}_data_for", "suite", "platform").must_equal({
131
+ DataMunger.new(
132
+ {
133
+ key => "starship"
134
+ },
135
+ {}
136
+ ).public_send("#{key}_data_for", "suite", "platform").must_equal(
128
137
  default_key => "starship"
129
- })
138
+ )
130
139
  end
131
140
 
132
141
  it "returns common #{key} config" do
133
- DataMunger.new({
134
- key => {
135
- default_key => "starship",
136
- :speed => 42
137
- }
138
- }).public_send("#{key}_data_for", "suite", "platform").must_equal({
142
+ DataMunger.new(
143
+ {
144
+ key => {
145
+ default_key => "starship",
146
+ :speed => 42
147
+ }
148
+ },
149
+ {}
150
+ ).public_send("#{key}_data_for", "suite", "platform").must_equal(
139
151
  default_key => "starship",
140
152
  :speed => 42
141
- })
153
+ )
142
154
  end
143
155
 
144
156
  it "returns empty hash if platform config doesn't have #{key} hash" do
145
- DataMunger.new({
146
- :platforms => [
147
- { :name => "plat" }
148
- ]
149
- }).public_send("#{key}_data_for", "suite", "plat").must_equal({})
157
+ DataMunger.new(
158
+ {
159
+ :platforms => [
160
+ { :name => "plat" }
161
+ ]
162
+ },
163
+ {}
164
+ ).public_send("#{key}_data_for", "suite", "plat").must_equal({})
150
165
  end
151
166
 
152
167
  it "drops platform #{key} if hash is nil" do
153
- DataMunger.new({
154
- :platforms => [
155
- {
156
- :name => "plat",
157
- key => nil
158
- }
159
- ]
160
- }).public_send("#{key}_data_for", "suite", "plat").must_equal({})
168
+ DataMunger.new(
169
+ {
170
+ :platforms => [
171
+ {
172
+ :name => "plat",
173
+ key => nil
174
+ }
175
+ ]
176
+ },
177
+ {}
178
+ ).public_send("#{key}_data_for", "suite", "plat").must_equal({})
161
179
  end
162
180
 
163
181
  it "returns platform #{key} name" do
164
- DataMunger.new({
165
- :platforms => [
166
- {
167
- :name => "plat",
168
- key => "flip"
169
- }
170
- ]
171
- }).public_send("#{key}_data_for", "suite", "plat").must_equal({
182
+ DataMunger.new(
183
+ {
184
+ :platforms => [
185
+ {
186
+ :name => "plat",
187
+ key => "flip"
188
+ }
189
+ ]
190
+ },
191
+ {}
192
+ ).public_send("#{key}_data_for", "suite", "plat").must_equal(
172
193
  default_key => "flip"
173
- })
194
+ )
174
195
  end
175
196
 
176
197
  it "returns platform config containing #{key} hash" do
177
- DataMunger.new({
178
- :platforms => [
179
- {
180
- :name => "plat",
181
- key => {
182
- default_key => "flip",
183
- :flop => "yep"
198
+ DataMunger.new(
199
+ {
200
+ :platforms => [
201
+ {
202
+ :name => "plat",
203
+ key => {
204
+ default_key => "flip",
205
+ :flop => "yep"
206
+ }
184
207
  }
185
- }
186
- ]
187
- }).public_send("#{key}_data_for", "suite", "plat").must_equal({
208
+ ]
209
+ },
210
+ {}
211
+ ).public_send("#{key}_data_for", "suite", "plat").must_equal(
188
212
  default_key => "flip",
189
213
  :flop => "yep"
190
- })
214
+ )
191
215
  end
192
216
 
193
217
  it "returns empty hash if suite config doesn't have #{key} hash" do
194
- DataMunger.new({
195
- :suites => [
196
- { :name => "sweet" }
197
- ]
198
- }).public_send("#{key}_data_for", "sweet", "platform").must_equal({
199
- })
218
+ DataMunger.new(
219
+ {
220
+ :suites => [
221
+ { :name => "sweet" }
222
+ ]
223
+ },
224
+ {}
225
+ ).public_send("#{key}_data_for", "sweet", "platform").must_equal({})
200
226
  end
201
227
 
202
228
  it "drops suite #{key} hash is nil" do
203
- DataMunger.new({
204
- :suites => [
205
- {
206
- :name => "suite",
207
- key => nil
208
- }
209
- ]
210
- }).public_send("#{key}_data_for", "suite", "plat").must_equal({})
229
+ DataMunger.new(
230
+ {
231
+ :suites => [
232
+ {
233
+ :name => "suite",
234
+ key => nil
235
+ }
236
+ ]
237
+ },
238
+ {}
239
+ ).public_send("#{key}_data_for", "suite", "plat").must_equal({})
211
240
  end
212
241
 
213
242
  it "returns suite #{key} name" do
214
- DataMunger.new({
215
- :suites => [
216
- {
217
- :name => "sweet",
218
- key => "waz"
219
- }
220
- ]
221
- }).public_send("#{key}_data_for", "sweet", "platform").must_equal({
243
+ DataMunger.new(
244
+ {
245
+ :suites => [
246
+ {
247
+ :name => "sweet",
248
+ key => "waz"
249
+ }
250
+ ]
251
+ },
252
+ {}
253
+ ).public_send("#{key}_data_for", "sweet", "platform").must_equal(
222
254
  default_key => "waz"
223
- })
255
+ )
224
256
  end
225
257
 
226
258
  it "returns suite config containing #{key} hash" do
227
- DataMunger.new({
228
- :suites => [
229
- {
230
- :name => "sweet",
231
- key => {
232
- default_key => "waz",
233
- :up => "nope"
259
+ DataMunger.new(
260
+ {
261
+ :suites => [
262
+ {
263
+ :name => "sweet",
264
+ key => {
265
+ default_key => "waz",
266
+ :up => "nope"
267
+ }
234
268
  }
235
- }
236
- ]
237
- }).public_send("#{key}_data_for", "sweet", "platform").must_equal({
269
+ ]
270
+ },
271
+ {}
272
+ ).public_send("#{key}_data_for", "sweet", "platform").must_equal(
238
273
  default_key => "waz",
239
274
  :up => "nope"
240
- })
275
+ )
241
276
  end
242
277
  end
243
278
 
244
279
  describe "from multiple sources merging" do
245
280
 
246
281
  it "suite into platform into common" do
247
- DataMunger.new({
248
- key => {
249
- default_key => "commony",
250
- :color => "purple",
251
- :fruit => ["apple", "pear"],
252
- :deep => { :common => "junk" }
253
- },
254
- :platforms => [
255
- {
256
- :name => "plat",
257
- key => {
258
- default_key => "platformy",
259
- :fruit => ["banana"],
260
- :deep => { :platform => "stuff" }
282
+ DataMunger.new(
283
+ {
284
+ key => {
285
+ default_key => "commony",
286
+ :color => "purple",
287
+ :fruit => %w[apple pear],
288
+ :deep => { :common => "junk" }
289
+ },
290
+ :platforms => [
291
+ {
292
+ :name => "plat",
293
+ key => {
294
+ default_key => "platformy",
295
+ :fruit => ["banana"],
296
+ :deep => { :platform => "stuff" }
297
+ }
261
298
  }
262
- }
263
- ],
264
- :suites => [
265
- {
266
- :name => "sweet",
267
- key => {
268
- default_key => "suitey",
269
- :vehicle => "car",
270
- :deep => { :suite => "things" }
299
+ ],
300
+ :suites => [
301
+ {
302
+ :name => "sweet",
303
+ key => {
304
+ default_key => "suitey",
305
+ :vehicle => "car",
306
+ :deep => { :suite => "things" }
307
+ }
271
308
  }
272
- }
273
- ]
274
- }).public_send("#{key}_data_for", "sweet", "plat").must_equal({
309
+ ]
310
+ },
311
+ {}
312
+ ).public_send("#{key}_data_for", "sweet", "plat").must_equal(
275
313
  default_key => "suitey",
276
314
  :color => "purple",
277
315
  :fruit => ["banana"],
@@ -281,28 +319,31 @@ module Kitchen
281
319
  :platform => "stuff",
282
320
  :suite => "things"
283
321
  }
284
- })
322
+ )
285
323
  end
286
324
 
287
325
  it "platform into common" do
288
- DataMunger.new({
289
- key => {
290
- default_key => "commony",
291
- :color => "purple",
292
- :fruit => ["apple", "pear"],
293
- :deep => { :common => "junk" }
294
- },
295
- :platforms => [
296
- {
297
- :name => "plat",
298
- key => {
299
- default_key => "platformy",
300
- :fruit => ["banana"],
301
- :deep => { :platform => "stuff" }
326
+ DataMunger.new(
327
+ {
328
+ key => {
329
+ default_key => "commony",
330
+ :color => "purple",
331
+ :fruit => %w[apple pear],
332
+ :deep => { :common => "junk" }
333
+ },
334
+ :platforms => [
335
+ {
336
+ :name => "plat",
337
+ key => {
338
+ default_key => "platformy",
339
+ :fruit => ["banana"],
340
+ :deep => { :platform => "stuff" }
341
+ }
302
342
  }
303
- }
304
- ]
305
- }).public_send("#{key}_data_for", "sweet", "plat").must_equal({
343
+ ]
344
+ },
345
+ {}
346
+ ).public_send("#{key}_data_for", "sweet", "plat").must_equal(
306
347
  default_key => "platformy",
307
348
  :color => "purple",
308
349
  :fruit => ["banana"],
@@ -310,62 +351,68 @@ module Kitchen
310
351
  :common => "junk",
311
352
  :platform => "stuff"
312
353
  }
313
- })
354
+ )
314
355
  end
315
356
 
316
357
  it "suite into common" do
317
- DataMunger.new({
318
- key => {
319
- default_key => "commony",
320
- :color => "purple",
321
- :fruit => ["apple", "pear"],
322
- :deep => { :common => "junk" }
323
- },
324
- :suites => [
325
- {
326
- :name => "sweet",
327
- key => {
328
- default_key => "suitey",
329
- :vehicle => "car",
330
- :deep => { :suite => "things" }
358
+ DataMunger.new(
359
+ {
360
+ key => {
361
+ default_key => "commony",
362
+ :color => "purple",
363
+ :fruit => %w[apple pear],
364
+ :deep => { :common => "junk" }
365
+ },
366
+ :suites => [
367
+ {
368
+ :name => "sweet",
369
+ key => {
370
+ default_key => "suitey",
371
+ :vehicle => "car",
372
+ :deep => { :suite => "things" }
373
+ }
331
374
  }
332
- }
333
- ]
334
- }).public_send("#{key}_data_for", "sweet", "plat").must_equal({
375
+ ]
376
+ },
377
+ {}
378
+ ).public_send("#{key}_data_for", "sweet", "plat").must_equal(
335
379
  default_key => "suitey",
336
380
  :color => "purple",
337
- :fruit => ["apple", "pear"],
381
+ :fruit => %w[apple pear],
338
382
  :vehicle => "car",
339
383
  :deep => {
340
384
  :common => "junk",
341
385
  :suite => "things"
342
386
  }
343
- })
387
+ )
344
388
  end
345
389
 
346
390
  it "suite into platform" do
347
- DataMunger.new({
348
- :platforms => [
349
- {
350
- :name => "plat",
351
- key => {
352
- default_key => "platformy",
353
- :fruit => ["banana"],
354
- :deep => { :platform => "stuff" }
391
+ DataMunger.new(
392
+ {
393
+ :platforms => [
394
+ {
395
+ :name => "plat",
396
+ key => {
397
+ default_key => "platformy",
398
+ :fruit => ["banana"],
399
+ :deep => { :platform => "stuff" }
400
+ }
355
401
  }
356
- }
357
- ],
358
- :suites => [
359
- {
360
- :name => "sweet",
361
- key => {
362
- default_key => "suitey",
363
- :vehicle => "car",
364
- :deep => { :suite => "things" }
402
+ ],
403
+ :suites => [
404
+ {
405
+ :name => "sweet",
406
+ key => {
407
+ default_key => "suitey",
408
+ :vehicle => "car",
409
+ :deep => { :suite => "things" }
410
+ }
365
411
  }
366
- }
367
- ]
368
- }).public_send("#{key}_data_for", "sweet", "plat").must_equal({
412
+ ]
413
+ },
414
+ {}
415
+ ).public_send("#{key}_data_for", "sweet", "plat").must_equal(
369
416
  default_key => "suitey",
370
417
  :fruit => ["banana"],
371
418
  :vehicle => "car",
@@ -373,7 +420,7 @@ module Kitchen
373
420
  :platform => "stuff",
374
421
  :suite => "things"
375
422
  }
376
- })
423
+ )
377
424
  end
378
425
  end
379
426
  end
@@ -384,243 +431,288 @@ module Kitchen
384
431
  describe "in a suite" do
385
432
 
386
433
  it "moves attributes into provisioner" do
387
- DataMunger.new({
388
- :provisioner => "chefy",
389
- :suites => [
390
- {
391
- :name => "sweet",
392
- :attributes => { :one => "two" }
393
- }
394
- ]
395
- }).provisioner_data_for("sweet", "plat").must_equal({
434
+ DataMunger.new(
435
+ {
436
+ :provisioner => "chefy",
437
+ :suites => [
438
+ {
439
+ :name => "sweet",
440
+ :attributes => { :one => "two" }
441
+ }
442
+ ]
443
+ },
444
+ {}
445
+ ).provisioner_data_for("sweet", "plat").must_equal(
396
446
  :name => "chefy",
397
447
  :attributes => { :one => "two" }
398
- })
448
+ )
399
449
  end
400
450
 
401
451
  it "moves run_list into provisioner" do
402
- DataMunger.new({
403
- :provisioner => "chefy",
404
- :suites => [
405
- {
406
- :name => "sweet",
407
- :run_list => ["one", "two"]
408
- }
409
- ]
410
- }).provisioner_data_for("sweet", "plat").must_equal({
452
+ DataMunger.new(
453
+ {
454
+ :provisioner => "chefy",
455
+ :suites => [
456
+ {
457
+ :name => "sweet",
458
+ :run_list => %w[one two]
459
+ }
460
+ ]
461
+ },
462
+ {}
463
+ ).provisioner_data_for("sweet", "plat").must_equal(
411
464
  :name => "chefy",
412
- :run_list => ["one", "two"]
413
- })
465
+ :run_list => %w[one two]
466
+ )
414
467
  end
415
468
 
416
469
  it "maintains run_list in provisioner" do
417
- DataMunger.new({
418
- :provisioner => "chefy",
419
- :suites => [
420
- {
421
- :name => "sweet",
422
- :provisioner => {
423
- :run_list => ["one", "two"]
470
+ DataMunger.new(
471
+ {
472
+ :provisioner => "chefy",
473
+ :suites => [
474
+ {
475
+ :name => "sweet",
476
+ :provisioner => {
477
+ :run_list => %w[one two]
478
+ }
424
479
  }
425
- }
426
- ]
427
- }).provisioner_data_for("sweet", "plat").must_equal({
480
+ ]
481
+ },
482
+ {}
483
+ ).provisioner_data_for("sweet", "plat").must_equal(
428
484
  :name => "chefy",
429
- :run_list => ["one", "two"]
430
- })
485
+ :run_list => %w[one two]
486
+ )
431
487
  end
432
488
 
433
489
  it "merge provisioner into attributes if provisioner exists" do
434
- DataMunger.new({
435
- :suites => [
436
- {
437
- :name => "sweet",
438
- :attributes => { :one => "two" },
439
- :provisioner => "chefy"
440
- }
441
- ]
442
- }).provisioner_data_for("sweet", "plat").must_equal({
490
+ DataMunger.new(
491
+ {
492
+ :suites => [
493
+ {
494
+ :name => "sweet",
495
+ :attributes => { :one => "two" },
496
+ :provisioner => "chefy"
497
+ }
498
+ ]
499
+ },
500
+ {}
501
+ ).provisioner_data_for("sweet", "plat").must_equal(
443
502
  :name => "chefy",
444
503
  :attributes => { :one => "two" }
445
- })
504
+ )
446
505
  end
447
506
 
448
507
  it "merge provisioner into run_list if provisioner exists" do
449
- DataMunger.new({
450
- :suites => [
451
- {
452
- :name => "sweet",
453
- :run_list => ["one", "two"],
454
- :provisioner => "chefy"
455
- }
456
- ]
457
- }).provisioner_data_for("sweet", "plat").must_equal({
508
+ DataMunger.new(
509
+ {
510
+ :suites => [
511
+ {
512
+ :name => "sweet",
513
+ :run_list => %w[one two],
514
+ :provisioner => "chefy"
515
+ }
516
+ ]
517
+ },
518
+ {}
519
+ ).provisioner_data_for("sweet", "plat").must_equal(
458
520
  :name => "chefy",
459
- :run_list => ["one", "two"]
460
- })
521
+ :run_list => %w[one two]
522
+ )
461
523
  end
462
524
 
463
525
  it "drops nil run_list" do
464
- DataMunger.new({
465
- :suites => [
466
- {
467
- :name => "sweet",
468
- :run_list => nil,
469
- :provisioner => "chefy"
470
- }
471
- ]
472
- }).provisioner_data_for("sweet", "plat").must_equal({
526
+ DataMunger.new(
527
+ {
528
+ :suites => [
529
+ {
530
+ :name => "sweet",
531
+ :run_list => nil,
532
+ :provisioner => "chefy"
533
+ }
534
+ ]
535
+ },
536
+ {}
537
+ ).provisioner_data_for("sweet", "plat").must_equal(
473
538
  :name => "chefy"
474
- })
539
+ )
475
540
  end
476
541
 
477
542
  it "drops nil attributes" do
478
- DataMunger.new({
479
- :suites => [
480
- {
481
- :name => "sweet",
482
- :attributes => nil,
483
- :provisioner => "chefy"
484
- }
485
- ]
486
- }).provisioner_data_for("sweet", "plat").must_equal({
543
+ DataMunger.new(
544
+ {
545
+ :suites => [
546
+ {
547
+ :name => "sweet",
548
+ :attributes => nil,
549
+ :provisioner => "chefy"
550
+ }
551
+ ]
552
+ },
553
+ {}
554
+ ).provisioner_data_for("sweet", "plat").must_equal(
487
555
  :name => "chefy"
488
- })
556
+ )
489
557
  end
490
558
  end
491
559
 
492
560
  describe "in a platform" do
493
561
 
494
562
  it "moves attributes into provisioner" do
495
- DataMunger.new({
496
- :provisioner => "chefy",
497
- :platforms => [
498
- {
499
- :name => "plat",
500
- :attributes => { :one => "two" }
501
- }
502
- ]
503
- }).provisioner_data_for("sweet", "plat").must_equal({
563
+ DataMunger.new(
564
+ {
565
+ :provisioner => "chefy",
566
+ :platforms => [
567
+ {
568
+ :name => "plat",
569
+ :attributes => { :one => "two" }
570
+ }
571
+ ]
572
+ },
573
+ {}
574
+ ).provisioner_data_for("sweet", "plat").must_equal(
504
575
  :name => "chefy",
505
576
  :attributes => { :one => "two" }
506
- })
577
+ )
507
578
  end
508
579
 
509
580
  it "moves run_list into provisioner" do
510
- DataMunger.new({
511
- :provisioner => "chefy",
512
- :platforms => [
513
- {
514
- :name => "plat",
515
- :run_list => ["one", "two"]
516
- }
517
- ]
518
- }).provisioner_data_for("sweet", "plat").must_equal({
581
+ DataMunger.new(
582
+ {
583
+ :provisioner => "chefy",
584
+ :platforms => [
585
+ {
586
+ :name => "plat",
587
+ :run_list => %w[one two]
588
+ }
589
+ ]
590
+ },
591
+ {}
592
+ ).provisioner_data_for("sweet", "plat").must_equal(
519
593
  :name => "chefy",
520
- :run_list => ["one", "two"]
521
- })
594
+ :run_list => %w[one two]
595
+ )
522
596
  end
523
597
 
524
598
  it "maintains run_list in provisioner" do
525
- DataMunger.new({
526
- :provisioner => "chefy",
527
- :platforms => [
528
- {
529
- :name => "plat",
530
- :provisioner => {
531
- :run_list => ["one", "two"]
599
+ DataMunger.new(
600
+ {
601
+ :provisioner => "chefy",
602
+ :platforms => [
603
+ {
604
+ :name => "plat",
605
+ :provisioner => {
606
+ :run_list => %w[one two]
607
+ }
532
608
  }
533
- }
534
- ]
535
- }).provisioner_data_for("sweet", "plat").must_equal({
609
+ ]
610
+ },
611
+ {}
612
+ ).provisioner_data_for("sweet", "plat").must_equal(
536
613
  :name => "chefy",
537
- :run_list => ["one", "two"]
538
- })
614
+ :run_list => %w[one two]
615
+ )
539
616
  end
540
617
 
541
618
  it "merge provisioner into attributes if provisioner exists" do
542
- DataMunger.new({
543
- :platforms => [
544
- {
545
- :name => "plat",
546
- :attributes => { :one => "two" },
547
- :provisioner => "chefy"
548
- }
549
- ]
550
- }).provisioner_data_for("sweet", "plat").must_equal({
619
+ DataMunger.new(
620
+ {
621
+ :platforms => [
622
+ {
623
+ :name => "plat",
624
+ :attributes => { :one => "two" },
625
+ :provisioner => "chefy"
626
+ }
627
+ ]
628
+ },
629
+ {}
630
+ ).provisioner_data_for("sweet", "plat").must_equal(
551
631
  :name => "chefy",
552
632
  :attributes => { :one => "two" }
553
- })
633
+ )
554
634
  end
555
635
 
556
636
  it "merge provisioner into run_list if provisioner exists" do
557
- DataMunger.new({
558
- :platforms => [
559
- {
560
- :name => "plat",
561
- :run_list => ["one", "two"],
562
- :provisioner => "chefy"
563
- }
564
- ]
565
- }).provisioner_data_for("sweet", "plat").must_equal({
637
+ DataMunger.new(
638
+ {
639
+ :platforms => [
640
+ {
641
+ :name => "plat",
642
+ :run_list => %w[one two],
643
+ :provisioner => "chefy"
644
+ }
645
+ ]
646
+ },
647
+ {}
648
+ ).provisioner_data_for("sweet", "plat").must_equal(
566
649
  :name => "chefy",
567
- :run_list => ["one", "two"]
568
- })
650
+ :run_list => %w[one two]
651
+ )
569
652
  end
570
653
 
571
654
  it "drops nil run_list" do
572
- DataMunger.new({
573
- :platforms => [
574
- {
575
- :name => "plat",
576
- :run_list => nil,
577
- :provisioner => "chefy"
578
- }
579
- ]
580
- }).provisioner_data_for("sweet", "plat").must_equal({
655
+ DataMunger.new(
656
+ {
657
+ :platforms => [
658
+ {
659
+ :name => "plat",
660
+ :run_list => nil,
661
+ :provisioner => "chefy"
662
+ }
663
+ ]
664
+ },
665
+ {}
666
+ ).provisioner_data_for("sweet", "plat").must_equal(
581
667
  :name => "chefy"
582
- })
668
+ )
583
669
  end
584
670
 
585
671
  it "drops nil attributes" do
586
- DataMunger.new({
587
- :platforms => [
588
- {
589
- :name => "plat",
590
- :attributes => nil,
591
- :provisioner => "chefy"
592
- }
593
- ]
594
- }).provisioner_data_for("sweet", "plat").must_equal({
672
+ DataMunger.new(
673
+ {
674
+ :platforms => [
675
+ {
676
+ :name => "plat",
677
+ :attributes => nil,
678
+ :provisioner => "chefy"
679
+ }
680
+ ]
681
+ },
682
+ {}
683
+ ).provisioner_data_for("sweet", "plat").must_equal(
595
684
  :name => "chefy"
596
- })
685
+ )
597
686
  end
598
687
  end
599
688
 
600
689
  describe "in a suite and platform" do
601
690
 
602
691
  it "merges suite attributes into platform attributes" do
603
- DataMunger.new({
604
- :provisioner => "chefy",
605
- :platforms => [
606
- {
607
- :name => "plat",
608
- :attributes => {
609
- :color => "blue",
610
- :deep => { :platform => "much" }
692
+ DataMunger.new(
693
+ {
694
+ :provisioner => "chefy",
695
+ :platforms => [
696
+ {
697
+ :name => "plat",
698
+ :attributes => {
699
+ :color => "blue",
700
+ :deep => { :platform => "much" }
701
+ }
611
702
  }
612
- }
613
- ],
614
- :suites => [
615
- {
616
- :name => "sweet",
617
- :attributes => {
618
- :color => "pink",
619
- :deep => { :suite => "wow" }
703
+ ],
704
+ :suites => [
705
+ {
706
+ :name => "sweet",
707
+ :attributes => {
708
+ :color => "pink",
709
+ :deep => { :suite => "wow" }
710
+ }
620
711
  }
621
- }
622
- ]
623
- }).provisioner_data_for("sweet", "plat").must_equal({
712
+ ]
713
+ },
714
+ {}
715
+ ).provisioner_data_for("sweet", "plat").must_equal(
624
716
  :name => "chefy",
625
717
  :attributes => {
626
718
  :color => "pink",
@@ -629,124 +721,139 @@ module Kitchen
629
721
  :platform => "much"
630
722
  }
631
723
  }
632
- })
724
+ )
633
725
  end
634
726
 
635
727
  it "concats suite run_list to platform run_list" do
636
- DataMunger.new({
637
- :provisioner => "chefy",
638
- :platforms => [
639
- {
640
- :name => "plat",
641
- :run_list => ["one", "two"]
642
- }
643
- ],
644
- :suites => [
645
- {
646
- :name => "sweet",
647
- :run_list => ["three", "four"]
648
- }
649
- ]
650
- }).provisioner_data_for("sweet", "plat").must_equal({
728
+ DataMunger.new(
729
+ {
730
+ :provisioner => "chefy",
731
+ :platforms => [
732
+ {
733
+ :name => "plat",
734
+ :run_list => %w[one two]
735
+ }
736
+ ],
737
+ :suites => [
738
+ {
739
+ :name => "sweet",
740
+ :run_list => %w[three four]
741
+ }
742
+ ]
743
+ },
744
+ {}
745
+ ).provisioner_data_for("sweet", "plat").must_equal(
651
746
  :name => "chefy",
652
- :run_list => ["one", "two", "three", "four"]
653
- })
747
+ :run_list => %w[one two three four]
748
+ )
654
749
  end
655
750
 
656
751
  it "concats suite run_list in provisioner to platform run_list" do
657
- DataMunger.new({
658
- :provisioner => "chefy",
659
- :platforms => [
660
- {
661
- :name => "plat",
662
- :run_list => ["one", "two"]
663
- }
664
- ],
665
- :suites => [
666
- {
667
- :name => "sweet",
668
- :provisioner => {
669
- :run_list => ["three", "four"]
752
+ DataMunger.new(
753
+ {
754
+ :provisioner => "chefy",
755
+ :platforms => [
756
+ {
757
+ :name => "plat",
758
+ :run_list => %w[one two]
670
759
  }
671
- }
672
- ]
673
- }).provisioner_data_for("sweet", "plat").must_equal({
760
+ ],
761
+ :suites => [
762
+ {
763
+ :name => "sweet",
764
+ :provisioner => {
765
+ :run_list => %w[three four]
766
+ }
767
+ }
768
+ ]
769
+ },
770
+ {}
771
+ ).provisioner_data_for("sweet", "plat").must_equal(
674
772
  :name => "chefy",
675
- :run_list => ["one", "two", "three", "four"]
676
- })
773
+ :run_list => %w[one two three four]
774
+ )
677
775
  end
678
776
 
679
777
  it "concats suite run_list to platform run_list in provisioner" do
680
- DataMunger.new({
681
- :provisioner => "chefy",
682
- :platforms => [
683
- {
684
- :name => "plat",
685
- :provisioner => {
686
- :run_list => ["one", "two"]
778
+ DataMunger.new(
779
+ {
780
+ :provisioner => "chefy",
781
+ :platforms => [
782
+ {
783
+ :name => "plat",
784
+ :provisioner => {
785
+ :run_list => %w[one two]
786
+ }
687
787
  }
688
- }
689
- ],
690
- :suites => [
691
- {
692
- :name => "sweet",
693
- :run_list => ["three", "four"]
694
- }
695
- ]
696
- }).provisioner_data_for("sweet", "plat").must_equal({
788
+ ],
789
+ :suites => [
790
+ {
791
+ :name => "sweet",
792
+ :run_list => %w[three four]
793
+ }
794
+ ]
795
+ },
796
+ {}
797
+ ).provisioner_data_for("sweet", "plat").must_equal(
697
798
  :name => "chefy",
698
- :run_list => ["one", "two", "three", "four"]
699
- })
799
+ :run_list => %w[one two three four]
800
+ )
700
801
  end
701
802
 
702
803
  it "concats to nil run_lists into an empty Array" do
703
- DataMunger.new({
704
- :provisioner => "chefy",
705
- :platforms => [
706
- {
707
- :name => "plat",
708
- :provisioner => {
804
+ DataMunger.new(
805
+ {
806
+ :provisioner => "chefy",
807
+ :platforms => [
808
+ {
809
+ :name => "plat",
810
+ :provisioner => {
811
+ :run_list => nil
812
+ }
813
+ }
814
+ ],
815
+ :suites => [
816
+ {
817
+ :name => "sweet",
709
818
  :run_list => nil
710
819
  }
711
- }
712
- ],
713
- :suites => [
714
- {
715
- :name => "sweet",
716
- :run_list => nil
717
- }
718
- ]
719
- }).provisioner_data_for("sweet", "plat").must_equal({
820
+ ]
821
+ },
822
+ {}
823
+ ).provisioner_data_for("sweet", "plat").must_equal(
720
824
  :name => "chefy",
721
825
  :run_list => []
722
- })
826
+ )
723
827
  end
724
828
 
725
829
  it "does not corrupt run_list data for multiple suite/platform pairs" do
726
- munger = DataMunger.new({
727
- :provisioner => "chefy",
728
- :platforms => [
729
- {
730
- :name => "p1"
731
- },
732
- {
733
- :name => "p2",
734
- :run_list => ["one", "two"]
735
- }
736
- ],
737
- :suites => [
738
- {
739
- :name => "s1",
740
- :run_list => ["alpha", "beta"]
741
- },
742
- {
743
- :name => "s2",
744
- :provisioner => {
745
- :run_list => ["three", "four"]
830
+ munger = DataMunger.new(
831
+ {
832
+ :provisioner => "chefy",
833
+ :platforms => [
834
+ {
835
+ :name => "p1"
836
+ },
837
+ {
838
+ :name => "p2",
839
+ :run_list => %w[one two]
746
840
  }
747
- }
748
- ]
749
- })
841
+ ],
842
+ :suites => [
843
+ {
844
+ :name => "s1",
845
+ :run_list => %w[alpha beta]
846
+ },
847
+ {
848
+ :name => "s2",
849
+ :provisioner => {
850
+ :run_list => %w[three four]
851
+ }
852
+ }
853
+ ]
854
+ },
855
+ {}
856
+ )
750
857
 
751
858
  # call munger for other data to cause any necessary internal
752
859
  # data mutation
@@ -754,10 +861,10 @@ module Kitchen
754
861
  munger.provisioner_data_for("s1", "p2")
755
862
  munger.provisioner_data_for("s2", "p1")
756
863
 
757
- munger.provisioner_data_for("s2", "p2").must_equal({
864
+ munger.provisioner_data_for("s2", "p2").must_equal(
758
865
  :name => "chefy",
759
- :run_list => ["one", "two", "three", "four"]
760
- })
866
+ :run_list => %w[one two three four]
867
+ )
761
868
  end
762
869
  end
763
870
  end
@@ -771,225 +878,261 @@ module Kitchen
771
878
  describe "for #driver_data_for" do
772
879
 
773
880
  it "is returned when provided" do
774
- DataMunger.new({
775
- :driver => "chefy",
776
- :platforms => [
777
- { :name => "plat" }
778
- ],
779
- :suites => [
780
- { :name => "sweet" }
781
- ]
782
- }, {
783
- key => "datvalue"
784
- }).driver_data_for("sweet", "plat").must_equal({
881
+ DataMunger.new(
882
+ {
883
+ :driver => "chefy",
884
+ :platforms => [
885
+ { :name => "plat" }
886
+ ],
887
+ :suites => [
888
+ { :name => "sweet" }
889
+ ]
890
+ },
891
+ {
892
+ key => "datvalue"
893
+ }
894
+ ).driver_data_for("sweet", "plat").must_equal(
785
895
  :name => "chefy",
786
896
  key => "datvalue"
787
- })
897
+ )
788
898
  end
789
899
 
790
900
  it "is returned when provided in user data" do
791
- DataMunger.new({
792
- :kitchen => {
793
- key => "datvalue"
901
+ DataMunger.new(
902
+ {
903
+ :kitchen => {
904
+ key => "datvalue"
905
+ },
906
+ :driver => "chefy",
907
+ :platforms => [
908
+ { :name => "plat" }
909
+ ],
910
+ :suites => [
911
+ { :name => "sweet" }
912
+ ]
794
913
  },
795
- :driver => "chefy",
796
- :platforms => [
797
- { :name => "plat" }
798
- ],
799
- :suites => [
800
- { :name => "sweet" }
801
- ]
802
- }).driver_data_for("sweet", "plat").must_equal({
914
+ {}
915
+ ).driver_data_for("sweet", "plat").must_equal(
803
916
  :name => "chefy",
804
917
  key => "datvalue"
805
- })
918
+ )
806
919
  end
807
920
 
808
921
  it "user data value beats provided value" do
809
- DataMunger.new({
810
- :kitchen => {
811
- key => "datvalue"
922
+ DataMunger.new(
923
+ {
924
+ :kitchen => {
925
+ key => "datvalue"
926
+ },
927
+ :driver => "chefy",
928
+ :platforms => [
929
+ { :name => "plat" }
930
+ ],
931
+ :suites => [
932
+ { :name => "sweet" }
933
+ ]
812
934
  },
813
- :driver => "chefy",
814
- :platforms => [
815
- { :name => "plat" }
816
- ],
817
- :suites => [
818
- { :name => "sweet" }
819
- ]
820
- }, {
821
- key => "ilose"
822
- }).driver_data_for("sweet", "plat").must_equal({
935
+ {
936
+ key => "ilose"
937
+ }
938
+ ).driver_data_for("sweet", "plat").must_equal(
823
939
  :name => "chefy",
824
940
  key => "datvalue"
825
- })
941
+ )
826
942
  end
827
943
 
828
944
  it "rejects any value in driver data" do
829
- DataMunger.new({
830
- :driver => {
831
- :name => "chefy",
832
- key => "imevil"
945
+ DataMunger.new(
946
+ {
947
+ :driver => {
948
+ :name => "chefy",
949
+ key => "imevil"
950
+ },
951
+ :platforms => [
952
+ { :name => "plat" }
953
+ ],
954
+ :suites => [
955
+ { :name => "sweet" }
956
+ ]
833
957
  },
834
- :platforms => [
835
- { :name => "plat" }
836
- ],
837
- :suites => [
838
- { :name => "sweet" }
839
- ]
840
- }).driver_data_for("sweet", "plat").must_equal({
958
+ {}
959
+ ).driver_data_for("sweet", "plat").must_equal(
841
960
  :name => "chefy"
842
- })
961
+ )
843
962
  end
844
963
  end
845
964
 
846
965
  describe "for #provisioner_data_for" do
847
966
 
848
967
  it "is returned when provided" do
849
- DataMunger.new({
850
- :provisioner => "chefy",
851
- :platforms => [
852
- { :name => "plat" }
853
- ],
854
- :suites => [
855
- { :name => "sweet" }
856
- ]
857
- }, {
858
- key => "datvalue"
859
- }).provisioner_data_for("sweet", "plat").must_equal({
968
+ DataMunger.new(
969
+ {
970
+ :provisioner => "chefy",
971
+ :platforms => [
972
+ { :name => "plat" }
973
+ ],
974
+ :suites => [
975
+ { :name => "sweet" }
976
+ ]
977
+ },
978
+ {
979
+ key => "datvalue"
980
+ }
981
+ ).provisioner_data_for("sweet", "plat").must_equal(
860
982
  :name => "chefy",
861
983
  key => "datvalue"
862
- })
984
+ )
863
985
  end
864
986
 
865
987
  it "is returned when provided in user data" do
866
- DataMunger.new({
867
- :kitchen => {
868
- key => "datvalue"
988
+ DataMunger.new(
989
+ {
990
+ :kitchen => {
991
+ key => "datvalue"
992
+ },
993
+ :provisioner => "chefy",
994
+ :platforms => [
995
+ { :name => "plat" }
996
+ ],
997
+ :suites => [
998
+ { :name => "sweet" }
999
+ ]
869
1000
  },
870
- :provisioner => "chefy",
871
- :platforms => [
872
- { :name => "plat" }
873
- ],
874
- :suites => [
875
- { :name => "sweet" }
876
- ]
877
- }).provisioner_data_for("sweet", "plat").must_equal({
1001
+ {}
1002
+ ).provisioner_data_for("sweet", "plat").must_equal(
878
1003
  :name => "chefy",
879
1004
  key => "datvalue"
880
- })
1005
+ )
881
1006
  end
882
1007
 
883
1008
  it "user data value beats provided value" do
884
- DataMunger.new({
885
- :kitchen => {
886
- key => "datvalue"
1009
+ DataMunger.new(
1010
+ {
1011
+ :kitchen => {
1012
+ key => "datvalue"
1013
+ },
1014
+ :provisioner => "chefy",
1015
+ :platforms => [
1016
+ { :name => "plat" }
1017
+ ],
1018
+ :suites => [
1019
+ { :name => "sweet" }
1020
+ ]
887
1021
  },
888
- :provisioner => "chefy",
889
- :platforms => [
890
- { :name => "plat" }
891
- ],
892
- :suites => [
893
- { :name => "sweet" }
894
- ]
895
- }, {
896
- key => "ilose"
897
- }).provisioner_data_for("sweet", "plat").must_equal({
1022
+ {
1023
+ key => "ilose"
1024
+ }
1025
+ ).provisioner_data_for("sweet", "plat").must_equal(
898
1026
  :name => "chefy",
899
1027
  key => "datvalue"
900
- })
1028
+ )
901
1029
  end
902
1030
 
903
1031
  it "rejects any value in provisioner data" do
904
- DataMunger.new({
905
- :provisioner => {
906
- :name => "chefy",
907
- key => "imevil"
1032
+ DataMunger.new(
1033
+ {
1034
+ :provisioner => {
1035
+ :name => "chefy",
1036
+ key => "imevil"
1037
+ },
1038
+ :platforms => [
1039
+ { :name => "plat" }
1040
+ ],
1041
+ :suites => [
1042
+ { :name => "sweet" }
1043
+ ]
908
1044
  },
909
- :platforms => [
910
- { :name => "plat" }
911
- ],
912
- :suites => [
913
- { :name => "sweet" }
914
- ]
915
- }).provisioner_data_for("sweet", "plat").must_equal({
1045
+ {}
1046
+ ).provisioner_data_for("sweet", "plat").must_equal(
916
1047
  :name => "chefy"
917
- })
1048
+ )
918
1049
  end
919
1050
  end
920
1051
 
921
1052
  describe "for #busser_data_for" do
922
1053
 
923
1054
  it "is returned when provided" do
924
- DataMunger.new({
925
- :busser => "chefy",
926
- :platforms => [
927
- { :name => "plat" }
928
- ],
929
- :suites => [
930
- { :name => "sweet" }
931
- ]
932
- }, {
933
- key => "datvalue"
934
- }).busser_data_for("sweet", "plat").must_equal({
1055
+ DataMunger.new(
1056
+ {
1057
+ :busser => "chefy",
1058
+ :platforms => [
1059
+ { :name => "plat" }
1060
+ ],
1061
+ :suites => [
1062
+ { :name => "sweet" }
1063
+ ]
1064
+ },
1065
+ {
1066
+ key => "datvalue"
1067
+ }
1068
+ ).busser_data_for("sweet", "plat").must_equal(
935
1069
  :version => "chefy",
936
1070
  key => "datvalue"
937
- })
1071
+ )
938
1072
  end
939
1073
 
940
1074
  it "is returned when provided in user data" do
941
- DataMunger.new({
942
- :kitchen => {
943
- key => "datvalue"
1075
+ DataMunger.new(
1076
+ {
1077
+ :kitchen => {
1078
+ key => "datvalue"
1079
+ },
1080
+ :busser => "chefy",
1081
+ :platforms => [
1082
+ { :name => "plat" }
1083
+ ],
1084
+ :suites => [
1085
+ { :name => "sweet" }
1086
+ ]
944
1087
  },
945
- :busser => "chefy",
946
- :platforms => [
947
- { :name => "plat" }
948
- ],
949
- :suites => [
950
- { :name => "sweet" }
951
- ]
952
- }).busser_data_for("sweet", "plat").must_equal({
1088
+ {}
1089
+ ).busser_data_for("sweet", "plat").must_equal(
953
1090
  :version => "chefy",
954
1091
  key => "datvalue"
955
- })
1092
+ )
956
1093
  end
957
1094
 
958
1095
  it "user data value beats provided value" do
959
- DataMunger.new({
960
- :kitchen => {
961
- key => "datvalue"
1096
+ DataMunger.new(
1097
+ {
1098
+ :kitchen => {
1099
+ key => "datvalue"
1100
+ },
1101
+ :busser => "chefy",
1102
+ :platforms => [
1103
+ { :name => "plat" }
1104
+ ],
1105
+ :suites => [
1106
+ { :name => "sweet" }
1107
+ ]
962
1108
  },
963
- :busser => "chefy",
964
- :platforms => [
965
- { :name => "plat" }
966
- ],
967
- :suites => [
968
- { :name => "sweet" }
969
- ]
970
- }, {
971
- key => "ilose"
972
- }).busser_data_for("sweet", "plat").must_equal({
1109
+ {
1110
+ key => "ilose"
1111
+ }
1112
+ ).busser_data_for("sweet", "plat").must_equal(
973
1113
  :version => "chefy",
974
1114
  key => "datvalue"
975
- })
1115
+ )
976
1116
  end
977
1117
 
978
1118
  it "rejects any value in busser data" do
979
- DataMunger.new({
980
- :busser => {
981
- :version => "chefy",
982
- key => "imevil"
1119
+ DataMunger.new(
1120
+ {
1121
+ :busser => {
1122
+ :version => "chefy",
1123
+ key => "imevil"
1124
+ },
1125
+ :platforms => [
1126
+ { :name => "plat" }
1127
+ ],
1128
+ :suites => [
1129
+ { :name => "sweet" }
1130
+ ]
983
1131
  },
984
- :platforms => [
985
- { :name => "plat" }
986
- ],
987
- :suites => [
988
- { :name => "sweet" }
989
- ]
990
- }).busser_data_for("sweet", "plat").must_equal({
1132
+ {}
1133
+ ).busser_data_for("sweet", "plat").must_equal(
991
1134
  :version => "chefy"
992
- })
1135
+ )
993
1136
  end
994
1137
  end
995
1138
  end
@@ -1001,156 +1144,186 @@ module Kitchen
1001
1144
  describe "from a single source" do
1002
1145
 
1003
1146
  it "returns common driver name" do
1004
- DataMunger.new({
1005
- :driver_plugin => "starship"
1006
- }).driver_data_for("suite", "platform").must_equal({
1147
+ DataMunger.new(
1148
+ {
1149
+ :driver_plugin => "starship"
1150
+ },
1151
+ {}
1152
+ ).driver_data_for("suite", "platform").must_equal(
1007
1153
  :name => "starship"
1008
- })
1154
+ )
1009
1155
  end
1010
1156
 
1011
1157
  it "merges driver into driver_plugin if driver exists" do
1012
- DataMunger.new({
1013
- :driver_plugin => "starship",
1014
- :driver => "zappa"
1015
- }).driver_data_for("suite", "platform").must_equal({
1158
+ DataMunger.new(
1159
+ {
1160
+ :driver_plugin => "starship",
1161
+ :driver => "zappa"
1162
+ },
1163
+ {}
1164
+ ).driver_data_for("suite", "platform").must_equal(
1016
1165
  :name => "zappa"
1017
- })
1166
+ )
1018
1167
  end
1019
1168
 
1020
1169
  it "returns common driver config" do
1021
- DataMunger.new({
1022
- :driver_plugin => "starship",
1023
- :driver_config => {
1024
- :speed => 42
1025
- }
1026
- }).driver_data_for("suite", "platform").must_equal({
1170
+ DataMunger.new(
1171
+ {
1172
+ :driver_plugin => "starship",
1173
+ :driver_config => {
1174
+ :speed => 42
1175
+ }
1176
+ },
1177
+ {}
1178
+ ).driver_data_for("suite", "platform").must_equal(
1027
1179
  :name => "starship",
1028
1180
  :speed => 42
1029
- })
1181
+ )
1030
1182
  end
1031
1183
 
1032
1184
  it "merges driver into driver_config if driver with name exists" do
1033
- DataMunger.new({
1034
- :driver_config => {
1035
- :eh => "yep"
1185
+ DataMunger.new(
1186
+ {
1187
+ :driver_config => {
1188
+ :eh => "yep"
1189
+ },
1190
+ :driver => "zappa"
1036
1191
  },
1037
- :driver => "zappa"
1038
- }).driver_data_for("suite", "platform").must_equal({
1192
+ {}
1193
+ ).driver_data_for("suite", "platform").must_equal(
1039
1194
  :name => "zappa",
1040
1195
  :eh => "yep"
1041
- })
1196
+ )
1042
1197
  end
1043
1198
 
1044
1199
  it "merges driver into driver_config if driver exists" do
1045
- DataMunger.new({
1046
- :driver_plugin => "imold",
1047
- :driver_config => {
1048
- :eh => "yep",
1049
- :color => "pink"
1200
+ DataMunger.new(
1201
+ {
1202
+ :driver_plugin => "imold",
1203
+ :driver_config => {
1204
+ :eh => "yep",
1205
+ :color => "pink"
1206
+ },
1207
+ :driver => {
1208
+ :name => "zappa",
1209
+ :color => "black"
1210
+ }
1050
1211
  },
1051
- :driver => {
1052
- :name => "zappa",
1053
- :color => "black"
1054
- }
1055
- }).driver_data_for("suite", "platform").must_equal({
1212
+ {}
1213
+ ).driver_data_for("suite", "platform").must_equal(
1056
1214
  :name => "zappa",
1057
1215
  :eh => "yep",
1058
1216
  :color => "black"
1059
- })
1217
+ )
1060
1218
  end
1061
1219
 
1062
1220
  it "returns platform driver name" do
1063
- DataMunger.new({
1064
- :platforms => [
1065
- {
1066
- :name => "plat",
1067
- :driver_plugin => "flip"
1068
- }
1069
- ]
1070
- }).driver_data_for("suite", "plat").must_equal({
1221
+ DataMunger.new(
1222
+ {
1223
+ :platforms => [
1224
+ {
1225
+ :name => "plat",
1226
+ :driver_plugin => "flip"
1227
+ }
1228
+ ]
1229
+ },
1230
+ {}
1231
+ ).driver_data_for("suite", "plat").must_equal(
1071
1232
  :name => "flip"
1072
- })
1233
+ )
1073
1234
  end
1074
1235
 
1075
1236
  it "returns platform config containing driver hash" do
1076
- DataMunger.new({
1077
- :platforms => [
1078
- {
1079
- :name => "plat",
1080
- :driver_plugin => "flip",
1081
- :driver_config => {
1082
- :flop => "yep"
1237
+ DataMunger.new(
1238
+ {
1239
+ :platforms => [
1240
+ {
1241
+ :name => "plat",
1242
+ :driver_plugin => "flip",
1243
+ :driver_config => {
1244
+ :flop => "yep"
1245
+ }
1083
1246
  }
1084
- }
1085
- ]
1086
- }).driver_data_for("suite", "plat").must_equal({
1247
+ ]
1248
+ },
1249
+ {}
1250
+ ).driver_data_for("suite", "plat").must_equal(
1087
1251
  :name => "flip",
1088
1252
  :flop => "yep"
1089
- })
1253
+ )
1090
1254
  end
1091
1255
 
1092
1256
  it "returns suite driver name" do
1093
- DataMunger.new({
1094
- :suites => [
1095
- {
1096
- :name => "sweet",
1097
- :driver_plugin => "waz"
1098
- }
1099
- ]
1100
- }).driver_data_for("sweet", "platform").must_equal({
1257
+ DataMunger.new(
1258
+ {
1259
+ :suites => [
1260
+ {
1261
+ :name => "sweet",
1262
+ :driver_plugin => "waz"
1263
+ }
1264
+ ]
1265
+ },
1266
+ {}
1267
+ ).driver_data_for("sweet", "platform").must_equal(
1101
1268
  :name => "waz"
1102
- })
1269
+ )
1103
1270
  end
1104
1271
 
1105
1272
  it "returns suite config containing driver hash" do
1106
- DataMunger.new({
1107
- :suites => [
1108
- {
1109
- :name => "sweet",
1110
- :driver_plugin => "waz",
1111
- :driver_config => {
1112
- :up => "nope"
1273
+ DataMunger.new(
1274
+ {
1275
+ :suites => [
1276
+ {
1277
+ :name => "sweet",
1278
+ :driver_plugin => "waz",
1279
+ :driver_config => {
1280
+ :up => "nope"
1281
+ }
1113
1282
  }
1114
- }
1115
- ]
1116
- }).driver_data_for("sweet", "platform").must_equal({
1283
+ ]
1284
+ },
1285
+ {}
1286
+ ).driver_data_for("sweet", "platform").must_equal(
1117
1287
  :name => "waz",
1118
1288
  :up => "nope"
1119
- })
1289
+ )
1120
1290
  end
1121
1291
  end
1122
1292
 
1123
1293
  describe "from multiple sources" do
1124
1294
 
1125
1295
  it "suite into platform into common" do
1126
- DataMunger.new({
1127
- :driver_plugin => "commony",
1128
- :driver_config => {
1129
- :color => "purple",
1130
- :fruit => ["apple", "pear"],
1131
- :deep => { :common => "junk" }
1132
- },
1133
- :platforms => [
1134
- {
1135
- :name => "plat",
1136
- :driver_plugin => "platformy",
1137
- :driver_config => {
1138
- :fruit => ["banana"],
1139
- :deep => { :platform => "stuff" }
1296
+ DataMunger.new(
1297
+ {
1298
+ :driver_plugin => "commony",
1299
+ :driver_config => {
1300
+ :color => "purple",
1301
+ :fruit => %w[apple pear],
1302
+ :deep => { :common => "junk" }
1303
+ },
1304
+ :platforms => [
1305
+ {
1306
+ :name => "plat",
1307
+ :driver_plugin => "platformy",
1308
+ :driver_config => {
1309
+ :fruit => ["banana"],
1310
+ :deep => { :platform => "stuff" }
1311
+ }
1140
1312
  }
1141
- }
1142
- ],
1143
- :suites => [
1144
- {
1145
- :name => "sweet",
1146
- :driver_plugin => "suitey",
1147
- :driver_config => {
1148
- :vehicle => "car",
1149
- :deep => { :suite => "things" }
1313
+ ],
1314
+ :suites => [
1315
+ {
1316
+ :name => "sweet",
1317
+ :driver_plugin => "suitey",
1318
+ :driver_config => {
1319
+ :vehicle => "car",
1320
+ :deep => { :suite => "things" }
1321
+ }
1150
1322
  }
1151
- }
1152
- ]
1153
- }).driver_data_for("sweet", "plat").must_equal({
1323
+ ]
1324
+ },
1325
+ {}
1326
+ ).driver_data_for("sweet", "plat").must_equal(
1154
1327
  :name => "suitey",
1155
1328
  :color => "purple",
1156
1329
  :fruit => ["banana"],
@@ -1160,28 +1333,31 @@ module Kitchen
1160
1333
  :platform => "stuff",
1161
1334
  :suite => "things"
1162
1335
  }
1163
- })
1336
+ )
1164
1337
  end
1165
1338
 
1166
1339
  it "platform into common" do
1167
- DataMunger.new({
1168
- :driver_plugin => "commony",
1169
- :driver_config => {
1170
- :color => "purple",
1171
- :fruit => ["apple", "pear"],
1172
- :deep => { :common => "junk" }
1173
- },
1174
- :platforms => [
1175
- {
1176
- :name => "plat",
1177
- :driver_plugin => "platformy",
1178
- :driver_config => {
1179
- :fruit => ["banana"],
1180
- :deep => { :platform => "stuff" }
1340
+ DataMunger.new(
1341
+ {
1342
+ :driver_plugin => "commony",
1343
+ :driver_config => {
1344
+ :color => "purple",
1345
+ :fruit => %w[apple pear],
1346
+ :deep => { :common => "junk" }
1347
+ },
1348
+ :platforms => [
1349
+ {
1350
+ :name => "plat",
1351
+ :driver_plugin => "platformy",
1352
+ :driver_config => {
1353
+ :fruit => ["banana"],
1354
+ :deep => { :platform => "stuff" }
1355
+ }
1181
1356
  }
1182
- }
1183
- ]
1184
- }).driver_data_for("sweet", "plat").must_equal({
1357
+ ]
1358
+ },
1359
+ {}
1360
+ ).driver_data_for("sweet", "plat").must_equal(
1185
1361
  :name => "platformy",
1186
1362
  :color => "purple",
1187
1363
  :fruit => ["banana"],
@@ -1189,62 +1365,68 @@ module Kitchen
1189
1365
  :common => "junk",
1190
1366
  :platform => "stuff"
1191
1367
  }
1192
- })
1368
+ )
1193
1369
  end
1194
1370
 
1195
1371
  it "suite into common" do
1196
- DataMunger.new({
1197
- :driver_plugin => "commony",
1198
- :driver_config => {
1199
- :color => "purple",
1200
- :fruit => ["apple", "pear"],
1201
- :deep => { :common => "junk" }
1202
- },
1203
- :suites => [
1204
- {
1205
- :name => "sweet",
1206
- :driver_plugin => "suitey",
1207
- :driver_config => {
1208
- :vehicle => "car",
1209
- :deep => { :suite => "things" }
1372
+ DataMunger.new(
1373
+ {
1374
+ :driver_plugin => "commony",
1375
+ :driver_config => {
1376
+ :color => "purple",
1377
+ :fruit => %w[apple pear],
1378
+ :deep => { :common => "junk" }
1379
+ },
1380
+ :suites => [
1381
+ {
1382
+ :name => "sweet",
1383
+ :driver_plugin => "suitey",
1384
+ :driver_config => {
1385
+ :vehicle => "car",
1386
+ :deep => { :suite => "things" }
1387
+ }
1210
1388
  }
1211
- }
1212
- ]
1213
- }).driver_data_for("sweet", "plat").must_equal({
1389
+ ]
1390
+ },
1391
+ {}
1392
+ ).driver_data_for("sweet", "plat").must_equal(
1214
1393
  :name => "suitey",
1215
1394
  :color => "purple",
1216
- :fruit => ["apple", "pear"],
1395
+ :fruit => %w[apple pear],
1217
1396
  :vehicle => "car",
1218
1397
  :deep => {
1219
1398
  :common => "junk",
1220
1399
  :suite => "things"
1221
1400
  }
1222
- })
1401
+ )
1223
1402
  end
1224
1403
 
1225
1404
  it "suite into platform" do
1226
- DataMunger.new({
1227
- :platforms => [
1228
- {
1229
- :name => "plat",
1230
- :driver_plugin => "platformy",
1231
- :driver_config => {
1232
- :fruit => ["banana"],
1233
- :deep => { :platform => "stuff" }
1405
+ DataMunger.new(
1406
+ {
1407
+ :platforms => [
1408
+ {
1409
+ :name => "plat",
1410
+ :driver_plugin => "platformy",
1411
+ :driver_config => {
1412
+ :fruit => ["banana"],
1413
+ :deep => { :platform => "stuff" }
1414
+ }
1234
1415
  }
1235
- }
1236
- ],
1237
- :suites => [
1238
- {
1239
- :name => "sweet",
1240
- :driver_plugin => "suitey",
1241
- :driver_config => {
1242
- :vehicle => "car",
1243
- :deep => { :suite => "things" }
1416
+ ],
1417
+ :suites => [
1418
+ {
1419
+ :name => "sweet",
1420
+ :driver_plugin => "suitey",
1421
+ :driver_config => {
1422
+ :vehicle => "car",
1423
+ :deep => { :suite => "things" }
1424
+ }
1244
1425
  }
1245
- }
1246
- ]
1247
- }).driver_data_for("sweet", "plat").must_equal({
1426
+ ]
1427
+ },
1428
+ {}
1429
+ ).driver_data_for("sweet", "plat").must_equal(
1248
1430
  :name => "suitey",
1249
1431
  :fruit => ["banana"],
1250
1432
  :vehicle => "car",
@@ -1252,46 +1434,54 @@ module Kitchen
1252
1434
  :platform => "stuff",
1253
1435
  :suite => "things"
1254
1436
  }
1255
- })
1437
+ )
1256
1438
  end
1257
1439
  end
1258
1440
  end
1259
1441
 
1260
1442
  describe "legacy chef paths from suite" do
1261
1443
 
1262
- LEGACY_CHEF_PATHS = [:data_path, :data_bags_path, :environments_path,
1263
- :nodes_path, :roles_path, :encrypted_data_bag_secret_key_path]
1444
+ LEGACY_CHEF_PATHS = [
1445
+ :data_path, :data_bags_path, :environments_path,
1446
+ :nodes_path, :roles_path, :encrypted_data_bag_secret_key_path
1447
+ ]
1264
1448
 
1265
1449
  LEGACY_CHEF_PATHS.each do |key|
1266
1450
 
1267
1451
  it "moves #{key} into provisioner" do
1268
- DataMunger.new({
1269
- :provisioner => "chefy",
1270
- :suites => [
1271
- {
1272
- :name => "sweet",
1273
- key => "mypath"
1274
- }
1275
- ]
1276
- }).provisioner_data_for("sweet", "plat").must_equal({
1452
+ DataMunger.new(
1453
+ {
1454
+ :provisioner => "chefy",
1455
+ :suites => [
1456
+ {
1457
+ :name => "sweet",
1458
+ key => "mypath"
1459
+ }
1460
+ ]
1461
+ },
1462
+ {}
1463
+ ).provisioner_data_for("sweet", "plat").must_equal(
1277
1464
  :name => "chefy",
1278
1465
  key => "mypath"
1279
- })
1466
+ )
1280
1467
  end
1281
1468
 
1282
1469
  it "merges provisioner into data_path if provisioner exists" do
1283
- DataMunger.new({
1284
- :suites => [
1285
- {
1286
- :name => "sweet",
1287
- key => "mypath",
1288
- :provisioner => "chefy",
1289
- }
1290
- ]
1291
- }).provisioner_data_for("sweet", "plat").must_equal({
1470
+ DataMunger.new(
1471
+ {
1472
+ :suites => [
1473
+ {
1474
+ :name => "sweet",
1475
+ key => "mypath",
1476
+ :provisioner => "chefy"
1477
+ }
1478
+ ]
1479
+ },
1480
+ {}
1481
+ ).provisioner_data_for("sweet", "plat").must_equal(
1292
1482
  :name => "chefy",
1293
1483
  key => "mypath"
1294
- })
1484
+ )
1295
1485
  end
1296
1486
  end
1297
1487
  end
@@ -1301,110 +1491,128 @@ module Kitchen
1301
1491
  describe "from a single source" do
1302
1492
 
1303
1493
  it "common driver value moves into provisioner" do
1304
- DataMunger.new({
1305
- :provisioner => "chefy",
1306
- :driver => {
1307
- :name => "starship",
1308
- :require_chef_omnibus => "it's probably fine"
1309
- }
1310
- }).provisioner_data_for("suite", "platform").must_equal({
1494
+ DataMunger.new(
1495
+ {
1496
+ :provisioner => "chefy",
1497
+ :driver => {
1498
+ :name => "starship",
1499
+ :require_chef_omnibus => "it's probably fine"
1500
+ }
1501
+ },
1502
+ {}
1503
+ ).provisioner_data_for("suite", "platform").must_equal(
1311
1504
  :name => "chefy",
1312
1505
  :require_chef_omnibus => "it's probably fine"
1313
- })
1506
+ )
1314
1507
  end
1315
1508
 
1316
1509
  it "common driver value loses to existing provisioner value" do
1317
- DataMunger.new({
1318
- :provisioner => {
1319
- :name => "chefy",
1320
- :require_chef_omnibus => "it's probably fine"
1510
+ DataMunger.new(
1511
+ {
1512
+ :provisioner => {
1513
+ :name => "chefy",
1514
+ :require_chef_omnibus => "it's probably fine"
1515
+ },
1516
+ :driver => {
1517
+ :name => "starship",
1518
+ :require_chef_omnibus => "dragons"
1519
+ }
1321
1520
  },
1322
- :driver => {
1323
- :name => "starship",
1324
- :require_chef_omnibus => "dragons"
1325
- }
1326
- }).provisioner_data_for("suite", "platform").must_equal({
1521
+ {}
1522
+ ).provisioner_data_for("suite", "platform").must_equal(
1327
1523
  :name => "chefy",
1328
1524
  :require_chef_omnibus => "it's probably fine"
1329
- })
1525
+ )
1330
1526
  end
1331
1527
 
1332
1528
  it "suite driver value moves into provisioner" do
1333
- DataMunger.new({
1334
- :suites => [
1335
- {
1336
- :name => "sweet",
1337
- :provisioner => "chefy",
1338
- :driver => {
1339
- :name => "starship",
1340
- :require_chef_omnibus => "it's probably fine"
1529
+ DataMunger.new(
1530
+ {
1531
+ :suites => [
1532
+ {
1533
+ :name => "sweet",
1534
+ :provisioner => "chefy",
1535
+ :driver => {
1536
+ :name => "starship",
1537
+ :require_chef_omnibus => "it's probably fine"
1538
+ }
1341
1539
  }
1342
- }
1343
- ],
1344
- }).provisioner_data_for("sweet", "platform").must_equal({
1540
+ ]
1541
+ },
1542
+ {}
1543
+ ).provisioner_data_for("sweet", "platform").must_equal(
1345
1544
  :name => "chefy",
1346
1545
  :require_chef_omnibus => "it's probably fine"
1347
- })
1546
+ )
1348
1547
  end
1349
1548
 
1350
1549
  it "suite driver value loses to existing provisioner value" do
1351
- DataMunger.new({
1352
- :suites => [
1353
- {
1354
- :name => "sweet",
1355
- :provisioner => {
1356
- :name => "chefy",
1357
- :require_chef_omnibus => "it's probably fine"
1358
- },
1359
- :driver => {
1360
- :name => "starship",
1361
- :require_chef_omnibus => "dragons"
1550
+ DataMunger.new(
1551
+ {
1552
+ :suites => [
1553
+ {
1554
+ :name => "sweet",
1555
+ :provisioner => {
1556
+ :name => "chefy",
1557
+ :require_chef_omnibus => "it's probably fine"
1558
+ },
1559
+ :driver => {
1560
+ :name => "starship",
1561
+ :require_chef_omnibus => "dragons"
1562
+ }
1362
1563
  }
1363
- }
1364
- ]
1365
- }).provisioner_data_for("sweet", "platform").must_equal({
1564
+ ]
1565
+ },
1566
+ {}
1567
+ ).provisioner_data_for("sweet", "platform").must_equal(
1366
1568
  :name => "chefy",
1367
1569
  :require_chef_omnibus => "it's probably fine"
1368
- })
1570
+ )
1369
1571
  end
1370
1572
 
1371
1573
  it "platform driver value moves into provisioner" do
1372
- DataMunger.new({
1373
- :platforms => [
1374
- {
1375
- :name => "plat",
1376
- :provisioner => "chefy",
1377
- :driver => {
1378
- :name => "starship",
1379
- :require_chef_omnibus => "it's probably fine"
1574
+ DataMunger.new(
1575
+ {
1576
+ :platforms => [
1577
+ {
1578
+ :name => "plat",
1579
+ :provisioner => "chefy",
1580
+ :driver => {
1581
+ :name => "starship",
1582
+ :require_chef_omnibus => "it's probably fine"
1583
+ }
1380
1584
  }
1381
- }
1382
- ],
1383
- }).provisioner_data_for("suite", "plat").must_equal({
1585
+ ]
1586
+ },
1587
+ {}
1588
+ ).provisioner_data_for("suite", "plat").must_equal(
1384
1589
  :name => "chefy",
1385
1590
  :require_chef_omnibus => "it's probably fine"
1386
- })
1591
+ )
1387
1592
  end
1388
1593
 
1389
1594
  it "platform driver value loses to existing provisioner value" do
1390
- DataMunger.new({
1391
- :platforms => [
1392
- {
1393
- :name => "plat",
1394
- :provisioner => {
1395
- :name => "chefy",
1396
- :require_chef_omnibus => "it's probably fine"
1397
- },
1398
- :driver => {
1399
- :name => "starship",
1400
- :require_chef_omnibus => "dragons"
1595
+ DataMunger.new(
1596
+ {
1597
+ :platforms => [
1598
+ {
1599
+ :name => "plat",
1600
+ :provisioner => {
1601
+ :name => "chefy",
1602
+ :require_chef_omnibus => "it's probably fine"
1603
+ },
1604
+ :driver => {
1605
+ :name => "starship",
1606
+ :require_chef_omnibus => "dragons"
1607
+ }
1401
1608
  }
1402
- }
1403
- ]
1404
- }).provisioner_data_for("suite", "plat").must_equal({
1609
+ ]
1610
+ },
1611
+ {}
1612
+ ).provisioner_data_for("suite", "plat").must_equal(
1405
1613
  :name => "chefy",
1406
1614
  :require_chef_omnibus => "it's probably fine"
1407
- })
1615
+ )
1408
1616
  end
1409
1617
  end
1410
1618
  end