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.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/Berksfile +1 -1
  3. data/CHANGELOG.md +7 -0
  4. data/Gemfile +1 -1
  5. data/Guardfile +5 -5
  6. data/Rakefile +5 -5
  7. data/bin/kitchen +1 -1
  8. data/features/step_definitions/gem_steps.rb +6 -6
  9. data/features/support/env.rb +6 -7
  10. data/lib/kitchen.rb +5 -7
  11. data/lib/kitchen/base64_stream.rb +2 -8
  12. data/lib/kitchen/cli.rb +76 -80
  13. data/lib/kitchen/collection.rb +0 -2
  14. data/lib/kitchen/color.rb +7 -9
  15. data/lib/kitchen/command.rb +0 -4
  16. data/lib/kitchen/command/action.rb +0 -3
  17. data/lib/kitchen/command/console.rb +4 -7
  18. data/lib/kitchen/command/diagnose.rb +7 -14
  19. data/lib/kitchen/command/driver_discover.rb +1 -4
  20. data/lib/kitchen/command/exec.rb +0 -3
  21. data/lib/kitchen/command/list.rb +9 -12
  22. data/lib/kitchen/command/login.rb +0 -3
  23. data/lib/kitchen/command/package.rb +0 -3
  24. data/lib/kitchen/command/sink.rb +6 -9
  25. data/lib/kitchen/command/test.rb +1 -4
  26. data/lib/kitchen/config.rb +25 -27
  27. data/lib/kitchen/configurable.rb +26 -31
  28. data/lib/kitchen/data_munger.rb +34 -36
  29. data/lib/kitchen/diagnostic.rb +5 -7
  30. data/lib/kitchen/driver.rb +3 -5
  31. data/lib/kitchen/driver/base.rb +0 -3
  32. data/lib/kitchen/driver/dummy.rb +0 -3
  33. data/lib/kitchen/driver/proxy.rb +0 -3
  34. data/lib/kitchen/driver/ssh_base.rb +13 -16
  35. data/lib/kitchen/errors.rb +11 -16
  36. data/lib/kitchen/generator/driver_create.rb +18 -21
  37. data/lib/kitchen/generator/init.rb +21 -26
  38. data/lib/kitchen/instance.rb +19 -23
  39. data/lib/kitchen/lazy_hash.rb +1 -2
  40. data/lib/kitchen/loader/yaml.rb +22 -25
  41. data/lib/kitchen/logger.rb +9 -14
  42. data/lib/kitchen/logging.rb +0 -3
  43. data/lib/kitchen/login_command.rb +0 -2
  44. data/lib/kitchen/metadata_chopper.rb +0 -2
  45. data/lib/kitchen/platform.rb +1 -3
  46. data/lib/kitchen/provisioner.rb +3 -5
  47. data/lib/kitchen/provisioner/base.rb +2 -5
  48. data/lib/kitchen/provisioner/chef/berkshelf.rb +1 -5
  49. data/lib/kitchen/provisioner/chef/common_sandbox.rb +24 -29
  50. data/lib/kitchen/provisioner/chef/librarian.rb +2 -6
  51. data/lib/kitchen/provisioner/chef/policyfile.rb +4 -8
  52. data/lib/kitchen/provisioner/chef_apply.rb +14 -17
  53. data/lib/kitchen/provisioner/chef_base.rb +43 -46
  54. data/lib/kitchen/provisioner/chef_solo.rb +10 -13
  55. data/lib/kitchen/provisioner/chef_zero.rb +22 -29
  56. data/lib/kitchen/provisioner/dummy.rb +0 -3
  57. data/lib/kitchen/provisioner/shell.rb +6 -9
  58. data/lib/kitchen/rake_tasks.rb +4 -6
  59. data/lib/kitchen/shell_out.rb +3 -5
  60. data/lib/kitchen/ssh.rb +16 -22
  61. data/lib/kitchen/state_file.rb +3 -5
  62. data/lib/kitchen/suite.rb +0 -2
  63. data/lib/kitchen/thor_tasks.rb +2 -4
  64. data/lib/kitchen/transport.rb +3 -5
  65. data/lib/kitchen/transport/base.rb +1 -7
  66. data/lib/kitchen/transport/dummy.rb +0 -4
  67. data/lib/kitchen/transport/ssh.rb +41 -47
  68. data/lib/kitchen/transport/winrm.rb +41 -40
  69. data/lib/kitchen/util.rb +1 -3
  70. data/lib/kitchen/verifier.rb +3 -5
  71. data/lib/kitchen/verifier/base.rb +2 -5
  72. data/lib/kitchen/verifier/busser.rb +24 -24
  73. data/lib/kitchen/verifier/dummy.rb +0 -3
  74. data/lib/kitchen/verifier/shell.rb +1 -3
  75. data/lib/kitchen/version.rb +1 -1
  76. data/lib/vendor/hash_recursive_merge.rb +0 -2
  77. data/spec/kitchen/base64_stream_spec.rb +3 -6
  78. data/spec/kitchen/cli_spec.rb +0 -2
  79. data/spec/kitchen/collection_spec.rb +4 -8
  80. data/spec/kitchen/color_spec.rb +0 -3
  81. data/spec/kitchen/config_spec.rb +91 -106
  82. data/spec/kitchen/configurable_spec.rb +44 -76
  83. data/spec/kitchen/data_munger_spec.rb +1178 -1247
  84. data/spec/kitchen/diagnostic_spec.rb +37 -38
  85. data/spec/kitchen/driver/base_spec.rb +7 -14
  86. data/spec/kitchen/driver/dummy_spec.rb +1 -7
  87. data/spec/kitchen/driver/proxy_spec.rb +2 -7
  88. data/spec/kitchen/driver/ssh_base_spec.rb +128 -149
  89. data/spec/kitchen/driver_spec.rb +7 -13
  90. data/spec/kitchen/errors_spec.rb +50 -60
  91. data/spec/kitchen/instance_spec.rb +217 -294
  92. data/spec/kitchen/lazy_hash_spec.rb +14 -18
  93. data/spec/kitchen/loader/yaml_spec.rb +201 -227
  94. data/spec/kitchen/logger_spec.rb +7 -15
  95. data/spec/kitchen/logging_spec.rb +1 -4
  96. data/spec/kitchen/login_command_spec.rb +3 -4
  97. data/spec/kitchen/metadata_chopper_spec.rb +0 -3
  98. data/spec/kitchen/platform_spec.rb +31 -32
  99. data/spec/kitchen/provisioner/base_spec.rb +22 -41
  100. data/spec/kitchen/provisioner/chef/policyfile_spec.rb +15 -15
  101. data/spec/kitchen/provisioner/chef_apply_spec.rb +8 -13
  102. data/spec/kitchen/provisioner/chef_base_spec.rb +150 -182
  103. data/spec/kitchen/provisioner/chef_solo_spec.rb +58 -72
  104. data/spec/kitchen/provisioner/chef_zero_spec.rb +99 -125
  105. data/spec/kitchen/provisioner/dummy_spec.rb +8 -11
  106. data/spec/kitchen/provisioner/shell_spec.rb +86 -103
  107. data/spec/kitchen/provisioner_spec.rb +5 -11
  108. data/spec/kitchen/shell_out_spec.rb +15 -19
  109. data/spec/kitchen/ssh_spec.rb +16 -35
  110. data/spec/kitchen/state_file_spec.rb +6 -11
  111. data/spec/kitchen/suite_spec.rb +5 -6
  112. data/spec/kitchen/transport/base_spec.rb +6 -14
  113. data/spec/kitchen/transport/ssh_spec.rb +39 -64
  114. data/spec/kitchen/transport/winrm_spec.rb +99 -127
  115. data/spec/kitchen/transport_spec.rb +7 -13
  116. data/spec/kitchen/util_spec.rb +17 -26
  117. data/spec/kitchen/verifier/base_spec.rb +24 -40
  118. data/spec/kitchen/verifier/busser_spec.rb +38 -68
  119. data/spec/kitchen/verifier/dummy_spec.rb +8 -11
  120. data/spec/kitchen/verifier/shell_spec.rb +14 -17
  121. data/spec/kitchen/verifier_spec.rb +7 -13
  122. data/spec/kitchen_spec.rb +4 -6
  123. data/spec/spec_helper.rb +1 -1
  124. data/spec/support/powershell_max_size_spec.rb +1 -2
  125. data/support/chef-client-zero.rb +3 -4
  126. data/test-kitchen.gemspec +4 -6
  127. metadata +9 -9
