test-kitchen 1.23.2 → 1.23.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (173) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -0
  3. data/.gitmodules +0 -0
  4. data/.travis.yml +0 -4
  5. data/CHANGELOG.md +40 -0
  6. data/MAINTAINERS.md +2 -1
  7. data/Rakefile +9 -0
  8. data/docs/CONTRIBUTING.md +8 -0
  9. data/docs/LICENSE +22 -0
  10. data/docs/README.md +78 -0
  11. data/docs/archetypes/default.md +6 -0
  12. data/docs/config.toml +36 -0
  13. data/docs/content/docs/_index.md +5 -0
  14. data/docs/content/docs/drivers/_index.md +27 -0
  15. data/docs/content/docs/drivers/azurerm.md +44 -0
  16. data/docs/content/docs/drivers/vagrant.md +39 -0
  17. data/docs/content/docs/getting-started/00-introduction.md +14 -0
  18. data/docs/content/docs/getting-started/01-installing.md +64 -0
  19. data/docs/content/docs/getting-started/02-getting-help.md +59 -0
  20. data/docs/content/docs/getting-started/03-creating-cookbook.md +46 -0
  21. data/docs/content/docs/getting-started/04-kitchen-yml.md +56 -0
  22. data/docs/content/docs/getting-started/05-instances.md +79 -0
  23. data/docs/content/docs/getting-started/06-writing-recipe.md +21 -0
  24. data/docs/content/docs/getting-started/07-running-converge.md +134 -0
  25. data/docs/content/docs/getting-started/08-manually-verifying.md +55 -0
  26. data/docs/content/docs/getting-started/09-writing-test.md +49 -0
  27. data/docs/content/docs/getting-started/10-running-verify.md +120 -0
  28. data/docs/content/docs/getting-started/11-running-test.md +168 -0
  29. data/docs/content/docs/getting-started/12-adding-platform.md +206 -0
  30. data/docs/content/docs/getting-started/13-adding-feature.md +30 -0
  31. data/docs/content/docs/getting-started/14-adding-suite.md +60 -0
  32. data/docs/content/docs/getting-started/15-adding-test.md +66 -0
  33. data/docs/content/docs/getting-started/16-adding-recipe.md +53 -0
  34. data/docs/content/docs/getting-started/17-excluding-platforms.md +101 -0
  35. data/docs/content/docs/getting-started/18-next-steps.md +23 -0
  36. data/docs/content/docs/getting-started/_index.md +5 -0
  37. data/docs/content/docs/provisioners/_index.md +36 -0
  38. data/docs/content/docs/provisioners/chef.md +69 -0
  39. data/docs/content/docs/provisioners/shell.md +31 -0
  40. data/docs/content/docs/reference/_index.md +5 -0
  41. data/docs/content/docs/reference/configuration.md +53 -0
  42. data/docs/content/docs/reference/examples.md +97 -0
  43. data/docs/content/docs/reference/faq.md +58 -0
  44. data/docs/content/docs/reference/fixtures.md +32 -0
  45. data/docs/content/docs/reference/glossary.md +34 -0
  46. data/docs/content/docs/reference/lifecycle-hooks.md +68 -0
  47. data/docs/content/docs/reference/reboots.md +24 -0
  48. data/docs/content/docs/verifiers/_index.md +14 -0
  49. data/docs/content/docs/verifiers/inspec.md +44 -0
  50. data/docs/content/docs/verifiers/serverspec.md +20 -0
  51. data/docs/static/images/chef-logo.png +0 -0
  52. data/docs/static/images/chef-logo.svg +1 -0
  53. data/docs/static/images/github-banner.png +0 -0
  54. data/docs/static/images/github-banner.svg +71 -0
  55. data/docs/static/images/kitchen-logo.png +0 -0
  56. data/docs/static/images/logo-block.svg +222 -0
  57. data/docs/static/images/logo.png +0 -0
  58. data/docs/static/images/logos-group.png +0 -0
  59. data/docs/static/images/terminal-1.png +0 -0
  60. data/docs/static/images/terminal-1.svg +589 -0
  61. data/docs/static/images/terminal-2.png +0 -0
  62. data/docs/static/images/terminal-2.svg +235 -0
  63. data/docs/static/images/terminal-3.png +0 -0
  64. data/docs/static/images/terminal-3.svg +439 -0
  65. data/docs/static/index.html +59 -0
  66. data/docs/static/javascripts/all.js +348 -0
  67. data/docs/static/javascripts/vendor/foundation.min.js +4 -0
  68. data/docs/static/javascripts/vendor/jquery.min.js +5 -0
  69. data/docs/static/javascripts/vendor/what-input.js +336 -0
  70. data/docs/static/stylesheets/site.css +4667 -0
  71. data/docs/themes/kitchen/layouts/_default/baseof.html +53 -0
  72. data/docs/themes/kitchen/layouts/_default/list.html +4 -0
  73. data/docs/themes/kitchen/layouts/_default/redirect.html +10 -0
  74. data/docs/themes/kitchen/layouts/_default/single.html +6 -0
  75. data/docs/themes/kitchen/layouts/partials/core/head.html +6 -0
  76. data/docs/themes/kitchen/layouts/partials/kitchen/footer.html +18 -0
  77. data/docs/themes/kitchen/layouts/partials/kitchen/head.html +4 -0
  78. data/docs/themes/kitchen/layouts/partials/kitchen/header.html +26 -0
  79. data/docs/themes/kitchen/layouts/partials/search-docs.html +3 -0
  80. data/docs/themes/kitchen/layouts/partials/sidebar.html +33 -0
  81. data/docs/themes/kitchen/layouts/shortcodes/button.html +1 -0
  82. data/docs/themes/kitchen/layouts/shortcodes/codeblock.html +8 -0
  83. data/docs/themes/kitchen/layouts/shortcodes/cta.html +5 -0
  84. data/docs/themes/kitchen/layouts/shortcodes/danger.html +1 -0
  85. data/docs/themes/kitchen/layouts/shortcodes/example_fqdn.html +1 -0
  86. data/docs/themes/kitchen/layouts/shortcodes/info.html +1 -0
  87. data/docs/themes/kitchen/layouts/shortcodes/ol-styled.html +3 -0
  88. data/docs/themes/kitchen/layouts/shortcodes/success.html +1 -0
  89. data/docs/themes/kitchen/layouts/shortcodes/tip.html +1 -0
  90. data/docs/themes/kitchen/layouts/shortcodes/warning.html +1 -0
  91. data/docs/themes/kitchen/static/css/kitchen.css +10 -0
  92. data/docs/themes/kitchen/static/css/kitchen.css.map +7 -0
  93. data/docs/themes/kitchen/static/fonts/Muli-Bold.ttf +0 -0
  94. data/docs/themes/kitchen/static/fonts/Muli-Regular.ttf +0 -0
  95. data/docs/themes/kitchen/static/fonts/Muli-SemiBold.ttf +0 -0
  96. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.eot +0 -0
  97. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.svg +1104 -0
  98. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.ttf +0 -0
  99. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.woff +0 -0
  100. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.woff2 +0 -0
  101. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.eot +0 -0
  102. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.svg +372 -0
  103. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.ttf +0 -0
  104. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.woff +0 -0
  105. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.woff2 +0 -0
  106. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.eot +0 -0
  107. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.svg +1896 -0
  108. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.ttf +0 -0
  109. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.woff +0 -0
  110. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.woff2 +0 -0
  111. data/docs/themes/kitchen/static/images/chef-logo-light.svg +36 -0
  112. data/docs/themes/kitchen/static/images/chef-logo-white.svg +38 -0
  113. data/docs/themes/kitchen/static/images/chef-logo.svg +37 -0
  114. data/docs/themes/kitchen/static/images/favicon.ico +0 -0
  115. data/docs/themes/kitchen/static/js/scripts-all.js +7 -0
  116. data/docs/themes/kitchen/static/js/source/chef-hugo.js +116 -0
  117. data/docs/themes/kitchen/static/js/source/omnitruck.js +82 -0
  118. data/docs/themes/kitchen/static/js/source/segment.js +52 -0
  119. data/docs/themes/kitchen/static/sass/_buttons.scss +161 -0
  120. data/docs/themes/kitchen/static/sass/_core.scss +24 -0
  121. data/docs/themes/kitchen/static/sass/_forms.scss +14 -0
  122. data/docs/themes/kitchen/static/sass/_mixins.scss +133 -0
  123. data/docs/themes/kitchen/static/sass/_typography.scss +34 -0
  124. data/docs/themes/kitchen/static/sass/_variables.scss +82 -0
  125. data/docs/themes/kitchen/static/sass/kitchen.scss +7 -0
  126. data/docs/themes/kitchen/static/sass/kitchen/_footer.scss +50 -0
  127. data/docs/themes/kitchen/static/sass/kitchen/_header.scss +187 -0
  128. data/docs/themes/kitchen/static/sass/kitchen/_homepage.scss +27 -0
  129. data/docs/themes/kitchen/static/sass/kitchen/_utility-bar.scss +173 -0
  130. data/docs/themes/kitchen/static/sass/partials/_alerts.scss +32 -0
  131. data/docs/themes/kitchen/static/sass/partials/_bg.scss +19 -0
  132. data/docs/themes/kitchen/static/sass/partials/_blurbs.scss +25 -0
  133. data/docs/themes/kitchen/static/sass/partials/_callout.scss +15 -0
  134. data/docs/themes/kitchen/static/sass/partials/_cards.scss +54 -0
  135. data/docs/themes/kitchen/static/sass/partials/_dropdown.scss +77 -0
  136. data/docs/themes/kitchen/static/sass/partials/_grid.scss +87 -0
  137. data/docs/themes/kitchen/static/sass/partials/_padding.scss +73 -0
  138. data/docs/themes/kitchen/static/sass/partials/_sidebar.scss +71 -0
  139. data/docs/themes/kitchen/static/sass/partials/_tabs.scss +125 -0
  140. data/docs/themes/kitchen/static/sass/typography/_chroma.scss +366 -0
  141. data/docs/themes/kitchen/static/sass/typography/_code.scss +72 -0
  142. data/docs/themes/kitchen/static/sass/typography/_headers.scss +90 -0
  143. data/docs/themes/kitchen/static/sass/typography/_links.scss +127 -0
  144. data/docs/themes/kitchen/static/sass/typography/_lists.scss +155 -0
  145. data/docs/themes/kitchen/static/sass/typography/_prose.scss +29 -0
  146. data/docs/themes/kitchen/static/sass/typography/_text.scss +221 -0
  147. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_animated.scss +20 -0
  148. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_bordered-pulled.scss +20 -0
  149. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_core.scss +16 -0
  150. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_fixed-width.scss +6 -0
  151. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_icons.scss +992 -0
  152. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_larger.scss +23 -0
  153. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_list.scss +18 -0
  154. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_mixins.scss +57 -0
  155. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_rotated-flipped.scss +23 -0
  156. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_screen-reader.scss +5 -0
  157. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_stacked.scss +31 -0
  158. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_variables.scss +1005 -0
  159. data/docs/themes/kitchen/static/sass/vendor/fontawesome/fa-brands.scss +21 -0
  160. data/docs/themes/kitchen/static/sass/vendor/fontawesome/fa-regular.scss +22 -0
  161. data/docs/themes/kitchen/static/sass/vendor/fontawesome/fa-solid.scss +23 -0
  162. data/docs/themes/kitchen/static/sass/vendor/fontawesome/fontawesome.scss +16 -0
  163. data/docs/themes/kitchen/theme.toml +8 -0
  164. data/lib/kitchen/provisioner/chef_base.rb +6 -6
  165. data/lib/kitchen/transport/ssh.rb +2 -2
  166. data/lib/kitchen/transport/winrm.rb +32 -9
  167. data/lib/kitchen/version.rb +1 -1
  168. data/spec/kitchen/data_munger_spec.rb +13 -13
  169. data/spec/kitchen/driver/exec_spec.rb +1 -1
  170. data/spec/kitchen/lifecycle_hooks_spec.rb +6 -6
  171. data/spec/kitchen/provisioner/chef_base_spec.rb +26 -26
  172. data/spec/kitchen/transport/winrm_spec.rb +46 -10
  173. metadata +160 -3
