test-kitchen 1.23.3 → 1.23.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (254) hide show
  1. checksums.yaml +4 -4
  2. data/lib/kitchen/version.rb +1 -1
  3. data/support/chef-client-zero.rb +1 -1
  4. metadata +5 -324
  5. data/.gitattributes +0 -3
  6. data/.github/ISSUE_TEMPLATE.md +0 -56
  7. data/.github/lock.yml +0 -1
  8. data/.gitignore +0 -38
  9. data/.gitmodules +0 -0
  10. data/.kitchen.appveyor.yml +0 -25
  11. data/.kitchen.dokken.yml +0 -31
  12. data/.kitchen.proxy.yml +0 -27
  13. data/.rubocop.yml +0 -5
  14. data/.travis.yml +0 -57
  15. data/.yardopts +0 -3
  16. data/Berksfile +0 -3
  17. data/CHANGELOG.md +0 -1510
  18. data/CONTRIBUTING.md +0 -14
  19. data/ECOSYSTEM.md +0 -93
  20. data/Gemfile +0 -40
  21. data/Gemfile.proxy_tests +0 -4
  22. data/Guardfile +0 -42
  23. data/MAINTAINERS.md +0 -29
  24. data/README.md +0 -138
  25. data/RELEASE_NOTES.md +0 -167
  26. data/Rakefile +0 -77
  27. data/appveyor.yml +0 -47
  28. data/docs/CONTRIBUTING.md +0 -8
  29. data/docs/LICENSE +0 -22
  30. data/docs/README.md +0 -78
  31. data/docs/archetypes/default.md +0 -6
  32. data/docs/config.toml +0 -36
  33. data/docs/content/docs/_index.md +0 -5
  34. data/docs/content/docs/drivers/_index.md +0 -27
  35. data/docs/content/docs/drivers/azurerm.md +0 -44
  36. data/docs/content/docs/drivers/vagrant.md +0 -39
  37. data/docs/content/docs/getting-started/00-introduction.md +0 -14
  38. data/docs/content/docs/getting-started/01-installing.md +0 -64
  39. data/docs/content/docs/getting-started/02-getting-help.md +0 -59
  40. data/docs/content/docs/getting-started/03-creating-cookbook.md +0 -46
  41. data/docs/content/docs/getting-started/04-kitchen-yml.md +0 -56
  42. data/docs/content/docs/getting-started/05-instances.md +0 -79
  43. data/docs/content/docs/getting-started/06-writing-recipe.md +0 -21
  44. data/docs/content/docs/getting-started/07-running-converge.md +0 -134
  45. data/docs/content/docs/getting-started/08-manually-verifying.md +0 -55
  46. data/docs/content/docs/getting-started/09-writing-test.md +0 -49
  47. data/docs/content/docs/getting-started/10-running-verify.md +0 -120
  48. data/docs/content/docs/getting-started/11-running-test.md +0 -168
  49. data/docs/content/docs/getting-started/12-adding-platform.md +0 -206
  50. data/docs/content/docs/getting-started/13-adding-feature.md +0 -30
  51. data/docs/content/docs/getting-started/14-adding-suite.md +0 -60
  52. data/docs/content/docs/getting-started/15-adding-test.md +0 -66
  53. data/docs/content/docs/getting-started/16-adding-recipe.md +0 -53
  54. data/docs/content/docs/getting-started/17-excluding-platforms.md +0 -101
  55. data/docs/content/docs/getting-started/18-next-steps.md +0 -23
  56. data/docs/content/docs/getting-started/_index.md +0 -5
  57. data/docs/content/docs/provisioners/_index.md +0 -36
  58. data/docs/content/docs/provisioners/chef.md +0 -69
  59. data/docs/content/docs/provisioners/shell.md +0 -31
  60. data/docs/content/docs/reference/_index.md +0 -5
  61. data/docs/content/docs/reference/configuration.md +0 -53
  62. data/docs/content/docs/reference/examples.md +0 -97
  63. data/docs/content/docs/reference/faq.md +0 -58
  64. data/docs/content/docs/reference/fixtures.md +0 -32
  65. data/docs/content/docs/reference/glossary.md +0 -34
  66. data/docs/content/docs/reference/lifecycle-hooks.md +0 -68
  67. data/docs/content/docs/reference/reboots.md +0 -24
  68. data/docs/content/docs/verifiers/_index.md +0 -14
  69. data/docs/content/docs/verifiers/inspec.md +0 -44
  70. data/docs/content/docs/verifiers/serverspec.md +0 -20
  71. data/docs/static/images/chef-logo.png +0 -0
  72. data/docs/static/images/chef-logo.svg +0 -1
  73. data/docs/static/images/github-banner.png +0 -0
  74. data/docs/static/images/github-banner.svg +0 -71
  75. data/docs/static/images/kitchen-logo.png +0 -0
  76. data/docs/static/images/logo-block.svg +0 -222
  77. data/docs/static/images/logo.png +0 -0
  78. data/docs/static/images/logos-group.png +0 -0
  79. data/docs/static/images/terminal-1.png +0 -0
  80. data/docs/static/images/terminal-1.svg +0 -589
  81. data/docs/static/images/terminal-2.png +0 -0
  82. data/docs/static/images/terminal-2.svg +0 -235
  83. data/docs/static/images/terminal-3.png +0 -0
  84. data/docs/static/images/terminal-3.svg +0 -439
  85. data/docs/static/index.html +0 -59
  86. data/docs/static/javascripts/all.js +0 -348
  87. data/docs/static/javascripts/vendor/foundation.min.js +0 -4
  88. data/docs/static/javascripts/vendor/jquery.min.js +0 -5
  89. data/docs/static/javascripts/vendor/what-input.js +0 -336
  90. data/docs/static/stylesheets/site.css +0 -4667
  91. data/docs/themes/kitchen/layouts/_default/baseof.html +0 -53
  92. data/docs/themes/kitchen/layouts/_default/list.html +0 -4
  93. data/docs/themes/kitchen/layouts/_default/redirect.html +0 -10
  94. data/docs/themes/kitchen/layouts/_default/single.html +0 -6
  95. data/docs/themes/kitchen/layouts/partials/core/head.html +0 -6
  96. data/docs/themes/kitchen/layouts/partials/kitchen/footer.html +0 -18
  97. data/docs/themes/kitchen/layouts/partials/kitchen/head.html +0 -4
  98. data/docs/themes/kitchen/layouts/partials/kitchen/header.html +0 -26
  99. data/docs/themes/kitchen/layouts/partials/search-docs.html +0 -3
  100. data/docs/themes/kitchen/layouts/partials/sidebar.html +0 -33
  101. data/docs/themes/kitchen/layouts/shortcodes/button.html +0 -1
  102. data/docs/themes/kitchen/layouts/shortcodes/codeblock.html +0 -8
  103. data/docs/themes/kitchen/layouts/shortcodes/cta.html +0 -5
  104. data/docs/themes/kitchen/layouts/shortcodes/danger.html +0 -1
  105. data/docs/themes/kitchen/layouts/shortcodes/example_fqdn.html +0 -1
  106. data/docs/themes/kitchen/layouts/shortcodes/info.html +0 -1
  107. data/docs/themes/kitchen/layouts/shortcodes/ol-styled.html +0 -3
  108. data/docs/themes/kitchen/layouts/shortcodes/success.html +0 -1
  109. data/docs/themes/kitchen/layouts/shortcodes/tip.html +0 -1
  110. data/docs/themes/kitchen/layouts/shortcodes/warning.html +0 -1
  111. data/docs/themes/kitchen/static/css/kitchen.css +0 -10
  112. data/docs/themes/kitchen/static/css/kitchen.css.map +0 -7
  113. data/docs/themes/kitchen/static/fonts/Muli-Bold.ttf +0 -0
  114. data/docs/themes/kitchen/static/fonts/Muli-Regular.ttf +0 -0
  115. data/docs/themes/kitchen/static/fonts/Muli-SemiBold.ttf +0 -0
  116. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.eot +0 -0
  117. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.svg +0 -1104
  118. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.ttf +0 -0
  119. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.woff +0 -0
  120. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.woff2 +0 -0
  121. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.eot +0 -0
  122. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.svg +0 -372
  123. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.ttf +0 -0
  124. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.woff +0 -0
  125. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.woff2 +0 -0
  126. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.eot +0 -0
  127. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.svg +0 -1896
  128. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.ttf +0 -0
  129. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.woff +0 -0
  130. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.woff2 +0 -0
  131. data/docs/themes/kitchen/static/images/chef-logo-light.svg +0 -36
  132. data/docs/themes/kitchen/static/images/chef-logo-white.svg +0 -38
  133. data/docs/themes/kitchen/static/images/chef-logo.svg +0 -37
  134. data/docs/themes/kitchen/static/images/favicon.ico +0 -0
  135. data/docs/themes/kitchen/static/js/scripts-all.js +0 -7
  136. data/docs/themes/kitchen/static/js/source/chef-hugo.js +0 -116
  137. data/docs/themes/kitchen/static/js/source/omnitruck.js +0 -82
  138. data/docs/themes/kitchen/static/js/source/segment.js +0 -52
  139. data/docs/themes/kitchen/static/sass/_buttons.scss +0 -161
  140. data/docs/themes/kitchen/static/sass/_core.scss +0 -24
  141. data/docs/themes/kitchen/static/sass/_forms.scss +0 -14
  142. data/docs/themes/kitchen/static/sass/_mixins.scss +0 -133
  143. data/docs/themes/kitchen/static/sass/_typography.scss +0 -34
  144. data/docs/themes/kitchen/static/sass/_variables.scss +0 -82
  145. data/docs/themes/kitchen/static/sass/kitchen.scss +0 -7
  146. data/docs/themes/kitchen/static/sass/kitchen/_footer.scss +0 -50
  147. data/docs/themes/kitchen/static/sass/kitchen/_header.scss +0 -187
  148. data/docs/themes/kitchen/static/sass/kitchen/_homepage.scss +0 -27
  149. data/docs/themes/kitchen/static/sass/kitchen/_utility-bar.scss +0 -173
  150. data/docs/themes/kitchen/static/sass/partials/_alerts.scss +0 -32
  151. data/docs/themes/kitchen/static/sass/partials/_bg.scss +0 -19
  152. data/docs/themes/kitchen/static/sass/partials/_blurbs.scss +0 -25
  153. data/docs/themes/kitchen/static/sass/partials/_callout.scss +0 -15
  154. data/docs/themes/kitchen/static/sass/partials/_cards.scss +0 -54
  155. data/docs/themes/kitchen/static/sass/partials/_dropdown.scss +0 -77
  156. data/docs/themes/kitchen/static/sass/partials/_grid.scss +0 -87
  157. data/docs/themes/kitchen/static/sass/partials/_padding.scss +0 -73
  158. data/docs/themes/kitchen/static/sass/partials/_sidebar.scss +0 -71
  159. data/docs/themes/kitchen/static/sass/partials/_tabs.scss +0 -125
  160. data/docs/themes/kitchen/static/sass/typography/_chroma.scss +0 -366
  161. data/docs/themes/kitchen/static/sass/typography/_code.scss +0 -72
  162. data/docs/themes/kitchen/static/sass/typography/_headers.scss +0 -90
  163. data/docs/themes/kitchen/static/sass/typography/_links.scss +0 -127
  164. data/docs/themes/kitchen/static/sass/typography/_lists.scss +0 -155
  165. data/docs/themes/kitchen/static/sass/typography/_prose.scss +0 -29
  166. data/docs/themes/kitchen/static/sass/typography/_text.scss +0 -221
  167. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_animated.scss +0 -20
  168. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_bordered-pulled.scss +0 -20
  169. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_core.scss +0 -16
  170. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_fixed-width.scss +0 -6
  171. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_icons.scss +0 -992
  172. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_larger.scss +0 -23
  173. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_list.scss +0 -18
  174. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_mixins.scss +0 -57
  175. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_rotated-flipped.scss +0 -23
  176. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_screen-reader.scss +0 -5
  177. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_stacked.scss +0 -31
  178. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_variables.scss +0 -1005
  179. data/docs/themes/kitchen/static/sass/vendor/fontawesome/fa-brands.scss +0 -21
  180. data/docs/themes/kitchen/static/sass/vendor/fontawesome/fa-regular.scss +0 -22
  181. data/docs/themes/kitchen/static/sass/vendor/fontawesome/fa-solid.scss +0 -23
  182. data/docs/themes/kitchen/static/sass/vendor/fontawesome/fontawesome.scss +0 -16
  183. data/docs/themes/kitchen/theme.toml +0 -8
  184. data/features/kitchen_action_commands.feature +0 -164
  185. data/features/kitchen_command.feature +0 -16
  186. data/features/kitchen_console_command.feature +0 -35
  187. data/features/kitchen_defaults.feature +0 -38
  188. data/features/kitchen_diagnose_command.feature +0 -96
  189. data/features/kitchen_help_command.feature +0 -16
  190. data/features/kitchen_init_command.feature +0 -254
  191. data/features/kitchen_list_command.feature +0 -140
  192. data/features/kitchen_login_command.feature +0 -62
  193. data/features/kitchen_sink_command.feature +0 -30
  194. data/features/kitchen_test_command.feature +0 -88
  195. data/features/step_definitions/gem_steps.rb +0 -24
  196. data/features/step_definitions/git_steps.rb +0 -5
  197. data/features/step_definitions/output_steps.rb +0 -5
  198. data/features/support/env.rb +0 -74
  199. data/spec/kitchen/base64_stream_spec.rb +0 -74
  200. data/spec/kitchen/cli_spec.rb +0 -54
  201. data/spec/kitchen/collection_spec.rb +0 -76
  202. data/spec/kitchen/color_spec.rb +0 -51
  203. data/spec/kitchen/config_spec.rb +0 -434
  204. data/spec/kitchen/configurable_spec.rb +0 -1113
  205. data/spec/kitchen/data_munger_spec.rb +0 -2800
  206. data/spec/kitchen/diagnostic_spec.rb +0 -128
  207. data/spec/kitchen/driver/base_spec.rb +0 -132
  208. data/spec/kitchen/driver/dummy_spec.rb +0 -193
  209. data/spec/kitchen/driver/exec_spec.rb +0 -75
  210. data/spec/kitchen/driver/proxy_spec.rb +0 -127
  211. data/spec/kitchen/driver/ssh_base_spec.rb +0 -1136
  212. data/spec/kitchen/driver_spec.rb +0 -106
  213. data/spec/kitchen/errors_spec.rb +0 -317
  214. data/spec/kitchen/instance_spec.rb +0 -1372
  215. data/spec/kitchen/lazy_hash_spec.rb +0 -113
  216. data/spec/kitchen/lifecycle_hooks_spec.rb +0 -171
  217. data/spec/kitchen/loader/yaml_spec.rb +0 -787
  218. data/spec/kitchen/logger_spec.rb +0 -425
  219. data/spec/kitchen/logging_spec.rb +0 -56
  220. data/spec/kitchen/login_command_spec.rb +0 -67
  221. data/spec/kitchen/metadata_chopper_spec.rb +0 -79
  222. data/spec/kitchen/platform_spec.rb +0 -88
  223. data/spec/kitchen/provisioner/base_spec.rb +0 -393
  224. data/spec/kitchen/provisioner/chef/policyfile_spec.rb +0 -140
  225. data/spec/kitchen/provisioner/chef_apply_spec.rb +0 -131
  226. data/spec/kitchen/provisioner/chef_base_spec.rb +0 -1565
  227. data/spec/kitchen/provisioner/chef_solo_spec.rb +0 -602
  228. data/spec/kitchen/provisioner/chef_zero_spec.rb +0 -1013
  229. data/spec/kitchen/provisioner/dummy_spec.rb +0 -96
  230. data/spec/kitchen/provisioner/shell_spec.rb +0 -623
  231. data/spec/kitchen/provisioner_spec.rb +0 -101
  232. data/spec/kitchen/shell_out_spec.rb +0 -146
  233. data/spec/kitchen/ssh_spec.rb +0 -584
  234. data/spec/kitchen/state_file_spec.rb +0 -122
  235. data/spec/kitchen/suite_spec.rb +0 -61
  236. data/spec/kitchen/transport/base_spec.rb +0 -140
  237. data/spec/kitchen/transport/exec_spec.rb +0 -79
  238. data/spec/kitchen/transport/ssh_spec.rb +0 -1317
  239. data/spec/kitchen/transport/winrm_spec.rb +0 -1320
  240. data/spec/kitchen/transport_spec.rb +0 -106
  241. data/spec/kitchen/util_spec.rb +0 -250
  242. data/spec/kitchen/verifier/base_spec.rb +0 -346
  243. data/spec/kitchen/verifier/busser_spec.rb +0 -580
  244. data/spec/kitchen/verifier/dummy_spec.rb +0 -96
  245. data/spec/kitchen/verifier/shell_spec.rb +0 -157
  246. data/spec/kitchen/verifier_spec.rb +0 -114
  247. data/spec/kitchen_spec.rb +0 -112
  248. data/spec/spec_helper.rb +0 -110
  249. data/spec/support/powershell_max_size_spec.rb +0 -39
  250. data/test-kitchen.gemspec +0 -49
  251. data/test/cookbooks/test_cookbook/metadata.rb +0 -6
  252. data/test/cookbooks/test_cookbook/recipes/default.rb +0 -1
  253. data/test/integration/default/default_spec.rb +0 -3
  254. data/testing_windows.md +0 -38