@@ -21,21 +21,19 @@ require_relative "../spec_helper"
21
21
  require "kitchen/lazy_hash"
22
22
 
23
23
  describe Kitchen::LazyHash do
24
-
25
24
  let(:context) do
26
- stub(:color => "blue", :metal => "heavy")
25
+ stub(color: "blue", metal: "heavy")
27
26
  end
28
27
 
29
28
  let(:hash_obj) do
30
29
  {
31
- :shed_color => ->(c) { c.color },
32
- :barn => "locked",
33
- :genre => proc { |c| "#{c.metal} metal" }
30
+ shed_color: ->(c) { c.color },
31
+ barn: "locked",
32
+ genre: proc { |c| "#{c.metal} metal" },
34
33
  }
35
34
  end
36
35
 
37
36
  describe "#[]" do
38
-
39
37
  it "returns regular values for keys" do
40
38
  Kitchen::LazyHash.new(hash_obj, context)[:barn].must_equal "locked"
41
39
  end
@@ -50,34 +48,32 @@ describe Kitchen::LazyHash do
50
48
  end
51
49
 
52
50
  describe "#fetch" do
53
-
54
51
  it "returns regular hash values for keys" do
55
52
  Kitchen::LazyHash.new(hash_obj, context).fetch(:barn).must_equal "locked"
56
53
  end
57
54
 
58
55
  it "invokes call on values that are lambdas" do
59
- Kitchen::LazyHash.new(hash_obj, context).
60
- fetch(:shed_color).must_equal "blue"
56
+ Kitchen::LazyHash.new(hash_obj, context)
57
+ .fetch(:shed_color).must_equal "blue"
61
58
  end
62
59
 
63
60
  it "invokes call on values that are Procs" do
64
- Kitchen::LazyHash.new(hash_obj, context).
65
- fetch(:genre).must_equal "heavy metal"
61
+ Kitchen::LazyHash.new(hash_obj, context)
62
+ .fetch(:genre).must_equal "heavy metal"
66
63
  end
67
64
 
68
65
  it "uses a default value for unset values" do
69
- Kitchen::LazyHash.new(hash_obj, context).
70
- fetch(:nope, "candy").must_equal "candy"
66
+ Kitchen::LazyHash.new(hash_obj, context)
67
+ .fetch(:nope, "candy").must_equal "candy"
71
68
  end
72
69
 
73
70
  it "uses a block for unset values" do
74
- Kitchen::LazyHash.new(hash_obj, context).
75
- fetch(:nope) { |key| "#{key} is costly" }.must_equal "nope is costly"
71
+ Kitchen::LazyHash.new(hash_obj, context)
72
+ .fetch(:nope) { |key| "#{key} is costly" }.must_equal "nope is costly"
76
73
  end
77
74
  end
78
75
 
79
76
  describe "#to_hash" do
80
-
81
77
  it "invokes any callable values and returns a Hash object" do
82
78
  converted = Kitchen::LazyHash.new(hash_obj, context).to_hash
83
79
 
@@ -90,8 +86,8 @@ describe Kitchen::LazyHash do
90
86
 
91
87
  describe "select" do
92
88
  it "calls Procs when appropriate" do
93
- Kitchen::LazyHash.new(hash_obj, context).select { |_, _| true }.
94
- must_equal :shed_color => "blue", :barn => "locked", :genre => "heavy metal"
89
+ Kitchen::LazyHash.new(hash_obj, context).select { |_, _| true }
90
+ .must_equal shed_color: "blue", barn: "locked", genre: "heavy metal"
95
91
  end
96
92
  end
97
93
 
@@ -27,9 +27,8 @@ class Yamled
27
27
  end
28
28
 
29
29
  describe Kitchen::Loader::YAML do
30
-
31
30
  let(:loader) do
32
- Kitchen::Loader::YAML.new(:project_config => "/tmp/.kitchen.yml")
31
+ Kitchen::Loader::YAML.new(project_config: "/tmp/.kitchen.yml")
33
32
  end
