test-kitchen 1.7.0 → 1.7.1.dev

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 (181) hide show
  1. checksums.yaml +4 -4
  2. data/.cane +8 -8
  3. data/.gitattributes +3 -0
  4. data/.github/ISSUE_TEMPLATE.md +55 -55
  5. data/.gitignore +28 -28
  6. data/.kitchen.ci.yml +23 -23
  7. data/.kitchen.proxy.yml +27 -27
  8. data/.rubocop.yml +3 -3
  9. data/.travis.yml +70 -70
  10. data/.yardopts +3 -3
  11. data/Berksfile +3 -3
  12. data/CHANGELOG.md +1090 -1083
  13. data/CONTRIBUTING.md +14 -14
  14. data/Gemfile +19 -19
  15. data/Gemfile.proxy_tests +4 -4
  16. data/Guardfile +42 -42
  17. data/LICENSE +15 -15
  18. data/MAINTAINERS.md +23 -23
  19. data/README.md +135 -135
  20. data/Rakefile +61 -61
  21. data/appveyor.yml +44 -44
  22. data/features/kitchen_action_commands.feature +164 -164
  23. data/features/kitchen_command.feature +16 -16
  24. data/features/kitchen_console_command.feature +34 -34
  25. data/features/kitchen_defaults.feature +38 -38
  26. data/features/kitchen_diagnose_command.feature +96 -96
  27. data/features/kitchen_driver_create_command.feature +64 -64
  28. data/features/kitchen_driver_discover_command.feature +25 -25
  29. data/features/kitchen_help_command.feature +16 -16
  30. data/features/kitchen_init_command.feature +274 -274
  31. data/features/kitchen_list_command.feature +104 -104
  32. data/features/kitchen_login_command.feature +62 -62
  33. data/features/kitchen_sink_command.feature +30 -30
  34. data/features/kitchen_test_command.feature +88 -88
  35. data/features/step_definitions/gem_steps.rb +36 -36
  36. data/features/step_definitions/git_steps.rb +5 -5
  37. data/features/step_definitions/output_steps.rb +5 -5
  38. data/features/support/env.rb +75 -75
  39. data/lib/kitchen.rb +150 -150
  40. data/lib/kitchen/base64_stream.rb +55 -55
  41. data/lib/kitchen/cli.rb +419 -419
  42. data/lib/kitchen/collection.rb +55 -55
  43. data/lib/kitchen/color.rb +65 -65
  44. data/lib/kitchen/command.rb +185 -185
  45. data/lib/kitchen/command/action.rb +45 -45
  46. data/lib/kitchen/command/console.rb +58 -58
  47. data/lib/kitchen/command/diagnose.rb +92 -92
  48. data/lib/kitchen/command/driver_discover.rb +105 -105
  49. data/lib/kitchen/command/exec.rb +41 -41
  50. data/lib/kitchen/command/list.rb +119 -119
  51. data/lib/kitchen/command/login.rb +43 -43
  52. data/lib/kitchen/command/sink.rb +54 -54
  53. data/lib/kitchen/command/test.rb +51 -51
  54. data/lib/kitchen/config.rb +322 -322
  55. data/lib/kitchen/configurable.rb +529 -529
  56. data/lib/kitchen/data_munger.rb +959 -959
  57. data/lib/kitchen/diagnostic.rb +141 -141
  58. data/lib/kitchen/driver.rb +56 -56
  59. data/lib/kitchen/driver/base.rb +134 -134
  60. data/lib/kitchen/driver/dummy.rb +108 -108
  61. data/lib/kitchen/driver/proxy.rb +72 -72
  62. data/lib/kitchen/driver/ssh_base.rb +357 -357
  63. data/lib/kitchen/errors.rb +229 -229
  64. data/lib/kitchen/generator/driver_create.rb +177 -177
  65. data/lib/kitchen/generator/init.rb +296 -296
  66. data/lib/kitchen/instance.rb +662 -662
  67. data/lib/kitchen/lazy_hash.rb +142 -142
  68. data/lib/kitchen/loader/yaml.rb +349 -349
  69. data/lib/kitchen/logger.rb +423 -423
  70. data/lib/kitchen/logging.rb +56 -56
  71. data/lib/kitchen/login_command.rb +52 -52
  72. data/lib/kitchen/metadata_chopper.rb +52 -52
  73. data/lib/kitchen/platform.rb +67 -67
  74. data/lib/kitchen/provisioner.rb +54 -54
  75. data/lib/kitchen/provisioner/base.rb +236 -236
  76. data/lib/kitchen/provisioner/chef/berkshelf.rb +114 -114
  77. data/lib/kitchen/provisioner/chef/common_sandbox.rb +322 -322
  78. data/lib/kitchen/provisioner/chef/librarian.rb +112 -112
  79. data/lib/kitchen/provisioner/chef_apply.rb +124 -124
  80. data/lib/kitchen/provisioner/chef_base.rb +341 -341
  81. data/lib/kitchen/provisioner/chef_solo.rb +88 -88
  82. data/lib/kitchen/provisioner/chef_zero.rb +245 -245
  83. data/lib/kitchen/provisioner/dummy.rb +79 -79
  84. data/lib/kitchen/provisioner/shell.rb +138 -138
  85. data/lib/kitchen/rake_tasks.rb +63 -63
  86. data/lib/kitchen/shell_out.rb +93 -93
  87. data/lib/kitchen/ssh.rb +276 -276
  88. data/lib/kitchen/state_file.rb +120 -120
  89. data/lib/kitchen/suite.rb +51 -51
  90. data/lib/kitchen/thor_tasks.rb +66 -66
  91. data/lib/kitchen/transport.rb +54 -54
  92. data/lib/kitchen/transport/base.rb +176 -176
  93. data/lib/kitchen/transport/dummy.rb +79 -79
  94. data/lib/kitchen/transport/ssh.rb +364 -364
  95. data/lib/kitchen/transport/winrm.rb +486 -486
  96. data/lib/kitchen/util.rb +147 -147
  97. data/lib/kitchen/verifier.rb +55 -55
  98. data/lib/kitchen/verifier/base.rb +235 -235
  99. data/lib/kitchen/verifier/busser.rb +277 -277
  100. data/lib/kitchen/verifier/dummy.rb +79 -79
  101. data/lib/kitchen/verifier/shell.rb +101 -101
  102. data/lib/kitchen/version.rb +21 -21
  103. data/lib/vendor/hash_recursive_merge.rb +82 -82
  104. data/spec/kitchen/base64_stream_spec.rb +77 -77
  105. data/spec/kitchen/cli_spec.rb +56 -56
  106. data/spec/kitchen/collection_spec.rb +80 -80
  107. data/spec/kitchen/color_spec.rb +54 -54
  108. data/spec/kitchen/config_spec.rb +408 -408
  109. data/spec/kitchen/configurable_spec.rb +1095 -1095
  110. data/spec/kitchen/data_munger_spec.rb +2694 -2694
  111. data/spec/kitchen/diagnostic_spec.rb +129 -129
  112. data/spec/kitchen/driver/base_spec.rb +121 -121
  113. data/spec/kitchen/driver/dummy_spec.rb +199 -199
  114. data/spec/kitchen/driver/proxy_spec.rb +138 -138
  115. data/spec/kitchen/driver/ssh_base_spec.rb +1115 -1115
  116. data/spec/kitchen/driver_spec.rb +112 -112
  117. data/spec/kitchen/errors_spec.rb +309 -309
  118. data/spec/kitchen/instance_spec.rb +1419 -1419
  119. data/spec/kitchen/lazy_hash_spec.rb +117 -117
  120. data/spec/kitchen/loader/yaml_spec.rb +774 -774
  121. data/spec/kitchen/logger_spec.rb +429 -429
  122. data/spec/kitchen/logging_spec.rb +59 -59
  123. data/spec/kitchen/login_command_spec.rb +68 -68
  124. data/spec/kitchen/metadata_chopper_spec.rb +82 -82
  125. data/spec/kitchen/platform_spec.rb +89 -89
  126. data/spec/kitchen/provisioner/base_spec.rb +386 -386
  127. data/spec/kitchen/provisioner/chef_apply_spec.rb +136 -136
  128. data/spec/kitchen/provisioner/chef_base_spec.rb +1161 -1161
  129. data/spec/kitchen/provisioner/chef_solo_spec.rb +557 -557
  130. data/spec/kitchen/provisioner/chef_zero_spec.rb +1001 -1001
  131. data/spec/kitchen/provisioner/dummy_spec.rb +99 -99
  132. data/spec/kitchen/provisioner/shell_spec.rb +566 -566
  133. data/spec/kitchen/provisioner_spec.rb +107 -107
  134. data/spec/kitchen/shell_out_spec.rb +150 -150
  135. data/spec/kitchen/ssh_spec.rb +693 -693
  136. data/spec/kitchen/state_file_spec.rb +129 -129
  137. data/spec/kitchen/suite_spec.rb +62 -62
  138. data/spec/kitchen/transport/base_spec.rb +89 -89
  139. data/spec/kitchen/transport/ssh_spec.rb +1255 -1255
  140. data/spec/kitchen/transport/winrm_spec.rb +1143 -1143
  141. data/spec/kitchen/transport_spec.rb +112 -112
  142. data/spec/kitchen/util_spec.rb +165 -165
  143. data/spec/kitchen/verifier/base_spec.rb +362 -362
  144. data/spec/kitchen/verifier/busser_spec.rb +610 -610
  145. data/spec/kitchen/verifier/dummy_spec.rb +99 -99
  146. data/spec/kitchen/verifier/shell_spec.rb +160 -160
  147. data/spec/kitchen/verifier_spec.rb +120 -120
  148. data/spec/kitchen_spec.rb +114 -114
  149. data/spec/spec_helper.rb +85 -85
  150. data/spec/support/powershell_max_size_spec.rb +40 -40
  151. data/support/busser_install_command.ps1 +14 -14
  152. data/support/busser_install_command.sh +14 -14
  153. data/support/chef-client-zero.rb +77 -77
  154. data/support/chef_base_init_command.ps1 +18 -18
  155. data/support/chef_base_init_command.sh +2 -2
  156. data/support/chef_base_install_command.ps1 +85 -85
  157. data/support/chef_base_install_command.sh +229 -229
  158. data/support/chef_zero_prepare_command_legacy.ps1 +9 -9
  159. data/support/chef_zero_prepare_command_legacy.sh +10 -10
  160. data/support/download_helpers.sh +109 -109
  161. data/support/dummy-validation.pem +27 -27
  162. data/templates/driver/CHANGELOG.md.erb +3 -3
  163. data/templates/driver/Gemfile.erb +3 -3
  164. data/templates/driver/README.md.erb +64 -64
  165. data/templates/driver/Rakefile.erb +21 -21
  166. data/templates/driver/driver.rb.erb +23 -23
  167. data/templates/driver/gemspec.erb +29 -29
  168. data/templates/driver/gitignore.erb +17 -17
  169. data/templates/driver/license_apachev2.erb +15 -15
  170. data/templates/driver/license_lgplv3.erb +16 -16
  171. data/templates/driver/license_mit.erb +22 -22
  172. data/templates/driver/license_reserved.erb +5 -5
  173. data/templates/driver/tailor.erb +4 -4
  174. data/templates/driver/travis.yml.erb +11 -11
  175. data/templates/driver/version.rb.erb +12 -12
  176. data/templates/init/chefignore.erb +1 -1
  177. data/templates/init/kitchen.yml.erb +18 -18
  178. data/test-kitchen.gemspec +62 -62
  179. data/test/integration/default/default_spec.rb +3 -3
  180. data/testing_windows.md +37 -37
  181. metadata +5 -4
@@ -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.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
- """
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
+ """