@@ -1,602 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- #
3
- # Author:: Fletcher Nichol (<fnichol@nichol.ca>)
4
- #
5
- # Copyright (C) 2014, Fletcher Nichol
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
-
19
- require_relative "../../spec_helper"
20
-
21
- require "kitchen"
22
- require "kitchen/provisioner/chef_solo"
23
-
24
- describe Kitchen::Provisioner::ChefSolo do
25
- let(:logged_output) { StringIO.new }
26
- let(:logger) { Logger.new(logged_output) }
27
- let(:platform) { stub(os_type: nil) }
28
- let(:suite) { stub(name: "fries") }
29
-
30
- let(:config) do
31
- { test_base_path: "/b", kitchen_root: "/r" }
32
- end
33
-
34
- let(:instance) do
35
- stub(
36
- name: "coolbeans",
37
- logger: logger,
38
- suite: suite,
39
- platform: platform
40
- )
41
- end
42
-
43
- let(:provisioner) do
44
- Kitchen::Provisioner::ChefSolo.new(config).finalize_config!(instance)
45
- end
46
-
47
- it "provisioner api_version is 2" do
48
- provisioner.diagnose_plugin[:api_version].must_equal 2
49
- end
50
-
51
- it "plugin_version is set to Kitchen::VERSION" do
52
- provisioner.diagnose_plugin[:version].must_equal Kitchen::VERSION
53
- end
54
-
55
- describe "default config" do
56
- describe "for unix operating systems" do
57
- before { platform.stubs(:os_type).returns("unix") }
58
-
59
- it "sets :chef_solo_path to a path using :chef_omnibus_root" do
60
- config[:chef_omnibus_root] = "/nice/place"
61
-
62
- provisioner[:chef_solo_path].must_equal "/nice/place/bin/chef-solo"
63
- end
64
- end
65
-
66
- describe "for windows operating systems" do
67
- before { platform.stubs(:os_type).returns("windows") }
68
-
69
- it "sets :chef_solo_path to a path using :chef_omnibus_root" do
70
- config[:chef_omnibus_root] = '$env:systemdrive\\nice\\place'
71
-
72
- provisioner[:chef_solo_path]
73
- .must_equal '$env:systemdrive\\nice\\place\\bin\\chef-solo.bat'
74
- end
75
- end
76
-
77
- it "sets :solo_rb to an empty Hash" do
78
- provisioner[:solo_rb].must_equal Hash.new
79
- end
80
- end
81
-
82
- describe "#create_sandbox" do
83
- before do
84
- @root = Dir.mktmpdir
85
- config[:kitchen_root] = @root
86
- end
87
-
88
- after do
89
- FileUtils.remove_entry(@root)
90
- begin
91
- provisioner.cleanup_sandbox
92
- rescue # rubocop:disable Lint/HandleExceptions
93
- end
94
- end
95
-
96
- describe "solo.rb file" do
97
- let(:file) do
98
- IO.read(sandbox_path("solo.rb")).lines.map(&:chomp)
99
- end
100
-
101
- let(:file_no_updated_resources) do
102
- IO.read(sandbox_path("client_no_updated_resources.rb")).lines.map(&:chomp)
103
- end
104
-
105
- it "creates a solo.rb" do
106
- provisioner.create_sandbox
107
-
108
- sandbox_path("solo.rb").file?.must_equal true
109
- end
110
-
111
- it "logs a message on info" do
112
- provisioner.create_sandbox
113
-
114
- logged_output.string.must_match info_line("Preparing solo.rb")
115
- end
116
-
117
- it "logs a message on debug" do
118
- provisioner.create_sandbox
119
-
120
- logged_output.string
121
- .must_match debug_line_starting_with("Creating solo.rb from {")
122
- end
123
-
124
- describe "defaults" do
125
- # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
126
- def self.common_solo_rb_specs
127
- it "sets node_name to the instance name" do
128
- file.must_include %{node_name "#{instance.name}"}
129
- end
130
-
131
- it "sets checksum_path" do
132
- file.must_include %{checksum_path "#{base}checksums"}
133
- end
134
-
135
- it "sets file_backup_path" do
136
- file.must_include %{file_backup_path "#{base}backup"}
137
- end
138
-
139
- it "sets cookbook_path" do
140
- file.must_include %{cookbook_path } +
141
- %{["#{base}cookbooks", "#{base}site-cookbooks"]}
142
- end
143
-
144
- it "sets data_bag_path" do
145
- file.must_include %{data_bag_path "#{base}data_bags"}
146
- end
147
-
148
- it "sets environment_path" do
149
- file.must_include %{environment_path "#{base}environments"}
150
- end
151
-
152
- it "sets node_path" do
153
- file.must_include %{node_path "#{base}nodes"}
154
- end
155
-
156
- it "sets role_path" do
157
- file.must_include %{role_path "#{base}roles"}
158
- end
159
-
160
- it "sets client_path" do
161
- file.must_include %{client_path "#{base}clients"}
162
- end
163
-
164
- it "sets user_path" do
165
- file.must_include %{user_path "#{base}users"}
166
- end
167
-
168
- it "sets validation_key" do
169
- file.must_include %{validation_key "#{base}validation.pem"}
170
- end
171
-
172
- it "sets client_key" do
173
- file.must_include %{client_key "#{base}client.pem"}
174
- end
175
-
176
- it "sets chef_server_url" do
177
- file.must_include %{chef_server_url "http://127.0.0.1:8889"}
178
- end
179
-
180
- it "sets encrypted_data_bag_secret" do
181
- file.must_include %{encrypted_data_bag_secret } +
182
- %{"#{base}encrypted_data_bag_secret"}
183
- end
184
- end
185
- # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
186
-
187
- describe "for unix os types" do
188
- before do
189
- platform.stubs(:os_type).returns("unix")
190
- provisioner.create_sandbox
191
- end
192
-
193
- let(:base) { "/tmp/kitchen/" }
194
-
195
- common_solo_rb_specs
196
- end
197
-
198
- describe "for windows os types with full path" do
199
- before do
200
- platform.stubs(:os_type).returns("windows")
201
- config[:root_path] = '\\a\\b'
202
- provisioner.create_sandbox
203
- end
204
-
205
- let(:base) { '\\\\a\\\\b\\\\' }
206
-
207
- common_solo_rb_specs
208
- end
209
-
210
- describe "for windows os types with $env:TEMP prefixed paths" do
211
- before do
212
- platform.stubs(:os_type).returns("windows")
213
- config[:root_path] = '$env:TEMP\\a'
214
- provisioner.create_sandbox
215
- end
216
-
217
- let(:base) { "\#{ENV['TEMP']}\\\\a\\\\" }
218
-
219
- common_solo_rb_specs
220
- end
221
- end
222
-
223
- it "supports overwriting defaults" do
224
- config[:solo_rb] = {
225
- node_name: "eagles",
226
- user_path: "/a/b/c/u",
227
- client_key: "lol",
228
- }
229
- provisioner.create_sandbox
230
-
231
- file.must_include %{node_name "eagles"}
232
- file.must_include %{user_path "/a/b/c/u"}
233
- file.must_include %{client_key "lol"}
234
- end
235
-
236
- it "supports adding new configuration" do
237
- config[:solo_rb] = {
238
- dark_secret: "golang",
239
- }
240
- provisioner.create_sandbox
241
-
242
- file.must_include %{dark_secret "golang"}
243
- end
244
-
245
- it "formats array values correctly" do
246
- config[:solo_rb] = {
247
- foos: %w{foo1 foo2},
248
- }
249
- provisioner.create_sandbox
250
-
251
- file.must_include %{foos ["foo1", "foo2"]}
252
- end
253
-
254
- it "formats integer values correctly" do
255
- config[:solo_rb] = {
256
- foo: 7,
257
- }
258
- provisioner.create_sandbox
259
-
260
- file.must_include %{foo 7}
261
- end
262
-
263
- it "formats symbol-looking string values correctly" do
264
- config[:solo_rb] = {
265
- foo: ":bar",
266
- }
267
- provisioner.create_sandbox
268
-
269
- file.must_include %{foo :bar}
270
- end
271
-
272
- it "formats boolean values correctly" do
273
- config[:solo_rb] = {
274
- foo: false,
275
- bar: true,
276
- }
277
- provisioner.create_sandbox
278
-
279
- file.must_include %{foo false}
280
- file.must_include %{bar true}
281
- end
282
-
283
- it "supports idempotency check " do
284
- config[:multiple_converge] = 2
285
- config[:enforce_idempotency] = true
286
- provisioner.create_sandbox
287
-
288
- file_no_updated_resources.join.must_match(/handler_file =.*chef-client-fail-if-update-handler.rb/)
289
- end
290
- end
291
-
292
- def sandbox_path(path)
293
- Pathname.new(provisioner.sandbox_path).join(path)
294
- end
295
- end
296
-
297
- describe "#run_command" do
298
- let(:cmd) { provisioner.run_command }
299
-
300
- describe "common behavior" do
301
- before { platform.stubs(:shell_type).returns("fake") }
302
-
303
- it "prefixs the whole command with the command_prefix if set" do
304
- config[:command_prefix] = "my_prefix"
305
-
306
- cmd.must_match(/\Amy_prefix /)
307
- end
308
-
309
- it "does not prefix the command if command_prefix is not set" do
310
- config[:command_prefix] = nil
311
-
312
- cmd.wont_match(/\Amy_prefix /)
313
- end
314
- end
315
-
316
- describe "for bourne shells" do
317
- before { platform.stubs(:shell_type).returns("bourne") }
318
-
319
- it "uses bourne shell" do
320
- cmd.must_match(/\Ash -c '$/)
321
- cmd.must_match(/'\Z/)
322
- end
323
-
324
- it "ends with a single quote" do
325
- cmd.must_match(/'\Z/)
326
- end
327
-
328
- it "contains a standard second run if multiple_converge is set to 2" do
329
- config[:multiple_converge] = 2
330
- cmd.must_match(/chef-solo.*&&.*chef-solo.*/m)
331
- cmd.wont_match(/chef-solo.*&&.*chef-solo.*client_no_updated_resources.rb/m)
332
- end
333
-
334
- it "contains a specific second run if enforce_idempotency is set" do
335
- config[:multiple_converge] = 2
336
- config[:enforce_idempotency] = true
337
- cmd.must_match(/chef-solo.*&&.*chef-solo.*client_no_updated_resources.rb/m)
338
- end
339
-
340
- it "exports http_proxy & HTTP_PROXY when :http_proxy is set" do
341
- config[:http_proxy] = "http://proxy"
342
-
343
- cmd.lines.to_a[1..2].must_equal([
344
- %{http_proxy="http://proxy"; export http_proxy\n},
345
- %{HTTP_PROXY="http://proxy"; export HTTP_PROXY\n},
346
- ])
347
- end
348
-
349
- it "exports https_proxy & HTTPS_PROXY when :https_proxy is set" do
350
- config[:https_proxy] = "https://proxy"
351
-
352
- cmd.lines.to_a[1..2].must_equal([
353
- %{https_proxy="https://proxy"; export https_proxy\n},
354
- %{HTTPS_PROXY="https://proxy"; export HTTPS_PROXY\n},
355
- ])
356
- end
357
-
358
- it "exports all http proxy variables when both are set" do
359
- config[:http_proxy] = "http://proxy"
360
- config[:https_proxy] = "https://proxy"
361
-
362
- cmd.lines.to_a[1..4].must_equal([
363
- %{http_proxy="http://proxy"; export http_proxy\n},
364
- %{HTTP_PROXY="http://proxy"; export HTTP_PROXY\n},
365
- %{https_proxy="https://proxy"; export https_proxy\n},
366
- %{HTTPS_PROXY="https://proxy"; export HTTPS_PROXY\n},
367
- ])
368
- end
369
-
370
- it "does no powershell PATH reloading for older chef packages" do
371
- cmd.wont_match regexify(%{[System.Environment]::})
372
- end
373
-
374
- it "uses sudo for chef-solo when configured" do
375
- config[:chef_omnibus_root] = "/c"
376
- config[:sudo] = true
377
-
378
- cmd.must_match regexify("sudo -E /c/bin/chef-solo ", :partial_line)
379
- end
380
-
381
- it "does not use sudo for chef-solo when configured" do
382
- config[:chef_omnibus_root] = "/c"
383
- config[:sudo] = false
384
-
385
- cmd.must_match regexify("chef-solo ", :partial_line)
386
- cmd.wont_match regexify("sudo -E /c/bin/chef-solo ", :partial_line)
387
- end
388
-
389
- it "sets config flag on chef-solo" do
390
- cmd.must_match regexify(" --config /tmp/kitchen/solo.rb", :partial_line)
391
- end
392
-
393
- it "sets config flag for custom root_path" do
394
- config[:root_path] = "/a/b"
395
-
396
- cmd.must_match regexify(" --config /a/b/solo.rb", :partial_line)
397
- end
398
-
399
- it "sets json attributes flag on chef-solo" do
400
- cmd.must_match regexify(
401
- " --json-attributes /tmp/kitchen/dna.json", :partial_line)
402
- end
403
-
404
- it "sets json attribtes flag for custom root_path" do
405
- config[:root_path] = "/booyah"
406
-
407
- cmd.must_match regexify(
408
- " --json-attributes /booyah/dna.json", :partial_line)
409
- end
410
-
411
- it "sets log level flag on chef-solo to auto by default" do
412
- cmd.must_match regexify(" --log_level auto", :partial_line)
413
- end
414
-
415
- it "sets log level flag on chef-solo to info by default if running Chef < 11" do
416
- config[:require_chef_omnibus] = "10.34.6"
417
- cmd.must_match regexify(" --log_level info", :partial_line)
418
- end
419
-
420
- it "set log level flag for custom level" do
421
- config[:log_level] = :extreme
422
-
423
- cmd.must_match regexify(" --log_level extreme", :partial_line)
424
- end
425
-
426
- it "sets force formatter flag on chef-solo" do
427
- cmd.must_match regexify(" --force-formatter", :partial_line)
428
- end
429
-
430
- it "does not set force formatter flag on chef-solo if running Chef < 11" do
431
- config[:require_chef_omnibus] = "10.34.6"
432
- cmd.wont_match regexify(" --force-formatter", :partial_line)
433
- end
434
-
435
- it "sets no color flag on chef-solo" do
436
- cmd.must_match regexify(" --no-color", :partial_line)
437
- end
438
-
439
- it "does not set logfile flag by default" do
440
- cmd.wont_match regexify(" --logfile ", :partial_line)
441
- end
442
-
443
- it "sets logfile flag for custom value" do
444
- config[:log_file] = "/a/out.log"
445
-
446
- cmd.must_match regexify(" --logfile /a/out.log", :partial_line)
447
- end
448
-
449
- it "sets profile-ruby flag when config element is set" do
450
- config[:profile_ruby] = true
451
-
452
- cmd.must_match regexify(
453
- " --profile-ruby", :partial_line)
454
- end
455
-
456
- it "does not set profile-ruby flag when config element is falsey" do
457
- config[:profile_ruby] = false
458
-
459
- cmd.wont_match regexify(" --profile-ruby", :partial_line)
460
- end
461
-
462
- it "sets legacy-mode flag when config element is set" do
463
- config[:legacy_mode] = true
464
-
465
- cmd.must_match regexify(" --legacy-mode", :partial_line)
466
- end
467
-
468
- it "does not set legacy-mode flag when config element is falsey" do
469
- config[:legacy_mode] = false
470
-
471
- cmd.wont_match regexify(" --legacy-mode", :partial_line)
472
- end
473
- end
474
-
475
- describe "for powershell shells on windows os types" do
476
- before do
477
- platform.stubs(:shell_type).returns("powershell")
478
- platform.stubs(:os_type).returns("windows")
479
- end
480
-
481
- it "contains a standard second run if multiple_converge is set to 2" do
482
- config[:multiple_converge] = 2
483
- cmd.must_match(/chef-solo.*;.*chef-solo.*/m)
484
- cmd.wont_match(/chef-solo.*;.*chef-solo.*client_no_updated_resources.rb/m)
485
- end
486
-
487
- it "contains a specific second run if enforce_idempotency is set" do
488
- config[:multiple_converge] = 2
489
- config[:enforce_idempotency] = true
490
- cmd.must_match(/chef-solo.*;.*chef-solo.*client_no_updated_resources.rb/m)
491
- end
492
-
493
- it "exports http_proxy & HTTP_PROXY when :http_proxy is set" do
494
- config[:http_proxy] = "http://proxy"
495
-
496
- cmd.lines.to_a[0..1].must_equal([
497
- %{$env:http_proxy = "http://proxy"\n},
498
- %{$env:HTTP_PROXY = "http://proxy"\n},
499
- ])
500
- end
501
-
502
- it "exports https_proxy & HTTPS_PROXY when :https_proxy is set" do
503
- config[:https_proxy] = "https://proxy"
504
-
505
- cmd.lines.to_a[0..1].must_equal([
506
- %{$env:https_proxy = "https://proxy"\n},
507
- %{$env:HTTPS_PROXY = "https://proxy"\n},
508
- ])
509
- end
510
-
511
- it "exports all http proxy variables when both are set" do
512
- config[:http_proxy] = "http://proxy"
513
- config[:https_proxy] = "https://proxy"
514
-
515
- cmd.lines.to_a[0..3].must_equal([
516
- %{$env:http_proxy = "http://proxy"\n},
517
- %{$env:HTTP_PROXY = "http://proxy"\n},
518
- %{$env:https_proxy = "https://proxy"\n},
519
- %{$env:HTTPS_PROXY = "https://proxy"\n},
520
- ])
521
- end
522
-
523
- it "reloads PATH for older chef packages" do
524
- cmd.must_match regexify("$env:PATH = try {\n" \
525
- "[System.Environment]::GetEnvironmentVariable('PATH','Machine')\n" \
526
- "} catch { $env:PATH }")
527
- end
528
-
529
- it "calls the chef-solo command from :chef_solo_path" do
530
- config[:chef_solo_path] = '\\r\\chef-solo.bat'
531
-
532
- cmd.must_match regexify('& \\r\\chef-solo.bat ', :partial_line)
533
- end
534
-
535
- it "sets config flag on chef-solo" do
536
- cmd.must_match regexify(
537
- ' --config $env:TEMP\\kitchen\\solo.rb', :partial_line)
538
- end
539
-
540
- it "sets config flag for custom root_path" do
541
- config[:root_path] = '\\a\\b'
542
-
543
- cmd.must_match regexify(
544
- ' --config \\a\\b\\solo.rb', :partial_line)
545
- end
546
-
547
- it "sets json attributes flag on chef-solo" do
548
- cmd.must_match regexify(
549
- ' --json-attributes $env:TEMP\\kitchen\\dna.json', :partial_line)
550
- end
551
-
552
- it "sets json attribtes flag for custom root_path" do
553
- config[:root_path] = '\\booyah'
554
-
555
- cmd.must_match regexify(
556
- ' --json-attributes \\booyah\\dna.json', :partial_line)
557
- end
558
-
559
- it "sets log level flag on chef-solo to auto by default" do
560
- cmd.must_match regexify(" --log_level auto", :partial_line)
561
- end
562
-
563
- it "set log level flag for custom level" do
564
- config[:log_level] = :extreme
565
-
566
- cmd.must_match regexify(" --log_level extreme", :partial_line)
567
- end
568
-
569
- it "sets force formatter flag on chef-solo" do
570
- cmd.must_match regexify(" --force-formatter", :partial_line)
571
- end
572
-
573
- it "sets no color flag on chef-solo" do
574
- cmd.must_match regexify(" --no-color", :partial_line)
575
- end
576
-
577
- it "does not set logfile flag by default" do
578
- cmd.wont_match regexify(" --logfile ", :partial_line)
579
- end
580
-
581
- it "sets logfile flag for custom value" do
582
- config[:log_file] = '\\a\\out.log'
583
-
584
- cmd.must_match regexify(' --logfile \\a\\out.log', :partial_line)
585
- end
586
- end
587
- end
588
-
589
- def info_line(msg)
590
- /^I, .* : #{Regexp.escape(msg)}$/
591
- end
592
-
593
- def debug_line_starting_with(msg)
594
- /^D, .* : #{Regexp.escape(msg)}/
595
- end
596
-
597
- def regexify(str, line = :whole_line)
598
- r = Regexp.escape(str)
599
- r = "^\s*#{r}$" if line == :whole_line
600
- Regexp.new(r)
601
- end
602
- end