34
33
 
35
34
  before do
@@ -43,52 +42,51 @@ describe Kitchen::Loader::YAML do
43
42
  end
44
43
 
45
44
  describe ".initialize" do
46
-
47
45
  it "sets project_config based on Dir.pwd by default" do
48
- stub_file(File.join(Dir.pwd, ".kitchen.yml"), Hash.new)
46
+ stub_file(File.join(Dir.pwd, ".kitchen.yml"), {})
49
47
  loader = Kitchen::Loader::YAML.new
50
48
 
51
- loader.diagnose[:project_config][:filename].
52
- must_equal File.expand_path(File.join(Dir.pwd, ".kitchen.yml"))
49
+ loader.diagnose[:project_config][:filename]
50
+ .must_equal File.expand_path(File.join(Dir.pwd, ".kitchen.yml"))
53
51
  end
54
52
 
55
53
  it "sets project_config from parameter, if given" do
56
- stub_file("/tmp/crazyfunkytown.file", Hash.new)
54
+ stub_file("/tmp/crazyfunkytown.file", {})
57
55
  loader = Kitchen::Loader::YAML.new(
58
- :project_config => "/tmp/crazyfunkytown.file")
56
+ project_config: "/tmp/crazyfunkytown.file")
59
57
 
60
- loader.diagnose[:project_config][:filename].
61
- must_match %r{/tmp/crazyfunkytown.file$}
58
+ loader.diagnose[:project_config][:filename]
59
+ .must_match %r{/tmp/crazyfunkytown.file$}
62
60
  end
63
61
 
64
62
  it "sets local_config based on Dir.pwd by default" do
65
- stub_file(File.join(Dir.pwd, ".kitchen.local.yml"), Hash.new)
63
+ stub_file(File.join(Dir.pwd, ".kitchen.local.yml"), {})
66
64
  loader = Kitchen::Loader::YAML.new
67
65
 
68
- loader.diagnose[:local_config][:filename].
69
- must_equal File.expand_path(File.join(Dir.pwd, ".kitchen.local.yml"))
66
+ loader.diagnose[:local_config][:filename]
67
+ .must_equal File.expand_path(File.join(Dir.pwd, ".kitchen.local.yml"))
70
68
  end
71
69
 
72
70
  it "sets local_config based on location of project_config by default" do
73
- stub_file("/tmp/.kitchen.local.yml", Hash.new)
71
+ stub_file("/tmp/.kitchen.local.yml", {})
74
72
  loader = Kitchen::Loader::YAML.new(
75
- :project_config => "/tmp/.kitchen.yml")
73
+ project_config: "/tmp/.kitchen.yml")
76
74
 
77
- loader.diagnose[:local_config][:filename].
78
- must_match %r{/tmp/.kitchen.local.yml$}
75
+ loader.diagnose[:local_config][:filename]
76
+ .must_match %r{/tmp/.kitchen.local.yml$}
79
77
  end
80
78
 
81
79
  it "sets local_config from parameter, if given" do
82
- stub_file("/tmp/crazyfunkytown.file", Hash.new)
80
+ stub_file("/tmp/crazyfunkytown.file", {})
83
81
  loader = Kitchen::Loader::YAML.new(
84
- :local_config => "/tmp/crazyfunkytown.file")
82
+ local_config: "/tmp/crazyfunkytown.file")
85
83
 
86
- loader.diagnose[:local_config][:filename].
87
- must_match %r{/tmp/crazyfunkytown.file$}
84
+ loader.diagnose[:local_config][:filename]
85
+ .must_match %r{/tmp/crazyfunkytown.file$}
88
86
  end
89
87
 
90
88
  it "sets global_config based on ENV['HOME'] by default" do
91
- stub_file(File.join(ENV["HOME"], ".kitchen/config.yml"), Hash.new)
89
+ stub_file(File.join(ENV["HOME"], ".kitchen/config.yml"), {})
92
90
  loader = Kitchen::Loader::YAML.new
93
91
 
94
92
  loader.diagnose[:global_config][:filename].must_equal File.expand_path(
@@ -96,61 +94,64 @@ describe Kitchen::Loader::YAML do
96
94
  end
97
95
 
98
96
  it "sets global_config from parameter, if given" do
99
- stub_file("/tmp/crazyfunkytown.file", Hash.new)
97
+ stub_file("/tmp/crazyfunkytown.file", {})
100
98
  loader = Kitchen::Loader::YAML.new(
101
- :global_config => "/tmp/crazyfunkytown.file")
99
+ global_config: "/tmp/crazyfunkytown.file")
102
100
 
103
- loader.diagnose[:global_config][:filename].
104
- must_match %r{/tmp/crazyfunkytown.file$}
101
+ loader.diagnose[:global_config][:filename]
102
+ .must_match %r{/tmp/crazyfunkytown.file$}
105
103
  end
106
104
  end
107
105
 
108
106
  describe "#read" do
109
-
110
107
  it "returns a hash of kitchen.yml with symbolized keys" do
111
108
  stub_yaml!(
112
109
  "foo" => "bar"
113
110
  )
114
111
 
115
- loader.read.must_equal(:foo => "bar")
112
+ loader.read.must_equal(foo: "bar")
116
113
  end
117
114
 
118
115
  it "deep merges in kitchen.local.yml configuration with kitchen.yml" do
119
- stub_yaml!(".kitchen.yml",
120
- "common" => { "xx" => 1 },
121
- "a" => "b"
122
- )
123
- stub_yaml!(".kitchen.local.yml",
124
- "common" => { "yy" => 2 },
125
- "c" => "d"
126
- )
116
+ stub_yaml!("common" => { "xx" => 1 },
117
+ "a" => "b"
118
+ )
119
+ stub_yaml!(
120
+ {
121
+ "common" => { "yy" => 2 },
122
+ "c" => "d",
123
+ },
124
+ ".kitchen.local.yml"
125
+ )
127
126
 
128
127
  loader.read.must_equal(
129
- :a => "b",
130
- :c => "d",
131
- :common => { :xx => 1, :yy => 2 }
128
+ a: "b",
129
+ c: "d",
130
+ common: { xx: 1, yy: 2 }
132
131
  )