@@ -0,0 +1,21 @@
1
+ /*!
2
+ * Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com
3
+ * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4
+ */
5
+ @import 'variables';
6
+
7
+ @font-face {
8
+ font-family: 'Font Awesome 5 Brands';
9
+ font-style: normal;
10
+ font-weight: normal;
11
+ src: url('#{$fa-font-path}/fa-brands-400.eot');
12
+ src: url('#{$fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),
13
+ url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'),
14
+ url('#{$fa-font-path}/fa-brands-400.woff') format('woff'),
15
+ url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype'),
16
+ url('#{$fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');
17
+ }
18
+
19
+ .fab {
20
+ font-family: 'Font Awesome 5 Brands';
21
+ }
@@ -0,0 +1,22 @@
1
+ /*!
2
+ * Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com
3
+ * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4
+ */
5
+ @import 'variables';
6
+
7
+ @font-face {
8
+ font-family: 'Font Awesome 5 Free';
9
+ font-style: normal;
10
+ font-weight: 400;
11
+ src: url('#{$fa-font-path}/fa-regular-400.eot');
12
+ src: url('#{$fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),
13
+ url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'),
14
+ url('#{$fa-font-path}/fa-regular-400.woff') format('woff'),
15
+ url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype'),
16
+ url('#{$fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');
17
+ }
18
+
19
+ .far {
20
+ font-family: 'Font Awesome 5 Free';
21
+ font-weight: 400;
22
+ }
@@ -0,0 +1,23 @@
1
+ /*!
2
+ * Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com
3
+ * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4
+ */
5
+ @import 'variables';
6
+
7
+ @font-face {
8
+ font-family: 'Font Awesome 5 Free';
9
+ font-style: normal;
10
+ font-weight: 900;
11
+ src: url('#{$fa-font-path}/fa-solid-900.eot');
12
+ src: url('#{$fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),
13
+ url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),
14
+ url('#{$fa-font-path}/fa-solid-900.woff') format('woff'),
15
+ url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype'),
16
+ url('#{$fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');
17
+ }
18
+
19
+ .fa,
20
+ .fas {
21
+ font-family: 'Font Awesome 5 Free';
22
+ font-weight: 900;
23
+ }
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com
3
+ * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4
+ */
5
+ @import 'variables';
6
+ @import 'mixins';
7
+ @import 'core';
8
+ @import 'larger';
9
+ @import 'fixed-width';
10
+ @import 'list';
11
+ @import 'bordered-pulled';
12
+ @import 'animated';
13
+ @import 'rotated-flipped';
14
+ @import 'stacked';
15
+ @import 'icons';
16
+ @import 'screen-reader';
@@ -0,0 +1,8 @@
1
+ name = "kitchen"
2
+ license = "Apache-2"
3
+ licenselink = "https://github.com/yourname/yourtheme/blob/master/LICENSE.md"
4
+ description = "The theme used for KitchenCI"
5
+ homepage = "http://github.com/chef/chef-hugo-theme"
6
+ tags = []
7
+ features = []
8
+ min_version = "0.38"
@@ -62,7 +62,7 @@ module Kitchen
62
62
  # backend cookbook downloader on every kitchen run.
63
63
  default_config :always_update_cookbooks, false
64
64
  default_config :cookbook_files_glob, %w(
65
- README.* metadata.{json,rb}
65
+ README.* VERSION metadata.{json,rb} attributes.rb recipe.rb
66
66
  attributes/**/* definitions/**/* files/**/* libraries/**/*
67
67
  providers/**/* recipes/**/* resources/**/* templates/**/*
68
68
  ).join(",")
@@ -551,7 +551,7 @@ module Kitchen
551
551
  # @api private
552
552
  def prepare_config_rb
553
553
  data = default_config_rb.merge(config[config_filename.tr(".", "_").to_sym])
554
- data = data.merge(:named_run_list => config[:named_run_list]) if config[:named_run_list]
554
+ data = data.merge(named_run_list: config[:named_run_list]) if config[:named_run_list]
555
555
 
556
556
  info("Preparing #{config_filename}")
557
557
  debug("Creating #{config_filename} from #{data.inspect}")
@@ -615,16 +615,16 @@ module Kitchen
615
615
  # @api private
616
616
  def chef_cmds(base_cmd)
617
617
  cmd = prefix_command(wrap_shell_code(
618
- [base_cmd, *chef_args(config_filename), last_exit_code].join(" ").
619
- tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
618
+ [base_cmd, *chef_args(config_filename), last_exit_code].join(" ")
619
+ .tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
620
620
  ))
621
621
 
622
622
  cmds = [cmd].cycle(config[:multiple_converge].to_i).to_a
623
623
 
624
624
  if config[:enforce_idempotency]
625
625
  idempotent_cmd = prefix_command(wrap_shell_code(
626
- [base_cmd, *chef_args("client_no_updated_resources.rb"), last_exit_code].join(" ").
627
- tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
626
+ [base_cmd, *chef_args("client_no_updated_resources.rb"), last_exit_code].join(" ")
627
+ .tap { |str| str.insert(0, reload_ps1_path) if windows_os? }
628
628
  ))
629
629
  cmds[-1] = idempotent_cmd
630
630
  end
@@ -314,7 +314,7 @@ module Kitchen
314
314
  # @api private
315
315
  def establish_connection_via_gateway(opts)
316
316
  retry_connection(opts) do
317
- gateway_options = options.merge(:port => ssh_gateway_port)
317
+ gateway_options = options.merge(port: ssh_gateway_port)
318
318
  Net::SSH::Gateway.new(ssh_gateway,
319
319
  ssh_gateway_username, gateway_options).ssh(hostname, username, options)
320
320
  end
@@ -337,7 +337,7 @@ module Kitchen
337
337
  end
338
338
  end
339
339
 
340
- # Connecto to a host executing passed block and properly handling retreis.
340
+ # Connect to a host executing passed block and properly handling retries.
341
341
  #
342
342
  # @param opts [Hash] retry options
343
343
  # @option opts [Integer] :retries the number of times to retry before
@@ -20,8 +20,8 @@
20
20
 
21
21
  require "rbconfig"
22
22
  require "uri"
23
-
24
23
  require "kitchen"
24
+ require "winrm"
25
25
 
26
26
  module Kitchen
27
27
  module Transport
@@ -46,6 +46,8 @@ module Kitchen
46
46
  default_config :rdp_port, 3389
47
47
  default_config :connection_retries, 5
48
48
  default_config :connection_retry_sleep, 1
49
+ default_config :operation_timeout, 60
50
+ default_config :receive_timeout, 70
49
51
  default_config :max_wait_until_ready, 600
50
52
  default_config :winrm_transport, :negotiate
51
53
  default_config :scheme do |transport|
@@ -160,12 +162,25 @@ module Kitchen
160
162
  retry_delay: delay
161
163
  )
162
164
  execute(PING_COMMAND.dup)
165
+ rescue *RESCUE_EXCEPTIONS_ON_ESTABLISH => e
166
+ retries ||= connection_retries.to_i
167
+ raise e if (retries -= 1) < 0
168
+ logger.debug("[WinRM] PING_COMMAND failed. Retrying...")
169
+ logger.debug("#{e.class}::#{e.message}")
170
+ sleep(connection_retry_sleep.to_i)
171
+ retry
163
172
  end
164
173
 
165
174
  private
166
175
 
167
176
  PING_COMMAND = "Write-Host '[WinRM] Established\n'".freeze
168
177
 
178
+ RESCUE_EXCEPTIONS_ON_ESTABLISH = [
179
+ Errno::EACCES, Errno::EALREADY, Errno::EADDRINUSE, Errno::ECONNREFUSED, Errno::ETIMEDOUT,
180
+ Errno::ECONNRESET, Errno::ENETUNREACH, Errno::EHOSTUNREACH, Errno::EPIPE,
181
+ OpenSSL::SSL::SSLError, WinRM::WinRMHTTPTransportError
182
+ ].freeze
183
+
169
184
  # @return [Integer] how many times to retry when failing to execute
170
185
  # a command or transfer files
171
186
  # @api private
@@ -237,10 +252,14 @@ module Kitchen
237
252
  session = unelevated_session
238
253
  end
239
254
 
240
- response = session.run(command) do |stdout, _|
241
- logger << stdout if stdout
255
+ begin
256
+ response = session.run(command) do |stdout, _|
257
+ logger << stdout if stdout
258
+ end
259
+ [response.exitcode, response.stderr]
260
+ ensure
261
+ close
242
262
  end
243
- [response.exitcode, response.stderr]
244
263
  end
245
264
 
246
265
  def unelevated_temp_dir
@@ -256,13 +275,15 @@ module Kitchen
256
275
  # (see Base#init_options)
257
276
  def init_options(options)
258
277
  super
259
- @instance_name = @options.delete(:instance_name)
260
- @kitchen_root = @options.delete(:kitchen_root)
261
- @rdp_port = @options.delete(:rdp_port)
278
+ @instance_name = @options.delete(:instance_name)
279
+ @kitchen_root = @options.delete(:kitchen_root)
280
+ @rdp_port = @options.delete(:rdp_port)
262
281
  @connection_retries = @options.delete(:connection_retries)
263
282
  @connection_retry_sleep = @options.delete(:connection_retry_sleep)
264
- @max_wait_until_ready = @options.delete(:max_wait_until_ready)
265
- @elevated = @options.delete(:elevated)
283
+ @operation_timeout = @options.delete(:operation_timeout)
284
+ @receive_timeout = @options.delete(:receive_timeout)
285
+ @max_wait_until_ready = @options.delete(:max_wait_until_ready)
286
+ @elevated = @options.delete(:elevated)
266
287
  end
267
288
 
268
289
  # Logs formatted standard error output at the warning level.
@@ -407,6 +428,8 @@ module Kitchen
407
428
  rdp_port: data[:rdp_port],
408
429
  connection_retries: data[:connection_retries],
409
430
  connection_retry_sleep: data[:connection_retry_sleep],
431
+ operation_timeout: data[:operation_timeout],
432
+ receive_timeout: data[:receive_timeout],
410
433
  max_wait_until_ready: data[:max_wait_until_ready],
411
434
  transport: data[:winrm_transport],
412
435
  elevated: data[:elevated],
@@ -17,5 +17,5 @@
17
17
  # limitations under the License.
18
18
 
19
19
  module Kitchen
20
- VERSION = "1.23.2".freeze
20
+ VERSION = "1.23.3".freeze
21
21
  end
@@ -2695,7 +2695,7 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
2695
2695
  DataMunger.new(
2696
2696
  {
2697
2697
  lifecycle: {
2698
- pre_create: "echo foo"
2698
+ pre_create: "echo foo",
2699
2699
  },
2700
2700
  platforms: [{ name: "plat" }],
2701
2701
  suites: [{ name: "sweet" }],
@@ -2730,19 +2730,19 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
2730
2730
  {
2731
2731
  lifecycle: {
2732
2732
  pre_create: "echo foo",
2733
- post_create: "echo post"
2733
+ post_create: "echo post",
2734
2734
  },
2735
2735
  platforms: [{
2736
2736
  name: "plat",
2737
2737
  lifecycle: {
2738
- pre_create: "echo bar"
2739
- }
2738
+ pre_create: "echo bar",
2739
+ },
2740
2740
  }],
2741
2741
  suites: [{
2742
2742
  name: "sweet",
2743
2743
  lifecycle: {
2744
- pre_create: "echo baz"
2745
- }
2744
+ pre_create: "echo baz",
2745
+ },
2746
2746
  }],
2747
2747
  },
2748
2748
  {}
@@ -2756,10 +2756,10 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
2756
2756
  DataMunger.new(
2757
2757
  {
2758
2758
  driver: {
2759
- pre_create_command: "echo bar"
2759
+ pre_create_command: "echo bar",
2760
2760
  },
2761
2761
  lifecycle: {
2762
- pre_create: "echo foo"
2762
+ pre_create: "echo foo",
2763
2763
  },
2764
2764
  platforms: [{ name: "plat" }],
2765
2765
  suites: [{ name: "sweet" }],
@@ -2774,19 +2774,19 @@ module Kitchen # rubocop:disable Metrics/ModuleLength
2774
2774
  DataMunger.new(
2775
2775
  {
2776
2776
  lifecycle: {
2777
- pre_create: "echo foo"
2777
+ pre_create: "echo foo",
2778
2778
  },
2779
2779
  platforms: [{
2780
2780
  name: "plat",
2781
2781
  driver: {
2782
- pre_create_command: "echo bar"
2783
- }
2782
+ pre_create_command: "echo bar",
2783
+ },
2784
2784
  }],
2785
2785
  suites: [{
2786
2786
  name: "sweet",
2787
2787
  driver: {
2788
- pre_create_command: "echo baz"
2789
- }
2788
+ pre_create_command: "echo baz",
2789
+ },
2790
2790
  }],
2791
2791
  },
2792
2792
  {}
@@ -26,7 +26,7 @@ describe Kitchen::Driver::Exec do
26
26
  end
27
27
 
28
28
  let(:instance) do
29
- stub(name: "coolbeans", logger: logger, to_str: "instance", :"transport=" => nil)
29
+ stub(name: "coolbeans", logger: logger, to_str: "instance", "transport=": nil)
30
30
  end
31
31
 
32
32
  let(:driver) do
@@ -44,8 +44,8 @@ describe Kitchen::LifecycleHooks do
44
44
  "KITCHEN_SUITE_NAME" => "default",
45
45
  "KITCHEN_PLATFORM_NAME" => "toaster-1.0",
46
46
  "KITCHEN_INSTANCE_HOSTNAME" => "localhost",
47
- }
48
- }
47
+ },
48
+ }.freeze
49
49
 
