test-kitchen 1.14.1 → 1.14.2
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 +4 -4
- data/Berksfile +1 -1
- data/CHANGELOG.md +7 -0
- data/Gemfile +1 -1
- data/Guardfile +5 -5
- data/Rakefile +5 -5
- data/bin/kitchen +1 -1
- data/features/step_definitions/gem_steps.rb +6 -6
- data/features/support/env.rb +6 -7
- data/lib/kitchen.rb +5 -7
- data/lib/kitchen/base64_stream.rb +2 -8
- data/lib/kitchen/cli.rb +76 -80
- data/lib/kitchen/collection.rb +0 -2
- data/lib/kitchen/color.rb +7 -9
- data/lib/kitchen/command.rb +0 -4
- data/lib/kitchen/command/action.rb +0 -3
- data/lib/kitchen/command/console.rb +4 -7
- data/lib/kitchen/command/diagnose.rb +7 -14
- data/lib/kitchen/command/driver_discover.rb +1 -4
- data/lib/kitchen/command/exec.rb +0 -3
- data/lib/kitchen/command/list.rb +9 -12
- data/lib/kitchen/command/login.rb +0 -3
- data/lib/kitchen/command/package.rb +0 -3
- data/lib/kitchen/command/sink.rb +6 -9
- data/lib/kitchen/command/test.rb +1 -4
- data/lib/kitchen/config.rb +25 -27
- data/lib/kitchen/configurable.rb +26 -31
- data/lib/kitchen/data_munger.rb +34 -36
- data/lib/kitchen/diagnostic.rb +5 -7
- data/lib/kitchen/driver.rb +3 -5
- data/lib/kitchen/driver/base.rb +0 -3
- data/lib/kitchen/driver/dummy.rb +0 -3
- data/lib/kitchen/driver/proxy.rb +0 -3
- data/lib/kitchen/driver/ssh_base.rb +13 -16
- data/lib/kitchen/errors.rb +11 -16
- data/lib/kitchen/generator/driver_create.rb +18 -21
- data/lib/kitchen/generator/init.rb +21 -26
- data/lib/kitchen/instance.rb +19 -23
- data/lib/kitchen/lazy_hash.rb +1 -2
- data/lib/kitchen/loader/yaml.rb +22 -25
- data/lib/kitchen/logger.rb +9 -14
- data/lib/kitchen/logging.rb +0 -3
- data/lib/kitchen/login_command.rb +0 -2
- data/lib/kitchen/metadata_chopper.rb +0 -2
- data/lib/kitchen/platform.rb +1 -3
- data/lib/kitchen/provisioner.rb +3 -5
- data/lib/kitchen/provisioner/base.rb +2 -5
- data/lib/kitchen/provisioner/chef/berkshelf.rb +1 -5
- data/lib/kitchen/provisioner/chef/common_sandbox.rb +24 -29
- data/lib/kitchen/provisioner/chef/librarian.rb +2 -6
- data/lib/kitchen/provisioner/chef/policyfile.rb +4 -8
- data/lib/kitchen/provisioner/chef_apply.rb +14 -17
- data/lib/kitchen/provisioner/chef_base.rb +43 -46
- data/lib/kitchen/provisioner/chef_solo.rb +10 -13
- data/lib/kitchen/provisioner/chef_zero.rb +22 -29
- data/lib/kitchen/provisioner/dummy.rb +0 -3
- data/lib/kitchen/provisioner/shell.rb +6 -9
- data/lib/kitchen/rake_tasks.rb +4 -6
- data/lib/kitchen/shell_out.rb +3 -5
- data/lib/kitchen/ssh.rb +16 -22
- data/lib/kitchen/state_file.rb +3 -5
- data/lib/kitchen/suite.rb +0 -2
- data/lib/kitchen/thor_tasks.rb +2 -4
- data/lib/kitchen/transport.rb +3 -5
- data/lib/kitchen/transport/base.rb +1 -7
- data/lib/kitchen/transport/dummy.rb +0 -4
- data/lib/kitchen/transport/ssh.rb +41 -47
- data/lib/kitchen/transport/winrm.rb +41 -40
- data/lib/kitchen/util.rb +1 -3
- data/lib/kitchen/verifier.rb +3 -5
- data/lib/kitchen/verifier/base.rb +2 -5
- data/lib/kitchen/verifier/busser.rb +24 -24
- data/lib/kitchen/verifier/dummy.rb +0 -3
- data/lib/kitchen/verifier/shell.rb +1 -3
- data/lib/kitchen/version.rb +1 -1
- data/lib/vendor/hash_recursive_merge.rb +0 -2
- data/spec/kitchen/base64_stream_spec.rb +3 -6
- data/spec/kitchen/cli_spec.rb +0 -2
- data/spec/kitchen/collection_spec.rb +4 -8
- data/spec/kitchen/color_spec.rb +0 -3
- data/spec/kitchen/config_spec.rb +91 -106
- data/spec/kitchen/configurable_spec.rb +44 -76
- data/spec/kitchen/data_munger_spec.rb +1178 -1247
- data/spec/kitchen/diagnostic_spec.rb +37 -38
- data/spec/kitchen/driver/base_spec.rb +7 -14
- data/spec/kitchen/driver/dummy_spec.rb +1 -7
- data/spec/kitchen/driver/proxy_spec.rb +2 -7
- data/spec/kitchen/driver/ssh_base_spec.rb +128 -149
- data/spec/kitchen/driver_spec.rb +7 -13
- data/spec/kitchen/errors_spec.rb +50 -60
- data/spec/kitchen/instance_spec.rb +217 -294
- data/spec/kitchen/lazy_hash_spec.rb +14 -18
- data/spec/kitchen/loader/yaml_spec.rb +201 -227
- data/spec/kitchen/logger_spec.rb +7 -15
- data/spec/kitchen/logging_spec.rb +1 -4
- data/spec/kitchen/login_command_spec.rb +3 -4
- data/spec/kitchen/metadata_chopper_spec.rb +0 -3
- data/spec/kitchen/platform_spec.rb +31 -32
- data/spec/kitchen/provisioner/base_spec.rb +22 -41
- data/spec/kitchen/provisioner/chef/policyfile_spec.rb +15 -15
- data/spec/kitchen/provisioner/chef_apply_spec.rb +8 -13
- data/spec/kitchen/provisioner/chef_base_spec.rb +150 -182
- data/spec/kitchen/provisioner/chef_solo_spec.rb +58 -72
- data/spec/kitchen/provisioner/chef_zero_spec.rb +99 -125
- data/spec/kitchen/provisioner/dummy_spec.rb +8 -11
- data/spec/kitchen/provisioner/shell_spec.rb +86 -103
- data/spec/kitchen/provisioner_spec.rb +5 -11
- data/spec/kitchen/shell_out_spec.rb +15 -19
- data/spec/kitchen/ssh_spec.rb +16 -35
- data/spec/kitchen/state_file_spec.rb +6 -11
- data/spec/kitchen/suite_spec.rb +5 -6
- data/spec/kitchen/transport/base_spec.rb +6 -14
- data/spec/kitchen/transport/ssh_spec.rb +39 -64
- data/spec/kitchen/transport/winrm_spec.rb +99 -127
- data/spec/kitchen/transport_spec.rb +7 -13
- data/spec/kitchen/util_spec.rb +17 -26
- data/spec/kitchen/verifier/base_spec.rb +24 -40
- data/spec/kitchen/verifier/busser_spec.rb +38 -68
- data/spec/kitchen/verifier/dummy_spec.rb +8 -11
- data/spec/kitchen/verifier/shell_spec.rb +14 -17
- data/spec/kitchen/verifier_spec.rb +7 -13
- data/spec/kitchen_spec.rb +4 -6
- data/spec/spec_helper.rb +1 -1
- data/spec/support/powershell_max_size_spec.rb +1 -2
- data/support/chef-client-zero.rb +3 -4
- data/test-kitchen.gemspec +4 -6
- metadata +9 -9
|
@@ -24,11 +24,8 @@ require "kitchen/errors"
|
|
|
24
24
|
require "kitchen/configurable"
|
|
25
25
|
|
|
26
26
|
module Kitchen
|
|
27
|
-
|
|
28
27
|
module Thing
|
|
29
|
-
|
|
30
28
|
class Tiny
|
|
31
|
-
|
|
32
29
|
include Kitchen::Configurable
|
|
33
30
|
|
|
34
31
|
attr_reader :instance
|
|
@@ -40,12 +37,10 @@ module Kitchen
|
|
|
40
37
|
end
|
|
41
38
|
|
|
42
39
|
class Versioned < Tiny
|
|
43
|
-
|
|
44
40
|
plugin_version "1.8.17"
|
|
45
41
|
end
|
|
46
42
|
|
|
47
43
|
class StaticDefaults
|
|
48
|
-
|
|
49
44
|
include Kitchen::Configurable
|
|
50
45
|
|
|
51
46
|
default_config :beans, "kidney"
|
|
@@ -53,7 +48,7 @@ module Kitchen
|
|
|
53
48
|
default_config :edible, true
|
|
54
49
|
default_config :fetch_command, "curl"
|
|
55
50
|
default_config :success_path, "./success"
|
|
56
|
-
default_config :bunch_of_paths, %
|
|
51
|
+
default_config :bunch_of_paths, %w{./a ./b ./c}
|
|
57
52
|
default_config :beans_url do |subject|
|
|
58
53
|
"http://gim.me/#{subject[:beans]}"
|
|
59
54
|
end
|
|
@@ -84,7 +79,6 @@ module Kitchen
|
|
|
84
79
|
end
|
|
85
80
|
|
|
86
81
|
class SubclassDefaults < StaticDefaults
|
|
87
|
-
|
|
88
82
|
default_config :yea, "ya"
|
|
89
83
|
default_config :fetch_command, "wget"
|
|
90
84
|
default_config :fetch_url, "http://no.beans"
|
|
@@ -99,11 +93,10 @@ module Kitchen
|
|
|
99
93
|
end
|
|
100
94
|
|
|
101
95
|
describe Kitchen::Configurable do
|
|
102
|
-
|
|
103
96
|
let(:config) { Hash.new }
|
|
104
97
|
let(:platform) { stub }
|
|
105
98
|
let(:instance) do
|
|
106
|
-
stub(:
|
|
99
|
+
stub(name: "coolbeans", to_str: "<instance>", platform: platform)
|
|
107
100
|
end
|
|
108
101
|
|
|
109
102
|
let(:subject) do
|
|
@@ -111,14 +104,13 @@ describe Kitchen::Configurable do
|
|
|
111
104
|
end
|
|
112
105
|
|
|
113
106
|
describe "creation and setup" do
|
|
114
|
-
|
|
115
107
|
it "#instance returns its instance" do
|
|
116
108
|
subject.instance.must_equal instance
|
|
117
109
|
end
|
|
118
110
|
|
|
119
111
|
it "#finalize_config! raises ClientError if instance is nil" do
|
|
120
|
-
proc { Kitchen::Thing::Tiny.new({}).finalize_config!(nil) }
|
|
121
|
-
must_raise(Kitchen::ClientError)
|
|
112
|
+
proc { Kitchen::Thing::Tiny.new({}).finalize_config!(nil) }
|
|
113
|
+
.must_raise(Kitchen::ClientError)
|
|
122
114
|
end
|
|
123
115
|
|
|
124
116
|
it "#finalize_config! returns self for chaining" do
|
|
@@ -128,22 +120,19 @@ describe Kitchen::Configurable do
|
|
|
128
120
|
end
|
|
129
121
|
|
|
130
122
|
describe "configuration" do
|
|
131
|
-
|
|
132
123
|
describe "provided from the outside" do
|
|
133
|
-
|
|
134
124
|
it "returns provided config" do
|
|
135
|
-
config[:fruit] = %w
|
|
125
|
+
config[:fruit] = %w{apples oranges}
|
|
136
126
|
config[:cool_enough] = true
|
|
137
127
|
|
|
138
|
-
subject[:fruit].must_equal %w
|
|
128
|
+
subject[:fruit].must_equal %w{apples oranges}
|
|
139
129
|
subject[:cool_enough].must_equal true
|
|
140
130
|
end
|
|
141
131
|
end
|
|
142
132
|
|
|
143
133
|
describe "using static default_config statements" do
|
|
144
|
-
|
|
145
134
|
let(:config) do
|
|
146
|
-
{ :
|
|
135
|
+
{ need_it: true, a_default: true }
|
|
147
136
|
end
|
|
148
137
|
|
|
149
138
|
let(:subject) do
|
|
@@ -183,9 +172,8 @@ describe Kitchen::Configurable do
|
|
|
183
172
|
end
|
|
184
173
|
|
|
185
174
|
describe "using inherited static default_config statements" do
|
|
186
|
-
|
|
187
175
|
let(:config) do
|
|
188
|
-
{ :
|
|
176
|
+
{ need_it: true, a_default: "please" }
|
|
189
177
|
end
|
|
190
178
|
|
|
191
179
|
let(:subject) do
|
|
@@ -216,9 +204,8 @@ describe Kitchen::Configurable do
|
|
|
216
204
|
end
|
|
217
205
|
|
|
218
206
|
describe "using static required_config statements" do
|
|
219
|
-
|
|
220
207
|
let(:config) do
|
|
221
|
-
{ :
|
|
208
|
+
{ a_default: true }
|
|
222
209
|
end
|
|
223
210
|
|
|
224
211
|
let(:subject) do
|
|
@@ -269,7 +256,6 @@ describe Kitchen::Configurable do
|
|
|
269
256
|
end
|
|
270
257
|
|
|
271
258
|
describe "using inherited static require_config statements" do
|
|
272
|
-
|
|
273
259
|
let(:subject) do
|
|
274
260
|
Kitchen::Thing::SubclassDefaults.new(config).finalize_config!(instance)
|
|
275
261
|
end
|
|
@@ -301,9 +287,8 @@ describe Kitchen::Configurable do
|
|
|
301
287
|
end
|
|
302
288
|
|
|
303
289
|
describe "using static expand_path_for statements" do
|
|
304
|
-
|
|
305
290
|
let(:config) do
|
|
306
|
-
{ :
|
|
291
|
+
{ need_it: "a", a_default: "b", kitchen_root: "/tmp/yo/self" }
|
|
307
292
|
end
|
|
308
293
|
|
|
309
294
|
let(:subject) do
|
|
@@ -327,9 +312,9 @@ describe Kitchen::Configurable do
|
|
|
327
312
|
end
|
|
328
313
|
|
|
329
314
|
it "expands all items if path is an array" do
|
|
330
|
-
paths = %
|
|
315
|
+
paths = %w{
|
|
331
316
|
/tmp/yo/self/a /tmp/yo/self/b /tmp/yo/self/c
|
|
332
|
-
|
|
317
|
+
}
|
|
333
318
|
os_safe_paths = paths.collect { |path| os_safe_root_path(path) }
|
|
334
319
|
subject[:bunch_of_paths].must_equal os_safe_paths
|
|
335
320
|
end
|
|
@@ -361,9 +346,8 @@ describe Kitchen::Configurable do
|
|
|
361
346
|
end
|
|
362
347
|
|
|
363
348
|
describe "using inherited static expand_path_for statements" do
|
|
364
|
-
|
|
365
349
|
let(:config) do
|
|
366
|
-
{ :
|
|
350
|
+
{ need_it: "a", a_default: "please", kitchen_root: "/rooty" }
|
|
367
351
|
end
|
|
368
352
|
|
|
369
353
|
let(:subject) do
|
|
@@ -382,7 +366,7 @@ describe Kitchen::Configurable do
|
|
|
382
366
|
end
|
|
383
367
|
|
|
384
368
|
it "#config_keys returns an array of config key names" do
|
|
385
|
-
subject = Kitchen::Thing::Tiny.new(:
|
|
369
|
+
subject = Kitchen::Thing::Tiny.new(ice_cream: "dragon")
|
|
386
370
|
|
|
387
371
|
subject.config_keys.sort.must_equal [:ice_cream]
|
|
388
372
|
end
|
|
@@ -393,14 +377,13 @@ describe Kitchen::Configurable do
|
|
|
393
377
|
end
|
|
394
378
|
|
|
395
379
|
describe "#diagnose" do
|
|
396
|
-
|
|
397
380
|
it "returns an empty hash for no config" do
|
|
398
381
|
subject.diagnose.must_equal Hash.new
|
|
399
382
|
end
|
|
400
383
|
|
|
401
384
|
it "returns a hash of config" do
|
|
402
385
|
config[:alpha] = "beta"
|
|
403
|
-
subject.diagnose.must_equal(:
|
|
386
|
+
subject.diagnose.must_equal(alpha: "beta")
|
|
404
387
|
end
|
|
405
388
|
|
|
406
389
|
it "returns a hash with sorted keys" do
|
|
@@ -412,35 +395,33 @@ describe Kitchen::Configurable do
|
|
|
412
395
|
end
|
|
413
396
|
|
|
414
397
|
describe "#diagnose_plugin" do
|
|
415
|
-
|
|
416
398
|
it "returns a plugin hash for a plugin without version" do
|
|
417
399
|
subject.diagnose_plugin.must_equal(
|
|
418
|
-
:
|
|
419
|
-
:
|
|
400
|
+
name: "Tiny", class: "Kitchen::Thing::Tiny",
|
|
401
|
+
version: nil, api_version: nil
|
|
420
402
|
)
|
|
421
403
|
end
|
|
422
404
|
|
|
423
405
|
it "returns a plugin hash for a plugin with version" do
|
|
424
406
|
subject = Kitchen::Thing::Versioned.new(config).finalize_config!(instance)
|
|
425
407
|
subject.diagnose_plugin.must_equal(
|
|
426
|
-
:
|
|
427
|
-
:
|
|
408
|
+
name: "Versioned", class: "Kitchen::Thing::Versioned",
|
|
409
|
+
version: "1.8.17", api_version: nil
|
|
428
410
|
)
|
|
429
411
|
end
|
|
430
412
|
end
|
|
431
413
|
|
|
432
414
|
describe "#calculate_path" do
|
|
433
|
-
|
|
434
415
|
let(:config) do
|
|
435
|
-
{ :
|
|
416
|
+
{ test_base_path: "/the/basest" }
|
|
436
417
|
end
|
|
437
418
|
|
|
438
419
|
let(:suite) do
|
|
439
|
-
stub(:
|
|
420
|
+
stub(name: "ultimate")
|
|
440
421
|
end
|
|
441
422
|
|
|
442
423
|
let(:instance) do
|
|
443
|
-
stub(:
|
|
424
|
+
stub(name: "coolbeans", to_str: "<instance>", suite: suite)
|
|
444
425
|
end
|
|
445
426
|
|
|
446
427
|
let(:subject) do
|
|
@@ -457,7 +438,6 @@ describe Kitchen::Configurable do
|
|
|
457
438
|
end
|
|
458
439
|
|
|
459
440
|
describe "for directories" do
|
|
460
|
-
|
|
461
441
|
before do
|
|
462
442
|
FileUtils.mkdir_p(File.join(Dir.pwd, "winner"))
|
|
463
443
|
FileUtils.mkdir_p("/the/basest/winner")
|
|
@@ -465,8 +445,8 @@ describe Kitchen::Configurable do
|
|
|
465
445
|
end
|
|
466
446
|
|
|
467
447
|
it "prefers a path containing base path and suite name if it exists" do
|
|
468
|
-
subject.calculate_path("winner")
|
|
469
|
-
|
|
448
|
+
subject.calculate_path("winner")
|
|
449
|
+
.must_equal "/the/basest/ultimate/winner"
|
|
470
450
|
end
|
|
471
451
|
|
|
472
452
|
it "prefers a path containing base path if it exists" do
|
|
@@ -492,13 +472,12 @@ describe Kitchen::Configurable do
|
|
|
492
472
|
it "uses a custom base path" do
|
|
493
473
|
FileUtils.mkdir_p("/custom/ultimate/winner")
|
|
494
474
|
|
|
495
|
-
subject.calculate_path("winner", :
|
|
496
|
-
|
|
475
|
+
subject.calculate_path("winner", base_path: "/custom")
|
|
476
|
+
.must_equal "/custom/ultimate/winner"
|
|
497
477
|
end
|
|
498
478
|
end
|
|
499
479
|
|
|
500
480
|
describe "for files" do
|
|
501
|
-
|
|
502
481
|
before do
|
|
503
482
|
FileUtils.mkdir_p(Dir.pwd)
|
|
504
483
|
FileUtils.touch(File.join(Dir.pwd, "winner"))
|
|
@@ -509,15 +488,15 @@ describe Kitchen::Configurable do
|
|
|
509
488
|
end
|
|
510
489
|
|
|
511
490
|
it "prefers a path containing base path and suite name if it exists" do
|
|
512
|
-
subject.calculate_path("winner", :
|
|
513
|
-
|
|
491
|
+
subject.calculate_path("winner", type: :file)
|
|
492
|
+
.must_equal "/the/basest/ultimate/winner"
|
|
514
493
|
end
|
|
515
494
|
|
|
516
495
|
it "prefers a path containing base path if it exists" do
|
|
517
496
|
FileUtils.rm_rf("/the/basest/ultimate/winner")
|
|
518
497
|
|
|
519
|
-
subject.calculate_path("winner", :
|
|
520
|
-
|
|
498
|
+
subject.calculate_path("winner", type: :file)
|
|
499
|
+
.must_equal "/the/basest/winner"
|
|
521
500
|
end
|
|
522
501
|
|
|
523
502
|
it "prefers a path in the current working directory if it exists" do
|
|
@@ -525,7 +504,7 @@ describe Kitchen::Configurable do
|
|
|
525
504
|
FileUtils.rm_rf("/the/basest/winner")
|
|
526
505
|
pwd_dir = File.join(Dir.pwd, "winner")
|
|
527
506
|
|
|
528
|
-
subject.calculate_path("winner", :
|
|
507
|
+
subject.calculate_path("winner", type: :file).must_equal pwd_dir
|
|
529
508
|
end
|
|
530
509
|
|
|
531
510
|
it "raises a UserError if test_base_path key is not set" do
|
|
@@ -538,14 +517,13 @@ describe Kitchen::Configurable do
|
|
|
538
517
|
FileUtils.mkdir_p("/custom/ultimate")
|
|
539
518
|
FileUtils.touch(File.join("/custom/ultimate", "winner"))
|
|
540
519
|
|
|
541
|
-
subject.calculate_path("winner", :
|
|
542
|
-
|
|
520
|
+
subject.calculate_path("winner", type: :file, base_path: "/custom")
|
|
521
|
+
.must_equal "/custom/ultimate/winner"
|
|
543
522
|
end
|
|
544
523
|
end
|
|
545
524
|
end
|
|
546
525
|
|
|
547
526
|
describe "#remote_path_join" do
|
|
548
|
-
|
|
549
527
|
it "returns unix style path separators for unix os_type" do
|
|
550
528
|
platform.stubs(:os_type).returns("unix")
|
|
551
529
|
|
|
@@ -555,36 +533,35 @@ describe Kitchen::Configurable do
|
|
|
555
533
|
it "returns windows style path separators for windows os_type" do
|
|
556
534
|
platform.stubs(:os_type).returns("windows")
|
|
557
535
|
|
|
558
|
-
subject.remote_path_join("a", "b", "c").must_equal
|
|
536
|
+
subject.remote_path_join("a", "b", "c").must_equal 'a\\b\\c'
|
|
559
537
|
end
|
|
560
538
|
|
|
561
539
|
it "accepts combinations of strings and arrays" do
|
|
562
540
|
platform.stubs(:os_type).returns("unix")
|
|
563
541
|
|
|
564
|
-
subject.remote_path_join(%
|
|
542
|
+
subject.remote_path_join(%w{a b}, "c", %w{d e}).must_equal "a/b/c/d/e"
|
|
565
543
|
end
|
|
566
544
|
|
|
567
545
|
it "accepts a single array" do
|
|
568
546
|
platform.stubs(:os_type).returns("windows")
|
|
569
547
|
|
|
570
|
-
subject.remote_path_join(%
|
|
548
|
+
subject.remote_path_join(%w{a b}).must_equal 'a\\b'
|
|
571
549
|
end
|
|
572
550
|
|
|
573
551
|
it "converts all windows path separators to unix for unix os_type" do
|
|
574
552
|
platform.stubs(:os_type).returns("unix")
|
|
575
553
|
|
|
576
|
-
subject.remote_path_join(
|
|
554
|
+
subject.remote_path_join('\\a\\b', "c/d").must_equal "/a/b/c/d"
|
|
577
555
|
end
|
|
578
556
|
|
|
579
557
|
it "converts all unix path separators to windows for windows os_type" do
|
|
580
558
|
platform.stubs(:os_type).returns("windows")
|
|
581
559
|
|
|
582
|
-
subject.remote_path_join("/a/b",
|
|
560
|
+
subject.remote_path_join("/a/b", 'c\\d').must_equal '\\a\\b\\c\\d'
|
|
583
561
|
end
|
|
584
562
|
end
|
|
585
563
|
|
|
586
564
|
describe "#windows_os?" do
|
|
587
|
-
|
|
588
565
|
it "for windows type platform returns true" do
|
|
589
566
|
platform.stubs(:os_type).returns("windows")
|
|
590
567
|
|
|
@@ -611,7 +588,6 @@ describe Kitchen::Configurable do
|
|
|
611
588
|
end
|
|
612
589
|
|
|
613
590
|
describe "#unix_os?" do
|
|
614
|
-
|
|
615
591
|
it "for windows type platform returns false" do
|
|
616
592
|
platform.stubs(:os_type).returns("windows")
|
|
617
593
|
|
|
@@ -638,7 +614,6 @@ describe Kitchen::Configurable do
|
|
|
638
614
|
end
|
|
639
615
|
|
|
640
616
|
describe "#powershell_shell?" do
|
|
641
|
-
|
|
642
617
|
it "for powershell type shell returns true" do
|
|
643
618
|
platform.stubs(:shell_type).returns("powershell")
|
|
644
619
|
|
|
@@ -665,7 +640,6 @@ describe Kitchen::Configurable do
|
|
|
665
640
|
end
|
|
666
641
|
|
|
667
642
|
describe "#bourne_shell?" do
|
|
668
|
-
|
|
669
643
|
it "for powershell type shell returns false" do
|
|
670
644
|
platform.stubs(:shell_type).returns("powershell")
|
|
671
645
|
|
|
@@ -692,24 +666,22 @@ describe Kitchen::Configurable do
|
|
|
692
666
|
end
|
|
693
667
|
|
|
694
668
|
describe "#shell_env_var" do
|
|
695
|
-
|
|
696
669
|
it "for powershell type shells returns a powershell environment variable" do
|
|
697
670
|
platform.stubs(:shell_type).returns("powershell")
|
|
698
671
|
|
|
699
|
-
subject.send(:shell_env_var, "foo", "bar")
|
|
700
|
-
|
|
672
|
+
subject.send(:shell_env_var, "foo", "bar")
|
|
673
|
+
.must_equal %{$env:foo = "bar"}
|
|
701
674
|
end
|
|
702
675
|
|
|
703
676
|
it "for bourne type shells returns a bourne environment variable" do
|
|
704
677
|
platform.stubs(:shell_type).returns("bourne")
|
|
705
678
|
|
|
706
|
-
subject.send(:shell_env_var, "foo", "bar")
|
|
707
|
-
|
|
679
|
+
subject.send(:shell_env_var, "foo", "bar")
|
|
680
|
+
.must_equal %{foo="bar"; export foo}
|
|
708
681
|
end
|
|
709
682
|
end
|
|
710
683
|
|
|
711
684
|
describe "#shell_var" do
|
|
712
|
-
|
|
713
685
|
it "for powershell type shells returns a powershell variable" do
|
|
714
686
|
platform.stubs(:shell_type).returns("powershell")
|
|
715
687
|
|
|
@@ -724,7 +696,6 @@ describe Kitchen::Configurable do
|
|
|
724
696
|
end
|
|
725
697
|
|
|
726
698
|
describe "#wrap_shell_code" do
|
|
727
|
-
|
|
728
699
|
let(:cmd) { subject.send(:wrap_shell_code, "mkdir foo") }
|
|
729
700
|
|
|
730
701
|
before do
|
|
@@ -742,7 +713,6 @@ describe Kitchen::Configurable do
|
|
|
742
713
|
end
|
|
743
714
|
|
|
744
715
|
describe "for bourne shells" do
|
|
745
|
-
|
|
746
716
|
before { platform.stubs(:shell_type).returns("bourne") }
|
|
747
717
|
|
|
748
718
|
it "uses bourne shell (sh)" do
|
|
@@ -959,7 +929,6 @@ describe Kitchen::Configurable do
|
|
|
959
929
|
end
|
|
960
930
|
|
|
961
931
|
describe "for powershell shells" do
|
|
962
|
-
|
|
963
932
|
before { platform.stubs(:shell_type).returns("powershell") }
|
|
964
933
|
|
|
965
934
|
it "uses powershell shell" do
|
|
@@ -1117,14 +1086,13 @@ describe Kitchen::Configurable do
|
|
|
1117
1086
|
end
|
|
1118
1087
|
|
|
1119
1088
|
describe "#logger" do
|
|
1120
|
-
|
|
1121
1089
|
before { @klog = Kitchen.logger }
|
|
1122
1090
|
after { Kitchen.logger = @klog }
|
|
1123
1091
|
|
|
1124
1092
|
it "returns the instance's logger" do
|
|
1125
1093
|
logger = stub("logger")
|
|
1126
|
-
instance = stub(:
|
|
1127
|
-
subject = Kitchen::Thing::Tiny.new(config.merge(:
|
|
1094
|
+
instance = stub(logger: logger)
|
|
1095
|
+
subject = Kitchen::Thing::Tiny.new(config.merge(instance: instance))
|
|
1128
1096
|
subject.send(:logger).must_equal logger
|
|
1129
1097
|
end
|
|
1130
1098
|
|
|
@@ -21,33 +21,30 @@ require_relative "../spec_helper"
|
|
|
21
21
|
require "kitchen/data_munger"
|
|
22
22
|
|
|
23
23
|
module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
24
|
-
|
|
25
24
|
describe DataMunger do
|
|
26
|
-
|
|
27
25
|
describe "#platform_data" do
|
|
28
|
-
|
|
29
26
|
it "returns an array of platform data" do
|
|
30
27
|
DataMunger.new(
|
|
31
|
-
:
|
|
28
|
+
platforms: [
|
|
32
29
|
{
|
|
33
|
-
:
|
|
34
|
-
:
|
|
30
|
+
name: "one",
|
|
31
|
+
stuff: "junk",
|
|
35
32
|
},
|
|
36
33
|
{
|
|
37
|
-
:
|
|
38
|
-
:
|
|
39
|
-
}
|
|
34
|
+
name: "two",
|
|
35
|
+
misc: "things",
|
|
36
|
+
},
|
|
40
37
|
]
|
|
41
38
|
).platform_data.must_equal([
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
39
|
+
{
|
|
40
|
+
name: "one",
|
|
41
|
+
stuff: "junk",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: "two",
|
|
45
|
+
misc: "things",
|
|
46
|
+
},
|
|
47
|
+
])
|
|
51
48
|
end
|
|
52
49
|
|
|
53
50
|
it "returns an empty array if platforms is not defined" do
|
|
@@ -56,29 +53,28 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
56
53
|
end
|
|
57
54
|
|
|
58
55
|
describe "#suite_data" do
|
|
59
|
-
|
|
60
56
|
it "returns an array of suite data" do
|
|
61
57
|
DataMunger.new(
|
|
62
|
-
:
|
|
58
|
+
suites: [
|
|
63
59
|
{
|
|
64
|
-
:
|
|
65
|
-
:
|
|
60
|
+
name: "one",
|
|
61
|
+
stuff: "junk",
|
|
66
62
|
},
|
|
67
63
|
{
|
|
68
|
-
:
|
|
69
|
-
:
|
|
70
|
-
}
|
|
64
|
+
name: "two",
|
|
65
|
+
misc: "things",
|
|
66
|
+
},
|
|
71
67
|
]
|
|
72
68
|
).suite_data.must_equal([
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
69
|
+
{
|
|
70
|
+
name: "one",
|
|
71
|
+
stuff: "junk",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "two",
|
|
75
|
+
misc: "things",
|
|
76
|
+
},
|
|
77
|
+
])
|
|
82
78
|
end
|
|
83
79
|
|
|
84
80
|
it "returns an empty array if suites is not defined" do
|
|
@@ -87,18 +83,15 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
87
83
|
end
|
|
88
84
|
|
|
89
85
|
DATA_KEYS = {
|
|
90
|
-
:
|
|
91
|
-
:
|
|
92
|
-
:
|
|
93
|
-
:
|
|
94
|
-
}
|
|
86
|
+
driver: :name,
|
|
87
|
+
provisioner: :name,
|
|
88
|
+
transport: :name,
|
|
89
|
+
verifier: :name,
|
|
90
|
+
}.freeze
|
|
95
91
|
|
|
96
92
|
DATA_KEYS.each_pair do |key, default_key|
|
|
97
|
-
|
|
98
93
|
describe "##{key}" do
|
|
99
|
-
|
|
100
94
|
describe "from single source" do
|
|
101
|
-
|
|
102
95
|
it "returns empty hash if no common #{key} hash is provided" do
|
|
103
96
|
DataMunger.new(
|
|
104
97
|
{},
|
|
@@ -109,7 +102,7 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
109
102
|
it "drops common #{key} if hash is nil" do
|
|
110
103
|
DataMunger.new(
|
|
111
104
|
{
|
|
112
|
-
key => nil
|
|
105
|
+
key => nil,
|
|
113
106
|
},
|
|
114
107
|
{}
|
|
115
108
|
).public_send("#{key}_data_for", "suite", "plat").must_equal({})
|
|
@@ -118,10 +111,8 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
118
111
|
it "returns kitchen config #{key} name" do
|
|
119
112
|
DataMunger.new(
|
|
120
113
|
{},
|
|
121
|
-
{
|
|
122
|
-
|
|
123
|
-
key => "thenoseknows"
|
|
124
|
-
}
|
|
114
|
+
defaults: {
|
|
115
|
+
key => "thenoseknows",
|
|
125
116
|
}
|
|
126
117
|
).public_send("#{key}_data_for", "suite", "platform").must_equal(
|
|
127
118
|
default_key => "thenoseknows"
|
|
@@ -131,10 +122,8 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
131
122
|
it "returns kitchen config #{key} name from callable" do
|
|
132
123
|
DataMunger.new(
|
|
133
124
|
{},
|
|
134
|
-
{
|
|
135
|
-
|
|
136
|
-
key => ->(suite, platform) { "#{suite}++#{platform}" }
|
|
137
|
-
}
|
|
125
|
+
defaults: {
|
|
126
|
+
key => ->(suite, platform) { "#{suite}++#{platform}" },
|
|
138
127
|
}
|
|
139
128
|
).public_send("#{key}_data_for", "suite", "platform").must_equal(
|
|
140
129
|
default_key => "suite++platform"
|
|
@@ -144,7 +133,7 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
144
133
|
it "returns common #{key} name" do
|
|
145
134
|
DataMunger.new(
|
|
146
135
|
{
|
|
147
|
-
key => "starship"
|
|
136
|
+
key => "starship",
|
|
148
137
|
},
|
|
149
138
|
{}
|
|
150
139
|
).public_send("#{key}_data_for", "suite", "platform").must_equal(
|
|
@@ -157,8 +146,8 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
157
146
|
{
|
|
158
147
|
key => {
|
|
159
148
|
default_key => "starship",
|
|
160
|
-
:speed => 42
|
|
161
|
-
}
|
|
149
|
+
:speed => 42,
|
|
150
|
+
},
|
|
162
151
|
},
|
|
163
152
|
{}
|
|
164
153
|
).public_send("#{key}_data_for", "suite", "platform").must_equal(
|
|
@@ -170,9 +159,9 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
170
159
|
it "returns empty hash if platform config doesn't have #{key} hash" do
|
|
171
160
|
DataMunger.new(
|
|
172
161
|
{
|
|
173
|
-
:
|
|
174
|
-
{ :
|
|
175
|
-
]
|
|
162
|
+
platforms: [
|
|
163
|
+
{ name: "plat" },
|
|
164
|
+
],
|
|
176
165
|
},
|
|
177
166
|
{}
|
|
178
167
|
).public_send("#{key}_data_for", "suite", "plat").must_equal({})
|
|
@@ -181,12 +170,12 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
181
170
|
it "drops platform #{key} if hash is nil" do
|
|
182
171
|
DataMunger.new(
|
|
183
172
|
{
|
|
184
|
-
:
|
|
173
|
+
platforms: [
|
|
185
174
|
{
|
|
186
175
|
:name => "plat",
|
|
187
|
-
key => nil
|
|
188
|
-
}
|
|
189
|
-
]
|
|
176
|
+
key => nil,
|
|
177
|
+
},
|
|
178
|
+
],
|
|
190
179
|
},
|
|
191
180
|
{}
|
|
192
181
|
).public_send("#{key}_data_for", "suite", "plat").must_equal({})
|
|
@@ -195,12 +184,12 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
195
184
|
it "returns platform #{key} name" do
|
|
196
185
|
DataMunger.new(
|
|
197
186
|
{
|
|
198
|
-
:
|
|
187
|
+
platforms: [
|
|
199
188
|
{
|
|
200
189
|
:name => "plat",
|
|
201
|
-
key => "flip"
|
|
202
|
-
}
|
|
203
|
-
]
|
|
190
|
+
key => "flip",
|
|
191
|
+
},
|
|
192
|
+
],
|
|
204
193
|
},
|
|
205
194
|
{}
|
|
206
195
|
).public_send("#{key}_data_for", "suite", "plat").must_equal(
|
|
@@ -211,15 +200,15 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
211
200
|
it "returns platform config containing #{key} hash" do
|
|
212
201
|
DataMunger.new(
|
|
213
202
|
{
|
|
214
|
-
:
|
|
203
|
+
platforms: [
|
|
215
204
|
{
|
|
216
205
|
:name => "plat",
|
|
217
206
|
key => {
|
|
218
207
|
default_key => "flip",
|
|
219
|
-
:flop => "yep"
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
]
|
|
208
|
+
:flop => "yep",
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
],
|
|
223
212
|
},
|
|
224
213
|
{}
|
|
225
214
|
).public_send("#{key}_data_for", "suite", "plat").must_equal(
|
|
@@ -231,9 +220,9 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
231
220
|
it "returns empty hash if suite config doesn't have #{key} hash" do
|
|
232
221
|
DataMunger.new(
|
|
233
222
|
{
|
|
234
|
-
:
|
|
235
|
-
{ :
|
|
236
|
-
]
|
|
223
|
+
suites: [
|
|
224
|
+
{ name: "sweet" },
|
|
225
|
+
],
|
|
237
226
|
},
|
|
238
227
|
{}
|
|
239
228
|
).public_send("#{key}_data_for", "sweet", "platform").must_equal({})
|
|
@@ -242,12 +231,12 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
242
231
|
it "drops suite #{key} hash is nil" do
|
|
243
232
|
DataMunger.new(
|
|
244
233
|
{
|
|
245
|
-
:
|
|
234
|
+
suites: [
|
|
246
235
|
{
|
|
247
236
|
:name => "suite",
|
|
248
|
-
key => nil
|
|
249
|
-
}
|
|
250
|
-
]
|
|
237
|
+
key => nil,
|
|
238
|
+
},
|
|
239
|
+
],
|
|
251
240
|
},
|
|
252
241
|
{}
|
|
253
242
|
).public_send("#{key}_data_for", "suite", "plat").must_equal({})
|
|
@@ -256,12 +245,12 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
256
245
|
it "returns suite #{key} name" do
|
|
257
246
|
DataMunger.new(
|
|
258
247
|
{
|
|
259
|
-
:
|
|
248
|
+
suites: [
|
|
260
249
|
{
|
|
261
250
|
:name => "sweet",
|
|
262
|
-
key => "waz"
|
|
263
|
-
}
|
|
264
|
-
]
|
|
251
|
+
key => "waz",
|
|
252
|
+
},
|
|
253
|
+
],
|
|
265
254
|
},
|
|
266
255
|
{}
|
|
267
256
|
).public_send("#{key}_data_for", "sweet", "platform").must_equal(
|
|
@@ -272,15 +261,15 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
272
261
|
it "returns suite config containing #{key} hash" do
|
|
273
262
|
DataMunger.new(
|
|
274
263
|
{
|
|
275
|
-
:
|
|
264
|
+
suites: [
|
|
276
265
|
{
|
|
277
266
|
:name => "sweet",
|
|
278
267
|
key => {
|
|
279
268
|
default_key => "waz",
|
|
280
|
-
:up => "nope"
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
]
|
|
269
|
+
:up => "nope",
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
],
|
|
284
273
|
},
|
|
285
274
|
{}
|
|
286
275
|
).public_send("#{key}_data_for", "sweet", "platform").must_equal(
|
|
@@ -291,15 +280,14 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
291
280
|
end
|
|
292
281
|
|
|
293
282
|
describe "from multiple sources merging" do
|
|
294
|
-
|
|
295
283
|
it "suite into platform into common" do
|
|
296
284
|
DataMunger.new(
|
|
297
285
|
{
|
|
298
286
|
key => {
|
|
299
287
|
default_key => "commony",
|
|
300
288
|
:color => "purple",
|
|
301
|
-
:fruit => %w
|
|
302
|
-
:deep => { :
|
|
289
|
+
:fruit => %w{apple pear},
|
|
290
|
+
:deep => { common: "junk" },
|
|
303
291
|
},
|
|
304
292
|
:platforms => [
|
|
305
293
|
{
|
|
@@ -307,9 +295,9 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
307
295
|
key => {
|
|
308
296
|
default_key => "platformy",
|
|
309
297
|
:fruit => ["banana"],
|
|
310
|
-
:deep => { :
|
|
311
|
-
}
|
|
312
|
-
}
|
|
298
|
+
:deep => { platform: "stuff" },
|
|
299
|
+
},
|
|
300
|
+
},
|
|
313
301
|
],
|
|
314
302
|
:suites => [
|
|
315
303
|
{
|
|
@@ -317,10 +305,10 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
317
305
|
key => {
|
|
318
306
|
default_key => "suitey",
|
|
319
307
|
:vehicle => "car",
|
|
320
|
-
:deep => { :
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
]
|
|
308
|
+
:deep => { suite: "things" },
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
],
|
|
324
312
|
},
|
|
325
313
|
{}
|
|
326
314
|
).public_send("#{key}_data_for", "sweet", "plat").must_equal(
|
|
@@ -329,9 +317,9 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
329
317
|
:fruit => ["banana"],
|
|
330
318
|
:vehicle => "car",
|
|
331
319
|
:deep => {
|
|
332
|
-
:
|
|
333
|
-
:
|
|
334
|
-
:
|
|
320
|
+
common: "junk",
|
|
321
|
+
platform: "stuff",
|
|
322
|
+
suite: "things",
|
|
335
323
|
}
|
|
336
324
|
)
|
|
337
325
|
end
|
|
@@ -342,8 +330,8 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
342
330
|
key => {
|
|
343
331
|
default_key => "commony",
|
|
344
332
|
:color => "purple",
|
|
345
|
-
:fruit => %w
|
|
346
|
-
:deep => { :
|
|
333
|
+
:fruit => %w{apple pear},
|
|
334
|
+
:deep => { common: "junk" },
|
|
347
335
|
},
|
|
348
336
|
:platforms => [
|
|
349
337
|
{
|
|
@@ -351,10 +339,10 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
351
339
|
key => {
|
|
352
340
|
default_key => "platformy",
|
|
353
341
|
:fruit => ["banana"],
|
|
354
|
-
:deep => { :
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
]
|
|
342
|
+
:deep => { platform: "stuff" },
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
],
|
|
358
346
|
},
|
|
359
347
|
{}
|
|
360
348
|
).public_send("#{key}_data_for", "sweet", "plat").must_equal(
|
|
@@ -362,8 +350,8 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
362
350
|
:color => "purple",
|
|
363
351
|
:fruit => ["banana"],
|
|
364
352
|
:deep => {
|
|
365
|
-
:
|
|
366
|
-
:
|
|
353
|
+
common: "junk",
|
|
354
|
+
platform: "stuff",
|
|
367
355
|
}
|
|
368
356
|
)
|
|
369
357
|
end
|
|
@@ -374,8 +362,8 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
374
362
|
key => {
|
|
375
363
|
default_key => "commony",
|
|
376
364
|
:color => "purple",
|
|
377
|
-
:fruit => %w
|
|
378
|
-
:deep => { :
|
|
365
|
+
:fruit => %w{apple pear},
|
|
366
|
+
:deep => { common: "junk" },
|
|
379
367
|
},
|
|
380
368
|
:suites => [
|
|
381
369
|
{
|
|
@@ -383,20 +371,20 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
383
371
|
key => {
|
|
384
372
|
default_key => "suitey",
|
|
385
373
|
:vehicle => "car",
|
|
386
|
-
:deep => { :
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
]
|
|
374
|
+
:deep => { suite: "things" },
|
|
375
|
+
},
|
|
376
|
+
},
|
|
377
|
+
],
|
|
390
378
|
},
|
|
391
379
|
{}
|
|
392
380
|
).public_send("#{key}_data_for", "sweet", "plat").must_equal(
|
|
393
381
|
default_key => "suitey",
|
|
394
382
|
:color => "purple",
|
|
395
|
-
:fruit => %w
|
|
383
|
+
:fruit => %w{apple pear},
|
|
396
384
|
:vehicle => "car",
|
|
397
385
|
:deep => {
|
|
398
|
-
:
|
|
399
|
-
:
|
|
386
|
+
common: "junk",
|
|
387
|
+
suite: "things",
|
|
400
388
|
}
|
|
401
389
|
)
|
|
402
390
|
end
|
|
@@ -404,26 +392,26 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
404
392
|
it "suite into platform" do
|
|
405
393
|
DataMunger.new(
|
|
406
394
|
{
|
|
407
|
-
:
|
|
395
|
+
platforms: [
|
|
408
396
|
{
|
|
409
397
|
:name => "plat",
|
|
410
398
|
key => {
|
|
411
399
|
default_key => "platformy",
|
|
412
400
|
:fruit => ["banana"],
|
|
413
|
-
:deep => { :
|
|
414
|
-
}
|
|
415
|
-
}
|
|
401
|
+
:deep => { platform: "stuff" },
|
|
402
|
+
},
|
|
403
|
+
},
|
|
416
404
|
],
|
|
417
|
-
:
|
|
405
|
+
suites: [
|
|
418
406
|
{
|
|
419
407
|
:name => "sweet",
|
|
420
408
|
key => {
|
|
421
409
|
default_key => "suitey",
|
|
422
410
|
:vehicle => "car",
|
|
423
|
-
:deep => { :
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
]
|
|
411
|
+
:deep => { suite: "things" },
|
|
412
|
+
},
|
|
413
|
+
},
|
|
414
|
+
],
|
|
427
415
|
},
|
|
428
416
|
{}
|
|
429
417
|
).public_send("#{key}_data_for", "sweet", "plat").must_equal(
|
|
@@ -431,8 +419,8 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
431
419
|
:fruit => ["banana"],
|
|
432
420
|
:vehicle => "car",
|
|
433
421
|
:deep => {
|
|
434
|
-
:
|
|
435
|
-
:
|
|
422
|
+
platform: "stuff",
|
|
423
|
+
suite: "things",
|
|
436
424
|
}
|
|
437
425
|
)
|
|
438
426
|
end
|
|
@@ -441,367 +429,363 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
441
429
|
end
|
|
442
430
|
|
|
443
431
|
describe "primary Chef data" do
|
|
444
|
-
|
|
445
432
|
describe "in a suite" do
|
|
446
|
-
|
|
447
433
|
it "moves attributes into provisioner" do
|
|
448
434
|
DataMunger.new(
|
|
449
435
|
{
|
|
450
|
-
:
|
|
451
|
-
:
|
|
436
|
+
provisioner: "chefy",
|
|
437
|
+
suites: [
|
|
452
438
|
{
|
|
453
|
-
:
|
|
454
|
-
:
|
|
455
|
-
}
|
|
456
|
-
]
|
|
439
|
+
name: "sweet",
|
|
440
|
+
attributes: { one: "two" },
|
|
441
|
+
},
|
|
442
|
+
],
|
|
457
443
|
},
|
|
458
444
|
{}
|
|
459
445
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
460
|
-
:
|
|
461
|
-
:
|
|
446
|
+
name: "chefy",
|
|
447
|
+
attributes: { one: "two" }
|
|
462
448
|
)
|
|
463
449
|
end
|
|
464
450
|
|
|
465
451
|
it "moves run_list into provisioner" do
|
|
466
452
|
DataMunger.new(
|
|
467
453
|
{
|
|
468
|
-
:
|
|
469
|
-
:
|
|
454
|
+
provisioner: "chefy",
|
|
455
|
+
suites: [
|
|
470
456
|
{
|
|
471
|
-
:
|
|
472
|
-
:
|
|
473
|
-
}
|
|
474
|
-
]
|
|
457
|
+
name: "sweet",
|
|
458
|
+
run_list: %w{one two},
|
|
459
|
+
},
|
|
460
|
+
],
|
|
475
461
|
},
|
|
476
462
|
{}
|
|
477
463
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
478
|
-
:
|
|
479
|
-
:
|
|
464
|
+
name: "chefy",
|
|
465
|
+
run_list: %w{one two}
|
|
480
466
|
)
|
|
481
467
|
end
|
|
482
468
|
|
|
483
469
|
it "moves named_run_list into provisioner" do
|
|
484
470
|
DataMunger.new(
|
|
485
471
|
{
|
|
486
|
-
:
|
|
487
|
-
:
|
|
472
|
+
provisioner: "chefy",
|
|
473
|
+
suites: [
|
|
488
474
|
{
|
|
489
|
-
:
|
|
490
|
-
:
|
|
491
|
-
}
|
|
492
|
-
]
|
|
475
|
+
name: "sweet",
|
|
476
|
+
named_run_list: "other_run_list",
|
|
477
|
+
},
|
|
478
|
+
],
|
|
493
479
|
},
|
|
494
480
|
{}
|
|
495
481
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
496
|
-
:
|
|
497
|
-
:
|
|
482
|
+
name: "chefy",
|
|
483
|
+
named_run_list: "other_run_list"
|
|
498
484
|
)
|
|
499
485
|
end
|
|
500
486
|
it "maintains run_list in provisioner" do
|
|
501
487
|
DataMunger.new(
|
|
502
488
|
{
|
|
503
|
-
:
|
|
504
|
-
:
|
|
489
|
+
provisioner: "chefy",
|
|
490
|
+
suites: [
|
|
505
491
|
{
|
|
506
|
-
:
|
|
507
|
-
:
|
|
508
|
-
:
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
]
|
|
492
|
+
name: "sweet",
|
|
493
|
+
provisioner: {
|
|
494
|
+
run_list: %w{one two},
|
|
495
|
+
},
|
|
496
|
+
},
|
|
497
|
+
],
|
|
512
498
|
},
|
|
513
499
|
{}
|
|
514
500
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
515
|
-
:
|
|
516
|
-
:
|
|
501
|
+
name: "chefy",
|
|
502
|
+
run_list: %w{one two}
|
|
517
503
|
)
|
|
518
504
|
end
|
|
519
505
|
|
|
520
506
|
it "merge provisioner into attributes if provisioner exists" do
|
|
521
507
|
DataMunger.new(
|
|
522
508
|
{
|
|
523
|
-
:
|
|
509
|
+
suites: [
|
|
524
510
|
{
|
|
525
|
-
:
|
|
526
|
-
:
|
|
527
|
-
:
|
|
528
|
-
}
|
|
529
|
-
]
|
|
511
|
+
name: "sweet",
|
|
512
|
+
attributes: { one: "two" },
|
|
513
|
+
provisioner: "chefy",
|
|
514
|
+
},
|
|
515
|
+
],
|
|
530
516
|
},
|
|
531
517
|
{}
|
|
532
518
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
533
|
-
:
|
|
534
|
-
:
|
|
519
|
+
name: "chefy",
|
|
520
|
+
attributes: { one: "two" }
|
|
535
521
|
)
|
|
536
522
|
end
|
|
537
523
|
|
|
538
524
|
it "merge provisioner into run_list if provisioner exists" do
|
|
539
525
|
DataMunger.new(
|
|
540
526
|
{
|
|
541
|
-
:
|
|
527
|
+
suites: [
|
|
542
528
|
{
|
|
543
|
-
:
|
|
544
|
-
:
|
|
545
|
-
:
|
|
546
|
-
}
|
|
547
|
-
]
|
|
529
|
+
name: "sweet",
|
|
530
|
+
run_list: %w{one two},
|
|
531
|
+
provisioner: "chefy",
|
|
532
|
+
},
|
|
533
|
+
],
|
|
548
534
|
},
|
|
549
535
|
{}
|
|
550
536
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
551
|
-
:
|
|
552
|
-
:
|
|
537
|
+
name: "chefy",
|
|
538
|
+
run_list: %w{one two}
|
|
553
539
|
)
|
|
554
540
|
end
|
|
555
541
|
|
|
556
542
|
it "merge provisioner into named_run_list if provisioner exists" do
|
|
557
543
|
DataMunger.new(
|
|
558
544
|
{
|
|
559
|
-
:
|
|
545
|
+
suites: [
|
|
560
546
|
{
|
|
561
|
-
:
|
|
562
|
-
:
|
|
563
|
-
:
|
|
564
|
-
}
|
|
565
|
-
]
|
|
547
|
+
name: "sweet",
|
|
548
|
+
named_run_list: "other_run_list",
|
|
549
|
+
provisioner: "chefy",
|
|
550
|
+
},
|
|
551
|
+
],
|
|
566
552
|
},
|
|
567
553
|
{}
|
|
568
554
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
569
|
-
:
|
|
570
|
-
:
|
|
555
|
+
name: "chefy",
|
|
556
|
+
named_run_list: "other_run_list"
|
|
571
557
|
)
|
|
572
558
|
end
|
|
573
559
|
it "drops nil run_list" do
|
|
574
560
|
DataMunger.new(
|
|
575
561
|
{
|
|
576
|
-
:
|
|
562
|
+
suites: [
|
|
577
563
|
{
|
|
578
|
-
:
|
|
579
|
-
:
|
|
580
|
-
:
|
|
581
|
-
}
|
|
582
|
-
]
|
|
564
|
+
name: "sweet",
|
|
565
|
+
run_list: nil,
|
|
566
|
+
provisioner: "chefy",
|
|
567
|
+
},
|
|
568
|
+
],
|
|
583
569
|
},
|
|
584
570
|
{}
|
|
585
571
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
586
|
-
:
|
|
572
|
+
name: "chefy"
|
|
587
573
|
)
|
|
588
574
|
end
|
|
589
575
|
|
|
590
576
|
it "drops nil attributes" do
|
|
591
577
|
DataMunger.new(
|
|
592
578
|
{
|
|
593
|
-
:
|
|
579
|
+
suites: [
|
|
594
580
|
{
|
|
595
|
-
:
|
|
596
|
-
:
|
|
597
|
-
:
|
|
598
|
-
}
|
|
599
|
-
]
|
|
581
|
+
name: "sweet",
|
|
582
|
+
attributes: nil,
|
|
583
|
+
provisioner: "chefy",
|
|
584
|
+
},
|
|
585
|
+
],
|
|
600
586
|
},
|
|
601
587
|
{}
|
|
602
588
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
603
|
-
:
|
|
589
|
+
name: "chefy"
|
|
604
590
|
)
|
|
605
591
|
end
|
|
606
592
|
end
|
|
607
593
|
|
|
608
594
|
describe "in a platform" do
|
|
609
|
-
|
|
610
595
|
it "moves attributes into provisioner" do
|
|
611
596
|
DataMunger.new(
|
|
612
597
|
{
|
|
613
|
-
:
|
|
614
|
-
:
|
|
598
|
+
provisioner: "chefy",
|
|
599
|
+
platforms: [
|
|
615
600
|
{
|
|
616
|
-
:
|
|
617
|
-
:
|
|
618
|
-
}
|
|
619
|
-
]
|
|
601
|
+
name: "plat",
|
|
602
|
+
attributes: { one: "two" },
|
|
603
|
+
},
|
|
604
|
+
],
|
|
620
605
|
},
|
|
621
606
|
{}
|
|
622
607
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
623
|
-
:
|
|
624
|
-
:
|
|
608
|
+
name: "chefy",
|
|
609
|
+
attributes: { one: "two" }
|
|
625
610
|
)
|
|
626
611
|
end
|
|
627
612
|
|
|
628
613
|
it "moves run_list into provisioner" do
|
|
629
614
|
DataMunger.new(
|
|
630
615
|
{
|
|
631
|
-
:
|
|
632
|
-
:
|
|
616
|
+
provisioner: "chefy",
|
|
617
|
+
platforms: [
|
|
633
618
|
{
|
|
634
|
-
:
|
|
635
|
-
:
|
|
636
|
-
}
|
|
637
|
-
]
|
|
619
|
+
name: "plat",
|
|
620
|
+
run_list: %w{one two},
|
|
621
|
+
},
|
|
622
|
+
],
|
|
638
623
|
},
|
|
639
624
|
{}
|
|
640
625
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
641
|
-
:
|
|
642
|
-
:
|
|
626
|
+
name: "chefy",
|
|
627
|
+
run_list: %w{one two}
|
|
643
628
|
)
|
|
644
629
|
end
|
|
645
630
|
|
|
646
631
|
it "moves named_run_list into provisioner" do
|
|
647
632
|
DataMunger.new(
|
|
648
633
|
{
|
|
649
|
-
:
|
|
650
|
-
:
|
|
634
|
+
provisioner: "chefy",
|
|
635
|
+
platforms: [
|
|
651
636
|
{
|
|
652
|
-
:
|
|
653
|
-
:
|
|
654
|
-
}
|
|
655
|
-
]
|
|
637
|
+
name: "plat",
|
|
638
|
+
named_run_list: "other_run_list",
|
|
639
|
+
},
|
|
640
|
+
],
|
|
656
641
|
},
|
|
657
642
|
{}
|
|
658
643
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
659
|
-
:
|
|
660
|
-
:
|
|
644
|
+
name: "chefy",
|
|
645
|
+
named_run_list: "other_run_list"
|
|
661
646
|
)
|
|
662
647
|
end
|
|
663
648
|
it "maintains run_list in provisioner" do
|
|
664
649
|
DataMunger.new(
|
|
665
650
|
{
|
|
666
|
-
:
|
|
667
|
-
:
|
|
651
|
+
provisioner: "chefy",
|
|
652
|
+
platforms: [
|
|
668
653
|
{
|
|
669
|
-
:
|
|
670
|
-
:
|
|
671
|
-
:
|
|
672
|
-
}
|
|
673
|
-
}
|
|
674
|
-
]
|
|
654
|
+
name: "plat",
|
|
655
|
+
provisioner: {
|
|
656
|
+
run_list: %w{one two},
|
|
657
|
+
},
|
|
658
|
+
},
|
|
659
|
+
],
|
|
675
660
|
},
|
|
676
661
|
{}
|
|
677
662
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
678
|
-
:
|
|
679
|
-
:
|
|
663
|
+
name: "chefy",
|
|
664
|
+
run_list: %w{one two}
|
|
680
665
|
)
|
|
681
666
|
end
|
|
682
667
|
|
|
683
668
|
it "merge provisioner into attributes if provisioner exists" do
|
|
684
669
|
DataMunger.new(
|
|
685
670
|
{
|
|
686
|
-
:
|
|
671
|
+
platforms: [
|
|
687
672
|
{
|
|
688
|
-
:
|
|
689
|
-
:
|
|
690
|
-
:
|
|
691
|
-
}
|
|
692
|
-
]
|
|
673
|
+
name: "plat",
|
|
674
|
+
attributes: { one: "two" },
|
|
675
|
+
provisioner: "chefy",
|
|
676
|
+
},
|
|
677
|
+
],
|
|
693
678
|
},
|
|
694
679
|
{}
|
|
695
680
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
696
|
-
:
|
|
697
|
-
:
|
|
681
|
+
name: "chefy",
|
|
682
|
+
attributes: { one: "two" }
|
|
698
683
|
)
|
|
699
684
|
end
|
|
700
685
|
|
|
701
686
|
it "merge provisioner into run_list if provisioner exists" do
|
|
702
687
|
DataMunger.new(
|
|
703
688
|
{
|
|
704
|
-
:
|
|
689
|
+
platforms: [
|
|
705
690
|
{
|
|
706
|
-
:
|
|
707
|
-
:
|
|
708
|
-
:
|
|
709
|
-
}
|
|
710
|
-
]
|
|
691
|
+
name: "plat",
|
|
692
|
+
run_list: %w{one two},
|
|
693
|
+
provisioner: "chefy",
|
|
694
|
+
},
|
|
695
|
+
],
|
|
711
696
|
},
|
|
712
697
|
{}
|
|
713
698
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
714
|
-
:
|
|
715
|
-
:
|
|
699
|
+
name: "chefy",
|
|
700
|
+
run_list: %w{one two}
|
|
716
701
|
)
|
|
717
702
|
end
|
|
718
703
|
|
|
719
704
|
it "merge provisioner into named_run_list if provisioner exists" do
|
|
720
705
|
DataMunger.new(
|
|
721
706
|
{
|
|
722
|
-
:
|
|
707
|
+
platforms: [
|
|
723
708
|
{
|
|
724
|
-
:
|
|
725
|
-
:
|
|
726
|
-
:
|
|
727
|
-
}
|
|
728
|
-
]
|
|
709
|
+
name: "plat",
|
|
710
|
+
named_run_list: "other_run_list",
|
|
711
|
+
provisioner: "chefy",
|
|
712
|
+
},
|
|
713
|
+
],
|
|
729
714
|
},
|
|
730
715
|
{}
|
|
731
716
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
732
|
-
:
|
|
733
|
-
:
|
|
717
|
+
name: "chefy",
|
|
718
|
+
named_run_list: "other_run_list"
|
|
734
719
|
)
|
|
735
720
|
end
|
|
736
721
|
it "drops nil run_list" do
|
|
737
722
|
DataMunger.new(
|
|
738
723
|
{
|
|
739
|
-
:
|
|
724
|
+
platforms: [
|
|
740
725
|
{
|
|
741
|
-
:
|
|
742
|
-
:
|
|
743
|
-
:
|
|
744
|
-
}
|
|
745
|
-
]
|
|
726
|
+
name: "plat",
|
|
727
|
+
run_list: nil,
|
|
728
|
+
provisioner: "chefy",
|
|
729
|
+
},
|
|
730
|
+
],
|
|
746
731
|
},
|
|
747
732
|
{}
|
|
748
733
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
749
|
-
:
|
|
734
|
+
name: "chefy"
|
|
750
735
|
)
|
|
751
736
|
end
|
|
752
737
|
|
|
753
738
|
it "drops nil attributes" do
|
|
754
739
|
DataMunger.new(
|
|
755
740
|
{
|
|
756
|
-
:
|
|
741
|
+
platforms: [
|
|
757
742
|
{
|
|
758
|
-
:
|
|
759
|
-
:
|
|
760
|
-
:
|
|
761
|
-
}
|
|
762
|
-
]
|
|
743
|
+
name: "plat",
|
|
744
|
+
attributes: nil,
|
|
745
|
+
provisioner: "chefy",
|
|
746
|
+
},
|
|
747
|
+
],
|
|
763
748
|
},
|
|
764
749
|
{}
|
|
765
750
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
766
|
-
:
|
|
751
|
+
name: "chefy"
|
|
767
752
|
)
|
|
768
753
|
end
|
|
769
754
|
end
|
|
770
755
|
|
|
771
756
|
describe "in a suite and platform" do
|
|
772
|
-
|
|
773
757
|
it "merges suite attributes into platform attributes" do
|
|
774
758
|
DataMunger.new(
|
|
775
759
|
{
|
|
776
|
-
:
|
|
777
|
-
:
|
|
760
|
+
provisioner: "chefy",
|
|
761
|
+
platforms: [
|
|
778
762
|
{
|
|
779
|
-
:
|
|
780
|
-
:
|
|
781
|
-
:
|
|
782
|
-
:
|
|
783
|
-
}
|
|
784
|
-
}
|
|
763
|
+
name: "plat",
|
|
764
|
+
attributes: {
|
|
765
|
+
color: "blue",
|
|
766
|
+
deep: { platform: "much" },
|
|
767
|
+
},
|
|
768
|
+
},
|
|
785
769
|
],
|
|
786
|
-
:
|
|
770
|
+
suites: [
|
|
787
771
|
{
|
|
788
|
-
:
|
|
789
|
-
:
|
|
790
|
-
:
|
|
791
|
-
:
|
|
792
|
-
}
|
|
793
|
-
}
|
|
794
|
-
]
|
|
772
|
+
name: "sweet",
|
|
773
|
+
attributes: {
|
|
774
|
+
color: "pink",
|
|
775
|
+
deep: { suite: "wow" },
|
|
776
|
+
},
|
|
777
|
+
},
|
|
778
|
+
],
|
|
795
779
|
},
|
|
796
780
|
{}
|
|
797
781
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
798
|
-
:
|
|
799
|
-
:
|
|
800
|
-
:
|
|
801
|
-
:
|
|
802
|
-
:
|
|
803
|
-
:
|
|
804
|
-
}
|
|
782
|
+
name: "chefy",
|
|
783
|
+
attributes: {
|
|
784
|
+
color: "pink",
|
|
785
|
+
deep: {
|
|
786
|
+
suite: "wow",
|
|
787
|
+
platform: "much",
|
|
788
|
+
},
|
|
805
789
|
}
|
|
806
790
|
)
|
|
807
791
|
end
|
|
@@ -809,130 +793,130 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
809
793
|
it "concats suite run_list to platform run_list" do
|
|
810
794
|
DataMunger.new(
|
|
811
795
|
{
|
|
812
|
-
:
|
|
813
|
-
:
|
|
796
|
+
provisioner: "chefy",
|
|
797
|
+
platforms: [
|
|
814
798
|
{
|
|
815
|
-
:
|
|
816
|
-
:
|
|
817
|
-
}
|
|
799
|
+
name: "plat",
|
|
800
|
+
run_list: %w{one two},
|
|
801
|
+
},
|
|
818
802
|
],
|
|
819
|
-
:
|
|
803
|
+
suites: [
|
|
820
804
|
{
|
|
821
|
-
:
|
|
822
|
-
:
|
|
823
|
-
}
|
|
824
|
-
]
|
|
805
|
+
name: "sweet",
|
|
806
|
+
run_list: %w{three four},
|
|
807
|
+
},
|
|
808
|
+
],
|
|
825
809
|
},
|
|
826
810
|
{}
|
|
827
811
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
828
|
-
:
|
|
829
|
-
:
|
|
812
|
+
name: "chefy",
|
|
813
|
+
run_list: %w{one two three four}
|
|
830
814
|
)
|
|
831
815
|
end
|
|
832
816
|
|
|
833
817
|
it "concats suite run_list in provisioner to platform run_list" do
|
|
834
818
|
DataMunger.new(
|
|
835
819
|
{
|
|
836
|
-
:
|
|
837
|
-
:
|
|
820
|
+
provisioner: "chefy",
|
|
821
|
+
platforms: [
|
|
838
822
|
{
|
|
839
|
-
:
|
|
840
|
-
:
|
|
841
|
-
}
|
|
823
|
+
name: "plat",
|
|
824
|
+
run_list: %w{one two},
|
|
825
|
+
},
|
|
842
826
|
],
|
|
843
|
-
:
|
|
827
|
+
suites: [
|
|
844
828
|
{
|
|
845
|
-
:
|
|
846
|
-
:
|
|
847
|
-
:
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
]
|
|
829
|
+
name: "sweet",
|
|
830
|
+
provisioner: {
|
|
831
|
+
run_list: %w{three four},
|
|
832
|
+
},
|
|
833
|
+
},
|
|
834
|
+
],
|
|
851
835
|
},
|
|
852
836
|
{}
|
|
853
837
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
854
|
-
:
|
|
855
|
-
:
|
|
838
|
+
name: "chefy",
|
|
839
|
+
run_list: %w{one two three four}
|
|
856
840
|
)
|
|
857
841
|
end
|
|
858
842
|
|
|
859
843
|
it "concats suite run_list to platform run_list in provisioner" do
|
|
860
844
|
DataMunger.new(
|
|
861
845
|
{
|
|
862
|
-
:
|
|
863
|
-
:
|
|
846
|
+
provisioner: "chefy",
|
|
847
|
+
platforms: [
|
|
864
848
|
{
|
|
865
|
-
:
|
|
866
|
-
:
|
|
867
|
-
:
|
|
868
|
-
}
|
|
869
|
-
}
|
|
849
|
+
name: "plat",
|
|
850
|
+
provisioner: {
|
|
851
|
+
run_list: %w{one two},
|
|
852
|
+
},
|
|
853
|
+
},
|
|
870
854
|
],
|
|
871
|
-
:
|
|
855
|
+
suites: [
|
|
872
856
|
{
|
|
873
|
-
:
|
|
874
|
-
:
|
|
875
|
-
}
|
|
876
|
-
]
|
|
857
|
+
name: "sweet",
|
|
858
|
+
run_list: %w{three four},
|
|
859
|
+
},
|
|
860
|
+
],
|
|
877
861
|
},
|
|
878
862
|
{}
|
|
879
863
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
880
|
-
:
|
|
881
|
-
:
|
|
864
|
+
name: "chefy",
|
|
865
|
+
run_list: %w{one two three four}
|
|
882
866
|
)
|
|
883
867
|
end
|
|
884
868
|
|
|
885
869
|
it "concats to nil run_lists into an empty Array" do
|
|
886
870
|
DataMunger.new(
|
|
887
871
|
{
|
|
888
|
-
:
|
|
889
|
-
:
|
|
872
|
+
provisioner: "chefy",
|
|
873
|
+
platforms: [
|
|
890
874
|
{
|
|
891
|
-
:
|
|
892
|
-
:
|
|
893
|
-
:
|
|
894
|
-
}
|
|
895
|
-
}
|
|
875
|
+
name: "plat",
|
|
876
|
+
provisioner: {
|
|
877
|
+
run_list: nil,
|
|
878
|
+
},
|
|
879
|
+
},
|
|
896
880
|
],
|
|
897
|
-
:
|
|
881
|
+
suites: [
|
|
898
882
|
{
|
|
899
|
-
:
|
|
900
|
-
:
|
|
901
|
-
}
|
|
902
|
-
]
|
|
883
|
+
name: "sweet",
|
|
884
|
+
run_list: nil,
|
|
885
|
+
},
|
|
886
|
+
],
|
|
903
887
|
},
|
|
904
888
|
{}
|
|
905
889
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
906
|
-
:
|
|
907
|
-
:
|
|
890
|
+
name: "chefy",
|
|
891
|
+
run_list: []
|
|
908
892
|
)
|
|
909
893
|
end
|
|
910
894
|
|
|
911
895
|
it "does not corrupt run_list data for multiple suite/platform pairs" do
|
|
912
896
|
munger = DataMunger.new(
|
|
913
897
|
{
|
|
914
|
-
:
|
|
915
|
-
:
|
|
898
|
+
provisioner: "chefy",
|
|
899
|
+
platforms: [
|
|
916
900
|
{
|
|
917
|
-
:
|
|
901
|
+
name: "p1",
|
|
918
902
|
},
|
|
919
903
|
{
|
|
920
|
-
:
|
|
921
|
-
:
|
|
922
|
-
}
|
|
904
|
+
name: "p2",
|
|
905
|
+
run_list: %w{one two},
|
|
906
|
+
},
|
|
923
907
|
],
|
|
924
|
-
:
|
|
908
|
+
suites: [
|
|
925
909
|
{
|
|
926
|
-
:
|
|
927
|
-
:
|
|
910
|
+
name: "s1",
|
|
911
|
+
run_list: %w{alpha beta},
|
|
928
912
|
},
|
|
929
913
|
{
|
|
930
|
-
:
|
|
931
|
-
:
|
|
932
|
-
:
|
|
933
|
-
}
|
|
934
|
-
}
|
|
935
|
-
]
|
|
914
|
+
name: "s2",
|
|
915
|
+
provisioner: {
|
|
916
|
+
run_list: %w{three four},
|
|
917
|
+
},
|
|
918
|
+
},
|
|
919
|
+
],
|
|
936
920
|
},
|
|
937
921
|
{}
|
|
938
922
|
)
|
|
@@ -944,35 +928,29 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
944
928
|
munger.provisioner_data_for("s2", "p1")
|
|
945
929
|
|
|
946
930
|
munger.provisioner_data_for("s2", "p2").must_equal(
|
|
947
|
-
:
|
|
948
|
-
:
|
|
931
|
+
name: "chefy",
|
|
932
|
+
run_list: %w{one two three four}
|
|
949
933
|
)
|
|
950
934
|
end
|
|
951
935
|
end
|
|
952
936
|
end
|
|
953
937
|
|
|
954
938
|
describe "kitchen config" do
|
|
955
|
-
|
|
956
939
|
[:kitchen_root, :test_base_path].each do |key|
|
|
957
|
-
|
|
958
940
|
describe "for #{key}" do
|
|
959
|
-
|
|
960
941
|
describe "for #driver_data_for" do
|
|
961
|
-
|
|
962
942
|
it "is returned when provided" do
|
|
963
943
|
DataMunger.new(
|
|
964
944
|
{
|
|
965
|
-
:
|
|
966
|
-
:
|
|
967
|
-
{ :
|
|
945
|
+
driver: "chefy",
|
|
946
|
+
platforms: [
|
|
947
|
+
{ name: "plat" },
|
|
948
|
+
],
|
|
949
|
+
suites: [
|
|
950
|
+
{ name: "sweet" },
|
|
968
951
|
],
|
|
969
|
-
:suites => [
|
|
970
|
-
{ :name => "sweet" }
|
|
971
|
-
]
|
|
972
952
|
},
|
|
973
|
-
|
|
974
|
-
key => "datvalue"
|
|
975
|
-
}
|
|
953
|
+
key => "datvalue"
|
|
976
954
|
).driver_data_for("sweet", "plat").must_equal(
|
|
977
955
|
:name => "chefy",
|
|
978
956
|
key => "datvalue"
|
|
@@ -982,16 +960,16 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
982
960
|
it "is returned when provided in user data" do
|
|
983
961
|
DataMunger.new(
|
|
984
962
|
{
|
|
985
|
-
:
|
|
986
|
-
key => "datvalue"
|
|
963
|
+
kitchen: {
|
|
964
|
+
key => "datvalue",
|
|
987
965
|
},
|
|
988
|
-
:
|
|
989
|
-
:
|
|
990
|
-
{ :
|
|
966
|
+
driver: "chefy",
|
|
967
|
+
platforms: [
|
|
968
|
+
{ name: "plat" },
|
|
969
|
+
],
|
|
970
|
+
suites: [
|
|
971
|
+
{ name: "sweet" },
|
|
991
972
|
],
|
|
992
|
-
:suites => [
|
|
993
|
-
{ :name => "sweet" }
|
|
994
|
-
]
|
|
995
973
|
},
|
|
996
974
|
{}
|
|
997
975
|
).driver_data_for("sweet", "plat").must_equal(
|
|
@@ -1003,20 +981,18 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1003
981
|
it "user data value beats provided value" do
|
|
1004
982
|
DataMunger.new(
|
|
1005
983
|
{
|
|
1006
|
-
:
|
|
1007
|
-
key => "datvalue"
|
|
984
|
+
kitchen: {
|
|
985
|
+
key => "datvalue",
|
|
1008
986
|
},
|
|
1009
|
-
:
|
|
1010
|
-
:
|
|
1011
|
-
{ :
|
|
987
|
+
driver: "chefy",
|
|
988
|
+
platforms: [
|
|
989
|
+
{ name: "plat" },
|
|
990
|
+
],
|
|
991
|
+
suites: [
|
|
992
|
+
{ name: "sweet" },
|
|
1012
993
|
],
|
|
1013
|
-
:suites => [
|
|
1014
|
-
{ :name => "sweet" }
|
|
1015
|
-
]
|
|
1016
994
|
},
|
|
1017
|
-
|
|
1018
|
-
key => "ilose"
|
|
1019
|
-
}
|
|
995
|
+
key => "ilose"
|
|
1020
996
|
).driver_data_for("sweet", "plat").must_equal(
|
|
1021
997
|
:name => "chefy",
|
|
1022
998
|
key => "datvalue"
|
|
@@ -1026,40 +1002,37 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1026
1002
|
it "rejects any value in driver data" do
|
|
1027
1003
|
DataMunger.new(
|
|
1028
1004
|
{
|
|
1029
|
-
:
|
|
1005
|
+
driver: {
|
|
1030
1006
|
:name => "chefy",
|
|
1031
|
-
key => "imevil"
|
|
1007
|
+
key => "imevil",
|
|
1032
1008
|
},
|
|
1033
|
-
:
|
|
1034
|
-
{ :
|
|
1009
|
+
platforms: [
|
|
1010
|
+
{ name: "plat" },
|
|
1011
|
+
],
|
|
1012
|
+
suites: [
|
|
1013
|
+
{ name: "sweet" },
|
|
1035
1014
|
],
|
|
1036
|
-
:suites => [
|
|
1037
|
-
{ :name => "sweet" }
|
|
1038
|
-
]
|
|
1039
1015
|
},
|
|
1040
1016
|
{}
|
|
1041
1017
|
).driver_data_for("sweet", "plat").must_equal(
|
|
1042
|
-
:
|
|
1018
|
+
name: "chefy"
|
|
1043
1019
|
)
|
|
1044
1020
|
end
|
|
1045
1021
|
end
|
|
1046
1022
|
|
|
1047
1023
|
describe "for #provisioner_data_for" do
|
|
1048
|
-
|
|
1049
1024
|
it "is returned when provided" do
|
|
1050
1025
|
DataMunger.new(
|
|
1051
1026
|
{
|
|
1052
|
-
:
|
|
1053
|
-
:
|
|
1054
|
-
{ :
|
|
1027
|
+
provisioner: "chefy",
|
|
1028
|
+
platforms: [
|
|
1029
|
+
{ name: "plat" },
|
|
1030
|
+
],
|
|
1031
|
+
suites: [
|
|
1032
|
+
{ name: "sweet" },
|
|
1055
1033
|
],
|
|
1056
|
-
:suites => [
|
|
1057
|
-
{ :name => "sweet" }
|
|
1058
|
-
]
|
|
1059
1034
|
},
|
|
1060
|
-
|
|
1061
|
-
key => "datvalue"
|
|
1062
|
-
}
|
|
1035
|
+
key => "datvalue"
|
|
1063
1036
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
1064
1037
|
:name => "chefy",
|
|
1065
1038
|
key => "datvalue"
|
|
@@ -1069,16 +1042,16 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1069
1042
|
it "is returned when provided in user data" do
|
|
1070
1043
|
DataMunger.new(
|
|
1071
1044
|
{
|
|
1072
|
-
:
|
|
1073
|
-
key => "datvalue"
|
|
1045
|
+
kitchen: {
|
|
1046
|
+
key => "datvalue",
|
|
1074
1047
|
},
|
|
1075
|
-
:
|
|
1076
|
-
:
|
|
1077
|
-
{ :
|
|
1048
|
+
provisioner: "chefy",
|
|
1049
|
+
platforms: [
|
|
1050
|
+
{ name: "plat" },
|
|
1051
|
+
],
|
|
1052
|
+
suites: [
|
|
1053
|
+
{ name: "sweet" },
|
|
1078
1054
|
],
|
|
1079
|
-
:suites => [
|
|
1080
|
-
{ :name => "sweet" }
|
|
1081
|
-
]
|
|
1082
1055
|
},
|
|
1083
1056
|
{}
|
|
1084
1057
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
@@ -1090,20 +1063,18 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1090
1063
|
it "user data value beats provided value" do
|
|
1091
1064
|
DataMunger.new(
|
|
1092
1065
|
{
|
|
1093
|
-
:
|
|
1094
|
-
key => "datvalue"
|
|
1066
|
+
kitchen: {
|
|
1067
|
+
key => "datvalue",
|
|
1095
1068
|
},
|
|
1096
|
-
:
|
|
1097
|
-
:
|
|
1098
|
-
{ :
|
|
1069
|
+
provisioner: "chefy",
|
|
1070
|
+
platforms: [
|
|
1071
|
+
{ name: "plat" },
|
|
1072
|
+
],
|
|
1073
|
+
suites: [
|
|
1074
|
+
{ name: "sweet" },
|
|
1099
1075
|
],
|
|
1100
|
-
:suites => [
|
|
1101
|
-
{ :name => "sweet" }
|
|
1102
|
-
]
|
|
1103
1076
|
},
|
|
1104
|
-
|
|
1105
|
-
key => "ilose"
|
|
1106
|
-
}
|
|
1077
|
+
key => "ilose"
|
|
1107
1078
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
1108
1079
|
:name => "chefy",
|
|
1109
1080
|
key => "datvalue"
|
|
@@ -1113,40 +1084,37 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1113
1084
|
it "rejects any value in provisioner data" do
|
|
1114
1085
|
DataMunger.new(
|
|
1115
1086
|
{
|
|
1116
|
-
:
|
|
1087
|
+
provisioner: {
|
|
1117
1088
|
:name => "chefy",
|
|
1118
|
-
key => "imevil"
|
|
1089
|
+
key => "imevil",
|
|
1119
1090
|
},
|
|
1120
|
-
:
|
|
1121
|
-
{ :
|
|
1091
|
+
platforms: [
|
|
1092
|
+
{ name: "plat" },
|
|
1093
|
+
],
|
|
1094
|
+
suites: [
|
|
1095
|
+
{ name: "sweet" },
|
|
1122
1096
|
],
|
|
1123
|
-
:suites => [
|
|
1124
|
-
{ :name => "sweet" }
|
|
1125
|
-
]
|
|
1126
1097
|
},
|
|
1127
1098
|
{}
|
|
1128
1099
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
1129
|
-
:
|
|
1100
|
+
name: "chefy"
|
|
1130
1101
|
)
|
|
1131
1102
|
end
|
|
1132
1103
|
end
|
|
1133
1104
|
|
|
1134
1105
|
describe "for #verifier_data_for" do
|
|
1135
|
-
|
|
1136
1106
|
it "is returned when provided" do
|
|
1137
1107
|
DataMunger.new(
|
|
1138
1108
|
{
|
|
1139
|
-
:
|
|
1140
|
-
:
|
|
1141
|
-
{ :
|
|
1109
|
+
verifier: "chefy",
|
|
1110
|
+
platforms: [
|
|
1111
|
+
{ name: "plat" },
|
|
1112
|
+
],
|
|
1113
|
+
suites: [
|
|
1114
|
+
{ name: "sweet" },
|
|
1142
1115
|
],
|
|
1143
|
-
:suites => [
|
|
1144
|
-
{ :name => "sweet" }
|
|
1145
|
-
]
|
|
1146
1116
|
},
|
|
1147
|
-
|
|
1148
|
-
key => "datvalue"
|
|
1149
|
-
}
|
|
1117
|
+
key => "datvalue"
|
|
1150
1118
|
).verifier_data_for("sweet", "plat").must_equal(
|
|
1151
1119
|
:name => "chefy",
|
|
1152
1120
|
key => "datvalue"
|
|
@@ -1156,16 +1124,16 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1156
1124
|
it "is returned when provided in user data" do
|
|
1157
1125
|
DataMunger.new(
|
|
1158
1126
|
{
|
|
1159
|
-
:
|
|
1160
|
-
key => "datvalue"
|
|
1127
|
+
kitchen: {
|
|
1128
|
+
key => "datvalue",
|
|
1161
1129
|
},
|
|
1162
|
-
:
|
|
1163
|
-
:
|
|
1164
|
-
{ :
|
|
1130
|
+
verifier: "chefy",
|
|
1131
|
+
platforms: [
|
|
1132
|
+
{ name: "plat" },
|
|
1133
|
+
],
|
|
1134
|
+
suites: [
|
|
1135
|
+
{ name: "sweet" },
|
|
1165
1136
|
],
|
|
1166
|
-
:suites => [
|
|
1167
|
-
{ :name => "sweet" }
|
|
1168
|
-
]
|
|
1169
1137
|
},
|
|
1170
1138
|
{}
|
|
1171
1139
|
).verifier_data_for("sweet", "plat").must_equal(
|
|
@@ -1177,20 +1145,18 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1177
1145
|
it "user data value beats provided value" do
|
|
1178
1146
|
DataMunger.new(
|
|
1179
1147
|
{
|
|
1180
|
-
:
|
|
1181
|
-
key => "datvalue"
|
|
1148
|
+
kitchen: {
|
|
1149
|
+
key => "datvalue",
|
|
1182
1150
|
},
|
|
1183
|
-
:
|
|
1184
|
-
:
|
|
1185
|
-
{ :
|
|
1151
|
+
verifier: "chefy",
|
|
1152
|
+
platforms: [
|
|
1153
|
+
{ name: "plat" },
|
|
1154
|
+
],
|
|
1155
|
+
suites: [
|
|
1156
|
+
{ name: "sweet" },
|
|
1186
1157
|
],
|
|
1187
|
-
:suites => [
|
|
1188
|
-
{ :name => "sweet" }
|
|
1189
|
-
]
|
|
1190
1158
|
},
|
|
1191
|
-
|
|
1192
|
-
key => "ilose"
|
|
1193
|
-
}
|
|
1159
|
+
key => "ilose"
|
|
1194
1160
|
).verifier_data_for("sweet", "plat").must_equal(
|
|
1195
1161
|
:name => "chefy",
|
|
1196
1162
|
key => "datvalue"
|
|
@@ -1200,40 +1166,37 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1200
1166
|
it "rejects any value in verifier data" do
|
|
1201
1167
|
DataMunger.new(
|
|
1202
1168
|
{
|
|
1203
|
-
:
|
|
1169
|
+
verifier: {
|
|
1204
1170
|
:version => "chefy",
|
|
1205
|
-
key => "imevil"
|
|
1171
|
+
key => "imevil",
|
|
1206
1172
|
},
|
|
1207
|
-
:
|
|
1208
|
-
{ :
|
|
1173
|
+
platforms: [
|
|
1174
|
+
{ name: "plat" },
|
|
1175
|
+
],
|
|
1176
|
+
suites: [
|
|
1177
|
+
{ name: "sweet" },
|
|
1209
1178
|
],
|
|
1210
|
-
:suites => [
|
|
1211
|
-
{ :name => "sweet" }
|
|
1212
|
-
]
|
|
1213
1179
|
},
|
|
1214
1180
|
{}
|
|
1215
1181
|
).verifier_data_for("sweet", "plat").must_equal(
|
|
1216
|
-
:
|
|
1182
|
+
version: "chefy"
|
|
1217
1183
|
)
|
|
1218
1184
|
end
|
|
1219
1185
|
end
|
|
1220
1186
|
|
|
1221
1187
|
describe "for #transport_data_for" do
|
|
1222
|
-
|
|
1223
1188
|
it "is returned when provided" do
|
|
1224
1189
|
DataMunger.new(
|
|
1225
1190
|
{
|
|
1226
|
-
:
|
|
1227
|
-
:
|
|
1228
|
-
{ :
|
|
1191
|
+
transport: "pipes",
|
|
1192
|
+
platforms: [
|
|
1193
|
+
{ name: "plat" },
|
|
1194
|
+
],
|
|
1195
|
+
suites: [
|
|
1196
|
+
{ name: "sweet" },
|
|
1229
1197
|
],
|
|
1230
|
-
:suites => [
|
|
1231
|
-
{ :name => "sweet" }
|
|
1232
|
-
]
|
|
1233
1198
|
},
|
|
1234
|
-
|
|
1235
|
-
key => "datvalue"
|
|
1236
|
-
}
|
|
1199
|
+
key => "datvalue"
|
|
1237
1200
|
).transport_data_for("sweet", "plat").must_equal(
|
|
1238
1201
|
:name => "pipes",
|
|
1239
1202
|
key => "datvalue"
|
|
@@ -1243,16 +1206,16 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1243
1206
|
it "is returned when provided in user data" do
|
|
1244
1207
|
DataMunger.new(
|
|
1245
1208
|
{
|
|
1246
|
-
:
|
|
1247
|
-
key => "datvalue"
|
|
1209
|
+
kitchen: {
|
|
1210
|
+
key => "datvalue",
|
|
1248
1211
|
},
|
|
1249
|
-
:
|
|
1250
|
-
:
|
|
1251
|
-
{ :
|
|
1212
|
+
transport: "pipes",
|
|
1213
|
+
platforms: [
|
|
1214
|
+
{ name: "plat" },
|
|
1215
|
+
],
|
|
1216
|
+
suites: [
|
|
1217
|
+
{ name: "sweet" },
|
|
1252
1218
|
],
|
|
1253
|
-
:suites => [
|
|
1254
|
-
{ :name => "sweet" }
|
|
1255
|
-
]
|
|
1256
1219
|
},
|
|
1257
1220
|
{}
|
|
1258
1221
|
).transport_data_for("sweet", "plat").must_equal(
|
|
@@ -1264,20 +1227,18 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1264
1227
|
it "user data value beats provided value" do
|
|
1265
1228
|
DataMunger.new(
|
|
1266
1229
|
{
|
|
1267
|
-
:
|
|
1268
|
-
key => "datvalue"
|
|
1230
|
+
kitchen: {
|
|
1231
|
+
key => "datvalue",
|
|
1269
1232
|
},
|
|
1270
|
-
:
|
|
1271
|
-
:
|
|
1272
|
-
{ :
|
|
1233
|
+
transport: "pipes",
|
|
1234
|
+
platforms: [
|
|
1235
|
+
{ name: "plat" },
|
|
1236
|
+
],
|
|
1237
|
+
suites: [
|
|
1238
|
+
{ name: "sweet" },
|
|
1273
1239
|
],
|
|
1274
|
-
:suites => [
|
|
1275
|
-
{ :name => "sweet" }
|
|
1276
|
-
]
|
|
1277
1240
|
},
|
|
1278
|
-
|
|
1279
|
-
key => "ilose"
|
|
1280
|
-
}
|
|
1241
|
+
key => "ilose"
|
|
1281
1242
|
).transport_data_for("sweet", "plat").must_equal(
|
|
1282
1243
|
:name => "pipes",
|
|
1283
1244
|
key => "datvalue"
|
|
@@ -1287,20 +1248,20 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1287
1248
|
it "rejects any value in transport data" do
|
|
1288
1249
|
DataMunger.new(
|
|
1289
1250
|
{
|
|
1290
|
-
:
|
|
1251
|
+
transport: {
|
|
1291
1252
|
:name => "pipes",
|
|
1292
|
-
key => "imevil"
|
|
1253
|
+
key => "imevil",
|
|
1293
1254
|
},
|
|
1294
|
-
:
|
|
1295
|
-
{ :
|
|
1255
|
+
platforms: [
|
|
1256
|
+
{ name: "plat" },
|
|
1257
|
+
],
|
|
1258
|
+
suites: [
|
|
1259
|
+
{ name: "sweet" },
|
|
1296
1260
|
],
|
|
1297
|
-
:suites => [
|
|
1298
|
-
{ :name => "sweet" }
|
|
1299
|
-
]
|
|
1300
1261
|
},
|
|
1301
1262
|
{}
|
|
1302
1263
|
).transport_data_for("sweet", "plat").must_equal(
|
|
1303
|
-
:
|
|
1264
|
+
name: "pipes"
|
|
1304
1265
|
)
|
|
1305
1266
|
end
|
|
1306
1267
|
end
|
|
@@ -1308,25 +1269,20 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1308
1269
|
end
|
|
1309
1270
|
|
|
1310
1271
|
[:log_level].each do |key|
|
|
1311
|
-
|
|
1312
1272
|
describe "for #{key}" do
|
|
1313
|
-
|
|
1314
1273
|
describe "for #driver_data_for" do
|
|
1315
|
-
|
|
1316
1274
|
it "is returned when provided" do
|
|
1317
1275
|
DataMunger.new(
|
|
1318
1276
|
{
|
|
1319
|
-
:
|
|
1320
|
-
:
|
|
1321
|
-
{ :
|
|
1277
|
+
driver: "chefy",
|
|
1278
|
+
platforms: [
|
|
1279
|
+
{ name: "plat" },
|
|
1280
|
+
],
|
|
1281
|
+
suites: [
|
|
1282
|
+
{ name: "sweet" },
|
|
1322
1283
|
],
|
|
1323
|
-
:suites => [
|
|
1324
|
-
{ :name => "sweet" }
|
|
1325
|
-
]
|
|
1326
1284
|
},
|
|
1327
|
-
|
|
1328
|
-
key => "datvalue"
|
|
1329
|
-
}
|
|
1285
|
+
key => "datvalue"
|
|
1330
1286
|
).driver_data_for("sweet", "plat").must_equal(
|
|
1331
1287
|
:name => "chefy",
|
|
1332
1288
|
key => "datvalue"
|
|
@@ -1336,16 +1292,16 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1336
1292
|
it "is returned when provided in user data" do
|
|
1337
1293
|
DataMunger.new(
|
|
1338
1294
|
{
|
|
1339
|
-
:
|
|
1340
|
-
key => "datvalue"
|
|
1295
|
+
kitchen: {
|
|
1296
|
+
key => "datvalue",
|
|
1341
1297
|
},
|
|
1342
|
-
:
|
|
1343
|
-
:
|
|
1344
|
-
{ :
|
|
1298
|
+
driver: "chefy",
|
|
1299
|
+
platforms: [
|
|
1300
|
+
{ name: "plat" },
|
|
1301
|
+
],
|
|
1302
|
+
suites: [
|
|
1303
|
+
{ name: "sweet" },
|
|
1345
1304
|
],
|
|
1346
|
-
:suites => [
|
|
1347
|
-
{ :name => "sweet" }
|
|
1348
|
-
]
|
|
1349
1305
|
},
|
|
1350
1306
|
{}
|
|
1351
1307
|
).driver_data_for("sweet", "plat").must_equal(
|
|
@@ -1357,20 +1313,18 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1357
1313
|
it "user data value beats provided value" do
|
|
1358
1314
|
DataMunger.new(
|
|
1359
1315
|
{
|
|
1360
|
-
:
|
|
1361
|
-
key => "datvalue"
|
|
1316
|
+
kitchen: {
|
|
1317
|
+
key => "datvalue",
|
|
1362
1318
|
},
|
|
1363
|
-
:
|
|
1364
|
-
:
|
|
1365
|
-
{ :
|
|
1319
|
+
driver: "chefy",
|
|
1320
|
+
platforms: [
|
|
1321
|
+
{ name: "plat" },
|
|
1322
|
+
],
|
|
1323
|
+
suites: [
|
|
1324
|
+
{ name: "sweet" },
|
|
1366
1325
|
],
|
|
1367
|
-
:suites => [
|
|
1368
|
-
{ :name => "sweet" }
|
|
1369
|
-
]
|
|
1370
1326
|
},
|
|
1371
|
-
|
|
1372
|
-
key => "ilose"
|
|
1373
|
-
}
|
|
1327
|
+
key => "ilose"
|
|
1374
1328
|
).driver_data_for("sweet", "plat").must_equal(
|
|
1375
1329
|
:name => "chefy",
|
|
1376
1330
|
key => "datvalue"
|
|
@@ -1380,39 +1334,38 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1380
1334
|
it "rejects any value in driver data" do
|
|
1381
1335
|
DataMunger.new(
|
|
1382
1336
|
{
|
|
1383
|
-
:
|
|
1337
|
+
driver: {
|
|
1384
1338
|
:name => "chefy",
|
|
1385
|
-
key => "imevil"
|
|
1339
|
+
key => "imevil",
|
|
1386
1340
|
},
|
|
1387
|
-
:
|
|
1388
|
-
{ :
|
|
1341
|
+
platforms: [
|
|
1342
|
+
{ name: "plat" },
|
|
1343
|
+
],
|
|
1344
|
+
suites: [
|
|
1345
|
+
{ name: "sweet" },
|
|
1389
1346
|
],
|
|
1390
|
-
:suites => [
|
|
1391
|
-
{ :name => "sweet" }
|
|
1392
|
-
]
|
|
1393
1347
|
},
|
|
1394
1348
|
{}
|
|
1395
1349
|
).driver_data_for("sweet", "plat").must_equal(
|
|
1396
|
-
:
|
|
1350
|
+
name: "chefy"
|
|
1397
1351
|
)
|
|
1398
1352
|
end
|
|
1399
1353
|
end
|
|
1400
1354
|
|
|
1401
1355
|
describe "for #provisioner_data_for" do
|
|
1402
|
-
|
|
1403
1356
|
it "uses value in provisioner data" do
|
|
1404
1357
|
DataMunger.new(
|
|
1405
1358
|
{
|
|
1406
|
-
:
|
|
1359
|
+
provisioner: {
|
|
1407
1360
|
:name => "chefy",
|
|
1408
|
-
key => "datvalue"
|
|
1361
|
+
key => "datvalue",
|
|
1409
1362
|
},
|
|
1410
|
-
:
|
|
1411
|
-
{ :
|
|
1363
|
+
platforms: [
|
|
1364
|
+
{ name: "plat" },
|
|
1365
|
+
],
|
|
1366
|
+
suites: [
|
|
1367
|
+
{ name: "sweet" },
|
|
1412
1368
|
],
|
|
1413
|
-
:suites => [
|
|
1414
|
-
{ :name => "sweet" }
|
|
1415
|
-
]
|
|
1416
1369
|
},
|
|
1417
1370
|
{}
|
|
1418
1371
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
@@ -1424,40 +1377,37 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1424
1377
|
it "rejects any value in user data" do
|
|
1425
1378
|
DataMunger.new(
|
|
1426
1379
|
{
|
|
1427
|
-
:
|
|
1428
|
-
key => "imevil"
|
|
1380
|
+
kitchen: {
|
|
1381
|
+
key => "imevil",
|
|
1429
1382
|
},
|
|
1430
|
-
:
|
|
1431
|
-
:
|
|
1432
|
-
{ :
|
|
1383
|
+
provisioner: "chefy",
|
|
1384
|
+
platforms: [
|
|
1385
|
+
{ name: "plat" },
|
|
1386
|
+
],
|
|
1387
|
+
suites: [
|
|
1388
|
+
{ name: "sweet" },
|
|
1433
1389
|
],
|
|
1434
|
-
:suites => [
|
|
1435
|
-
{ :name => "sweet" }
|
|
1436
|
-
]
|
|
1437
1390
|
},
|
|
1438
1391
|
{}
|
|
1439
1392
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
1440
|
-
:
|
|
1393
|
+
name: "chefy"
|
|
1441
1394
|
)
|
|
1442
1395
|
end
|
|
1443
1396
|
end
|
|
1444
1397
|
|
|
1445
1398
|
describe "for #verifier_data_for" do
|
|
1446
|
-
|
|
1447
1399
|
it "is returned when provided" do
|
|
1448
1400
|
DataMunger.new(
|
|
1449
1401
|
{
|
|
1450
|
-
:
|
|
1451
|
-
:
|
|
1452
|
-
{ :
|
|
1402
|
+
verifier: "chefy",
|
|
1403
|
+
platforms: [
|
|
1404
|
+
{ name: "plat" },
|
|
1405
|
+
],
|
|
1406
|
+
suites: [
|
|
1407
|
+
{ name: "sweet" },
|
|
1453
1408
|
],
|
|
1454
|
-
:suites => [
|
|
1455
|
-
{ :name => "sweet" }
|
|
1456
|
-
]
|
|
1457
1409
|
},
|
|
1458
|
-
|
|
1459
|
-
key => "datvalue"
|
|
1460
|
-
}
|
|
1410
|
+
key => "datvalue"
|
|
1461
1411
|
).verifier_data_for("sweet", "plat").must_equal(
|
|
1462
1412
|
:name => "chefy",
|
|
1463
1413
|
key => "datvalue"
|
|
@@ -1467,16 +1417,16 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1467
1417
|
it "is returned when provided in user data" do
|
|
1468
1418
|
DataMunger.new(
|
|
1469
1419
|
{
|
|
1470
|
-
:
|
|
1471
|
-
key => "datvalue"
|
|
1420
|
+
kitchen: {
|
|
1421
|
+
key => "datvalue",
|
|
1472
1422
|
},
|
|
1473
|
-
:
|
|
1474
|
-
:
|
|
1475
|
-
{ :
|
|
1423
|
+
verifier: "chefy",
|
|
1424
|
+
platforms: [
|
|
1425
|
+
{ name: "plat" },
|
|
1426
|
+
],
|
|
1427
|
+
suites: [
|
|
1428
|
+
{ name: "sweet" },
|
|
1476
1429
|
],
|
|
1477
|
-
:suites => [
|
|
1478
|
-
{ :name => "sweet" }
|
|
1479
|
-
]
|
|
1480
1430
|
},
|
|
1481
1431
|
{}
|
|
1482
1432
|
).verifier_data_for("sweet", "plat").must_equal(
|
|
@@ -1488,20 +1438,18 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1488
1438
|
it "user data value beats provided value" do
|
|
1489
1439
|
DataMunger.new(
|
|
1490
1440
|
{
|
|
1491
|
-
:
|
|
1492
|
-
key => "datvalue"
|
|
1441
|
+
kitchen: {
|
|
1442
|
+
key => "datvalue",
|
|
1493
1443
|
},
|
|
1494
|
-
:
|
|
1495
|
-
:
|
|
1496
|
-
{ :
|
|
1444
|
+
verifier: "chefy",
|
|
1445
|
+
platforms: [
|
|
1446
|
+
{ name: "plat" },
|
|
1447
|
+
],
|
|
1448
|
+
suites: [
|
|
1449
|
+
{ name: "sweet" },
|
|
1497
1450
|
],
|
|
1498
|
-
:suites => [
|
|
1499
|
-
{ :name => "sweet" }
|
|
1500
|
-
]
|
|
1501
1451
|
},
|
|
1502
|
-
|
|
1503
|
-
key => "ilose"
|
|
1504
|
-
}
|
|
1452
|
+
key => "ilose"
|
|
1505
1453
|
).verifier_data_for("sweet", "plat").must_equal(
|
|
1506
1454
|
:name => "chefy",
|
|
1507
1455
|
key => "datvalue"
|
|
@@ -1511,40 +1459,37 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1511
1459
|
it "rejects any value in verifier data" do
|
|
1512
1460
|
DataMunger.new(
|
|
1513
1461
|
{
|
|
1514
|
-
:
|
|
1462
|
+
verifier: {
|
|
1515
1463
|
:version => "chefy",
|
|
1516
|
-
key => "imevil"
|
|
1464
|
+
key => "imevil",
|
|
1517
1465
|
},
|
|
1518
|
-
:
|
|
1519
|
-
{ :
|
|
1466
|
+
platforms: [
|
|
1467
|
+
{ name: "plat" },
|
|
1468
|
+
],
|
|
1469
|
+
suites: [
|
|
1470
|
+
{ name: "sweet" },
|
|
1520
1471
|
],
|
|
1521
|
-
:suites => [
|
|
1522
|
-
{ :name => "sweet" }
|
|
1523
|
-
]
|
|
1524
1472
|
},
|
|
1525
1473
|
{}
|
|
1526
1474
|
).verifier_data_for("sweet", "plat").must_equal(
|
|
1527
|
-
:
|
|
1475
|
+
version: "chefy"
|
|
1528
1476
|
)
|
|
1529
1477
|
end
|
|
1530
1478
|
end
|
|
1531
1479
|
|
|
1532
1480
|
describe "for #transport_data_for" do
|
|
1533
|
-
|
|
1534
1481
|
it "is returned when provided" do
|
|
1535
1482
|
DataMunger.new(
|
|
1536
1483
|
{
|
|
1537
|
-
:
|
|
1538
|
-
:
|
|
1539
|
-
{ :
|
|
1484
|
+
transport: "pipes",
|
|
1485
|
+
platforms: [
|
|
1486
|
+
{ name: "plat" },
|
|
1487
|
+
],
|
|
1488
|
+
suites: [
|
|
1489
|
+
{ name: "sweet" },
|
|
1540
1490
|
],
|
|
1541
|
-
:suites => [
|
|
1542
|
-
{ :name => "sweet" }
|
|
1543
|
-
]
|
|
1544
1491
|
},
|
|
1545
|
-
|
|
1546
|
-
key => "datvalue"
|
|
1547
|
-
}
|
|
1492
|
+
key => "datvalue"
|
|
1548
1493
|
).transport_data_for("sweet", "plat").must_equal(
|
|
1549
1494
|
:name => "pipes",
|
|
1550
1495
|
key => "datvalue"
|
|
@@ -1554,16 +1499,16 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1554
1499
|
it "is returned when provided in user data" do
|
|
1555
1500
|
DataMunger.new(
|
|
1556
1501
|
{
|
|
1557
|
-
:
|
|
1558
|
-
key => "datvalue"
|
|
1502
|
+
kitchen: {
|
|
1503
|
+
key => "datvalue",
|
|
1559
1504
|
},
|
|
1560
|
-
:
|
|
1561
|
-
:
|
|
1562
|
-
{ :
|
|
1505
|
+
transport: "pipes",
|
|
1506
|
+
platforms: [
|
|
1507
|
+
{ name: "plat" },
|
|
1508
|
+
],
|
|
1509
|
+
suites: [
|
|
1510
|
+
{ name: "sweet" },
|
|
1563
1511
|
],
|
|
1564
|
-
:suites => [
|
|
1565
|
-
{ :name => "sweet" }
|
|
1566
|
-
]
|
|
1567
1512
|
},
|
|
1568
1513
|
{}
|
|
1569
1514
|
).transport_data_for("sweet", "plat").must_equal(
|
|
@@ -1575,20 +1520,18 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1575
1520
|
it "user data value beats provided value" do
|
|
1576
1521
|
DataMunger.new(
|
|
1577
1522
|
{
|
|
1578
|
-
:
|
|
1579
|
-
key => "datvalue"
|
|
1523
|
+
kitchen: {
|
|
1524
|
+
key => "datvalue",
|
|
1580
1525
|
},
|
|
1581
|
-
:
|
|
1582
|
-
:
|
|
1583
|
-
{ :
|
|
1526
|
+
transport: "pipes",
|
|
1527
|
+
platforms: [
|
|
1528
|
+
{ name: "plat" },
|
|
1529
|
+
],
|
|
1530
|
+
suites: [
|
|
1531
|
+
{ name: "sweet" },
|
|
1584
1532
|
],
|
|
1585
|
-
:suites => [
|
|
1586
|
-
{ :name => "sweet" }
|
|
1587
|
-
]
|
|
1588
1533
|
},
|
|
1589
|
-
|
|
1590
|
-
key => "ilose"
|
|
1591
|
-
}
|
|
1534
|
+
key => "ilose"
|
|
1592
1535
|
).transport_data_for("sweet", "plat").must_equal(
|
|
1593
1536
|
:name => "pipes",
|
|
1594
1537
|
key => "datvalue"
|
|
@@ -1598,20 +1541,20 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1598
1541
|
it "rejects any value in transport data" do
|
|
1599
1542
|
DataMunger.new(
|
|
1600
1543
|
{
|
|
1601
|
-
:
|
|
1544
|
+
transport: {
|
|
1602
1545
|
:name => "pipes",
|
|
1603
|
-
key => "imevil"
|
|
1546
|
+
key => "imevil",
|
|
1604
1547
|
},
|
|
1605
|
-
:
|
|
1606
|
-
{ :
|
|
1548
|
+
platforms: [
|
|
1549
|
+
{ name: "plat" },
|
|
1550
|
+
],
|
|
1551
|
+
suites: [
|
|
1552
|
+
{ name: "sweet" },
|
|
1607
1553
|
],
|
|
1608
|
-
:suites => [
|
|
1609
|
-
{ :name => "sweet" }
|
|
1610
|
-
]
|
|
1611
1554
|
},
|
|
1612
1555
|
{}
|
|
1613
1556
|
).transport_data_for("sweet", "plat").must_equal(
|
|
1614
|
-
:
|
|
1557
|
+
name: "pipes"
|
|
1615
1558
|
)
|
|
1616
1559
|
end
|
|
1617
1560
|
end
|
|
@@ -1620,198 +1563,195 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1620
1563
|
end
|
|
1621
1564
|
|
|
1622
1565
|
describe "legacy driver_config and driver_plugin" do
|
|
1623
|
-
|
|
1624
1566
|
describe "from a single source" do
|
|
1625
|
-
|
|
1626
1567
|
it "returns common driver name" do
|
|
1627
1568
|
DataMunger.new(
|
|
1628
1569
|
{
|
|
1629
|
-
:
|
|
1570
|
+
driver_plugin: "starship",
|
|
1630
1571
|
},
|
|
1631
1572
|
{}
|
|
1632
1573
|
).driver_data_for("suite", "platform").must_equal(
|
|
1633
|
-
:
|
|
1574
|
+
name: "starship"
|
|
1634
1575
|
)
|
|
1635
1576
|
end
|
|
1636
1577
|
|
|
1637
1578
|
it "merges driver into driver_plugin if driver exists" do
|
|
1638
1579
|
DataMunger.new(
|
|
1639
1580
|
{
|
|
1640
|
-
:
|
|
1641
|
-
:
|
|
1581
|
+
driver_plugin: "starship",
|
|
1582
|
+
driver: "zappa",
|
|
1642
1583
|
},
|
|
1643
1584
|
{}
|
|
1644
1585
|
).driver_data_for("suite", "platform").must_equal(
|
|
1645
|
-
:
|
|
1586
|
+
name: "zappa"
|
|
1646
1587
|
)
|
|
1647
1588
|
end
|
|
1648
1589
|
|
|
1649
1590
|
it "returns common driver config" do
|
|
1650
1591
|
DataMunger.new(
|
|
1651
1592
|
{
|
|
1652
|
-
:
|
|
1653
|
-
:
|
|
1654
|
-
:
|
|
1655
|
-
}
|
|
1593
|
+
driver_plugin: "starship",
|
|
1594
|
+
driver_config: {
|
|
1595
|
+
speed: 42,
|
|
1596
|
+
},
|
|
1656
1597
|
},
|
|
1657
1598
|
{}
|
|
1658
1599
|
).driver_data_for("suite", "platform").must_equal(
|
|
1659
|
-
:
|
|
1660
|
-
:
|
|
1600
|
+
name: "starship",
|
|
1601
|
+
speed: 42
|
|
1661
1602
|
)
|
|
1662
1603
|
end
|
|
1663
1604
|
|
|
1664
1605
|
it "merges driver into driver_config if driver with name exists" do
|
|
1665
1606
|
DataMunger.new(
|
|
1666
1607
|
{
|
|
1667
|
-
:
|
|
1668
|
-
:
|
|
1608
|
+
driver_config: {
|
|
1609
|
+
eh: "yep",
|
|
1669
1610
|
},
|
|
1670
|
-
:
|
|
1611
|
+
driver: "zappa",
|
|
1671
1612
|
},
|
|
1672
1613
|
{}
|
|
1673
1614
|
).driver_data_for("suite", "platform").must_equal(
|
|
1674
|
-
:
|
|
1675
|
-
:
|
|
1615
|
+
name: "zappa",
|
|
1616
|
+
eh: "yep"
|
|
1676
1617
|
)
|
|
1677
1618
|
end
|
|
1678
1619
|
|
|
1679
1620
|
it "merges driver into driver_config if driver exists" do
|
|
1680
1621
|
DataMunger.new(
|
|
1681
1622
|
{
|
|
1682
|
-
:
|
|
1683
|
-
:
|
|
1684
|
-
:
|
|
1685
|
-
:
|
|
1623
|
+
driver_plugin: "imold",
|
|
1624
|
+
driver_config: {
|
|
1625
|
+
eh: "yep",
|
|
1626
|
+
color: "pink",
|
|
1627
|
+
},
|
|
1628
|
+
driver: {
|
|
1629
|
+
name: "zappa",
|
|
1630
|
+
color: "black",
|
|
1686
1631
|
},
|
|
1687
|
-
:driver => {
|
|
1688
|
-
:name => "zappa",
|
|
1689
|
-
:color => "black"
|
|
1690
|
-
}
|
|
1691
1632
|
},
|
|
1692
1633
|
{}
|
|
1693
1634
|
).driver_data_for("suite", "platform").must_equal(
|
|
1694
|
-
:
|
|
1695
|
-
:
|
|
1696
|
-
:
|
|
1635
|
+
name: "zappa",
|
|
1636
|
+
eh: "yep",
|
|
1637
|
+
color: "black"
|
|
1697
1638
|
)
|
|
1698
1639
|
end
|
|
1699
1640
|
|
|
1700
1641
|
it "returns platform driver name" do
|
|
1701
1642
|
DataMunger.new(
|
|
1702
1643
|
{
|
|
1703
|
-
:
|
|
1644
|
+
platforms: [
|
|
1704
1645
|
{
|
|
1705
|
-
:
|
|
1706
|
-
:
|
|
1707
|
-
}
|
|
1708
|
-
]
|
|
1646
|
+
name: "plat",
|
|
1647
|
+
driver_plugin: "flip",
|
|
1648
|
+
},
|
|
1649
|
+
],
|
|
1709
1650
|
},
|
|
1710
1651
|
{}
|
|
1711
1652
|
).driver_data_for("suite", "plat").must_equal(
|
|
1712
|
-
:
|
|
1653
|
+
name: "flip"
|
|
1713
1654
|
)
|
|
1714
1655
|
end
|
|
1715
1656
|
|
|
1716
1657
|
it "returns platform config containing driver hash" do
|
|
1717
1658
|
DataMunger.new(
|
|
1718
1659
|
{
|
|
1719
|
-
:
|
|
1660
|
+
platforms: [
|
|
1720
1661
|
{
|
|
1721
|
-
:
|
|
1722
|
-
:
|
|
1723
|
-
:
|
|
1724
|
-
:
|
|
1725
|
-
}
|
|
1726
|
-
}
|
|
1727
|
-
]
|
|
1662
|
+
name: "plat",
|
|
1663
|
+
driver_plugin: "flip",
|
|
1664
|
+
driver_config: {
|
|
1665
|
+
flop: "yep",
|
|
1666
|
+
},
|
|
1667
|
+
},
|
|
1668
|
+
],
|
|
1728
1669
|
},
|
|
1729
1670
|
{}
|
|
1730
1671
|
).driver_data_for("suite", "plat").must_equal(
|
|
1731
|
-
:
|
|
1732
|
-
:
|
|
1672
|
+
name: "flip",
|
|
1673
|
+
flop: "yep"
|
|
1733
1674
|
)
|
|
1734
1675
|
end
|
|
1735
1676
|
|
|
1736
1677
|
it "returns suite driver name" do
|
|
1737
1678
|
DataMunger.new(
|
|
1738
1679
|
{
|
|
1739
|
-
:
|
|
1680
|
+
suites: [
|
|
1740
1681
|
{
|
|
1741
|
-
:
|
|
1742
|
-
:
|
|
1743
|
-
}
|
|
1744
|
-
]
|
|
1682
|
+
name: "sweet",
|
|
1683
|
+
driver_plugin: "waz",
|
|
1684
|
+
},
|
|
1685
|
+
],
|
|
1745
1686
|
},
|
|
1746
1687
|
{}
|
|
1747
1688
|
).driver_data_for("sweet", "platform").must_equal(
|
|
1748
|
-
:
|
|
1689
|
+
name: "waz"
|
|
1749
1690
|
)
|
|
1750
1691
|
end
|
|
1751
1692
|
|
|
1752
1693
|
it "returns suite config containing driver hash" do
|
|
1753
1694
|
DataMunger.new(
|
|
1754
1695
|
{
|
|
1755
|
-
:
|
|
1696
|
+
suites: [
|
|
1756
1697
|
{
|
|
1757
|
-
:
|
|
1758
|
-
:
|
|
1759
|
-
:
|
|
1760
|
-
:
|
|
1761
|
-
}
|
|
1762
|
-
}
|
|
1763
|
-
]
|
|
1698
|
+
name: "sweet",
|
|
1699
|
+
driver_plugin: "waz",
|
|
1700
|
+
driver_config: {
|
|
1701
|
+
up: "nope",
|
|
1702
|
+
},
|
|
1703
|
+
},
|
|
1704
|
+
],
|
|
1764
1705
|
},
|
|
1765
1706
|
{}
|
|
1766
1707
|
).driver_data_for("sweet", "platform").must_equal(
|
|
1767
|
-
:
|
|
1768
|
-
:
|
|
1708
|
+
name: "waz",
|
|
1709
|
+
up: "nope"
|
|
1769
1710
|
)
|
|
1770
1711
|
end
|
|
1771
1712
|
end
|
|
1772
1713
|
|
|
1773
1714
|
describe "from multiple sources" do
|
|
1774
|
-
|
|
1775
1715
|
it "suite into platform into common" do
|
|
1776
1716
|
DataMunger.new(
|
|
1777
1717
|
{
|
|
1778
|
-
:
|
|
1779
|
-
:
|
|
1780
|
-
:
|
|
1781
|
-
:
|
|
1782
|
-
:
|
|
1718
|
+
driver_plugin: "commony",
|
|
1719
|
+
driver_config: {
|
|
1720
|
+
color: "purple",
|
|
1721
|
+
fruit: %w{apple pear},
|
|
1722
|
+
deep: { common: "junk" },
|
|
1783
1723
|
},
|
|
1784
|
-
:
|
|
1724
|
+
platforms: [
|
|
1785
1725
|
{
|
|
1786
|
-
:
|
|
1787
|
-
:
|
|
1788
|
-
:
|
|
1789
|
-
:
|
|
1790
|
-
:
|
|
1791
|
-
}
|
|
1792
|
-
}
|
|
1726
|
+
name: "plat",
|
|
1727
|
+
driver_plugin: "platformy",
|
|
1728
|
+
driver_config: {
|
|
1729
|
+
fruit: ["banana"],
|
|
1730
|
+
deep: { platform: "stuff" },
|
|
1731
|
+
},
|
|
1732
|
+
},
|
|
1793
1733
|
],
|
|
1794
|
-
:
|
|
1734
|
+
suites: [
|
|
1795
1735
|
{
|
|
1796
|
-
:
|
|
1797
|
-
:
|
|
1798
|
-
:
|
|
1799
|
-
:
|
|
1800
|
-
:
|
|
1801
|
-
}
|
|
1802
|
-
}
|
|
1803
|
-
]
|
|
1736
|
+
name: "sweet",
|
|
1737
|
+
driver_plugin: "suitey",
|
|
1738
|
+
driver_config: {
|
|
1739
|
+
vehicle: "car",
|
|
1740
|
+
deep: { suite: "things" },
|
|
1741
|
+
},
|
|
1742
|
+
},
|
|
1743
|
+
],
|
|
1804
1744
|
},
|
|
1805
1745
|
{}
|
|
1806
1746
|
).driver_data_for("sweet", "plat").must_equal(
|
|
1807
|
-
:
|
|
1808
|
-
:
|
|
1809
|
-
:
|
|
1810
|
-
:
|
|
1811
|
-
:
|
|
1812
|
-
:
|
|
1813
|
-
:
|
|
1814
|
-
:
|
|
1747
|
+
name: "suitey",
|
|
1748
|
+
color: "purple",
|
|
1749
|
+
fruit: ["banana"],
|
|
1750
|
+
vehicle: "car",
|
|
1751
|
+
deep: {
|
|
1752
|
+
common: "junk",
|
|
1753
|
+
platform: "stuff",
|
|
1754
|
+
suite: "things",
|
|
1815
1755
|
}
|
|
1816
1756
|
)
|
|
1817
1757
|
end
|
|
@@ -1819,31 +1759,31 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1819
1759
|
it "platform into common" do
|
|
1820
1760
|
DataMunger.new(
|
|
1821
1761
|
{
|
|
1822
|
-
:
|
|
1823
|
-
:
|
|
1824
|
-
:
|
|
1825
|
-
:
|
|
1826
|
-
:
|
|
1762
|
+
driver_plugin: "commony",
|
|
1763
|
+
driver_config: {
|
|
1764
|
+
color: "purple",
|
|
1765
|
+
fruit: %w{apple pear},
|
|
1766
|
+
deep: { common: "junk" },
|
|
1827
1767
|
},
|
|
1828
|
-
:
|
|
1768
|
+
platforms: [
|
|
1829
1769
|
{
|
|
1830
|
-
:
|
|
1831
|
-
:
|
|
1832
|
-
:
|
|
1833
|
-
:
|
|
1834
|
-
:
|
|
1835
|
-
}
|
|
1836
|
-
}
|
|
1837
|
-
]
|
|
1770
|
+
name: "plat",
|
|
1771
|
+
driver_plugin: "platformy",
|
|
1772
|
+
driver_config: {
|
|
1773
|
+
fruit: ["banana"],
|
|
1774
|
+
deep: { platform: "stuff" },
|
|
1775
|
+
},
|
|
1776
|
+
},
|
|
1777
|
+
],
|
|
1838
1778
|
},
|
|
1839
1779
|
{}
|
|
1840
1780
|
).driver_data_for("sweet", "plat").must_equal(
|
|
1841
|
-
:
|
|
1842
|
-
:
|
|
1843
|
-
:
|
|
1844
|
-
:
|
|
1845
|
-
:
|
|
1846
|
-
:
|
|
1781
|
+
name: "platformy",
|
|
1782
|
+
color: "purple",
|
|
1783
|
+
fruit: ["banana"],
|
|
1784
|
+
deep: {
|
|
1785
|
+
common: "junk",
|
|
1786
|
+
platform: "stuff",
|
|
1847
1787
|
}
|
|
1848
1788
|
)
|
|
1849
1789
|
end
|
|
@@ -1851,32 +1791,32 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1851
1791
|
it "suite into common" do
|
|
1852
1792
|
DataMunger.new(
|
|
1853
1793
|
{
|
|
1854
|
-
:
|
|
1855
|
-
:
|
|
1856
|
-
:
|
|
1857
|
-
:
|
|
1858
|
-
:
|
|
1794
|
+
driver_plugin: "commony",
|
|
1795
|
+
driver_config: {
|
|
1796
|
+
color: "purple",
|
|
1797
|
+
fruit: %w{apple pear},
|
|
1798
|
+
deep: { common: "junk" },
|
|
1859
1799
|
},
|
|
1860
|
-
:
|
|
1800
|
+
suites: [
|
|
1861
1801
|
{
|
|
1862
|
-
:
|
|
1863
|
-
:
|
|
1864
|
-
:
|
|
1865
|
-
:
|
|
1866
|
-
:
|
|
1867
|
-
}
|
|
1868
|
-
}
|
|
1869
|
-
]
|
|
1802
|
+
name: "sweet",
|
|
1803
|
+
driver_plugin: "suitey",
|
|
1804
|
+
driver_config: {
|
|
1805
|
+
vehicle: "car",
|
|
1806
|
+
deep: { suite: "things" },
|
|
1807
|
+
},
|
|
1808
|
+
},
|
|
1809
|
+
],
|
|
1870
1810
|
},
|
|
1871
1811
|
{}
|
|
1872
1812
|
).driver_data_for("sweet", "plat").must_equal(
|
|
1873
|
-
:
|
|
1874
|
-
:
|
|
1875
|
-
:
|
|
1876
|
-
:
|
|
1877
|
-
:
|
|
1878
|
-
:
|
|
1879
|
-
:
|
|
1813
|
+
name: "suitey",
|
|
1814
|
+
color: "purple",
|
|
1815
|
+
fruit: %w{apple pear},
|
|
1816
|
+
vehicle: "car",
|
|
1817
|
+
deep: {
|
|
1818
|
+
common: "junk",
|
|
1819
|
+
suite: "things",
|
|
1880
1820
|
}
|
|
1881
1821
|
)
|
|
1882
1822
|
end
|
|
@@ -1884,35 +1824,35 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1884
1824
|
it "suite into platform" do
|
|
1885
1825
|
DataMunger.new(
|
|
1886
1826
|
{
|
|
1887
|
-
:
|
|
1827
|
+
platforms: [
|
|
1888
1828
|
{
|
|
1889
|
-
:
|
|
1890
|
-
:
|
|
1891
|
-
:
|
|
1892
|
-
:
|
|
1893
|
-
:
|
|
1894
|
-
}
|
|
1895
|
-
}
|
|
1829
|
+
name: "plat",
|
|
1830
|
+
driver_plugin: "platformy",
|
|
1831
|
+
driver_config: {
|
|
1832
|
+
fruit: ["banana"],
|
|
1833
|
+
deep: { platform: "stuff" },
|
|
1834
|
+
},
|
|
1835
|
+
},
|
|
1896
1836
|
],
|
|
1897
|
-
:
|
|
1837
|
+
suites: [
|
|
1898
1838
|
{
|
|
1899
|
-
:
|
|
1900
|
-
:
|
|
1901
|
-
:
|
|
1902
|
-
:
|
|
1903
|
-
:
|
|
1904
|
-
}
|
|
1905
|
-
}
|
|
1906
|
-
]
|
|
1839
|
+
name: "sweet",
|
|
1840
|
+
driver_plugin: "suitey",
|
|
1841
|
+
driver_config: {
|
|
1842
|
+
vehicle: "car",
|
|
1843
|
+
deep: { suite: "things" },
|
|
1844
|
+
},
|
|
1845
|
+
},
|
|
1846
|
+
],
|
|
1907
1847
|
},
|
|
1908
1848
|
{}
|
|
1909
1849
|
).driver_data_for("sweet", "plat").must_equal(
|
|
1910
|
-
:
|
|
1911
|
-
:
|
|
1912
|
-
:
|
|
1913
|
-
:
|
|
1914
|
-
:
|
|
1915
|
-
:
|
|
1850
|
+
name: "suitey",
|
|
1851
|
+
fruit: ["banana"],
|
|
1852
|
+
vehicle: "car",
|
|
1853
|
+
deep: {
|
|
1854
|
+
platform: "stuff",
|
|
1855
|
+
suite: "things",
|
|
1916
1856
|
}
|
|
1917
1857
|
)
|
|
1918
1858
|
end
|
|
@@ -1920,24 +1860,22 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1920
1860
|
end
|
|
1921
1861
|
|
|
1922
1862
|
describe "legacy chef paths from suite" do
|
|
1923
|
-
|
|
1924
1863
|
LEGACY_CHEF_PATHS = [
|
|
1925
1864
|
:data_path, :data_bags_path, :environments_path,
|
|
1926
1865
|
:nodes_path, :roles_path, :encrypted_data_bag_secret_key_path
|
|
1927
|
-
]
|
|
1866
|
+
].freeze
|
|
1928
1867
|
|
|
1929
1868
|
LEGACY_CHEF_PATHS.each do |key|
|
|
1930
|
-
|
|
1931
1869
|
it "moves #{key} into provisioner" do
|
|
1932
1870
|
DataMunger.new(
|
|
1933
1871
|
{
|
|
1934
|
-
:
|
|
1935
|
-
:
|
|
1872
|
+
provisioner: "chefy",
|
|
1873
|
+
suites: [
|
|
1936
1874
|
{
|
|
1937
1875
|
:name => "sweet",
|
|
1938
|
-
key => "mypath"
|
|
1939
|
-
}
|
|
1940
|
-
]
|
|
1876
|
+
key => "mypath",
|
|
1877
|
+
},
|
|
1878
|
+
],
|
|
1941
1879
|
},
|
|
1942
1880
|
{}
|
|
1943
1881
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
@@ -1949,13 +1887,13 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1949
1887
|
it "merges provisioner into data_path if provisioner exists" do
|
|
1950
1888
|
DataMunger.new(
|
|
1951
1889
|
{
|
|
1952
|
-
:
|
|
1890
|
+
suites: [
|
|
1953
1891
|
{
|
|
1954
1892
|
:name => "sweet",
|
|
1955
1893
|
key => "mypath",
|
|
1956
|
-
:provisioner => "chefy"
|
|
1957
|
-
}
|
|
1958
|
-
]
|
|
1894
|
+
:provisioner => "chefy",
|
|
1895
|
+
},
|
|
1896
|
+
],
|
|
1959
1897
|
},
|
|
1960
1898
|
{}
|
|
1961
1899
|
).provisioner_data_for("sweet", "plat").must_equal(
|
|
@@ -1967,688 +1905,681 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
1967
1905
|
end
|
|
1968
1906
|
|
|
1969
1907
|
describe "legacy require_chef_omnibus from driver" do
|
|
1970
|
-
|
|
1971
1908
|
describe "from a single source" do
|
|
1972
|
-
|
|
1973
1909
|
it "common driver value moves into provisioner" do
|
|
1974
1910
|
DataMunger.new(
|
|
1975
1911
|
{
|
|
1976
|
-
:
|
|
1977
|
-
:
|
|
1978
|
-
:
|
|
1979
|
-
:
|
|
1980
|
-
}
|
|
1912
|
+
provisioner: "chefy",
|
|
1913
|
+
driver: {
|
|
1914
|
+
name: "starship",
|
|
1915
|
+
require_chef_omnibus: "it's probably fine",
|
|
1916
|
+
},
|
|
1981
1917
|
},
|
|
1982
1918
|
{}
|
|
1983
1919
|
).provisioner_data_for("suite", "platform").must_equal(
|
|
1984
|
-
:
|
|
1985
|
-
:
|
|
1920
|
+
name: "chefy",
|
|
1921
|
+
require_chef_omnibus: "it's probably fine"
|
|
1986
1922
|
)
|
|
1987
1923
|
end
|
|
1988
1924
|
|
|
1989
1925
|
it "common driver value loses to existing provisioner value" do
|
|
1990
1926
|
DataMunger.new(
|
|
1991
1927
|
{
|
|
1992
|
-
:
|
|
1993
|
-
:
|
|
1994
|
-
:
|
|
1928
|
+
provisioner: {
|
|
1929
|
+
name: "chefy",
|
|
1930
|
+
require_chef_omnibus: "it's probably fine",
|
|
1931
|
+
},
|
|
1932
|
+
driver: {
|
|
1933
|
+
name: "starship",
|
|
1934
|
+
require_chef_omnibus: "dragons",
|
|
1995
1935
|
},
|
|
1996
|
-
:driver => {
|
|
1997
|
-
:name => "starship",
|
|
1998
|
-
:require_chef_omnibus => "dragons"
|
|
1999
|
-
}
|
|
2000
1936
|
},
|
|
2001
1937
|
{}
|
|
2002
1938
|
).provisioner_data_for("suite", "platform").must_equal(
|
|
2003
|
-
:
|
|
2004
|
-
:
|
|
1939
|
+
name: "chefy",
|
|
1940
|
+
require_chef_omnibus: "it's probably fine"
|
|
2005
1941
|
)
|
|
2006
1942
|
end
|
|
2007
1943
|
|
|
2008
1944
|
it "suite driver value moves into provisioner" do
|
|
2009
1945
|
DataMunger.new(
|
|
2010
1946
|
{
|
|
2011
|
-
:
|
|
1947
|
+
suites: [
|
|
2012
1948
|
{
|
|
2013
|
-
:
|
|
2014
|
-
:
|
|
2015
|
-
:
|
|
2016
|
-
:
|
|
2017
|
-
:
|
|
2018
|
-
}
|
|
2019
|
-
}
|
|
2020
|
-
]
|
|
1949
|
+
name: "sweet",
|
|
1950
|
+
provisioner: "chefy",
|
|
1951
|
+
driver: {
|
|
1952
|
+
name: "starship",
|
|
1953
|
+
require_chef_omnibus: "it's probably fine",
|
|
1954
|
+
},
|
|
1955
|
+
},
|
|
1956
|
+
],
|
|
2021
1957
|
},
|
|
2022
1958
|
{}
|
|
2023
1959
|
).provisioner_data_for("sweet", "platform").must_equal(
|
|
2024
|
-
:
|
|
2025
|
-
:
|
|
1960
|
+
name: "chefy",
|
|
1961
|
+
require_chef_omnibus: "it's probably fine"
|
|
2026
1962
|
)
|
|
2027
1963
|
end
|
|
2028
1964
|
|
|
2029
1965
|
it "suite driver value loses to existing provisioner value" do
|
|
2030
1966
|
DataMunger.new(
|
|
2031
1967
|
{
|
|
2032
|
-
:
|
|
1968
|
+
suites: [
|
|
2033
1969
|
{
|
|
2034
|
-
:
|
|
2035
|
-
:
|
|
2036
|
-
:
|
|
2037
|
-
:
|
|
1970
|
+
name: "sweet",
|
|
1971
|
+
provisioner: {
|
|
1972
|
+
name: "chefy",
|
|
1973
|
+
require_chef_omnibus: "it's probably fine",
|
|
1974
|
+
},
|
|
1975
|
+
driver: {
|
|
1976
|
+
name: "starship",
|
|
1977
|
+
require_chef_omnibus: "dragons",
|
|
2038
1978
|
},
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
:require_chef_omnibus => "dragons"
|
|
2042
|
-
}
|
|
2043
|
-
}
|
|
2044
|
-
]
|
|
1979
|
+
},
|
|
1980
|
+
],
|
|
2045
1981
|
},
|
|
2046
1982
|
{}
|
|
2047
1983
|
).provisioner_data_for("sweet", "platform").must_equal(
|
|
2048
|
-
:
|
|
2049
|
-
:
|
|
1984
|
+
name: "chefy",
|
|
1985
|
+
require_chef_omnibus: "it's probably fine"
|
|
2050
1986
|
)
|
|
2051
1987
|
end
|
|
2052
1988
|
|
|
2053
1989
|
it "platform driver value moves into provisioner" do
|
|
2054
1990
|
DataMunger.new(
|
|
2055
1991
|
{
|
|
2056
|
-
:
|
|
1992
|
+
platforms: [
|
|
2057
1993
|
{
|
|
2058
|
-
:
|
|
2059
|
-
:
|
|
2060
|
-
:
|
|
2061
|
-
:
|
|
2062
|
-
:
|
|
2063
|
-
}
|
|
2064
|
-
}
|
|
2065
|
-
]
|
|
1994
|
+
name: "plat",
|
|
1995
|
+
provisioner: "chefy",
|
|
1996
|
+
driver: {
|
|
1997
|
+
name: "starship",
|
|
1998
|
+
require_chef_omnibus: "it's probably fine",
|
|
1999
|
+
},
|
|
2000
|
+
},
|
|
2001
|
+
],
|
|
2066
2002
|
},
|
|
2067
2003
|
{}
|
|
2068
2004
|
).provisioner_data_for("suite", "plat").must_equal(
|
|
2069
|
-
:
|
|
2070
|
-
:
|
|
2005
|
+
name: "chefy",
|
|
2006
|
+
require_chef_omnibus: "it's probably fine"
|
|
2071
2007
|
)
|
|
2072
2008
|
end
|
|
2073
2009
|
|
|
2074
2010
|
it "platform driver value loses to existing provisioner value" do
|
|
2075
2011
|
DataMunger.new(
|
|
2076
2012
|
{
|
|
2077
|
-
:
|
|
2013
|
+
platforms: [
|
|
2078
2014
|
{
|
|
2079
|
-
:
|
|
2080
|
-
:
|
|
2081
|
-
:
|
|
2082
|
-
:
|
|
2015
|
+
name: "plat",
|
|
2016
|
+
provisioner: {
|
|
2017
|
+
name: "chefy",
|
|
2018
|
+
require_chef_omnibus: "it's probably fine",
|
|
2019
|
+
},
|
|
2020
|
+
driver: {
|
|
2021
|
+
name: "starship",
|
|
2022
|
+
require_chef_omnibus: "dragons",
|
|
2083
2023
|
},
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
:require_chef_omnibus => "dragons"
|
|
2087
|
-
}
|
|
2088
|
-
}
|
|
2089
|
-
]
|
|
2024
|
+
},
|
|
2025
|
+
],
|
|
2090
2026
|
},
|
|
2091
2027
|
{}
|
|
2092
2028
|
).provisioner_data_for("suite", "plat").must_equal(
|
|
2093
|
-
:
|
|
2094
|
-
:
|
|
2029
|
+
name: "chefy",
|
|
2030
|
+
require_chef_omnibus: "it's probably fine"
|
|
2095
2031
|
)
|
|
2096
2032
|
end
|
|
2097
2033
|
end
|
|
2098
2034
|
end
|
|
2099
2035
|
|
|
2100
2036
|
describe "legacy http_proxy & https_proxy from driver" do
|
|
2101
|
-
|
|
2102
2037
|
describe "from a single source" do
|
|
2103
|
-
|
|
2104
2038
|
it "common driver value remains in driver" do
|
|
2105
2039
|
DataMunger.new(
|
|
2106
2040
|
{
|
|
2107
|
-
:
|
|
2108
|
-
:
|
|
2109
|
-
:
|
|
2110
|
-
:
|
|
2111
|
-
:
|
|
2112
|
-
}
|
|
2041
|
+
provisioner: "chefy",
|
|
2042
|
+
driver: {
|
|
2043
|
+
name: "starship",
|
|
2044
|
+
http_proxy: "http://proxy",
|
|
2045
|
+
https_proxy: "https://proxy",
|
|
2046
|
+
},
|
|
2113
2047
|
},
|
|
2114
2048
|
{}
|
|
2115
2049
|
).driver_data_for("suite", "platform").must_equal(
|
|
2116
|
-
:
|
|
2117
|
-
:
|
|
2118
|
-
:
|
|
2050
|
+
name: "starship",
|
|
2051
|
+
http_proxy: "http://proxy",
|
|
2052
|
+
https_proxy: "https://proxy"
|
|
2119
2053
|
)
|
|
2120
2054
|
end
|
|
2121
2055
|
|
|
2122
2056
|
it "common driver value copies into provisioner" do
|
|
2123
2057
|
DataMunger.new(
|
|
2124
2058
|
{
|
|
2125
|
-
:
|
|
2126
|
-
:
|
|
2127
|
-
:
|
|
2128
|
-
:
|
|
2129
|
-
:
|
|
2130
|
-
}
|
|
2059
|
+
provisioner: "chefy",
|
|
2060
|
+
driver: {
|
|
2061
|
+
name: "starship",
|
|
2062
|
+
http_proxy: "http://proxy",
|
|
2063
|
+
https_proxy: "https://proxy",
|
|
2064
|
+
},
|
|
2131
2065
|
},
|
|
2132
2066
|
{}
|
|
2133
2067
|
).provisioner_data_for("suite", "platform").must_equal(
|
|
2134
|
-
:
|
|
2135
|
-
:
|
|
2136
|
-
:
|
|
2068
|
+
name: "chefy",
|
|
2069
|
+
http_proxy: "http://proxy",
|
|
2070
|
+
https_proxy: "https://proxy"
|
|
2137
2071
|
)
|
|
2138
2072
|
end
|
|
2139
2073
|
|
|
2140
2074
|
it "common driver value copies into verifier" do
|
|
2141
2075
|
DataMunger.new(
|
|
2142
2076
|
{
|
|
2143
|
-
:
|
|
2144
|
-
:
|
|
2145
|
-
:
|
|
2146
|
-
:
|
|
2147
|
-
:
|
|
2148
|
-
}
|
|
2077
|
+
verifier: "bussy",
|
|
2078
|
+
driver: {
|
|
2079
|
+
name: "starship",
|
|
2080
|
+
http_proxy: "http://proxy",
|
|
2081
|
+
https_proxy: "https://proxy",
|
|
2082
|
+
},
|
|
2149
2083
|
},
|
|
2150
2084
|
{}
|
|
2151
2085
|
).verifier_data_for("suite", "platform").must_equal(
|
|
2152
|
-
:
|
|
2153
|
-
:
|
|
2154
|
-
:
|
|
2086
|
+
name: "bussy",
|
|
2087
|
+
http_proxy: "http://proxy",
|
|
2088
|
+
https_proxy: "https://proxy"
|
|
2155
2089
|
)
|
|
2156
2090
|
end
|
|
2157
2091
|
|
|
2158
2092
|
it "common driver value loses to existing provisioner value" do
|
|
2159
2093
|
DataMunger.new(
|
|
2160
2094
|
{
|
|
2161
|
-
:
|
|
2162
|
-
:
|
|
2163
|
-
:
|
|
2164
|
-
:
|
|
2095
|
+
provisioner: {
|
|
2096
|
+
name: "chefy",
|
|
2097
|
+
http_proxy: "it's probably fine",
|
|
2098
|
+
https_proxy: "la quinta",
|
|
2099
|
+
},
|
|
2100
|
+
driver: {
|
|
2101
|
+
name: "starship",
|
|
2102
|
+
http_proxy: "dragons",
|
|
2103
|
+
https_proxy: "cats",
|
|
2165
2104
|
},
|
|
2166
|
-
:driver => {
|
|
2167
|
-
:name => "starship",
|
|
2168
|
-
:http_proxy => "dragons",
|
|
2169
|
-
:https_proxy => "cats"
|
|
2170
|
-
}
|
|
2171
2105
|
},
|
|
2172
2106
|
{}
|
|
2173
2107
|
).provisioner_data_for("suite", "platform").must_equal(
|
|
2174
|
-
:
|
|
2175
|
-
:
|
|
2176
|
-
:
|
|
2108
|
+
name: "chefy",
|
|
2109
|
+
http_proxy: "it's probably fine",
|
|
2110
|
+
https_proxy: "la quinta"
|
|
2177
2111
|
)
|
|
2178
2112
|
end
|
|
2179
2113
|
|
|
2180
2114
|
it "common driver value loses to existing verifier value" do
|
|
2181
2115
|
DataMunger.new(
|
|
2182
2116
|
{
|
|
2183
|
-
:
|
|
2184
|
-
:
|
|
2185
|
-
:
|
|
2186
|
-
:
|
|
2117
|
+
verifier: {
|
|
2118
|
+
name: "bussy",
|
|
2119
|
+
http_proxy: "it's probably fine",
|
|
2120
|
+
https_proxy: "la quinta",
|
|
2121
|
+
},
|
|
2122
|
+
driver: {
|
|
2123
|
+
name: "starship",
|
|
2124
|
+
http_proxy: "dragons",
|
|
2125
|
+
https_proxy: "cats",
|
|
2187
2126
|
},
|
|
2188
|
-
:driver => {
|
|
2189
|
-
:name => "starship",
|
|
2190
|
-
:http_proxy => "dragons",
|
|
2191
|
-
:https_proxy => "cats"
|
|
2192
|
-
}
|
|
2193
2127
|
},
|
|
2194
2128
|
{}
|
|
2195
2129
|
).verifier_data_for("suite", "platform").must_equal(
|
|
2196
|
-
:
|
|
2197
|
-
:
|
|
2198
|
-
:
|
|
2130
|
+
name: "bussy",
|
|
2131
|
+
http_proxy: "it's probably fine",
|
|
2132
|
+
https_proxy: "la quinta"
|
|
2199
2133
|
)
|
|
2200
2134
|
end
|
|
2201
2135
|
|
|
2202
2136
|
it "suite driver value remains in driver" do
|
|
2203
2137
|
DataMunger.new(
|
|
2204
2138
|
{
|
|
2205
|
-
:
|
|
2139
|
+
suites: [
|
|
2206
2140
|
{
|
|
2207
|
-
:
|
|
2208
|
-
:
|
|
2209
|
-
:
|
|
2210
|
-
:
|
|
2211
|
-
:
|
|
2212
|
-
:
|
|
2213
|
-
}
|
|
2214
|
-
}
|
|
2215
|
-
]
|
|
2141
|
+
name: "sweet",
|
|
2142
|
+
provisioner: "chefy",
|
|
2143
|
+
driver: {
|
|
2144
|
+
name: "starship",
|
|
2145
|
+
http_proxy: "it's probably fine",
|
|
2146
|
+
https_proxy: "la quinta",
|
|
2147
|
+
},
|
|
2148
|
+
},
|
|
2149
|
+
],
|
|
2216
2150
|
},
|
|
2217
2151
|
{}
|
|
2218
2152
|
).driver_data_for("sweet", "platform").must_equal(
|
|
2219
|
-
:
|
|
2220
|
-
:
|
|
2221
|
-
:
|
|
2153
|
+
name: "starship",
|
|
2154
|
+
http_proxy: "it's probably fine",
|
|
2155
|
+
https_proxy: "la quinta"
|
|
2222
2156
|
)
|
|
2223
2157
|
end
|
|
2224
2158
|
|
|
2225
2159
|
it "suite driver value copies into provisioner" do
|
|
2226
2160
|
DataMunger.new(
|
|
2227
2161
|
{
|
|
2228
|
-
:
|
|
2162
|
+
suites: [
|
|
2229
2163
|
{
|
|
2230
|
-
:
|
|
2231
|
-
:
|
|
2232
|
-
:
|
|
2233
|
-
:
|
|
2234
|
-
:
|
|
2235
|
-
:
|
|
2236
|
-
}
|
|
2237
|
-
}
|
|
2238
|
-
]
|
|
2164
|
+
name: "sweet",
|
|
2165
|
+
provisioner: "chefy",
|
|
2166
|
+
driver: {
|
|
2167
|
+
name: "starship",
|
|
2168
|
+
http_proxy: "it's probably fine",
|
|
2169
|
+
https_proxy: "la quinta",
|
|
2170
|
+
},
|
|
2171
|
+
},
|
|
2172
|
+
],
|
|
2239
2173
|
},
|
|
2240
2174
|
{}
|
|
2241
2175
|
).provisioner_data_for("sweet", "platform").must_equal(
|
|
2242
|
-
:
|
|
2243
|
-
:
|
|
2244
|
-
:
|
|
2176
|
+
name: "chefy",
|
|
2177
|
+
http_proxy: "it's probably fine",
|
|
2178
|
+
https_proxy: "la quinta"
|
|
2245
2179
|
)
|
|
2246
2180
|
end
|
|
2247
2181
|
|
|
2248
2182
|
it "suite driver value copies into verifier" do
|
|
2249
2183
|
DataMunger.new(
|
|
2250
2184
|
{
|
|
2251
|
-
:
|
|
2185
|
+
suites: [
|
|
2252
2186
|
{
|
|
2253
|
-
:
|
|
2254
|
-
:
|
|
2255
|
-
:
|
|
2256
|
-
:
|
|
2257
|
-
:
|
|
2258
|
-
:
|
|
2259
|
-
}
|
|
2260
|
-
}
|
|
2261
|
-
]
|
|
2187
|
+
name: "sweet",
|
|
2188
|
+
verifier: "bussy",
|
|
2189
|
+
driver: {
|
|
2190
|
+
name: "starship",
|
|
2191
|
+
http_proxy: "it's probably fine",
|
|
2192
|
+
https_proxy: "la quinta",
|
|
2193
|
+
},
|
|
2194
|
+
},
|
|
2195
|
+
],
|
|
2262
2196
|
},
|
|
2263
2197
|
{}
|
|
2264
2198
|
).verifier_data_for("sweet", "platform").must_equal(
|
|
2265
|
-
:
|
|
2266
|
-
:
|
|
2267
|
-
:
|
|
2199
|
+
name: "bussy",
|
|
2200
|
+
http_proxy: "it's probably fine",
|
|
2201
|
+
https_proxy: "la quinta"
|
|
2268
2202
|
)
|
|
2269
2203
|
end
|
|
2270
2204
|
|
|
2271
2205
|
it "suite driver value loses to existing provisioner value" do
|
|
2272
2206
|
DataMunger.new(
|
|
2273
2207
|
{
|
|
2274
|
-
:
|
|
2208
|
+
suites: [
|
|
2275
2209
|
{
|
|
2276
|
-
:
|
|
2277
|
-
:
|
|
2278
|
-
:
|
|
2279
|
-
:
|
|
2280
|
-
:
|
|
2210
|
+
name: "sweet",
|
|
2211
|
+
provisioner: {
|
|
2212
|
+
name: "chefy",
|
|
2213
|
+
http_proxy: "it's probably fine",
|
|
2214
|
+
https_proxy: "la quinta",
|
|
2215
|
+
},
|
|
2216
|
+
driver: {
|
|
2217
|
+
name: "starship",
|
|
2218
|
+
http_proxy: "dragons",
|
|
2219
|
+
https_proxy: "cats",
|
|
2281
2220
|
},
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
:http_proxy => "dragons",
|
|
2285
|
-
:https_proxy => "cats"
|
|
2286
|
-
}
|
|
2287
|
-
}
|
|
2288
|
-
]
|
|
2221
|
+
},
|
|
2222
|
+
],
|
|
2289
2223
|
},
|
|
2290
2224
|
{}
|
|
2291
2225
|
).provisioner_data_for("sweet", "platform").must_equal(
|
|
2292
|
-
:
|
|
2293
|
-
:
|
|
2294
|
-
:
|
|
2226
|
+
name: "chefy",
|
|
2227
|
+
http_proxy: "it's probably fine",
|
|
2228
|
+
https_proxy: "la quinta"
|
|
2295
2229
|
)
|
|
2296
2230
|
end
|
|
2297
2231
|
|
|
2298
2232
|
it "suite driver value loses to existing verifier value" do
|
|
2299
2233
|
DataMunger.new(
|
|
2300
2234
|
{
|
|
2301
|
-
:
|
|
2235
|
+
suites: [
|
|
2302
2236
|
{
|
|
2303
|
-
:
|
|
2304
|
-
:
|
|
2305
|
-
:
|
|
2306
|
-
:
|
|
2307
|
-
:
|
|
2237
|
+
name: "sweet",
|
|
2238
|
+
verifier: {
|
|
2239
|
+
name: "bussy",
|
|
2240
|
+
http_proxy: "it's probably fine",
|
|
2241
|
+
https_proxy: "la quinta",
|
|
2308
2242
|
},
|
|
2309
|
-
:
|
|
2310
|
-
:
|
|
2311
|
-
:
|
|
2312
|
-
:
|
|
2313
|
-
}
|
|
2314
|
-
}
|
|
2315
|
-
]
|
|
2243
|
+
driver: {
|
|
2244
|
+
name: "starship",
|
|
2245
|
+
http_proxy: "dragons",
|
|
2246
|
+
https_proxy: "cats",
|
|
2247
|
+
},
|
|
2248
|
+
},
|
|
2249
|
+
],
|
|
2316
2250
|
},
|
|
2317
2251
|
{}
|
|
2318
2252
|
).verifier_data_for("sweet", "platform").must_equal(
|
|
2319
|
-
:
|
|
2320
|
-
:
|
|
2321
|
-
:
|
|
2253
|
+
name: "bussy",
|
|
2254
|
+
http_proxy: "it's probably fine",
|
|
2255
|
+
https_proxy: "la quinta"
|
|
2322
2256
|
)
|
|
2323
2257
|
end
|
|
2324
2258
|
|
|
2325
2259
|
it "platform driver value remains in driver" do
|
|
2326
2260
|
DataMunger.new(
|
|
2327
2261
|
{
|
|
2328
|
-
:
|
|
2262
|
+
platforms: [
|
|
2329
2263
|
{
|
|
2330
|
-
:
|
|
2331
|
-
:
|
|
2332
|
-
:
|
|
2333
|
-
:
|
|
2334
|
-
:
|
|
2335
|
-
:
|
|
2336
|
-
}
|
|
2337
|
-
}
|
|
2338
|
-
]
|
|
2264
|
+
name: "plat",
|
|
2265
|
+
provisioner: "chefy",
|
|
2266
|
+
driver: {
|
|
2267
|
+
name: "starship",
|
|
2268
|
+
http_proxy: "it's probably fine",
|
|
2269
|
+
https_proxy: "la quinta",
|
|
2270
|
+
},
|
|
2271
|
+
},
|
|
2272
|
+
],
|
|
2339
2273
|
},
|
|
2340
2274
|
{}
|
|
2341
2275
|
).driver_data_for("suite", "plat").must_equal(
|
|
2342
|
-
:
|
|
2343
|
-
:
|
|
2344
|
-
:
|
|
2276
|
+
name: "starship",
|
|
2277
|
+
http_proxy: "it's probably fine",
|
|
2278
|
+
https_proxy: "la quinta"
|
|
2345
2279
|
)
|
|
2346
2280
|
end
|
|
2347
2281
|
|
|
2348
2282
|
it "platform driver value copies into provisioner" do
|
|
2349
2283
|
DataMunger.new(
|
|
2350
2284
|
{
|
|
2351
|
-
:
|
|
2285
|
+
platforms: [
|
|
2352
2286
|
{
|
|
2353
|
-
:
|
|
2354
|
-
:
|
|
2355
|
-
:
|
|
2356
|
-
:
|
|
2357
|
-
:
|
|
2358
|
-
:
|
|
2359
|
-
}
|
|
2360
|
-
}
|
|
2361
|
-
]
|
|
2287
|
+
name: "plat",
|
|
2288
|
+
provisioner: "chefy",
|
|
2289
|
+
driver: {
|
|
2290
|
+
name: "starship",
|
|
2291
|
+
http_proxy: "it's probably fine",
|
|
2292
|
+
https_proxy: "la quinta",
|
|
2293
|
+
},
|
|
2294
|
+
},
|
|
2295
|
+
],
|
|
2362
2296
|
},
|
|
2363
2297
|
{}
|
|
2364
2298
|
).provisioner_data_for("suite", "plat").must_equal(
|
|
2365
|
-
:
|
|
2366
|
-
:
|
|
2367
|
-
:
|
|
2299
|
+
name: "chefy",
|
|
2300
|
+
http_proxy: "it's probably fine",
|
|
2301
|
+
https_proxy: "la quinta"
|
|
2368
2302
|
)
|
|
2369
2303
|
end
|
|
2370
2304
|
|
|
2371
2305
|
it "platform driver value copies into verifier" do
|
|
2372
2306
|
DataMunger.new(
|
|
2373
2307
|
{
|
|
2374
|
-
:
|
|
2308
|
+
platforms: [
|
|
2375
2309
|
{
|
|
2376
|
-
:
|
|
2377
|
-
:
|
|
2378
|
-
:
|
|
2379
|
-
:
|
|
2380
|
-
:
|
|
2381
|
-
:
|
|
2382
|
-
}
|
|
2383
|
-
}
|
|
2384
|
-
]
|
|
2310
|
+
name: "plat",
|
|
2311
|
+
verifier: "bussy",
|
|
2312
|
+
driver: {
|
|
2313
|
+
name: "starship",
|
|
2314
|
+
http_proxy: "it's probably fine",
|
|
2315
|
+
https_proxy: "la quinta",
|
|
2316
|
+
},
|
|
2317
|
+
},
|
|
2318
|
+
],
|
|
2385
2319
|
},
|
|
2386
2320
|
{}
|
|
2387
2321
|
).verifier_data_for("suite", "plat").must_equal(
|
|
2388
|
-
:
|
|
2389
|
-
:
|
|
2390
|
-
:
|
|
2322
|
+
name: "bussy",
|
|
2323
|
+
http_proxy: "it's probably fine",
|
|
2324
|
+
https_proxy: "la quinta"
|
|
2391
2325
|
)
|
|
2392
2326
|
end
|
|
2393
2327
|
|
|
2394
2328
|
it "platform driver value loses to existing provisioner value" do
|
|
2395
2329
|
DataMunger.new(
|
|
2396
2330
|
{
|
|
2397
|
-
:
|
|
2331
|
+
platforms: [
|
|
2398
2332
|
{
|
|
2399
|
-
:
|
|
2400
|
-
:
|
|
2401
|
-
:
|
|
2402
|
-
:
|
|
2403
|
-
:
|
|
2333
|
+
name: "plat",
|
|
2334
|
+
provisioner: {
|
|
2335
|
+
name: "chefy",
|
|
2336
|
+
http_proxy: "it's probably fine",
|
|
2337
|
+
https_proxy: "la quinta",
|
|
2404
2338
|
},
|
|
2405
|
-
:
|
|
2406
|
-
:
|
|
2407
|
-
:
|
|
2408
|
-
:
|
|
2409
|
-
}
|
|
2410
|
-
}
|
|
2411
|
-
]
|
|
2339
|
+
driver: {
|
|
2340
|
+
name: "starship",
|
|
2341
|
+
http_proxy: "dragons",
|
|
2342
|
+
https_proxy: "cats",
|
|
2343
|
+
},
|
|
2344
|
+
},
|
|
2345
|
+
],
|
|
2412
2346
|
},
|
|
2413
2347
|
{}
|
|
2414
2348
|
).provisioner_data_for("suite", "plat").must_equal(
|
|
2415
|
-
:
|
|
2416
|
-
:
|
|
2417
|
-
:
|
|
2349
|
+
name: "chefy",
|
|
2350
|
+
http_proxy: "it's probably fine",
|
|
2351
|
+
https_proxy: "la quinta"
|
|
2418
2352
|
)
|
|
2419
2353
|
end
|
|
2420
2354
|
|
|
2421
2355
|
it "platform driver value loses to existing verifier value" do
|
|
2422
2356
|
DataMunger.new(
|
|
2423
2357
|
{
|
|
2424
|
-
:
|
|
2358
|
+
platforms: [
|
|
2425
2359
|
{
|
|
2426
|
-
:
|
|
2427
|
-
:
|
|
2428
|
-
:
|
|
2429
|
-
:
|
|
2430
|
-
:
|
|
2360
|
+
name: "plat",
|
|
2361
|
+
verifier: {
|
|
2362
|
+
name: "bussy",
|
|
2363
|
+
http_proxy: "it's probably fine",
|
|
2364
|
+
https_proxy: "la quinta",
|
|
2365
|
+
},
|
|
2366
|
+
driver: {
|
|
2367
|
+
name: "starship",
|
|
2368
|
+
http_proxy: "dragons",
|
|
2369
|
+
https_proxy: "cats",
|
|
2431
2370
|
},
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
:http_proxy => "dragons",
|
|
2435
|
-
:https_proxy => "cats"
|
|
2436
|
-
}
|
|
2437
|
-
}
|
|
2438
|
-
]
|
|
2371
|
+
},
|
|
2372
|
+
],
|
|
2439
2373
|
},
|
|
2440
2374
|
{}
|
|
2441
2375
|
).verifier_data_for("suite", "plat").must_equal(
|
|
2442
|
-
:
|
|
2443
|
-
:
|
|
2444
|
-
:
|
|
2376
|
+
name: "bussy",
|
|
2377
|
+
http_proxy: "it's probably fine",
|
|
2378
|
+
https_proxy: "la quinta"
|
|
2445
2379
|
)
|
|
2446
2380
|
end
|
|
2447
2381
|
end
|
|
2448
2382
|
end
|
|
2449
2383
|
|
|
2450
2384
|
describe "legacy busser blocks to verifier" do
|
|
2451
|
-
|
|
2452
2385
|
describe "from a single source" do
|
|
2453
|
-
|
|
2454
2386
|
it "merges old common busser name to version into verifier" do
|
|
2455
2387
|
DataMunger.new(
|
|
2456
2388
|
{
|
|
2457
|
-
:
|
|
2389
|
+
busser: "starship",
|
|
2458
2390
|
},
|
|
2459
2391
|
{}
|
|
2460
2392
|
).verifier_data_for("suite", "platform").must_equal(
|
|
2461
|
-
:
|
|
2462
|
-
:
|
|
2393
|
+
name: "busser",
|
|
2394
|
+
version: "starship"
|
|
2463
2395
|
)
|
|
2464
2396
|
end
|
|
2465
2397
|
|
|
2466
2398
|
it "merges old common busser name to version with exising verifier" do
|
|
2467
2399
|
DataMunger.new(
|
|
2468
2400
|
{
|
|
2469
|
-
:
|
|
2470
|
-
:
|
|
2471
|
-
:
|
|
2472
|
-
}
|
|
2401
|
+
busser: "starship",
|
|
2402
|
+
verifier: {
|
|
2403
|
+
a: "b",
|
|
2404
|
+
},
|
|
2473
2405
|
},
|
|
2474
2406
|
{}
|
|
2475
2407
|
).verifier_data_for("suite", "platform").must_equal(
|
|
2476
|
-
:
|
|
2477
|
-
:
|
|
2478
|
-
:
|
|
2408
|
+
name: "busser",
|
|
2409
|
+
version: "starship",
|
|
2410
|
+
a: "b"
|
|
2479
2411
|
)
|
|
2480
2412
|
end
|
|
2481
2413
|
|
|
2482
2414
|
it "merges old common busser name to version into verifier with name" do
|
|
2483
2415
|
DataMunger.new(
|
|
2484
2416
|
{
|
|
2485
|
-
:
|
|
2486
|
-
:
|
|
2417
|
+
busser: "starship",
|
|
2418
|
+
verifier: "stellar",
|
|
2487
2419
|
},
|
|
2488
2420
|
{}
|
|
2489
2421
|
).verifier_data_for("suite", "platform").must_equal(
|
|
2490
|
-
:
|
|
2491
|
-
:
|
|
2422
|
+
name: "stellar",
|
|
2423
|
+
version: "starship"
|
|
2492
2424
|
)
|
|
2493
2425
|
end
|
|
2494
2426
|
|
|
2495
2427
|
it "merges old busser data into verifier with name" do
|
|
2496
2428
|
DataMunger.new(
|
|
2497
2429
|
{
|
|
2498
|
-
:
|
|
2499
|
-
:
|
|
2430
|
+
busser: {
|
|
2431
|
+
a: "b",
|
|
2500
2432
|
},
|
|
2501
|
-
:
|
|
2433
|
+
verifier: "stellar",
|
|
2502
2434
|
},
|
|
2503
2435
|
{}
|
|
2504
2436
|
).verifier_data_for("suite", "platform").must_equal(
|
|
2505
|
-
:
|
|
2506
|
-
:
|
|
2437
|
+
name: "stellar",
|
|
2438
|
+
a: "b"
|
|
2507
2439
|
)
|
|
2508
2440
|
end
|
|
2509
2441
|
|
|
2510
2442
|
it "merges old busser data into verifier data" do
|
|
2511
2443
|
DataMunger.new(
|
|
2512
2444
|
{
|
|
2513
|
-
:
|
|
2514
|
-
:
|
|
2515
|
-
:
|
|
2445
|
+
busser: {
|
|
2446
|
+
a: "b",
|
|
2447
|
+
both: "legacy",
|
|
2448
|
+
},
|
|
2449
|
+
verifier: {
|
|
2450
|
+
name: "stellar",
|
|
2451
|
+
c: "d",
|
|
2452
|
+
both: "modern",
|
|
2516
2453
|
},
|
|
2517
|
-
:verifier => {
|
|
2518
|
-
:name => "stellar",
|
|
2519
|
-
:c => "d",
|
|
2520
|
-
:both => "modern"
|
|
2521
|
-
}
|
|
2522
2454
|
},
|
|
2523
2455
|
{}
|
|
2524
2456
|
).verifier_data_for("suite", "platform").must_equal(
|
|
2525
|
-
:
|
|
2526
|
-
:
|
|
2527
|
-
:
|
|
2528
|
-
:
|
|
2457
|
+
name: "stellar",
|
|
2458
|
+
a: "b",
|
|
2459
|
+
c: "d",
|
|
2460
|
+
both: "modern"
|
|
2529
2461
|
)
|
|
2530
2462
|
end
|
|
2531
2463
|
|
|
2532
2464
|
it "returns platform verifier name" do
|
|
2533
2465
|
DataMunger.new(
|
|
2534
2466
|
{
|
|
2535
|
-
:
|
|
2467
|
+
platforms: [
|
|
2536
2468
|
{
|
|
2537
|
-
:
|
|
2538
|
-
:
|
|
2539
|
-
}
|
|
2540
|
-
]
|
|
2469
|
+
name: "plat",
|
|
2470
|
+
busser: "flip",
|
|
2471
|
+
},
|
|
2472
|
+
],
|
|
2541
2473
|
},
|
|
2542
2474
|
{}
|
|
2543
2475
|
).verifier_data_for("suite", "plat").must_equal(
|
|
2544
|
-
:
|
|
2545
|
-
:
|
|
2476
|
+
name: "busser",
|
|
2477
|
+
version: "flip"
|
|
2546
2478
|
)
|
|
2547
2479
|
end
|
|
2548
2480
|
|
|
2549
2481
|
it "return platform config containing verifier hash" do
|
|
2550
2482
|
DataMunger.new(
|
|
2551
2483
|
{
|
|
2552
|
-
:
|
|
2484
|
+
platforms: [
|
|
2553
2485
|
{
|
|
2554
|
-
:
|
|
2555
|
-
:
|
|
2556
|
-
:
|
|
2557
|
-
:
|
|
2558
|
-
}
|
|
2559
|
-
}
|
|
2560
|
-
]
|
|
2486
|
+
name: "plat",
|
|
2487
|
+
busser: "flip",
|
|
2488
|
+
verifier: {
|
|
2489
|
+
flop: "yep",
|
|
2490
|
+
},
|
|
2491
|
+
},
|
|
2492
|
+
],
|
|
2561
2493
|
},
|
|
2562
2494
|
{}
|
|
2563
2495
|
).verifier_data_for("suite", "plat").must_equal(
|
|
2564
|
-
:
|
|
2565
|
-
:
|
|
2566
|
-
:
|
|
2496
|
+
name: "busser",
|
|
2497
|
+
version: "flip",
|
|
2498
|
+
flop: "yep"
|
|
2567
2499
|
)
|
|
2568
2500
|
end
|
|
2569
2501
|
|
|
2570
2502
|
it "returns suite driver name" do
|
|
2571
2503
|
DataMunger.new(
|
|
2572
2504
|
{
|
|
2573
|
-
:
|
|
2505
|
+
suites: [
|
|
2574
2506
|
{
|
|
2575
|
-
:
|
|
2576
|
-
:
|
|
2577
|
-
}
|
|
2578
|
-
]
|
|
2507
|
+
name: "sweet",
|
|
2508
|
+
busser: "waz",
|
|
2509
|
+
},
|
|
2510
|
+
],
|
|
2579
2511
|
},
|
|
2580
2512
|
{}
|
|
2581
2513
|
).verifier_data_for("sweet", "platform").must_equal(
|
|
2582
|
-
:
|
|
2583
|
-
:
|
|
2514
|
+
name: "busser",
|
|
2515
|
+
version: "waz"
|
|
2584
2516
|
)
|
|
2585
2517
|
end
|
|
2586
2518
|
|
|
2587
2519
|
it "returns suite config containing verifier hash" do
|
|
2588
2520
|
DataMunger.new(
|
|
2589
2521
|
{
|
|
2590
|
-
:
|
|
2522
|
+
suites: [
|
|
2591
2523
|
{
|
|
2592
|
-
:
|
|
2593
|
-
:
|
|
2594
|
-
:
|
|
2595
|
-
:
|
|
2596
|
-
}
|
|
2597
|
-
}
|
|
2598
|
-
]
|
|
2524
|
+
name: "sweet",
|
|
2525
|
+
busser: "waz",
|
|
2526
|
+
verifier: {
|
|
2527
|
+
up: "nope",
|
|
2528
|
+
},
|
|
2529
|
+
},
|
|
2530
|
+
],
|
|
2599
2531
|
},
|
|
2600
2532
|
{}
|
|
2601
2533
|
).verifier_data_for("sweet", "platform").must_equal(
|
|
2602
|
-
:
|
|
2603
|
-
:
|
|
2604
|
-
:
|
|
2534
|
+
name: "busser",
|
|
2535
|
+
version: "waz",
|
|
2536
|
+
up: "nope"
|
|
2605
2537
|
)
|
|
2606
2538
|
end
|
|
2607
2539
|
end
|
|
2608
2540
|
|
|
2609
2541
|
describe "from multiple sources" do
|
|
2610
|
-
|
|
2611
2542
|
it "suite into platform into common" do
|
|
2612
2543
|
DataMunger.new(
|
|
2613
2544
|
{
|
|
2614
|
-
:
|
|
2615
|
-
:
|
|
2616
|
-
:
|
|
2617
|
-
:
|
|
2618
|
-
:
|
|
2545
|
+
busser: {
|
|
2546
|
+
version: "commony",
|
|
2547
|
+
color: "purple",
|
|
2548
|
+
fruit: %w{apple pear},
|
|
2549
|
+
deep: { common: "junk" },
|
|
2619
2550
|
},
|
|
2620
|
-
:
|
|
2551
|
+
platforms: [
|
|
2621
2552
|
{
|
|
2622
|
-
:
|
|
2623
|
-
:
|
|
2624
|
-
:
|
|
2625
|
-
:
|
|
2626
|
-
:
|
|
2627
|
-
}
|
|
2628
|
-
}
|
|
2553
|
+
name: "plat",
|
|
2554
|
+
busser: {
|
|
2555
|
+
version: "platformy",
|
|
2556
|
+
fruit: ["banana"],
|
|
2557
|
+
deep: { platform: "stuff" },
|
|
2558
|
+
},
|
|
2559
|
+
},
|
|
2629
2560
|
],
|
|
2630
|
-
:
|
|
2561
|
+
suites: [
|
|
2631
2562
|
{
|
|
2632
|
-
:
|
|
2633
|
-
:
|
|
2634
|
-
:
|
|
2635
|
-
:
|
|
2636
|
-
:
|
|
2637
|
-
}
|
|
2638
|
-
}
|
|
2639
|
-
]
|
|
2563
|
+
name: "sweet",
|
|
2564
|
+
busser: {
|
|
2565
|
+
version: "suitey",
|
|
2566
|
+
vehicle: "car",
|
|
2567
|
+
deep: { suite: "things" },
|
|
2568
|
+
},
|
|
2569
|
+
},
|
|
2570
|
+
],
|
|
2640
2571
|
},
|
|
2641
2572
|
{}
|
|
2642
2573
|
).verifier_data_for("sweet", "plat").must_equal(
|
|
2643
|
-
:
|
|
2644
|
-
:
|
|
2645
|
-
:
|
|
2646
|
-
:
|
|
2647
|
-
:
|
|
2648
|
-
:
|
|
2649
|
-
:
|
|
2650
|
-
:
|
|
2651
|
-
:
|
|
2574
|
+
name: "busser",
|
|
2575
|
+
version: "suitey",
|
|
2576
|
+
color: "purple",
|
|
2577
|
+
fruit: ["banana"],
|
|
2578
|
+
vehicle: "car",
|
|
2579
|
+
deep: {
|
|
2580
|
+
common: "junk",
|
|
2581
|
+
platform: "stuff",
|
|
2582
|
+
suite: "things",
|
|
2652
2583
|
}
|
|
2653
2584
|
)
|
|
2654
2585
|
end
|
|
@@ -2656,32 +2587,32 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
2656
2587
|
it "platform into common" do
|
|
2657
2588
|
DataMunger.new(
|
|
2658
2589
|
{
|
|
2659
|
-
:
|
|
2660
|
-
:
|
|
2661
|
-
:
|
|
2662
|
-
:
|
|
2663
|
-
:
|
|
2590
|
+
busser: {
|
|
2591
|
+
version: "commony",
|
|
2592
|
+
color: "purple",
|
|
2593
|
+
fruit: %w{apple pear},
|
|
2594
|
+
deep: { common: "junk" },
|
|
2664
2595
|
},
|
|
2665
|
-
:
|
|
2596
|
+
platforms: [
|
|
2666
2597
|
{
|
|
2667
|
-
:
|
|
2668
|
-
:
|
|
2669
|
-
:
|
|
2670
|
-
:
|
|
2671
|
-
:
|
|
2672
|
-
}
|
|
2673
|
-
}
|
|
2674
|
-
]
|
|
2598
|
+
name: "plat",
|
|
2599
|
+
busser: {
|
|
2600
|
+
version: "platformy",
|
|
2601
|
+
fruit: ["banana"],
|
|
2602
|
+
deep: { platform: "stuff" },
|
|
2603
|
+
},
|
|
2604
|
+
},
|
|
2605
|
+
],
|
|
2675
2606
|
},
|
|
2676
2607
|
{}
|
|
2677
2608
|
).verifier_data_for("sweet", "plat").must_equal(
|
|
2678
|
-
:
|
|
2679
|
-
:
|
|
2680
|
-
:
|
|
2681
|
-
:
|
|
2682
|
-
:
|
|
2683
|
-
:
|
|
2684
|
-
:
|
|
2609
|
+
name: "busser",
|
|
2610
|
+
version: "platformy",
|
|
2611
|
+
color: "purple",
|
|
2612
|
+
fruit: ["banana"],
|
|
2613
|
+
deep: {
|
|
2614
|
+
common: "junk",
|
|
2615
|
+
platform: "stuff",
|
|
2685
2616
|
}
|
|
2686
2617
|
)
|
|
2687
2618
|
end
|
|
@@ -2689,33 +2620,33 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
2689
2620
|
it "suite into common" do
|
|
2690
2621
|
DataMunger.new(
|
|
2691
2622
|
{
|
|
2692
|
-
:
|
|
2693
|
-
:
|
|
2694
|
-
:
|
|
2695
|
-
:
|
|
2696
|
-
:
|
|
2623
|
+
busser: {
|
|
2624
|
+
version: "commony",
|
|
2625
|
+
color: "purple",
|
|
2626
|
+
fruit: %w{apple pear},
|
|
2627
|
+
deep: { common: "junk" },
|
|
2697
2628
|
},
|
|
2698
|
-
:
|
|
2629
|
+
suites: [
|
|
2699
2630
|
{
|
|
2700
|
-
:
|
|
2701
|
-
:
|
|
2702
|
-
:
|
|
2703
|
-
:
|
|
2704
|
-
:
|
|
2705
|
-
}
|
|
2706
|
-
}
|
|
2707
|
-
]
|
|
2631
|
+
name: "sweet",
|
|
2632
|
+
busser: {
|
|
2633
|
+
version: "suitey",
|
|
2634
|
+
vehicle: "car",
|
|
2635
|
+
deep: { suite: "things" },
|
|
2636
|
+
},
|
|
2637
|
+
},
|
|
2638
|
+
],
|
|
2708
2639
|
},
|
|
2709
2640
|
{}
|
|
2710
2641
|
).verifier_data_for("sweet", "plat").must_equal(
|
|
2711
|
-
:
|
|
2712
|
-
:
|
|
2713
|
-
:
|
|
2714
|
-
:
|
|
2715
|
-
:
|
|
2716
|
-
:
|
|
2717
|
-
:
|
|
2718
|
-
:
|
|
2642
|
+
name: "busser",
|
|
2643
|
+
version: "suitey",
|
|
2644
|
+
color: "purple",
|
|
2645
|
+
fruit: %w{apple pear},
|
|
2646
|
+
vehicle: "car",
|
|
2647
|
+
deep: {
|
|
2648
|
+
common: "junk",
|
|
2649
|
+
suite: "things",
|
|
2719
2650
|
}
|
|
2720
2651
|
)
|
|
2721
2652
|
end
|
|
@@ -2723,36 +2654,36 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
|
|
|
2723
2654
|
it "suite into platform" do
|
|
2724
2655
|
DataMunger.new(
|
|
2725
2656
|
{
|
|
2726
|
-
:
|
|
2657
|
+
platforms: [
|
|
2727
2658
|
{
|
|
2728
|
-
:
|
|
2729
|
-
:
|
|
2730
|
-
:
|
|
2731
|
-
:
|
|
2732
|
-
:
|
|
2733
|
-
}
|
|
2734
|
-
}
|
|
2659
|
+
name: "plat",
|
|
2660
|
+
busser: {
|
|
2661
|
+
version: "platformy",
|
|
2662
|
+
fruit: ["banana"],
|
|
2663
|
+
deep: { platform: "stuff" },
|
|
2664
|
+
},
|
|
2665
|
+
},
|
|
2735
2666
|
],
|
|
2736
|
-
:
|
|
2667
|
+
suites: [
|
|
2737
2668
|
{
|
|
2738
|
-
:
|
|
2739
|
-
:
|
|
2740
|
-
:
|
|
2741
|
-
:
|
|
2742
|
-
:
|
|
2743
|
-
}
|
|
2744
|
-
}
|
|
2745
|
-
]
|
|
2669
|
+
name: "sweet",
|
|
2670
|
+
busser: {
|
|
2671
|
+
version: "suitey",
|
|
2672
|
+
vehicle: "car",
|
|
2673
|
+
deep: { suite: "things" },
|
|
2674
|
+
},
|
|
2675
|
+
},
|
|
2676
|
+
],
|
|
2746
2677
|
},
|
|
2747
2678
|
{}
|
|
2748
2679
|
).verifier_data_for("sweet", "plat").must_equal(
|
|
2749
|
-
:
|
|
2750
|
-
:
|
|
2751
|
-
:
|
|
2752
|
-
:
|
|
2753
|
-
:
|
|
2754
|
-
:
|
|
2755
|
-
:
|
|
2680
|
+
name: "busser",
|
|
2681
|
+
version: "suitey",
|
|
2682
|
+
fruit: ["banana"],
|
|
2683
|
+
vehicle: "car",
|
|
2684
|
+
deep: {
|
|
2685
|
+
platform: "stuff",
|
|
2686
|
+
suite: "things",
|
|
2756
2687
|
}
|
|
2757
2688
|
)
|
|
2758
2689
|
end
|