133
132
  end
134
133
 
135
134
  it "deep merges in a global config file with all other configs" do
136
- stub_yaml!(".kitchen.yml",
137
- "common" => { "xx" => 1 },
138
- "a" => "b"
139
- )
140
- stub_yaml!(".kitchen.local.yml",
141
- "common" => { "yy" => 2 },
142
- "c" => "d"
143
- )
135
+ stub_yaml!("common" => { "xx" => 1 },
136
+ "a" => "b"
137
+ )
138
+ stub_yaml!(
139
+ {
140
+ "common" => { "yy" => 2 },
141
+ "c" => "d",
142
+ },
143
+ ".kitchen.local.yml"
144
+ )
144
145
  stub_global!(
145
146
  "common" => { "zz" => 3 },
146
147
  "e" => "f"
147
148
  )
148
149
 
149
150
  loader.read.must_equal(
150
- :a => "b",
151
- :c => "d",
152
- :e => "f",
153
- :common => { :xx => 1, :yy => 2, :zz => 3 }
151
+ a: "b",
152
+ c: "d",
153
+ e: "f",
154
+ common: { xx: 1, yy: 2, zz: 3 }
154
155
  )
155
156
  end
156
157
 
@@ -158,55 +159,48 @@ describe Kitchen::Loader::YAML do
158
159
  stub_global!(
159
160
  "common" => { "thekey" => "nope" }
160
161
  )
161
- stub_yaml!(".kitchen.yml",
162
- "common" => { "thekey" => "yep" }
163
- )
162
+ stub_yaml!("common" => { "thekey" => "yep" })
164
163
 
165
- loader.read.must_equal(:common => { :thekey => "yep" })
164
+ loader.read.must_equal(common: { thekey: "yep" })
166
165
  end
167
166
 
168
167
  it "merges kitchen.local.yml over configuration in kitchen.yml" do
169
- stub_yaml!(".kitchen.yml",
170
- "common" => { "thekey" => "nope" }
171
- )
172
- stub_yaml!(".kitchen.local.yml",
173
- "common" => { "thekey" => "yep" }
174
- )
168
+ stub_yaml!("common" => { "thekey" => "nope" })
169
+ stub_yaml!(
170
+ { "common" => { "thekey" => "yep" } },
171
+ ".kitchen.local.yml"
172
+ )
175
173
 
176
- loader.read.must_equal(:common => { :thekey => "yep" })
174
+ loader.read.must_equal(common: { thekey: "yep" })
177
175
  end
178
176
 
179
177
  it "merges kitchen.local.yml over both kitchen.yml and global config" do
180
- stub_yaml!(".kitchen.yml",
181
- "common" => { "thekey" => "nope" }
182
- )
183
- stub_yaml!(".kitchen.local.yml",
184
- "common" => { "thekey" => "yep" }
185
- )
178
+ stub_yaml!("common" => { "thekey" => "nope" })
179
+ stub_yaml!(
180
+ { "common" => { "thekey" => "yep" } },
181
+ ".kitchen.local.yml"
182
+ )
186
183
  stub_global!(
187
184
  "common" => { "thekey" => "kinda" }
188
185
  )
189
186
 
190
- loader.read.must_equal(:common => { :thekey => "yep" })
187
+ loader.read.must_equal(common: { thekey: "yep" })
191
188
  end
192
189
 
193
190
  NORMALIZED_KEYS = {
194
191
  "driver" => "name",
195
192
  "provisioner" => "name",
196
- "busser" => "version"
197
- }
193
+ "busser" => "version",
194
+ }.freeze
198
195
 
199
196
  NORMALIZED_KEYS.each do |key, default_key|
200
-
201
197
  describe "normalizing #{key} config hashes" do
202
-
203
198
  it "merges local with #{key} string value over yaml with hash value" do
204
- stub_yaml!(".kitchen.yml",
205
- key => { "dakey" => "ya" }
206
- )
207
- stub_yaml!(".kitchen.local.yml",
208
- key => "namey"
209
- )
199
+ stub_yaml!(key => { "dakey" => "ya" })
200
+ stub_yaml!(
201
+ { key => "namey" },
202
+ ".kitchen.local.yml"
203
+ )
210
204
 