50
50
  it "runs a single local command" do
51
51
  config.update(post_create: ["echo foo"])
@@ -77,7 +77,7 @@ describe Kitchen::LifecycleHooks do
77
77
  "KITCHEN_SUITE_NAME" => "default",
78
78
  "KITCHEN_PLATFORM_NAME" => "toaster-1.0",
79
79
  "KITCHEN_INSTANCE_HOSTNAME" => "localhost",
80
- }
80
+ },
81
81
  })
82
82
  run_lifecycle_hooks
83
83
  end
@@ -93,7 +93,7 @@ describe Kitchen::LifecycleHooks do
93
93
  "KITCHEN_SUITE_NAME" => "default",
94
94
  "KITCHEN_PLATFORM_NAME" => "toaster-1.0",
95
95
  "KITCHEN_INSTANCE_HOSTNAME" => "localhost",
96
- }
96
+ },
97
97
  })
98
98
  run_lifecycle_hooks
99
99
  end
@@ -107,7 +107,7 @@ describe Kitchen::LifecycleHooks do
107
107
  "KITCHEN_SUITE_NAME" => "default",
108
108
  "KITCHEN_PLATFORM_NAME" => "toaster-1.0",
109
109
  "KITCHEN_INSTANCE_HOSTNAME" => "localhost",
