test-kitchen 1.6.0 → 1.7.0

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 (180) hide show
  1. checksums.yaml +4 -4
  2. data/.cane +8 -7
  3. data/.github/ISSUE_TEMPLATE.md +56 -0
  4. data/.gitignore +28 -27
  5. data/.kitchen.ci.yml +23 -0
  6. data/.kitchen.proxy.yml +27 -0
  7. data/.rubocop.yml +3 -3
  8. data/.travis.yml +70 -53
  9. data/.yardopts +3 -3
  10. data/Berksfile +3 -0
  11. data/CHANGELOG.md +1083 -1051
  12. data/CONTRIBUTING.md +14 -14
  13. data/Gemfile +19 -14
  14. data/Gemfile.proxy_tests +4 -5
  15. data/Guardfile +42 -42
  16. data/LICENSE +15 -15
  17. data/MAINTAINERS.md +23 -24
  18. data/README.md +135 -135
  19. data/Rakefile +61 -76
  20. data/appveyor.yml +44 -34
  21. data/features/kitchen_action_commands.feature +164 -164
  22. data/features/kitchen_command.feature +16 -16
  23. data/features/kitchen_console_command.feature +34 -34
  24. data/features/kitchen_defaults.feature +38 -38
  25. data/features/kitchen_diagnose_command.feature +96 -96
  26. data/features/kitchen_driver_create_command.feature +64 -64
  27. data/features/kitchen_driver_discover_command.feature +25 -25
  28. data/features/kitchen_help_command.feature +16 -16
  29. data/features/kitchen_init_command.feature +274 -274
  30. data/features/kitchen_list_command.feature +104 -104
  31. data/features/kitchen_login_command.feature +62 -62
  32. data/features/kitchen_sink_command.feature +30 -30
  33. data/features/kitchen_test_command.feature +88 -88
  34. data/features/step_definitions/gem_steps.rb +36 -36
  35. data/features/step_definitions/git_steps.rb +5 -5
  36. data/features/step_definitions/output_steps.rb +5 -5
  37. data/features/support/env.rb +75 -75
  38. data/lib/kitchen.rb +150 -150
  39. data/lib/kitchen/base64_stream.rb +55 -55
  40. data/lib/kitchen/cli.rb +419 -419
  41. data/lib/kitchen/collection.rb +55 -55
  42. data/lib/kitchen/color.rb +65 -65
  43. data/lib/kitchen/command.rb +185 -185
  44. data/lib/kitchen/command/action.rb +45 -45
  45. data/lib/kitchen/command/console.rb +58 -58
  46. data/lib/kitchen/command/diagnose.rb +92 -92
  47. data/lib/kitchen/command/driver_discover.rb +105 -105
  48. data/lib/kitchen/command/exec.rb +41 -41
  49. data/lib/kitchen/command/list.rb +119 -119
  50. data/lib/kitchen/command/login.rb +43 -43
  51. data/lib/kitchen/command/sink.rb +54 -54
  52. data/lib/kitchen/command/test.rb +51 -51
  53. data/lib/kitchen/config.rb +322 -322
  54. data/lib/kitchen/configurable.rb +529 -529
  55. data/lib/kitchen/data_munger.rb +959 -960
  56. data/lib/kitchen/diagnostic.rb +141 -141
  57. data/lib/kitchen/driver.rb +56 -56
  58. data/lib/kitchen/driver/base.rb +134 -134
  59. data/lib/kitchen/driver/dummy.rb +108 -108
  60. data/lib/kitchen/driver/proxy.rb +72 -72
  61. data/lib/kitchen/driver/ssh_base.rb +357 -357
  62. data/lib/kitchen/errors.rb +229 -229
  63. data/lib/kitchen/generator/driver_create.rb +177 -177
  64. data/lib/kitchen/generator/init.rb +296 -296
  65. data/lib/kitchen/instance.rb +662 -662
  66. data/lib/kitchen/lazy_hash.rb +142 -142
  67. data/lib/kitchen/loader/yaml.rb +349 -349
  68. data/lib/kitchen/logger.rb +423 -423
  69. data/lib/kitchen/logging.rb +56 -56
  70. data/lib/kitchen/login_command.rb +52 -52
  71. data/lib/kitchen/metadata_chopper.rb +52 -52
  72. data/lib/kitchen/platform.rb +67 -67
  73. data/lib/kitchen/provisioner.rb +54 -54
  74. data/lib/kitchen/provisioner/base.rb +236 -236
  75. data/lib/kitchen/provisioner/chef/berkshelf.rb +114 -114
  76. data/lib/kitchen/provisioner/chef/common_sandbox.rb +322 -322
  77. data/lib/kitchen/provisioner/chef/librarian.rb +112 -112
  78. data/lib/kitchen/provisioner/chef_apply.rb +124 -125
  79. data/lib/kitchen/provisioner/chef_base.rb +341 -294
  80. data/lib/kitchen/provisioner/chef_solo.rb +88 -89
  81. data/lib/kitchen/provisioner/chef_zero.rb +245 -245
  82. data/lib/kitchen/provisioner/dummy.rb +79 -79
  83. data/lib/kitchen/provisioner/shell.rb +138 -138
  84. data/lib/kitchen/rake_tasks.rb +63 -63
  85. data/lib/kitchen/shell_out.rb +93 -93
  86. data/lib/kitchen/ssh.rb +276 -276
  87. data/lib/kitchen/state_file.rb +120 -120
  88. data/lib/kitchen/suite.rb +51 -51
  89. data/lib/kitchen/thor_tasks.rb +66 -66
  90. data/lib/kitchen/transport.rb +54 -54
  91. data/lib/kitchen/transport/base.rb +176 -176
  92. data/lib/kitchen/transport/dummy.rb +79 -79
  93. data/lib/kitchen/transport/ssh.rb +364 -364
  94. data/lib/kitchen/transport/winrm.rb +486 -486
  95. data/lib/kitchen/util.rb +147 -147
  96. data/lib/kitchen/verifier.rb +55 -55
  97. data/lib/kitchen/verifier/base.rb +235 -235
  98. data/lib/kitchen/verifier/busser.rb +277 -277
  99. data/lib/kitchen/verifier/dummy.rb +79 -79
  100. data/lib/kitchen/verifier/shell.rb +101 -101
  101. data/lib/kitchen/version.rb +21 -21
  102. data/lib/vendor/hash_recursive_merge.rb +82 -82
  103. data/spec/kitchen/base64_stream_spec.rb +77 -77
  104. data/spec/kitchen/cli_spec.rb +56 -56
  105. data/spec/kitchen/collection_spec.rb +80 -80
  106. data/spec/kitchen/color_spec.rb +54 -54
  107. data/spec/kitchen/config_spec.rb +408 -408
  108. data/spec/kitchen/configurable_spec.rb +1095 -1062
  109. data/spec/kitchen/data_munger_spec.rb +2694 -2383
  110. data/spec/kitchen/diagnostic_spec.rb +129 -129
  111. data/spec/kitchen/driver/base_spec.rb +121 -121
  112. data/spec/kitchen/driver/dummy_spec.rb +199 -199
  113. data/spec/kitchen/driver/proxy_spec.rb +138 -138
  114. data/spec/kitchen/driver/ssh_base_spec.rb +1115 -1115
  115. data/spec/kitchen/driver_spec.rb +112 -112
  116. data/spec/kitchen/errors_spec.rb +309 -309
  117. data/spec/kitchen/instance_spec.rb +1419 -1419
  118. data/spec/kitchen/lazy_hash_spec.rb +117 -117
  119. data/spec/kitchen/loader/yaml_spec.rb +774 -774
  120. data/spec/kitchen/logger_spec.rb +429 -429
  121. data/spec/kitchen/logging_spec.rb +59 -59
  122. data/spec/kitchen/login_command_spec.rb +68 -68
  123. data/spec/kitchen/metadata_chopper_spec.rb +82 -82
  124. data/spec/kitchen/platform_spec.rb +89 -89
  125. data/spec/kitchen/provisioner/base_spec.rb +386 -386
  126. data/spec/kitchen/provisioner/chef_apply_spec.rb +136 -136
  127. data/spec/kitchen/provisioner/chef_base_spec.rb +1161 -1067
  128. data/spec/kitchen/provisioner/chef_solo_spec.rb +557 -557
  129. data/spec/kitchen/provisioner/chef_zero_spec.rb +1001 -1001
  130. data/spec/kitchen/provisioner/dummy_spec.rb +99 -99
  131. data/spec/kitchen/provisioner/shell_spec.rb +566 -566
  132. data/spec/kitchen/provisioner_spec.rb +107 -107
  133. data/spec/kitchen/shell_out_spec.rb +150 -150
  134. data/spec/kitchen/ssh_spec.rb +693 -693
  135. data/spec/kitchen/state_file_spec.rb +129 -129
  136. data/spec/kitchen/suite_spec.rb +62 -62
  137. data/spec/kitchen/transport/base_spec.rb +89 -89
  138. data/spec/kitchen/transport/ssh_spec.rb +1255 -1255
  139. data/spec/kitchen/transport/winrm_spec.rb +1143 -1143
  140. data/spec/kitchen/transport_spec.rb +112 -112
  141. data/spec/kitchen/util_spec.rb +165 -165
  142. data/spec/kitchen/verifier/base_spec.rb +362 -362
  143. data/spec/kitchen/verifier/busser_spec.rb +610 -610
  144. data/spec/kitchen/verifier/dummy_spec.rb +99 -99
  145. data/spec/kitchen/verifier/shell_spec.rb +160 -158
  146. data/spec/kitchen/verifier_spec.rb +120 -120
  147. data/spec/kitchen_spec.rb +114 -114
  148. data/spec/spec_helper.rb +85 -85
  149. data/spec/support/powershell_max_size_spec.rb +40 -40
  150. data/support/busser_install_command.ps1 +14 -14
  151. data/support/busser_install_command.sh +14 -14
  152. data/support/chef-client-zero.rb +77 -77
  153. data/support/chef_base_init_command.ps1 +18 -18
  154. data/support/chef_base_init_command.sh +2 -2
  155. data/support/chef_base_install_command.ps1 +85 -85
  156. data/support/chef_base_install_command.sh +229 -229
  157. data/support/chef_zero_prepare_command_legacy.ps1 +9 -9
  158. data/support/chef_zero_prepare_command_legacy.sh +10 -10
  159. data/support/download_helpers.sh +109 -109
  160. data/support/dummy-validation.pem +27 -27
  161. data/templates/driver/CHANGELOG.md.erb +3 -3
  162. data/templates/driver/Gemfile.erb +3 -3
  163. data/templates/driver/README.md.erb +64 -64
  164. data/templates/driver/Rakefile.erb +21 -21
  165. data/templates/driver/driver.rb.erb +23 -23
  166. data/templates/driver/gemspec.erb +29 -29
  167. data/templates/driver/gitignore.erb +17 -17
  168. data/templates/driver/license_apachev2.erb +15 -15
  169. data/templates/driver/license_lgplv3.erb +16 -16
  170. data/templates/driver/license_mit.erb +22 -22
  171. data/templates/driver/license_reserved.erb +5 -5
  172. data/templates/driver/tailor.erb +4 -4
  173. data/templates/driver/travis.yml.erb +11 -11
  174. data/templates/driver/version.rb.erb +12 -12
  175. data/templates/init/chefignore.erb +1 -1
  176. data/templates/init/kitchen.yml.erb +18 -18
  177. data/test-kitchen.gemspec +62 -62
  178. data/test/integration/default/default_spec.rb +3 -0
  179. data/testing_windows.md +37 -37
  180. metadata +23 -11