211
205
  loader.read.must_equal(
212
206
  key.to_sym => { default_key.to_sym => "namey", :dakey => "ya" }
@@ -214,12 +208,11 @@ describe Kitchen::Loader::YAML do
214
208
  end
215
209
 
216
210
  it "merges local with #{key} hash value over yaml with string value" do
217
- stub_yaml!(".kitchen.yml",
218
- key => "namey"
219
- )
220
- stub_yaml!(".kitchen.local.yml",
221
- key => { "dakey" => "ya" }
222
- )
211
+ stub_yaml!(key => "namey")
212
+ stub_yaml!(
213
+ { key => { "dakey" => "ya" } },
214
+ ".kitchen.local.yml"
215
+ )
223
216
 
224
217
  loader.read.must_equal(
225
218
  key.to_sym => { default_key.to_sym => "namey", :dakey => "ya" }
@@ -227,25 +220,23 @@ describe Kitchen::Loader::YAML do
227
220
  end
228
221
 
229
222
  it "merges local with #{key} nil value over yaml with hash value" do
230
- stub_yaml!(".kitchen.yml",
231
- key => { "dakey" => "ya" }
232
- )
233
- stub_yaml!(".kitchen.local.yml",
234
- key => nil
235
- )
223
+ stub_yaml!(key => { "dakey" => "ya" })
224
+ stub_yaml!(
225
+ { key => nil },
226
+ ".kitchen.local.yml"
227
+ )
236
228
 
237
229
  loader.read.must_equal(
238
- key.to_sym => { :dakey => "ya" }
230
+ key.to_sym => { dakey: "ya" }
239
231
  )
240
232
  end
241
233
 
242
234
  it "merges local with #{key} hash value over yaml with nil value" do
243
- stub_yaml!(".kitchen.yml",
244
- key => "namey"
245
- )
246
- stub_yaml!(".kitchen.local.yml",
247
- key => nil
248
- )
235
+ stub_yaml!(key => "namey")
236
+ stub_yaml!(
237
+ { key => nil },
238
+ ".kitchen.local.yml"
239
+ )
249
240
 
250
241
  loader.read.must_equal(
251
242
  key.to_sym => { default_key.to_sym => "namey" }
@@ -253,9 +244,7 @@ describe Kitchen::Loader::YAML do
253
244
  end
254
245
 
255
246
  it "merges global with #{key} string value over yaml with hash value" do
256
- stub_yaml!(".kitchen.yml",
257
- key => { "dakey" => "ya" }
258
- )
247
+ stub_yaml!(key => { "dakey" => "ya" })
259
248
  stub_global!(
260
249
  key => "namey"
261
250
  )
@@ -266,9 +255,7 @@ describe Kitchen::Loader::YAML do
266
255
  end
267
256
 
268
257
  it "merges global with #{key} hash value over yaml with string value" do
269
- stub_yaml!(".kitchen.yml",
270
- key => "namey"
271
- )
258
+ stub_yaml!(key => "namey")
272
259
  stub_global!(
273
260
  key => { "dakey" => "ya" }
274
261
  )
@@ -279,38 +266,33 @@ describe Kitchen::Loader::YAML do
279
266
  end
280
267
 
281
268
  it "merges global with #{key} nil value over yaml with hash value" do
282
- stub_yaml!(".kitchen.yml",
283
- key => { "dakey" => "ya" }
284
- )
269
+ stub_yaml!(key => { "dakey" => "ya" })
285
270
  stub_global!(
286
271
  key => nil
287
272
  )
288
273
 
289
274
  loader.read.must_equal(
290
- key.to_sym => { :dakey => "ya" }
275
+ key.to_sym => { dakey: "ya" }
291
276
  )
292
277
  end
293
278
 
294
279
  it "merges global with #{key} hash value over yaml with nil value" do
295
- stub_yaml!(".kitchen.yml",
296
- key => nil
297
- )
280
+ stub_yaml!(key => nil)
298
281
  stub_global!(
299
282
  key => { "dakey" => "ya" }
300
283
  )
301
284
 
302
285
  loader.read.must_equal(
303
- key.to_sym => { :dakey => "ya" }
286
+ key.to_sym => { dakey: "ya" }
304
287
  )
305
288
  end
306
289
 
307
290
  it "merges global, local, over yaml with mixed hash, string, nil values" do
308
- stub_yaml!(".kitchen.yml",
309
- key => nil
310
- )
311
- stub_yaml!(".kitchen.local.yml",
312
- key => "namey"
313
- )
291
+ stub_yaml!(key => nil)
292
+ stub_yaml!(
293
+ { key => "namey" },
294
+ ".kitchen.local.yml"
295
+ )
314
296
  stub_global!(
315
297
  key => { "dakey" => "ya" }
316
298
  )
@@ -323,30 +305,30 @@ describe Kitchen::Loader::YAML do
323
305
  end
324
306
 
325
307
  it "handles a kitchen.local.yml with no yaml elements" do
326
- stub_yaml!(".kitchen.yml",
327
- "a" => "b"
328
- )
329
- stub_yaml!(".kitchen.local.yml", Hash.new)
308
+ stub_yaml!("a" => "b")
309
+ stub_yaml!({}, ".kitchen.local.yml")
330
310
 
331
- loader.read.must_equal(:a => "b")
311
+ loader.read.must_equal(a: "b")
332
312
  end
333
313
 
334
314
  it "handles a kitchen.yml with no yaml elements" do
335
- stub_yaml!(".kitchen.yml", Hash.new)
336
- stub_yaml!(".kitchen.local.yml",
337
- "a" => "b"
315
+ stub_yaml!({})
316
+ stub_yaml!(
317
+ { "a" => "b" },
318
+ ".kitchen.local.yml"
338
319
  )
339
320
 
340
- loader.read.must_equal(:a => "b")
321
+ loader.read.must_equal(a: "b")
341
322
  end
342
323
 
343
324
  it "handles a kitchen.yml with yaml elements that parse as nil" do
344
- stub_yaml!(".kitchen.yml", nil)
345
- stub_yaml!(".kitchen.local.yml",
346
- "a" => "b"
325
+ stub_yaml!(nil)
326
+ stub_yaml!(
327
+ { "a" => "b" },
328
+ ".kitchen.local.yml"
347
329
  )
348
330
 
349
- loader.read.must_equal(:a => "b")
331
+ loader.read.must_equal(a: "b")
350
332
  end
351
333
 
352
334
  it "raises an UserError if the config_file does not exist" do
@@ -364,7 +346,7 @@ describe Kitchen::Loader::YAML do
364
346
 
365
347
  loader.read.class.wont_equal Yamled
366
348
  loader.read.class.must_equal Hash
367
- loader.read.must_equal(:foo => "bar")
349
+ loader.read.must_equal(foo: "bar")
368
350
  end
369
351
 
370
352
  it "arbitrary objects aren't deserialized in kitchen.local.yml" do
@@ -375,11 +357,11 @@ describe Kitchen::Loader::YAML do
375
357
  wakka: boop
376
358
  YAML
377
359
  end
378
- stub_yaml!(".kitchen.yml", Hash.new)
360
+ stub_yaml!({})
379
361
 
380
362
  loader.read.class.wont_equal Yamled
381
363
  loader.read.class.must_equal Hash
382
- loader.read.must_equal(:wakka => "boop")
364
+ loader.read.must_equal(wakka: "boop")
383
365
  end
384
366
 
385
367
  it "raises a UserError if kitchen.yml cannot be parsed" do
@@ -388,7 +370,7 @@ describe Kitchen::Loader::YAML do
388
370
 
389
371
  err = proc { loader.read }.must_raise Kitchen::UserError
390
372
  err.message.must_match Regexp.new(
391
- "Error parsing ([a-zA-Z]:)?\/tmp\/\.kitchen\.yml")
373
+ "Error parsing ([a-zA-Z]:)?/tmp/.kitchen.yml")
392
374
  end
393
375
 
394
376
  it "raises a UserError if kitchen.yml cannot be parsed" do
@@ -397,20 +379,20 @@ describe Kitchen::Loader::YAML do
397
379
 
398
380
  err = proc { loader.read }.must_raise Kitchen::UserError
399
381
  err.message.must_match Regexp.new(
400
- "Error parsing ([a-zA-Z]:)?\/tmp\/\.kitchen\.yml")
382
+ "Error parsing ([a-zA-Z]:)?/tmp/.kitchen.yml")
401
383
  end
402
384
 
403
385
  it "handles a kitchen.yml if it is a commented out YAML document" do
404
386
  FileUtils.mkdir_p "/tmp"
405
387
  File.open("/tmp/.kitchen.yml", "wb") { |f| f.write '#---\n' }
406
388
 
407
- loader.read.must_equal(Hash.new)
389
+ loader.read.must_equal({})
408
390
  end
409
391
 
410
392
  it "raises a UserError if kitchen.local.yml cannot be parsed" do
411
393
  FileUtils.mkdir_p "/tmp"
412
394
  File.open("/tmp/.kitchen.local.yml", "wb") { |f| f.write "&*%^*" }
413
- stub_yaml!(".kitchen.yml", Hash.new)
395
+ stub_yaml!({})
414
396
 
415
397
  proc { loader.read }.must_raise Kitchen::UserError
416
398
  end
@@ -424,7 +406,7 @@ describe Kitchen::Loader::YAML do
424
406
  YAML
425
407
  end
426
408
 
427
- loader.read.must_equal(:name => "ahhchoo")
409
+ loader.read.must_equal(name: "ahhchoo")
428
410
  end
429
411
 
430
412
  it "raises a UserError if there is an ERB processing error" do
@@ -438,7 +420,7 @@ describe Kitchen::Loader::YAML do
438
420
 
439
421
  err = proc { loader.read }.must_raise Kitchen::UserError
440
422
  err.message.must_match Regexp.new(
441
- "Error parsing ERB content in ([a-zA-Z]:)?\/tmp\/\.kitchen\.yml")
423
+ "Error parsing ERB content in ([a-zA-Z]:)?/tmp/.kitchen.yml")
442
424
  end
443
425
 
444
426
  it "evaluates kitchen.local.yml through erb before loading by default" do
@@ -451,18 +433,18 @@ describe Kitchen::Loader::YAML do
451
433
  <% end %>
452
434
  YAML
453
435
  end
454
- stub_yaml!(".kitchen.yml", "spinach" => "salad")
436
+ stub_yaml!("spinach" => "salad")
455
437
 
456
438
  loader.read.must_equal(
457
- :spinach => "salad",
458
- :noodle => "soup",
459
- :mushroom => "soup"
439
+ spinach: "salad",
440
+ noodle: "soup",
441
+ mushroom: "soup"
460
442
  )
461
443
  end
462
444
 
463
445
  it "skips evaluating kitchen.yml through erb if disabled" do
464
446
  loader = Kitchen::Loader::YAML.new(
465
- :project_config => "/tmp/.kitchen.yml", :process_erb => false)
447
+ project_config: "/tmp/.kitchen.yml", process_erb: false)
466
448
  FileUtils.mkdir_p "/tmp"
467
449
  File.open("/tmp/.kitchen.yml", "wb") do |f|
468
450
  f.write <<-'YAML'.gsub(/^ {10}/, "")
@@ -471,12 +453,12 @@ describe Kitchen::Loader::YAML do
471
453
  YAML
472
454
  end
473
455
 
474
- loader.read.must_equal(:name => '<%= "AHH".downcase %>')
456
+ loader.read.must_equal(name: '<%= "AHH".downcase %>')
475
457
  end
476
458
 
477
459
  it "skips evaluating kitchen.local.yml through erb if disabled" do
478
460
  loader = Kitchen::Loader::YAML.new(
479
- :project_config => "/tmp/.kitchen.yml", :process_erb => false)
461
+ project_config: "/tmp/.kitchen.yml", process_erb: false)
480
462
  FileUtils.mkdir_p "/tmp"