110
- }
110
+ },
111
111
  })
112
112
  run_lifecycle_hooks
113
113
  end
@@ -121,7 +121,7 @@ describe Kitchen::LifecycleHooks do
121
121
  "KITCHEN_SUITE_NAME" => "default",
122
122
  "KITCHEN_PLATFORM_NAME" => "toaster-1.0",
123
123
  "KITCHEN_INSTANCE_HOSTNAME" => "localhost",
124
- }
124
+ },
125
125
  })
126
126
  run_lifecycle_hooks
127
127
  end
@@ -103,8 +103,8 @@ describe Kitchen::Provisioner::ChefBase do
103
103
  provisioner[:log_file].must_be_nil
104
104
  end
105
105
 
106
- it ":cookbook_files_glob includes recipes" do
107
- provisioner[:cookbook_files_glob].must_match %r{,recipes/}
106
+ it ":cookbook_files_glob includes a metadata file" do
107
+ provisioner[:cookbook_files_glob].must_match %r{,metadata.\{json,rb\}}
108
108
  end
109
109
 
110
110
  it ":data_path uses calculate_path and is expanded" do
@@ -1077,17 +1077,17 @@ describe Kitchen::Provisioner::ChefBase do
1077
1077
  describe "with the default name `Policyfile.rb`" do
