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
data/Rakefile CHANGED
@@ -1,61 +1,61 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- require "bundler/gem_tasks"
4
-
5
- require "rake/testtask"
6
- Rake::TestTask.new(:unit) do |t|
7
- t.libs.push "lib"
8
- t.test_files = FileList["spec/**/*_spec.rb"]
9
- t.verbose = true
10
- end
11
-
12
- require "cucumber"
13
- require "cucumber/rake/task"
14
- Cucumber::Rake::Task.new(:features) do |t|
15
- t.cucumber_opts = ["features", "-x", "--format progress", "--no-color"]
16
- end
17
-
18
- desc "Run all test suites"
19
- task :test => [:unit, :features]
20
-
21
- desc "Display LOC stats"
22
- task :stats do
23
- puts "\n## Production Code Stats"
24
- sh "countloc -r lib/kitchen lib/kitchen.rb"
25
- puts "\n## Test Code Stats"
26
- sh "countloc -r spec features"
27
- end
28
-
29
- require "finstyle"
30
- require "rubocop/rake_task"
31
- RuboCop::RakeTask.new(:style) do |task|
32
- task.options += ["--display-cop-names", "--no-color"]
33
- end
34
-
35
- if RUBY_ENGINE != "jruby"
36
- require "cane/rake_task"
37
- desc "Run cane to check quality metrics"
38
- Cane::RakeTask.new do |cane|
39
- cane.canefile = "./.cane"
40
- end
41
-
42
- desc "Run all quality tasks"
43
- task :quality => [:cane, :style, :stats]
44
- else
45
- desc "Run all quality tasks"
46
- task :quality => [:style, :stats]
47
- end
48
-
49
- require "yard"
50
- YARD::Rake::YardocTask.new
51
-
52
- task :default => [:test, :quality]
53
-
54
- require "github_changelog_generator/task"
55
-
56
- GitHubChangelogGenerator::RakeTask.new :changelog do |config|
57
- config.future_release = Kitchen::VERSION
58
- config.enhancement_labels = "enhancement,Enhancement,New Feature,Feature,Improvement".split(",")
59
- config.bug_labels = "bug,Bug".split(",")
60
- config.exclude_labels = %w[Duplicate Question Discussion No_Changelog]
61
- end
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require "bundler/gem_tasks"
4
+
5
+ require "rake/testtask"
6
+ Rake::TestTask.new(:unit) do |t|
7
+ t.libs.push "lib"
8
+ t.test_files = FileList["spec/**/*_spec.rb"]
9
+ t.verbose = true
10
+ end
11
+
12
+ require "cucumber"
13
+ require "cucumber/rake/task"
14
+ Cucumber::Rake::Task.new(:features) do |t|
15
+ t.cucumber_opts = ["features", "-x", "--format progress", "--no-color"]
16
+ end
17
+
18
+ desc "Run all test suites"
19
+ task :test => [:unit, :features]
20
+
21
+ desc "Display LOC stats"
22
+ task :stats do
23
+ puts "\n## Production Code Stats"
24
+ sh "countloc -r lib/kitchen lib/kitchen.rb"
25
+ puts "\n## Test Code Stats"
26
+ sh "countloc -r spec features"
27
+ end
28
+
29
+ require "finstyle"
30
+ require "rubocop/rake_task"
31
+ RuboCop::RakeTask.new(:style) do |task|
32
+ task.options += ["--display-cop-names", "--no-color"]
33
+ end
34
+
35
+ if RUBY_ENGINE != "jruby"
36
+ require "cane/rake_task"
37
+ desc "Run cane to check quality metrics"
38
+ Cane::RakeTask.new do |cane|
39
+ cane.canefile = "./.cane"
40
+ end
41
+
42
+ desc "Run all quality tasks"
43
+ task :quality => [:cane, :style, :stats]
44
+ else
45
+ desc "Run all quality tasks"
46
+ task :quality => [:style, :stats]
47
+ end
48
+
49
+ require "yard"
50
+ YARD::Rake::YardocTask.new
51
+
52
+ task :default => [:test, :quality]
53
+
54
+ require "github_changelog_generator/task"
55
+
56
+ GitHubChangelogGenerator::RakeTask.new :changelog do |config|
57
+ config.future_release = Kitchen::VERSION
58
+ config.enhancement_labels = "enhancement,Enhancement,New Feature,Feature,Improvement".split(",")
59
+ config.bug_labels = "bug,Bug".split(",")
60
+ config.exclude_labels = %w[Duplicate Question Discussion No_Changelog]
61
+ end
data/appveyor.yml CHANGED
@@ -1,44 +1,44 @@
1
- version: "master-{build}"
2
-
3
- os: Windows Server 2012 R2
4
- platform:
5
- - x64
6
-
7
- environment:
8
- machine_user: test_user
9
- machine_pass: Pass@word1
10
- machine_port: 5985
11
- KITCHEN_YAML: .kitchen.ci.yml
12
- SSL_CERT_FILE: c:\projects\test_kitchen\certs.pem
13
-
14
- matrix:
15
- - ruby_version: "21"
16
-
17
- clone_folder: c:\projects\test_kitchen
18
- clone_depth: 1
19
- skip_tags: true
20
-
21
- branches:
22
- only:
23
- - master
24
-
25
- install:
26
- - ps: net user /add $env:machine_user $env:machine_pass
27
- - ps: net localgroup administrators $env:machine_user /add
28
- - ps: $env:PATH="C:\Ruby$env:ruby_version\bin;$env:PATH"
29
- - ps: gem install bundler --quiet --no-ri --no-rdoc
30
- - ps: Invoke-WebRequest -Uri http://curl.haxx.se/ca/cacert.pem -OutFile c:\projects\test_kitchen\certs.pem
31
- - ps: Write-Host $env:path
32
- - ruby --version
33
- - gem --version
34
- - bundler --version
35
-
36
- build_script:
37
- - bundle install --without guard integration
38
-
39
- test_script:
40
- - SET SPEC_OPTS=--format progress
41
- - bundle exec rake unit
42
- - bundle exec rake quality
43
- - bundle install --with integration
44
- - bundle exec kitchen verify windows
1
+ version: "master-{build}"
2
+
3
+ os: Windows Server 2012 R2
4
+ platform:
5
+ - x64
6
+
7
+ environment:
8
+ machine_user: test_user
9
+ machine_pass: Pass@word1
10
+ machine_port: 5985
11
+ KITCHEN_YAML: .kitchen.ci.yml
12
+ SSL_CERT_FILE: c:\projects\test_kitchen\certs.pem
13
+
14
+ matrix:
15
+ - ruby_version: "21"
16
+
17
+ clone_folder: c:\projects\test_kitchen
18
+ clone_depth: 1
19
+ skip_tags: true
20
+
21
+ branches:
22
+ only:
23
+ - master
24
+
25
+ install:
26
+ - ps: net user /add $env:machine_user $env:machine_pass
27
+ - ps: net localgroup administrators $env:machine_user /add
28
+ - ps: $env:PATH="C:\Ruby$env:ruby_version\bin;$env:PATH"
29
+ - ps: gem install bundler --quiet --no-ri --no-rdoc
30
+ - ps: Invoke-WebRequest -Uri http://curl.haxx.se/ca/cacert.pem -OutFile c:\projects\test_kitchen\certs.pem
31
+ - ps: Write-Host $env:path
32
+ - ruby --version
33
+ - gem --version
34
+ - bundler --version
35
+
36
+ build_script:
37
+ - bundle install --without guard integration
38
+
39
+ test_script:
40
+ - SET SPEC_OPTS=--format progress
41
+ - bundle exec rake unit
42
+ - bundle exec rake quality
43
+ - bundle install --with integration
44
+ - bundle exec kitchen verify windows
@@ -1,164 +1,164 @@
1
- Feature: Running instance actions
2
- In order to trigger discrete instance lifecyle actions
3
- As an operator
4
- I want to run a action commands
5
-
6
- Background:
7
- Given a file named ".kitchen.yml" with:
8
- """
9
- ---
10
- driver:
11
- name: dummy
12
-
13
- provisioner:
14
- name: dummy
15
-
16
- verifier:
17
- name: dummy
18
-
19
- platforms:
20
- - name: cool
21
- - name: beans
22
-
23
- suites:
24
- - name: client
25
- - name: server
26
- """
27
-
28
- @spawn
29
- Scenario: Creating a single instance
30
- When I successfully run `kitchen list client-beans`
31
- Then the stdout should match /^client-beans\s+.+\s+\<Not Created\>\Z/
32
- When I run `kitchen create client-beans`
33
- Then the output should contain "Finished creating <client-beans>"
34
- And the exit status should be 0
35
- When I successfully run `kitchen list client-beans`
36
- Then the stdout should match /^client-beans\s+.+\s+Created\Z/
37
-
38
- @spawn
39
- Scenario: Creating a single instance that fails
40
- Given a file named ".kitchen.local.yml" with:
41
- """
42
- ---
43
- driver:
44
- fail_create: true
45
- """
46
- When I successfully run `kitchen list client-beans`
47
- Then the stdout should match /^client-beans\s+.+\s+\<Not Created\>\Z/
48
- When I run `kitchen create client-beans`
49
- Then the output should contain "Create failed on instance <client-beans>"
50
- And the exit status should not be 0
51
- When I successfully run `kitchen list client-beans`
52
- Then the stdout should match /^client-beans\s+.+\s+\<Not Created\>\Z/
53
-
54
- @spawn
55
- Scenario: Converging a single instance
56
- When I successfully run `kitchen create client-beans`
57
- And I successfully run `kitchen list client-beans`
58
- Then the stdout should match /^client-beans\s+.+\s+Created\Z/
59
- When I run `kitchen converge client-beans`
60
- Then the output should contain "Finished converging <client-beans>"
61
- And the exit status should be 0
62
- When I successfully run `kitchen list client-beans`
63
- Then the stdout should match /^client-beans\s+.+\s+Converged\Z/
64
-
65
- @spawn
66
- Scenario: Converging a single instance that fails
67
- Given a file named ".kitchen.local.yml" with:
68
- """
69
- ---
70
- provisioner:
71
- fail: true
72
- """
73
- When I successfully run `kitchen create client-beans`
74
- And I successfully run `kitchen list client-beans`
75
- Then the stdout should match /^client-beans\s+.+\s+Created\Z/
76
- When I run `kitchen converge client-beans`
77
- Then the output should contain "Converge failed on instance <client-beans>"
78
- And the exit status should not be 0
79
- When I successfully run `kitchen list client-beans`
80
- Then the stdout should match /^client-beans\s+.+\s+Created\Z/
81
-
82
- @spawn
83
- Scenario: Setting up a single instance
84
- When I successfully run `kitchen converge client-beans`
85
- And I successfully run `kitchen list client-beans`
86
- Then the stdout should match /^client-beans\s+.+\s+Converged\Z/
87
- When I run `kitchen setup client-beans`
88
- Then the output should contain "Finished setting up <client-beans>"
89
- And the exit status should be 0
90
- When I successfully run `kitchen list client-beans`
91
- Then the stdout should match /^client-beans\s+.+\s+Set Up\Z/
92
-
93
- @spawn
94
- Scenario: Setting up a single instance that fails
95
- Given a file named ".kitchen.local.yml" with:
96
- """
97
- ---
98
- verifier:
99
- fail: true
100
- """
101
- When I successfully run `kitchen converge client-beans`
102
- And I successfully run `kitchen list client-beans`
103
- Then the stdout should match /^client-beans\s+.+\s+Converged\Z/
104
- When I run `kitchen verify client-beans`
105
- Then the output should contain "Verify failed on instance <client-beans>"
106
- And the exit status should not be 0
107
- When I successfully run `kitchen list client-beans`
108
- Then the stdout should match /^client-beans\s+.+\s+Set Up\Z/
109
-
110
- @spawn
111
- Scenario: Verifying a single instance
112
- When I successfully run `kitchen setup client-beans`
113
- And I successfully run `kitchen list client-beans`
114
- Then the stdout should match /^client-beans\s+.+\s+Set Up\Z/
115
- When I run `kitchen verify client-beans`
116
- Then the output should contain "Finished verifying <client-beans>"
117
- And the exit status should be 0
118
- When I successfully run `kitchen list client-beans`
119
- Then the stdout should match /^client-beans\s+.+\s+Verified\Z/
120
-
121
- @spawn
122
- Scenario: Verifying a single instance that fails
123
- Given a file named ".kitchen.local.yml" with:
124
- """
125
- ---
126
- verifier:
127
- fail: true
128
- """
129
- When I successfully run `kitchen setup client-beans`
130
- And I successfully run `kitchen list client-beans`
131
- Then the stdout should match /^client-beans\s+.+\s+Set Up\Z/
132
- When I run `kitchen verify client-beans`
133
- Then the output should contain "Verify failed on instance <client-beans>"
134
- And the exit status should not be 0
135
- When I successfully run `kitchen list client-beans`
136
- Then the stdout should match /^client-beans\s+.+\s+Set Up\Z/
137
-
138
- @spawn
139
- Scenario: Destroying a single instance
140
- When I successfully run `kitchen create client-beans`
141
- And I successfully run `kitchen list client-beans`
142
- Then the stdout should match /^client-beans\s+.+\s+Created\Z/
143
- When I run `kitchen destroy client-beans`
144
- Then the output should contain "Finished destroying <client-beans>"
145
- And the exit status should be 0
146
- When I successfully run `kitchen list client-beans`
147
- Then the stdout should match /^client-beans\s+.+\s+\<Not Created\>\Z/
148
-
149
- @spawn
150
- Scenario: Destroying a single instance that fails
151
- Given a file named ".kitchen.local.yml" with:
152
- """
153
- ---
154
- driver:
155
- fail_destroy: true
156
- """
157
- When I successfully run `kitchen create client-beans`
158
- And I successfully run `kitchen list client-beans`
159
- Then the stdout should match /^client-beans\s+.+\s+Created\Z/
160
- When I run `kitchen destroy client-beans`
161
- Then the output should contain "Destroy failed on instance <client-beans>"
162
- And the exit status should not be 0
163
- When I successfully run `kitchen list client-beans`
164
- Then the stdout should match /^client-beans\s+.+\s+Created\Z/
1
+ Feature: Running instance actions
2
+ In order to trigger discrete instance lifecyle actions
3
+ As an operator
4
+ I want to run a action commands
5
+
6
+ Background:
7
+ Given a file named ".kitchen.yml" with:
8
+ """
9
+ ---
10
+ driver:
11
+ name: dummy
12
+
13
+ provisioner:
14
+ name: dummy
15
+
16
+ verifier:
17
+ name: dummy
18
+
19
+ platforms:
20
+ - name: cool
21
+ - name: beans
22
+
23
+ suites:
24
+ - name: client
25
+ - name: server
26
+ """
27
+
28
+ @spawn
29
+ Scenario: Creating a single instance
30
+ When I successfully run `kitchen list client-beans`
31
+ Then the stdout should match /^client-beans\s+.+\s+\<Not Created\>\Z/
32
+ When I run `kitchen create client-beans`
33
+ Then the output should contain "Finished creating <client-beans>"
34
+ And the exit status should be 0
35
+ When I successfully run `kitchen list client-beans`
36
+ Then the stdout should match /^client-beans\s+.+\s+Created\Z/
37
+
38
+ @spawn
39
+ Scenario: Creating a single instance that fails
40
+ Given a file named ".kitchen.local.yml" with:
41
+ """
42
+ ---
43
+ driver:
44
+ fail_create: true
45
+ """
46
+ When I successfully run `kitchen list client-beans`
47
+ Then the stdout should match /^client-beans\s+.+\s+\<Not Created\>\Z/
48
+ When I run `kitchen create client-beans`
49
+ Then the output should contain "Create failed on instance <client-beans>"
50
+ And the exit status should not be 0
51
+ When I successfully run `kitchen list client-beans`
52
+ Then the stdout should match /^client-beans\s+.+\s+\<Not Created\>\Z/
53
+
54
+ @spawn
55
+ Scenario: Converging a single instance
56
+ When I successfully run `kitchen create client-beans`
57
+ And I successfully run `kitchen list client-beans`
58
+ Then the stdout should match /^client-beans\s+.+\s+Created\Z/
59
+ When I run `kitchen converge client-beans`
60
+ Then the output should contain "Finished converging <client-beans>"
61
+ And the exit status should be 0
62
+ When I successfully run `kitchen list client-beans`
63
+ Then the stdout should match /^client-beans\s+.+\s+Converged\Z/
64
+
65
+ @spawn
66
+ Scenario: Converging a single instance that fails
67
+ Given a file named ".kitchen.local.yml" with:
68
+ """
69
+ ---
70
+ provisioner:
71
+ fail: true
72
+ """
73
+ When I successfully run `kitchen create client-beans`
74
+ And I successfully run `kitchen list client-beans`
75
+ Then the stdout should match /^client-beans\s+.+\s+Created\Z/
76
+ When I run `kitchen converge client-beans`
77
+ Then the output should contain "Converge failed on instance <client-beans>"
78
+ And the exit status should not be 0
79
+ When I successfully run `kitchen list client-beans`
80
+ Then the stdout should match /^client-beans\s+.+\s+Created\Z/
81
+
82
+ @spawn
83
+ Scenario: Setting up a single instance
84
+ When I successfully run `kitchen converge client-beans`
85
+ And I successfully run `kitchen list client-beans`
86
+ Then the stdout should match /^client-beans\s+.+\s+Converged\Z/
87
+ When I run `kitchen setup client-beans`
88
+ Then the output should contain "Finished setting up <client-beans>"
89
+ And the exit status should be 0
90
+ When I successfully run `kitchen list client-beans`
91
+ Then the stdout should match /^client-beans\s+.+\s+Set Up\Z/
92
+
93
+ @spawn
94
+ Scenario: Setting up a single instance that fails
95
+ Given a file named ".kitchen.local.yml" with:
96
+ """
97
+ ---
98
+ verifier:
99
+ fail: true
100
+ """
101
+ When I successfully run `kitchen converge client-beans`
102
+ And I successfully run `kitchen list client-beans`
103
+ Then the stdout should match /^client-beans\s+.+\s+Converged\Z/
104
+ When I run `kitchen verify client-beans`
105
+ Then the output should contain "Verify failed on instance <client-beans>"
106
+ And the exit status should not be 0
107
+ When I successfully run `kitchen list client-beans`
108
+ Then the stdout should match /^client-beans\s+.+\s+Set Up\Z/
109
+
110
+ @spawn
111
+ Scenario: Verifying a single instance
112
+ When I successfully run `kitchen setup client-beans`
113
+ And I successfully run `kitchen list client-beans`
114
+ Then the stdout should match /^client-beans\s+.+\s+Set Up\Z/
115
+ When I run `kitchen verify client-beans`
116
+ Then the output should contain "Finished verifying <client-beans>"
117
+ And the exit status should be 0
118
+ When I successfully run `kitchen list client-beans`
119
+ Then the stdout should match /^client-beans\s+.+\s+Verified\Z/
120
+
121
+ @spawn
122
+ Scenario: Verifying a single instance that fails
123
+ Given a file named ".kitchen.local.yml" with:
124
+ """
125
+ ---
126
+ verifier:
127
+ fail: true
128
+ """
129
+ When I successfully run `kitchen setup client-beans`
130
+ And I successfully run `kitchen list client-beans`
131
+ Then the stdout should match /^client-beans\s+.+\s+Set Up\Z/
132
+ When I run `kitchen verify client-beans`
133
+ Then the output should contain "Verify failed on instance <client-beans>"
134
+ And the exit status should not be 0
135
+ When I successfully run `kitchen list client-beans`
136
+ Then the stdout should match /^client-beans\s+.+\s+Set Up\Z/
137
+
138
+ @spawn
139
+ Scenario: Destroying a single instance
140
+ When I successfully run `kitchen create client-beans`
141
+ And I successfully run `kitchen list client-beans`
142
+ Then the stdout should match /^client-beans\s+.+\s+Created\Z/
143
+ When I run `kitchen destroy client-beans`
144
+ Then the output should contain "Finished destroying <client-beans>"
145
+ And the exit status should be 0
146
+ When I successfully run `kitchen list client-beans`
147
+ Then the stdout should match /^client-beans\s+.+\s+\<Not Created\>\Z/
148
+
149
+ @spawn
150
+ Scenario: Destroying a single instance that fails
151
+ Given a file named ".kitchen.local.yml" with:
152
+ """
153
+ ---
154
+ driver:
155
+ fail_destroy: true
156
+ """
157
+ When I successfully run `kitchen create client-beans`
158
+ And I successfully run `kitchen list client-beans`
159
+ Then the stdout should match /^client-beans\s+.+\s+Created\Z/
160
+ When I run `kitchen destroy client-beans`
161
+ Then the output should contain "Destroy failed on instance <client-beans>"
162
+ And the exit status should not be 0
163
+ When I successfully run `kitchen list client-beans`
164
+ Then the stdout should match /^client-beans\s+.+\s+Created\Z/