481
463
  File.open("/tmp/.kitchen.local.yml", "wb") do |f|
482
464
  f.write <<-'YAML'.gsub(/^ {10}/, "")
@@ -484,98 +466,94 @@ describe Kitchen::Loader::YAML do
484
466
  name: <%= "AHH".downcase %>
485
467
  YAML
486
468
  end
487
- stub_yaml!(".kitchen.yml", Hash.new)
469
+ stub_yaml!({})
488
470
 
489
- loader.read.must_equal(:name => '<%= "AHH".downcase %>')
471
+ loader.read.must_equal(name: '<%= "AHH".downcase %>')
490
472
  end
491
473
 
492
474
  it "skips kitchen.local.yml if disabled" do
493
475
  loader = Kitchen::Loader::YAML.new(
494
- :project_config => "/tmp/.kitchen.yml", :process_local => false)
495
- stub_yaml!(".kitchen.yml",
496
- "a" => "b"
497
- )
498
- stub_yaml!(".kitchen.local.yml",
499
- "superawesomesauceadditions" => "enabled, yo"
476
+ project_config: "/tmp/.kitchen.yml", process_local: false)
477
+ stub_yaml!("a" => "b")
478
+ stub_yaml!(
479
+ { "superawesomesauceadditions" => "enabled, yo" },
480
+ ".kitchen.local.yml"
500
481
  )
501
482
 
502
- loader.read.must_equal(:a => "b")
483
+ loader.read.must_equal(a: "b")
503
484
  end
504
485
 
505
486
  it "skips the global config if disabled" do
506
487
  loader = Kitchen::Loader::YAML.new(
507
- :project_config => "/tmp/.kitchen.yml", :process_global => false)
508
- stub_yaml!(".kitchen.yml",
509
- "a" => "b"
510
- )
488
+ project_config: "/tmp/.kitchen.yml", process_global: false)
489
+ stub_yaml!("a" => "b")
511
490
  stub_global!(
512
491
  "superawesomesauceadditions" => "enabled, yo"
513
492
  )
514
493
 
515
- loader.read.must_equal(:a => "b")
494
+ loader.read.must_equal(a: "b")
516
495
  end
517
496
  end
518
497
 
519
498
  describe "#diagnose" do
520
-
521
499
  it "returns a Hash" do
522
- stub_yaml!(Hash.new)
500
+ stub_yaml!({})
523
501
 