1078
1078
  before do
1079
1079
  File.open("#{kitchen_root}/Policyfile.rb", "wb") do |file|
1080
- file.write(<<-POLICYFILE)
1081
- name 'wat'
1082
- run_list 'wat'
1083
- cookbook 'wat'
1080
+ file.write(<<~POLICYFILE)
1081
+ name 'wat'
1082
+ run_list 'wat'
1083
+ cookbook 'wat'
1084
1084
  POLICYFILE
1085
1085
  end
1086
1086
  File.open("#{kitchen_root}/Policyfile.lock.json", "wb") do |file|
1087
- file.write(<<-POLICYFILE)
1088
- {
1089
- "name": "wat"
1090
- }
1087
+ file.write(<<~POLICYFILE)
1088
+ {
1089
+ "name": "wat"
1090
+ }
1091
1091
  POLICYFILE
1092
1092
  end
1093
1093
  Kitchen::Provisioner::Chef::Policyfile.stubs(:new).returns(resolver)
@@ -1172,17 +1172,17 @@ POLICYFILE
1172
1172
 
1173
1173
  before do
1174
1174
  File.open(policyfile_path, "wb") do |file|
1175
- file.write(<<-POLICYFILE)
1176
- name 'wat'
1177
- run_list 'wat'
1178
- cookbook 'wat'
1175
+ file.write(<<~POLICYFILE)
1176
+ name 'wat'
1177
+ run_list 'wat'
1178
+ cookbook 'wat'
1179
1179
  POLICYFILE