@@ -1,25 +1,25 @@
1
- Feature: Search RubyGems to discover new Test Kitchen Driver gems
2
- In order to periodically check for new/updated Kitchen drivers
3
- As a Test Kitchen user
4
- I want to run a command which returns candidate Kitchen drivers
5
-
6
- @spawn
7
- Scenario: Displaying help
8
- When I run `kitchen help driver discover`
9
- Then the output should contain:
10
- """
11
- Usage:
12
- kitchen driver discover
13
- """
14
- And the exit status should be 0
15
-
16
- Scenario: Running driver discover returns live results
17
- When I run `kitchen driver discover`
18
- Then the exit status should be 0
19
- And the output should contain "kitchen-bluebox"
20
-
21
- Scenario: Running driver discover with the --chef-config-path parameter loads the chef config
22
- Given an empty file named "kitchen_client.rb"
23
- When I run `kitchen driver discover --chef-config-path=kitchen_client.rb`
24
- Then the exit status should be 0
25
- And the output should contain "kitchen-bluebox"
1
+ Feature: Search RubyGems to discover new Test Kitchen Driver gems
2
+ In order to periodically check for new/updated Kitchen drivers
3
+ As a Test Kitchen user
4
+ I want to run a command which returns candidate Kitchen drivers
5
+
6
+ @spawn
7
+ Scenario: Displaying help
8
+ When I run `kitchen help driver discover`
9
+ Then the output should contain:
10
+ """
11
+ Usage:
12
+ kitchen driver discover
13
+ """
14
+ And the exit status should be 0
15
+
16
+ Scenario: Running driver discover returns live results
17
+ When I run `kitchen driver discover`
18
+ Then the exit status should be 0
19
+ And the output should contain "kitchen-bluebox"
20
+
21
+ Scenario: Running driver discover with the --chef-config-path parameter loads the chef config
22
+ Given an empty file named "kitchen_client.rb"
23
+ When I run `kitchen driver discover --chef-config-path=kitchen_client.rb`
24
+ Then the exit status should be 0
25
+ And the output should contain "kitchen-bluebox"
@@ -1,16 +1,16 @@
1
- Feature: Using Test Kitchen CLI help
2
- In order to access the self describing documentation
3
- As a user of Test Kitchen
4
- I want to run a command help help for kitchen commands
5
-
6
- @spawn
7
- Scenario: Printing help
8
- When I run `kitchen help`
9
- Then the exit status should be 0
10
- And the output should contain "kitchen help [COMMAND]"
11
-
12
- @spawn
13
- Scenario: Bad arugments should exit nonzero
14
- When I run `kitchen help -d always -c`
15
- Then the exit status should not be 0
16
- And the output should contain "Usage: "
1
+ Feature: Using Test Kitchen CLI help
2
+ In order to access the self describing documentation
3
+ As a user of Test Kitchen
4
+ I want to run a command help help for kitchen commands
5
+
6
+ @spawn
7
+ Scenario: Printing help
8
+ When I run `kitchen help`
9
+ Then the exit status should be 0
10
+ And the output should contain "kitchen help [COMMAND]"
11
+
12
+ @spawn
13
+ Scenario: Bad arugments should exit nonzero
14
+ When I run `kitchen help -d always -c`
15
+ Then the exit status should not be 0
16
+ And the output should contain "Usage: "
@@ -1,274 +1,274 @@
1
- Feature: Add Test Kitchen support to an existing project
2
- In order to add Test Kitchen to a project with minimal effort
3
- As an operator
4
- I want to run a command to initialize my project
5
-
6
- Background:
7
- Given a sandboxed GEM_HOME directory named "kitchen-init"
8
-
9
- @spawn
10
- Scenario: Displaying help
11
- When I run `kitchen help init`
12
- Then the output should contain:
13
- """
14
- Usage:
15
- kitchen init
16
- """
17
- And the exit status should be 0
18
-
19
- @spawn
20
- Scenario: Running init with default values
21
- Given I have a git repository
22
- When I run `kitchen init`
23
- Then the exit status should be 0
24
- And a directory named "test/integration/default" should exist
25
- And the file ".gitignore" should contain ".kitchen/"
26
- And the file ".gitignore" should contain ".kitchen.local.yml"
27
- And the file ".kitchen.yml" should contain:
28
- """
29
- driver:
30
- name: vagrant
31
- """
32
- And a file named "Gemfile" should not exist
33
- And a file named "Rakefile" should not exist
34
- And a file named "Thorfile" should not exist
35
- And a gem named "kitchen-vagrant" is installed
36
- And a file named "chefignore" should exist
37
- And the file "chefignore" should contain ".kitchen"
38
-
39
- Scenario: Running init that creates a Gemfile
40
- When I successfully run `kitchen init --create-gemfile`
41
- Then the file "Gemfile" should contain "https://rubygems.org"
42
- And the file "Gemfile" should contain:
43
- """
44
- gem "test-kitchen"
45
- """
46
- And the file "Gemfile" should contain:
47
- """
48
- gem "kitchen-vagrant"
49
- """
50
- And the output should contain "You must run `bundle install'"
51
-
52
- Scenario: Running init with an existing Gemfile appends to the Gemfile
53
- Given a file named "Gemfile" with:
54
- """
55
- source "https://rubygems.org"
56
-
57
-
58
- """
59
- When I successfully run `kitchen init`
60
- Then the file "Gemfile" should contain exactly:
61
- """
62
- source "https://rubygems.org"
63
-
64
- gem "test-kitchen"
65
- gem "kitchen-vagrant"
66
-
67
- """
68
- And the output should contain "You must run `bundle install'"
69
-
70
- Scenario: Running init with a Gemfile containing test-kitchen does not
71
- re-append
72
- Given a file named "Gemfile" with:
73
- """
74
- source "https://rubygems.org"
75
-
76
- gem 'test-kitchen'
77
-
78
- """
79
- When I successfully run `kitchen init`
80
- Then the file "Gemfile" should contain exactly:
81
- """
82
- source "https://rubygems.org"
83
-
84
- gem 'test-kitchen'
85
- gem "kitchen-vagrant"
86
-
87
- """
88
- And the output should contain "You must run `bundle install'"
89
-
90
- Scenario: Running init with a Gemfile containing the driver gem does not
91
- re-append
92
- Given a file named "Gemfile" with:
93
- """
94
- source "https://rubygems.org"
95
-
96
- gem 'test-kitchen'
97
- gem 'kitchen-ec2'
98
-
99
- """
100
- When I successfully run `kitchen init --driver=kitchen-ec2`
101
- Then the file "Gemfile" should contain exactly:
102
- """
103
- source "https://rubygems.org"
104
-
105
- gem 'test-kitchen'
106
- gem 'kitchen-ec2'
107
-
108
- """
109
- And the output should not contain "You must run `bundle install'"
110
-
111
- Scenario: Running init with multiple drivers appends to the Gemfile
112
- Given an empty file named "Gemfile"
113
- When I successfully run `kitchen init --driver=kitchen-bluebox kitchen-wakka`
114
- Then the file "Gemfile" should contain:
115
- """
116
- gem "kitchen-bluebox"
117
- """
118
- And the file "Gemfile" should contain:
119
- """
120
- gem "kitchen-wakka"
121
- """
122
- And the output should contain "You must run `bundle install'"
123
-
124
- Scenario: Running init with multiple driver sets the plugin_driver to the
125
- first driver given
126
- Given an empty file named "Gemfile"
127
- When I successfully run `kitchen init --driver=kitchen-bluebox kitchen-wakka`
128
- Then the file ".kitchen.yml" should contain:
129
- """
130
- driver:
131
- name: bluebox
132
- """
133
-
134
- Scenario: Running init with no drivers sets the plugin_driver to the
135
- dummy driver
136
- Given an empty file named "Gemfile"
137
- When I successfully run `kitchen init --no-driver`
138
- Then the file ".kitchen.yml" should contain:
139
- """
140
- driver:
141
- name: dummy
142
- """
143
-
144
- Scenario: Running init without a provisioner sets the default provisioner
145
- to chef_solo in .kitchen.yml
146
- Given an empty file named "Gemfile"
147
- When I successfully run `kitchen init --no-driver`
148
- Then the file ".kitchen.yml" should contain:
149
- """
150
- provisioner:
151
- name: chef_solo
152
- """
153
-
154
- Scenario: Running init with a provisioner sets the provisioner in .kitchen.yml
155
- Given an empty file named "Gemfile"
156
- When I successfully run `kitchen init --no-driver --provisioner=chef_zero`
157
- Then the file ".kitchen.yml" should contain:
158
- """
159
- provisioner:
160
- name: chef_zero
161
- """
162
-
163
- Scenario: Running with a Rakefile file appends Kitchen tasks
164
- Given an empty file named "Gemfile"
165
- And an empty file named "Rakefile"
166
- When I successfully run `kitchen init`
167
- Then the file "Rakefile" should contain:
168
- """
169
- begin
170
- require 'kitchen/rake_tasks'
171
- Kitchen::RakeTasks.new
172
- rescue LoadError
173
- puts '>>>>> Kitchen gem not loaded, omitting tasks' unless ENV['CI']
174
- end
175
- """
176
-
177
- Scenario: Running without git doesn't make a .gitignore
178
- When I successfully run `kitchen init --no-driver`
179
- Then the exit status should be 0
180
- And a file named ".gitignore" should not exist
181
-
182
- Scenario: Running with a Thorfile file appends Kitchen tasks
183
- Given an empty file named "Gemfile"
184
- Given an empty file named "Thorfile"
185
- When I successfully run `kitchen init`
186
- Then the file "Thorfile" should contain:
187
- """
188
- begin
189
- require 'kitchen/thor_tasks'
190
- Kitchen::ThorTasks.new
191
- rescue LoadError
192
- puts '>>>>> Kitchen gem not loaded, omitting tasks' unless ENV['CI']
193
- end
194
- """
195
-
196
- Scenario: Running init with a name in metadata.rb sets a run list
197
- Given an empty file named "Gemfile"
198
- Given a file named "metadata.rb" with:
199
- """
200
- name "ntp"
201
- license "Apache 2.0"
202
- description "Installs and configures ntp as a client or server"
203
- version "0.1.0"
204
-
205
- support "ubuntu"
206
- support "centos"
207
- """
208
- When I successfully run `kitchen init`
209
- Then the file ".kitchen.yml" should contain exactly:
210
- """
211
- ---
212
- driver:
213
- name: vagrant
214
-
215
- provisioner:
216
- name: chef_solo
217
-
218
- platforms:
219
- - name: ubuntu-14.04
220
- - name: centos-7.1
221
-
222
- suites:
223
- - name: default
224
- run_list:
225
- - recipe[ntp::default]
226
- attributes:
227
-
228
- """
229
-
230
- Scenario: Running init with an empty file metadata.rb sets an empty run list
231
- Given an empty file named "metadata.rb"
232
- When I successfully run `kitchen init`
233
- Then the file ".kitchen.yml" should contain exactly:
234
- """
235
- ---
236
- driver:
237
- name: vagrant
238
-
239
- provisioner:
240
- name: chef_solo
241
-
242
- platforms:
243
- - name: ubuntu-14.04
244
- - name: centos-7.1
245
-
246
- suites:
247
- - name: default
248
- run_list:
249
- attributes:
250
-
251
- """
252
-
253
- Scenario: Running init with no metadata.rb file sets an empty run list
254
- Given a file named "metadata.rb" does not exist
255
- When I successfully run `kitchen init`
256
- Then the file ".kitchen.yml" should contain exactly:
257
- """
258
- ---
259
- driver:
260
- name: vagrant
261
-
262
- provisioner:
263
- name: chef_solo
264
-
265
- platforms:
266
- - name: ubuntu-14.04
267
- - name: centos-7.1
268
-
269
- suites:
270
- - name: default
271
- run_list:
272
- attributes:
273
-
274
- """
1
+ Feature: Add Test Kitchen support to an existing project
2
+ In order to add Test Kitchen to a project with minimal effort
3
+ As an operator
4
+ I want to run a command to initialize my project
5
+
6
+ Background:
7
+ Given a sandboxed GEM_HOME directory named "kitchen-init"
8
+
9
+ @spawn
10
+ Scenario: Displaying help
11
+ When I run `kitchen help init`
12
+ Then the output should contain:
13
+ """
14
+ Usage:
15
+ kitchen init
16
+ """
17
+ And the exit status should be 0
18
+
19
+ @spawn
20
+ Scenario: Running init with default values
21
+ Given I have a git repository
22
+ When I run `kitchen init`
23
+ Then the exit status should be 0
24
+ And a directory named "test/integration/default" should exist
25
+ And the file ".gitignore" should contain ".kitchen/"
26
+ And the file ".gitignore" should contain ".kitchen.local.yml"
27
+ And the file ".kitchen.yml" should contain:
28
+ """
29
+ driver:
30
+ name: vagrant
31
+ """
32
+ And a file named "Gemfile" should not exist
33
+ And a file named "Rakefile" should not exist
34
+ And a file named "Thorfile" should not exist
35
+ And a gem named "kitchen-vagrant" is installed
36
+ And a file named "chefignore" should exist
37
+ And the file "chefignore" should contain ".kitchen"
38
+
39
+ Scenario: Running init that creates a Gemfile
40
+ When I successfully run `kitchen init --create-gemfile`
41
+ Then the file "Gemfile" should contain "https://rubygems.org"
42
+ And the file "Gemfile" should contain:
43
+ """
44
+ gem "test-kitchen"
45
+ """
46
+ And the file "Gemfile" should contain:
47
+ """
48
+ gem "kitchen-vagrant"
49
+ """
50
+ And the output should contain "You must run `bundle install'"
51
+
52
+ Scenario: Running init with an existing Gemfile appends to the Gemfile
53
+ Given a file named "Gemfile" with:
54
+ """
55
+ source "https://rubygems.org"
56
+
57
+
58
+ """
59
+ When I successfully run `kitchen init`
60
+ Then the file "Gemfile" should contain exactly:
61
+ """
62
+ source "https://rubygems.org"
63
+
64
+ gem "test-kitchen"
65
+ gem "kitchen-vagrant"
66
+
67
+ """
68
+ And the output should contain "You must run `bundle install'"
69
+
70
+ Scenario: Running init with a Gemfile containing test-kitchen does not
71
+ re-append
72
+ Given a file named "Gemfile" with:
73
+ """
74
+ source "https://rubygems.org"
75
+
76
+ gem 'test-kitchen'
77
+
78
+ """
79
+ When I successfully run `kitchen init`
80
+ Then the file "Gemfile" should contain exactly:
81
+ """
82
+ source "https://rubygems.org"
83
+
84
+ gem 'test-kitchen'
85
+ gem "kitchen-vagrant"
86
+
87
+ """
88
+ And the output should contain "You must run `bundle install'"
89
+
90
+ Scenario: Running init with a Gemfile containing the driver gem does not
91
+ re-append
92
+ Given a file named "Gemfile" with:
93
+ """
94
+ source "https://rubygems.org"
95
+
96
+ gem 'test-kitchen'
97
+ gem 'kitchen-ec2'
98
+
99
+ """
100
+ When I successfully run `kitchen init --driver=kitchen-ec2`
101
+ Then the file "Gemfile" should contain exactly:
102
+ """
103
+ source "https://rubygems.org"
104
+
105
+ gem 'test-kitchen'
106
+ gem 'kitchen-ec2'
107
+
108
+ """
109
+ And the output should not contain "You must run `bundle install'"
110
+
111
+ Scenario: Running init with multiple drivers appends to the Gemfile
112
+ Given an empty file named "Gemfile"
113
+ When I successfully run `kitchen init --driver=kitchen-bluebox kitchen-wakka`
114
+ Then the file "Gemfile" should contain:
115
+ """
116
+ gem "kitchen-bluebox"
117
+ """
118
+ And the file "Gemfile" should contain:
119
+ """
120
+ gem "kitchen-wakka"
121
+ """
122
+ And the output should contain "You must run `bundle install'"
123
+
124
+ Scenario: Running init with multiple driver sets the plugin_driver to the
125
+ first driver given
126
+ Given an empty file named "Gemfile"
127
+ When I successfully run `kitchen init --driver=kitchen-bluebox kitchen-wakka`
128
+ Then the file ".kitchen.yml" should contain:
129
+ """
130
+ driver:
131
+ name: bluebox
132
+ """
133
+
134
+ Scenario: Running init with no drivers sets the plugin_driver to the
135
+ dummy driver
136
+ Given an empty file named "Gemfile"
137
+ When I successfully run `kitchen init --no-driver`
138
+ Then the file ".kitchen.yml" should contain:
139
+ """
140
+ driver:
141
+ name: dummy
142
+ """
143
+
144
+ Scenario: Running init without a provisioner sets the default provisioner
145
+ to chef_solo in .kitchen.yml
146
+ Given an empty file named "Gemfile"
147
+ When I successfully run `kitchen init --no-driver`
148
+ Then the file ".kitchen.yml" should contain:
149
+ """
150
+ provisioner:
151
+ name: chef_solo
152
+ """
153
+
154
+ Scenario: Running init with a provisioner sets the provisioner in .kitchen.yml
155
+ Given an empty file named "Gemfile"
156
+ When I successfully run `kitchen init --no-driver --provisioner=chef_zero`
157
+ Then the file ".kitchen.yml" should contain:
158
+ """
159
+ provisioner:
160
+ name: chef_zero
161
+ """
162
+
163
+ Scenario: Running with a Rakefile file appends Kitchen tasks
164
+ Given an empty file named "Gemfile"
165
+ And an empty file named "Rakefile"
166
+ When I successfully run `kitchen init`
167
+ Then the file "Rakefile" should contain:
168
+ """
169
+ begin
170
+ require 'kitchen/rake_tasks'
171
+ Kitchen::RakeTasks.new
172
+ rescue LoadError
173
+ puts '>>>>> Kitchen gem not loaded, omitting tasks' unless ENV['CI']
174
+ end
175
+ """
176
+
177
+ Scenario: Running without git doesn't make a .gitignore
178
+ When I successfully run `kitchen init --no-driver`
179
+ Then the exit status should be 0
180
+ And a file named ".gitignore" should not exist
181
+
182
+ Scenario: Running with a Thorfile file appends Kitchen tasks
183
+ Given an empty file named "Gemfile"
184
+ Given an empty file named "Thorfile"
185
+ When I successfully run `kitchen init`
186
+ Then the file "Thorfile" should contain:
187
+ """
188
+ begin
189
+ require 'kitchen/thor_tasks'
190
+ Kitchen::ThorTasks.new
191
+ rescue LoadError
192
+ puts '>>>>> Kitchen gem not loaded, omitting tasks' unless ENV['CI']
193
+ end
194
+ """
195
+
196
+ Scenario: Running init with a name in metadata.rb sets a run list
197
+ Given an empty file named "Gemfile"
198
+ Given a file named "metadata.rb" with:
199
+ """
200
+ name "ntp"
201
+ license "Apache 2.0"
202
+ description "Installs and configures ntp as a client or server"
203
+ version "0.1.0"
204
+
205
+ support "ubuntu"
206
+ support "centos"
207
+ """
208
+ When I successfully run `kitchen init`
209
+ Then the file ".kitchen.yml" should contain exactly:
210
+ """
211
+ ---
212
+ driver:
213
+ name: vagrant
214
+
215
+ provisioner:
216
+ name: chef_solo
217
+
218
+ platforms:
219
+ - name: ubuntu-14.04
220
+ - name: centos-7.2
221
+
222
+ suites:
223
+ - name: default
224
+ run_list:
225
+ - recipe[ntp::default]
226
+ attributes:
227
+
228
+ """
229
+
230
+ Scenario: Running init with an empty file metadata.rb sets an empty run list
231
+ Given an empty file named "metadata.rb"
232
+ When I successfully run `kitchen init`
233
+ Then the file ".kitchen.yml" should contain exactly:
234
+ """
235
+ ---
236
+ driver:
237
+ name: vagrant
238
+
239
+ provisioner:
240
+ name: chef_solo
241
+
242
+ platforms:
243
+ - name: ubuntu-14.04
244
+ - name: centos-7.2
245
+
246
+ suites:
247
+ - name: default
248
+ run_list:
249
+ attributes:
250
+
251
+ """
252
+
253
+ Scenario: Running init with no metadata.rb file sets an empty run list
254
+ Given a file named "metadata.rb" does not exist
255
+ When I successfully run `kitchen init`
256
+ Then the file ".kitchen.yml" should contain exactly:
257
+ """
258
+ ---
259
+ driver:
260
+ name: vagrant
261
+
262
+ provisioner:
263
+ name: chef_solo
264
+
265
+ platforms:
266
+ - name: ubuntu-14.04
267
+ - name: centos-7.2
268
+
269
+ suites:
270
+ - name: default
271
+ run_list:
272
+ attributes:
273
+
274
+ """