524
502
  loader.diagnose.must_be_kind_of(Hash)
525
503
  end
526
504
 
527
505
  it "contains erb processing information when true" do
528
- stub_yaml!(Hash.new)
506
+ stub_yaml!({})
529
507
 
530
508
  loader.diagnose[:process_erb].must_equal true
531
509
  end
532
510
 
533
511
  it "contains erb processing information when false" do
534
- stub_yaml!(Hash.new)
512
+ stub_yaml!({})
535
513
  loader = Kitchen::Loader::YAML.new(
536
- :project_config => "/tmp/.kitchen.yml", :process_erb => false)
514
+ project_config: "/tmp/.kitchen.yml", process_erb: false)
537
515
 
538
516
  loader.diagnose[:process_erb].must_equal false
539
517
  end
540
518
 
541
519
  it "contains local processing information when true" do
542
- stub_yaml!(Hash.new)
520
+ stub_yaml!({})
543
521
 
544
522
  loader.diagnose[:process_local].must_equal true
545
523
  end
546
524
 
547
525
  it "contains local processing information when false" do
548
- stub_yaml!(Hash.new)
526
+ stub_yaml!({})
549
527
  loader = Kitchen::Loader::YAML.new(
550
- :project_config => "/tmp/.kitchen.yml", :process_local => false)
528
+ project_config: "/tmp/.kitchen.yml", process_local: false)
551
529
 
552
530
  loader.diagnose[:process_local].must_equal false
553
531
  end
554
532
 
555
533
  it "contains global processing information when true" do
556
- stub_yaml!(Hash.new)
534
+ stub_yaml!({})
557
535
 
558
536
  loader.diagnose[:process_global].must_equal true
559
537
  end
560
538
 
561
539
  it "contains global processing information when false" do
562
- stub_yaml!(Hash.new)
540
+ stub_yaml!({})
563
541
  loader = Kitchen::Loader::YAML.new(
564
- :project_config => "/tmp/.kitchen.yml", :process_global => false)
542
+ project_config: "/tmp/.kitchen.yml", process_global: false)
565
543
 
566
544
  loader.diagnose[:process_global].must_equal false
567
545
  end
568
546
 
569
547
  describe "for yaml files" do
570
-
571
548
  before do