1180
1180
  end
1181
1181
  File.open(policyfile_lock_path, "wb") do |file|
1182
- file.write(<<-POLICYFILE)
1183
- {
1184
- "name": "wat"
1185
- }
1182
+ file.write(<<~POLICYFILE)
1183
+ {
1184
+ "name": "wat"
1185
+ }
1186
1186
  POLICYFILE
1187
1187
  end
1188
1188
  end
@@ -1251,17 +1251,17 @@ POLICYFILE
1251
1251
 
1252
1252
  before do
1253
1253
  File.open(policyfile_path, "wb") do |file|
1254
- file.write(<<-POLICYFILE)
1255
- name 'wat'
1256
- run_list 'wat'
1257
- cookbook 'wat'
1254
+ file.write(<<~POLICYFILE)
1255
+ name 'wat'
1256
+ run_list 'wat'
1257
+ cookbook 'wat'
1258
1258
  POLICYFILE
1259
1259
  end
1260
1260
  File.open(policyfile_lock_path, "wb") do |file|
1261
- file.write(<<-POLICYFILE)
1262
- {
1263
- "name": "wat"
1264
- }
1261
+ file.write(<<~POLICYFILE)
1262
+ {
1263
+ "name": "wat"
1264
+ }
1265
1265
  POLICYFILE
1266
1266
  end
1267
1267
  end