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.
- checksums.yaml +4 -4
- data/.cane +8 -8
- data/.gitattributes +3 -0
- data/.github/ISSUE_TEMPLATE.md +55 -55
- data/.gitignore +28 -28
- data/.kitchen.ci.yml +23 -23
- data/.kitchen.proxy.yml +27 -27
- data/.rubocop.yml +3 -3
- data/.travis.yml +70 -70
- data/.yardopts +3 -3
- data/Berksfile +3 -3
- data/CHANGELOG.md +1090 -1083
- data/CONTRIBUTING.md +14 -14
- data/Gemfile +19 -19
- data/Gemfile.proxy_tests +4 -4
- data/Guardfile +42 -42
- data/LICENSE +15 -15
- data/MAINTAINERS.md +23 -23
- data/README.md +135 -135
- data/Rakefile +61 -61
- data/appveyor.yml +44 -44
- data/features/kitchen_action_commands.feature +164 -164
- data/features/kitchen_command.feature +16 -16
- data/features/kitchen_console_command.feature +34 -34
- data/features/kitchen_defaults.feature +38 -38
- data/features/kitchen_diagnose_command.feature +96 -96
- data/features/kitchen_driver_create_command.feature +64 -64
- data/features/kitchen_driver_discover_command.feature +25 -25
- data/features/kitchen_help_command.feature +16 -16
- data/features/kitchen_init_command.feature +274 -274
- data/features/kitchen_list_command.feature +104 -104
- data/features/kitchen_login_command.feature +62 -62
- data/features/kitchen_sink_command.feature +30 -30
- data/features/kitchen_test_command.feature +88 -88
- data/features/step_definitions/gem_steps.rb +36 -36
- data/features/step_definitions/git_steps.rb +5 -5
- data/features/step_definitions/output_steps.rb +5 -5
- data/features/support/env.rb +75 -75
- data/lib/kitchen.rb +150 -150
- data/lib/kitchen/base64_stream.rb +55 -55
- data/lib/kitchen/cli.rb +419 -419
- data/lib/kitchen/collection.rb +55 -55
- data/lib/kitchen/color.rb +65 -65
- data/lib/kitchen/command.rb +185 -185
- data/lib/kitchen/command/action.rb +45 -45
- data/lib/kitchen/command/console.rb +58 -58
- data/lib/kitchen/command/diagnose.rb +92 -92
- data/lib/kitchen/command/driver_discover.rb +105 -105
- data/lib/kitchen/command/exec.rb +41 -41
- data/lib/kitchen/command/list.rb +119 -119
- data/lib/kitchen/command/login.rb +43 -43
- data/lib/kitchen/command/sink.rb +54 -54
- data/lib/kitchen/command/test.rb +51 -51
- data/lib/kitchen/config.rb +322 -322
- data/lib/kitchen/configurable.rb +529 -529
- data/lib/kitchen/data_munger.rb +959 -959
- data/lib/kitchen/diagnostic.rb +141 -141
- data/lib/kitchen/driver.rb +56 -56
- data/lib/kitchen/driver/base.rb +134 -134
- data/lib/kitchen/driver/dummy.rb +108 -108
- data/lib/kitchen/driver/proxy.rb +72 -72
- data/lib/kitchen/driver/ssh_base.rb +357 -357
- data/lib/kitchen/errors.rb +229 -229
- data/lib/kitchen/generator/driver_create.rb +177 -177
- data/lib/kitchen/generator/init.rb +296 -296
- data/lib/kitchen/instance.rb +662 -662
- data/lib/kitchen/lazy_hash.rb +142 -142
- data/lib/kitchen/loader/yaml.rb +349 -349
- data/lib/kitchen/logger.rb +423 -423
- data/lib/kitchen/logging.rb +56 -56
- data/lib/kitchen/login_command.rb +52 -52
- data/lib/kitchen/metadata_chopper.rb +52 -52
- data/lib/kitchen/platform.rb +67 -67
- data/lib/kitchen/provisioner.rb +54 -54
- data/lib/kitchen/provisioner/base.rb +236 -236
- data/lib/kitchen/provisioner/chef/berkshelf.rb +114 -114
- data/lib/kitchen/provisioner/chef/common_sandbox.rb +322 -322
- data/lib/kitchen/provisioner/chef/librarian.rb +112 -112
- data/lib/kitchen/provisioner/chef_apply.rb +124 -124
- data/lib/kitchen/provisioner/chef_base.rb +341 -341
- data/lib/kitchen/provisioner/chef_solo.rb +88 -88
- data/lib/kitchen/provisioner/chef_zero.rb +245 -245
- data/lib/kitchen/provisioner/dummy.rb +79 -79
- data/lib/kitchen/provisioner/shell.rb +138 -138
- data/lib/kitchen/rake_tasks.rb +63 -63
- data/lib/kitchen/shell_out.rb +93 -93
- data/lib/kitchen/ssh.rb +276 -276
- data/lib/kitchen/state_file.rb +120 -120
- data/lib/kitchen/suite.rb +51 -51
- data/lib/kitchen/thor_tasks.rb +66 -66
- data/lib/kitchen/transport.rb +54 -54
- data/lib/kitchen/transport/base.rb +176 -176
- data/lib/kitchen/transport/dummy.rb +79 -79
- data/lib/kitchen/transport/ssh.rb +364 -364
- data/lib/kitchen/transport/winrm.rb +486 -486
- data/lib/kitchen/util.rb +147 -147
- data/lib/kitchen/verifier.rb +55 -55
- data/lib/kitchen/verifier/base.rb +235 -235
- data/lib/kitchen/verifier/busser.rb +277 -277
- data/lib/kitchen/verifier/dummy.rb +79 -79
- data/lib/kitchen/verifier/shell.rb +101 -101
- data/lib/kitchen/version.rb +21 -21
- data/lib/vendor/hash_recursive_merge.rb +82 -82
- data/spec/kitchen/base64_stream_spec.rb +77 -77
- data/spec/kitchen/cli_spec.rb +56 -56
- data/spec/kitchen/collection_spec.rb +80 -80
- data/spec/kitchen/color_spec.rb +54 -54
- data/spec/kitchen/config_spec.rb +408 -408
- data/spec/kitchen/configurable_spec.rb +1095 -1095
- data/spec/kitchen/data_munger_spec.rb +2694 -2694
- data/spec/kitchen/diagnostic_spec.rb +129 -129
- data/spec/kitchen/driver/base_spec.rb +121 -121
- data/spec/kitchen/driver/dummy_spec.rb +199 -199
- data/spec/kitchen/driver/proxy_spec.rb +138 -138
- data/spec/kitchen/driver/ssh_base_spec.rb +1115 -1115
- data/spec/kitchen/driver_spec.rb +112 -112
- data/spec/kitchen/errors_spec.rb +309 -309
- data/spec/kitchen/instance_spec.rb +1419 -1419
- data/spec/kitchen/lazy_hash_spec.rb +117 -117
- data/spec/kitchen/loader/yaml_spec.rb +774 -774
- data/spec/kitchen/logger_spec.rb +429 -429
- data/spec/kitchen/logging_spec.rb +59 -59
- data/spec/kitchen/login_command_spec.rb +68 -68
- data/spec/kitchen/metadata_chopper_spec.rb +82 -82
- data/spec/kitchen/platform_spec.rb +89 -89
- data/spec/kitchen/provisioner/base_spec.rb +386 -386
- data/spec/kitchen/provisioner/chef_apply_spec.rb +136 -136
- data/spec/kitchen/provisioner/chef_base_spec.rb +1161 -1161
- data/spec/kitchen/provisioner/chef_solo_spec.rb +557 -557
- data/spec/kitchen/provisioner/chef_zero_spec.rb +1001 -1001
- data/spec/kitchen/provisioner/dummy_spec.rb +99 -99
- data/spec/kitchen/provisioner/shell_spec.rb +566 -566
- data/spec/kitchen/provisioner_spec.rb +107 -107
- data/spec/kitchen/shell_out_spec.rb +150 -150
- data/spec/kitchen/ssh_spec.rb +693 -693
- data/spec/kitchen/state_file_spec.rb +129 -129
- data/spec/kitchen/suite_spec.rb +62 -62
- data/spec/kitchen/transport/base_spec.rb +89 -89
- data/spec/kitchen/transport/ssh_spec.rb +1255 -1255
- data/spec/kitchen/transport/winrm_spec.rb +1143 -1143
- data/spec/kitchen/transport_spec.rb +112 -112
- data/spec/kitchen/util_spec.rb +165 -165
- data/spec/kitchen/verifier/base_spec.rb +362 -362
- data/spec/kitchen/verifier/busser_spec.rb +610 -610
- data/spec/kitchen/verifier/dummy_spec.rb +99 -99
- data/spec/kitchen/verifier/shell_spec.rb +160 -160
- data/spec/kitchen/verifier_spec.rb +120 -120
- data/spec/kitchen_spec.rb +114 -114
- data/spec/spec_helper.rb +85 -85
- data/spec/support/powershell_max_size_spec.rb +40 -40
- data/support/busser_install_command.ps1 +14 -14
- data/support/busser_install_command.sh +14 -14
- data/support/chef-client-zero.rb +77 -77
- data/support/chef_base_init_command.ps1 +18 -18
- data/support/chef_base_init_command.sh +2 -2
- data/support/chef_base_install_command.ps1 +85 -85
- data/support/chef_base_install_command.sh +229 -229
- data/support/chef_zero_prepare_command_legacy.ps1 +9 -9
- data/support/chef_zero_prepare_command_legacy.sh +10 -10
- data/support/download_helpers.sh +109 -109
- data/support/dummy-validation.pem +27 -27
- data/templates/driver/CHANGELOG.md.erb +3 -3
- data/templates/driver/Gemfile.erb +3 -3
- data/templates/driver/README.md.erb +64 -64
- data/templates/driver/Rakefile.erb +21 -21
- data/templates/driver/driver.rb.erb +23 -23
- data/templates/driver/gemspec.erb +29 -29
- data/templates/driver/gitignore.erb +17 -17
- data/templates/driver/license_apachev2.erb +15 -15
- data/templates/driver/license_lgplv3.erb +16 -16
- data/templates/driver/license_mit.erb +22 -22
- data/templates/driver/license_reserved.erb +5 -5
- data/templates/driver/tailor.erb +4 -4
- data/templates/driver/travis.yml.erb +11 -11
- data/templates/driver/version.rb.erb +12 -12
- data/templates/init/chefignore.erb +1 -1
- data/templates/init/kitchen.yml.erb +18 -18
- data/test-kitchen.gemspec +62 -62
- data/test/integration/default/default_spec.rb +3 -3
- data/testing_windows.md +37 -37
- 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
|
+
"""
|