572
- stub_yaml!(".kitchen.yml",
573
- "from_project" => "project",
574
- "common" => { "p" => "pretty" }
575
- )
576
- stub_yaml!(".kitchen.local.yml",
577
- "from_local" => "local",
578
- "common" => { "l" => "looky" }
549
+ stub_yaml!("from_project" => "project",
550
+ "common" => { "p" => "pretty" }
551
+ )
552
+ stub_yaml!({
553
+ "from_local" => "local",
554
+ "common" => { "l" => "looky" },
555
+ },
556
+ ".kitchen.local.yml"
579
557
  )
580
558
  stub_global!(
581
559
  "from_global" => "global",
@@ -584,8 +562,8 @@ describe Kitchen::Loader::YAML do
584
562
  end
585
563
 
586
564
  it "global config contains a filename" do
587
- loader.diagnose[:global_config][:filename].
588
- must_equal File.join(ENV["HOME"].gsub('\\', "/"), ".kitchen/config.yml")
565
+ loader.diagnose[:global_config][:filename]
566
+ .must_equal File.join(ENV["HOME"].tr('\\', "/"), ".kitchen/config.yml")
589
567
  end
590
568
 
591
569
  it "global config contains raw data" do
@@ -596,8 +574,8 @@ describe Kitchen::Loader::YAML do
596
574
  end
597
575
 
598
576
  it "project config contains a filename" do
599
- loader.diagnose[:project_config][:filename].
600
- must_match %r{/tmp/.kitchen.yml$}
577
+ loader.diagnose[:project_config][:filename]
578
+ .must_match %r{/tmp/.kitchen.yml$}
601
579
  end
602
580
 
603
581
  it "project config contains raw data" do
@@ -608,8 +586,8 @@ describe Kitchen::Loader::YAML do
608
586
  end
609
587
 
610
588
  it "local config contains a filename" do
611
- loader.diagnose[:local_config][:filename].
612
- must_match %r{/tmp/.kitchen.local.yml$}
589
+ loader.diagnose[:local_config][:filename]
590
+ .must_match %r{/tmp/.kitchen.local.yml$}
613
591
  end
614
592
 
615
593
  it "local config contains raw data" do
@@ -620,8 +598,8 @@ describe Kitchen::Loader::YAML do
620
598
  end
621
599
 
622
600
  it "combined config contains a nil filename" do
623
- loader.diagnose[:combined_config][:filename].
624
- must_equal nil
601
+ loader.diagnose[:combined_config][:filename]
602
+ .must_equal nil
625
603
  end
626
604
 
627
605
  it "combined config contains raw data" do
@@ -632,13 +610,12 @@ describe Kitchen::Loader::YAML do
632
610
  "common" => {
633
611
  "g" => "goody",
634
612
  "p" => "pretty",
635
- "l" => "looky"
613
+ "l" => "looky",
636
614
  }
637
615
  )
638
616
  end
639
617
 
640
618
  describe "for global on error" do
641
-
642
619
  before do
643
620
  FileUtils.mkdir_p(File.join(ENV["HOME"], ".kitchen"))
644
621
  File.open(File.join(ENV["HOME"], ".kitchen/config.yml"), "wb") do |f|
@@ -647,28 +624,27 @@ describe Kitchen::Loader::YAML do
647
624
  end
648
625
 
649
626
  it "uses an error hash with the raw file contents" do
650
- loader.diagnose[:global_config][:raw_data][:error][:raw_file].
651
- must_equal "&*%^*"
627
+ loader.diagnose[:global_config][:raw_data][:error][:raw_file]
628
+ .must_equal "&*%^*"
652
629
  end
653
630
 
654
631
  it "uses an error hash with the exception" do
655
- loader.diagnose[:global_config][:raw_data][:error][:exception].
656
- must_match %r{Kitchen::UserError}
632
+ loader.diagnose[:global_config][:raw_data][:error][:exception]
633
+ .must_match /Kitchen::UserError/
657
634
  end
658
635
 
659
636
  it "uses an error hash with the exception message" do
660
- loader.diagnose[:global_config][:raw_data][:error][:message].
661
- must_match %r{Error parsing}
637
+ loader.diagnose[:global_config][:raw_data][:error][:message]
638
+ .must_match /Error parsing/
662
639
  end
663
640
 
664
641
  it "uses an error hash with the exception backtrace" do
665
- loader.diagnose[:global_config][:raw_data][:error][:backtrace].
666
- must_be_kind_of Array
642
+ loader.diagnose[:global_config][:raw_data][:error][:backtrace]
643
+ .must_be_kind_of Array
667
644
  end
668
645
  end
669
646
 
670
647
  describe "for project on error" do
671
-
672
648
  before do
673
649
  File.open("/tmp/.kitchen.yml", "wb") do |f|
674
650
  f.write "&*%^*"
@@ -676,28 +652,27 @@ describe Kitchen::Loader::YAML do
676
652
  end
677
653
 
678
654
  it "uses an error hash with the raw file contents" do
679
- loader.diagnose[:project_config][:raw_data][:error][:raw_file].
680
- must_equal "&*%^*"
655
+ loader.diagnose[:project_config][:raw_data][:error][:raw_file]
656
+ .must_equal "&*%^*"
681
657
  end
682
658
 
683
659
  it "uses an error hash with the exception" do
684
- loader.diagnose[:project_config][:raw_data][:error][:exception].
685
- must_match %r{Kitchen::UserError}
660
+ loader.diagnose[:project_config][:raw_data][:error][:exception]
661
+ .must_match /Kitchen::UserError/
686
662
  end
687
663
 
688
664
  it "uses an error hash with the exception message" do
689
- loader.diagnose[:project_config][:raw_data][:error][:message].
690
- must_match %r{Error parsing}
665
+ loader.diagnose[:project_config][:raw_data][:error][:message]
666
+ .must_match /Error parsing/
691
667
  end
692
668
 
693
669
  it "uses an error hash with the exception backtrace" do
694
- loader.diagnose[:project_config][:raw_data][:error][:backtrace].
695
- must_be_kind_of Array
670
+ loader.diagnose[:project_config][:raw_data][:error][:backtrace]
671
+ .must_be_kind_of Array
696
672
  end
697
673
  end
698
674
 
699
675
  describe "for local on error" do
700
-
701
676
  before do
702
677
  File.open("/tmp/.kitchen.local.yml", "wb") do |f|
703
678
  f.write "&*%^*"
@@ -705,28 +680,27 @@ describe Kitchen::Loader::YAML do
705
680
  end
706
681
 
707
682
  it "uses an error hash with the raw file contents" do
708
- loader.diagnose[:local_config][:raw_data][:error][:raw_file].
709
- must_equal "&*%^*"
683
+ loader.diagnose[:local_config][:raw_data][:error][:raw_file]
684
+ .must_equal "&*%^*"
710
685
  end
711
686
 
712
687
  it "uses an error hash with the exception" do
713
- loader.diagnose[:local_config][:raw_data][:error][:exception].
714
- must_match %r{Kitchen::UserError}
688
+ loader.diagnose[:local_config][:raw_data][:error][:exception]
689
+ .must_match /Kitchen::UserError/
715
690
  end
716
691
 
717
692
  it "uses an error hash with the exception message" do
718
- loader.diagnose[:local_config][:raw_data][:error][:message].
719
- must_match %r{Error parsing}
693
+ loader.diagnose[:local_config][:raw_data][:error][:message]
694
+ .must_match /Error parsing/
720
695
  end
721
696
 
722
697
  it "uses an error hash with the exception backtrace" do
723
- loader.diagnose[:local_config][:raw_data][:error][:backtrace].
724
- must_be_kind_of Array
698
+ loader.diagnose[:local_config][:raw_data][:error][:backtrace]
699
+ .must_be_kind_of Array
725
700
  end
726
701
  end
727
702
 
728
703
  describe "for combined on error" do
729
-
730
704
  before do
731
705
  File.open("/tmp/.kitchen.yml", "wb") do |f|
732
706
  f.write "&*%^*"
@@ -734,23 +708,23 @@ describe Kitchen::Loader::YAML do
734
708
  end
735
709
 
736
710
  it "uses an error hash with nil raw file contents" do
737
- loader.diagnose[:combined_config][:raw_data][:error][:raw_file].
738
- must_equal nil
711
+ loader.diagnose[:combined_config][:raw_data][:error][:raw_file]
712
+ .must_equal nil
739
713
  end
740
714
 
741
715
  it "uses an error hash with the exception" do
742
- loader.diagnose[:combined_config][:raw_data][:error][:exception].
743
- must_match %r{Kitchen::UserError}
716
+ loader.diagnose[:combined_config][:raw_data][:error][:exception]
717
+ .must_match /Kitchen::UserError/
744
718
  end
745
719
 
746
720
  it "uses an error hash with the exception message" do
747
- loader.diagnose[:combined_config][:raw_data][:error][:message].
748
- must_match %r{Error parsing}
721
+ loader.diagnose[:combined_config][:raw_data][:error][:message]
722
+ .must_match /Error parsing/
749
723
  end
750
724
 
751
725
  it "uses an error hash with the exception backtrace" do
752
- loader.diagnose[:combined_config][:raw_data][:error][:backtrace].
753
- must_be_kind_of Array
726
+ loader.diagnose[:combined_config][:raw_data][:error][:backtrace]
727
+ .must_be_kind_of Array
754
728
  end
755
729
  end
756
730
  end
@@ -763,12 +737,12 @@ describe Kitchen::Loader::YAML do
763
737
  File.open(path, "wb") { |f| f.write(hash.to_yaml) }
764
738
  end
765
739
 
766
- def stub_yaml!(name = ".kitchen.yml", hash)
740
+ def stub_yaml!(hash, name = ".kitchen.yml")
767
741
  stub_file(File.join("/tmp", name), hash)
768
742
  end
769
743
 
770
744
  def stub_global!(hash)
771
745
  stub_file(File.join(File.expand_path(ENV["HOME"]),
772
- ".kitchen", "config.yml"), hash)
746
+ ".kitchen", "config.yml"), hash)
773
747
  end
774
748
  end