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,129 +1,129 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
|
-
#
|
|
3
|
-
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
|
4
|
-
#
|
|
5
|
-
# Copyright (C) 2013, Fletcher Nichol
|
|
6
|
-
#
|
|
7
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
-
# you may not use this file except in compliance with the License.
|
|
9
|
-
# You may obtain a copy of the License at
|
|
10
|
-
#
|
|
11
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
#
|
|
13
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
# See the License for the specific language governing permissions and
|
|
17
|
-
# limitations under the License.
|
|
18
|
-
|
|
19
|
-
require_relative "../spec_helper"
|
|
20
|
-
|
|
21
|
-
require "kitchen/errors"
|
|
22
|
-
require "kitchen/state_file"
|
|
23
|
-
require "kitchen/util"
|
|
24
|
-
|
|
25
|
-
class YamledState
|
|
26
|
-
attr_accessor :yoinks
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
describe Kitchen::StateFile do
|
|
30
|
-
|
|
31
|
-
let(:state_file) { Kitchen::StateFile.new("/tmp", "oftheunion") }
|
|
32
|
-
let(:file_name) { "/tmp/.kitchen/oftheunion.yml" }
|
|
33
|
-
|
|
34
|
-
before do
|
|
35
|
-
FakeFS.activate!
|
|
36
|
-
FileUtils.mkdir_p("/tmp")
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
after do
|
|
40
|
-
FakeFS.deactivate!
|
|
41
|
-
FakeFS::FileSystem.clear
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
describe "#read" do
|
|
45
|
-
|
|
46
|
-
it "returns an empty hash if the file does not exist" do
|
|
47
|
-
state_file.read.must_equal(Hash.new)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it "returns and empty hash if the file is zero length" do
|
|
51
|
-
stub_state_file!("")
|
|
52
|
-
|
|
53
|
-
state_file.read.must_equal(Hash.new)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
it "returns a Hash with symbolized keys from the state file" do
|
|
57
|
-
stub_state_file!
|
|
58
|
-
|
|
59
|
-
state_file.read.must_equal(
|
|
60
|
-
:cloud_id => 42,
|
|
61
|
-
:flavor => "extra_crispy"
|
|
62
|
-
)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
it "arbitrary objects aren't deserialized from state file" do
|
|
66
|
-
stub_state_file! <<-'YAML'.gsub(/^ {8}/, "")
|
|
67
|
-
--- !ruby/object:YamledState
|
|
68
|
-
yoinks: zoinks
|
|
69
|
-
YAML
|
|
70
|
-
|
|
71
|
-
state_file.read.class.wont_equal YamledState
|
|
72
|
-
state_file.read.class.must_equal Hash
|
|
73
|
-
state_file.read.must_equal(:yoinks => "zoinks")
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
it "raises a StateFileLoadError if the state file cannot be parsed" do
|
|
77
|
-
stub_state_file!("&*%^*")
|
|
78
|
-
|
|
79
|
-
proc { state_file.read }.must_raise Kitchen::StateFileLoadError
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
describe "#write" do
|
|
85
|
-
|
|
86
|
-
it "creates the directory path to the state file" do
|
|
87
|
-
File.directory?("/tmp/.kitchen").must_equal false
|
|
88
|
-
state_file.write({})
|
|
89
|
-
File.directory?("/tmp/.kitchen").must_equal true
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
it "writes a state file with stringified keys" do
|
|
93
|
-
state_file.write(:thekey => "thyself")
|
|
94
|
-
|
|
95
|
-
IO.read(file_name).split("\n").must_include "thekey: thyself"
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
describe "#destroy" do
|
|
100
|
-
|
|
101
|
-
it "executes if no file exists" do
|
|
102
|
-
File.exist?(file_name).must_equal false
|
|
103
|
-
state_file.destroy
|
|
104
|
-
File.exist?(file_name).must_equal false
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
it "deletes the state file" do
|
|
108
|
-
stub_state_file!
|
|
109
|
-
state_file.destroy
|
|
110
|
-
|
|
111
|
-
File.exist?(file_name).must_equal false
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
private
|
|
116
|
-
|
|
117
|
-
def stub_state_file!(yaml_string = nil)
|
|
118
|
-
if yaml_string.nil?
|
|
119
|
-
yaml_string = <<-'YAML'.gsub(/^ {8}/, "")
|
|
120
|
-
---
|
|
121
|
-
cloud_id: 42
|
|
122
|
-
flavor: extra_crispy
|
|
123
|
-
YAML
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
FileUtils.mkdir_p(File.dirname(file_name))
|
|
127
|
-
File.open(file_name, "wb") { |f| f.write(yaml_string) }
|
|
128
|
-
end
|
|
129
|
-
end
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
|
4
|
+
#
|
|
5
|
+
# Copyright (C) 2013, Fletcher Nichol
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
|
|
19
|
+
require_relative "../spec_helper"
|
|
20
|
+
|
|
21
|
+
require "kitchen/errors"
|
|
22
|
+
require "kitchen/state_file"
|
|
23
|
+
require "kitchen/util"
|
|
24
|
+
|
|
25
|
+
class YamledState
|
|
26
|
+
attr_accessor :yoinks
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe Kitchen::StateFile do
|
|
30
|
+
|
|
31
|
+
let(:state_file) { Kitchen::StateFile.new("/tmp", "oftheunion") }
|
|
32
|
+
let(:file_name) { "/tmp/.kitchen/oftheunion.yml" }
|
|
33
|
+
|
|
34
|
+
before do
|
|
35
|
+
FakeFS.activate!
|
|
36
|
+
FileUtils.mkdir_p("/tmp")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
after do
|
|
40
|
+
FakeFS.deactivate!
|
|
41
|
+
FakeFS::FileSystem.clear
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe "#read" do
|
|
45
|
+
|
|
46
|
+
it "returns an empty hash if the file does not exist" do
|
|
47
|
+
state_file.read.must_equal(Hash.new)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "returns and empty hash if the file is zero length" do
|
|
51
|
+
stub_state_file!("")
|
|
52
|
+
|
|
53
|
+
state_file.read.must_equal(Hash.new)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "returns a Hash with symbolized keys from the state file" do
|
|
57
|
+
stub_state_file!
|
|
58
|
+
|
|
59
|
+
state_file.read.must_equal(
|
|
60
|
+
:cloud_id => 42,
|
|
61
|
+
:flavor => "extra_crispy"
|
|
62
|
+
)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "arbitrary objects aren't deserialized from state file" do
|
|
66
|
+
stub_state_file! <<-'YAML'.gsub(/^ {8}/, "")
|
|
67
|
+
--- !ruby/object:YamledState
|
|
68
|
+
yoinks: zoinks
|
|
69
|
+
YAML
|
|
70
|
+
|
|
71
|
+
state_file.read.class.wont_equal YamledState
|
|
72
|
+
state_file.read.class.must_equal Hash
|
|
73
|
+
state_file.read.must_equal(:yoinks => "zoinks")
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "raises a StateFileLoadError if the state file cannot be parsed" do
|
|
77
|
+
stub_state_file!("&*%^*")
|
|
78
|
+
|
|
79
|
+
proc { state_file.read }.must_raise Kitchen::StateFileLoadError
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
describe "#write" do
|
|
85
|
+
|
|
86
|
+
it "creates the directory path to the state file" do
|
|
87
|
+
File.directory?("/tmp/.kitchen").must_equal false
|
|
88
|
+
state_file.write({})
|
|
89
|
+
File.directory?("/tmp/.kitchen").must_equal true
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "writes a state file with stringified keys" do
|
|
93
|
+
state_file.write(:thekey => "thyself")
|
|
94
|
+
|
|
95
|
+
IO.read(file_name).split("\n").must_include "thekey: thyself"
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
describe "#destroy" do
|
|
100
|
+
|
|
101
|
+
it "executes if no file exists" do
|
|
102
|
+
File.exist?(file_name).must_equal false
|
|
103
|
+
state_file.destroy
|
|
104
|
+
File.exist?(file_name).must_equal false
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "deletes the state file" do
|
|
108
|
+
stub_state_file!
|
|
109
|
+
state_file.destroy
|
|
110
|
+
|
|
111
|
+
File.exist?(file_name).must_equal false
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
private
|
|
116
|
+
|
|
117
|
+
def stub_state_file!(yaml_string = nil)
|
|
118
|
+
if yaml_string.nil?
|
|
119
|
+
yaml_string = <<-'YAML'.gsub(/^ {8}/, "")
|
|
120
|
+
---
|
|
121
|
+
cloud_id: 42
|
|
122
|
+
flavor: extra_crispy
|
|
123
|
+
YAML
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
FileUtils.mkdir_p(File.dirname(file_name))
|
|
127
|
+
File.open(file_name, "wb") { |f| f.write(yaml_string) }
|
|
128
|
+
end
|
|
129
|
+
end
|
data/spec/kitchen/suite_spec.rb
CHANGED
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
|
-
#
|
|
3
|
-
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
|
4
|
-
#
|
|
5
|
-
# Copyright (C) 2012, Fletcher Nichol
|
|
6
|
-
#
|
|
7
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
-
# you may not use this file except in compliance with the License.
|
|
9
|
-
# You may obtain a copy of the License at
|
|
10
|
-
#
|
|
11
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
#
|
|
13
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
# See the License for the specific language governing permissions and
|
|
17
|
-
# limitations under the License.
|
|
18
|
-
|
|
19
|
-
require_relative "../spec_helper"
|
|
20
|
-
|
|
21
|
-
require "kitchen/errors"
|
|
22
|
-
require "kitchen/suite"
|
|
23
|
-
|
|
24
|
-
describe Kitchen::Suite do
|
|
25
|
-
|
|
26
|
-
let(:opts) do
|
|
27
|
-
{
|
|
28
|
-
:name => "suitezy",
|
|
29
|
-
:includes => %w[testbuntu testcent],
|
|
30
|
-
:excludes => %w[prodbuntu]
|
|
31
|
-
}
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
let(:suite) { Kitchen::Suite.new(opts) }
|
|
35
|
-
|
|
36
|
-
it "returns the name" do
|
|
37
|
-
suite.name.must_equal "suitezy"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it "raises an ArgumentError if name is missing" do
|
|
41
|
-
opts.delete(:name)
|
|
42
|
-
proc { Kitchen::Suite.new(opts) }.must_raise Kitchen::ClientError
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it "returns the includes" do
|
|
46
|
-
suite.includes.must_equal %w[testbuntu testcent]
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
it "returns an empty Array when includes not given" do
|
|
50
|
-
opts.delete(:includes)
|
|
51
|
-
suite.includes.must_equal []
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it "returns the excludes" do
|
|
55
|
-
suite.excludes.must_equal %w[prodbuntu]
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it "returns an empty Array when excludes not given" do
|
|
59
|
-
opts.delete(:excludes)
|
|
60
|
-
suite.excludes.must_equal []
|
|
61
|
-
end
|
|
62
|
-
end
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
|
4
|
+
#
|
|
5
|
+
# Copyright (C) 2012, Fletcher Nichol
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
|
|
19
|
+
require_relative "../spec_helper"
|
|
20
|
+
|
|
21
|
+
require "kitchen/errors"
|
|
22
|
+
require "kitchen/suite"
|
|
23
|
+
|
|
24
|
+
describe Kitchen::Suite do
|
|
25
|
+
|
|
26
|
+
let(:opts) do
|
|
27
|
+
{
|
|
28
|
+
:name => "suitezy",
|
|
29
|
+
:includes => %w[testbuntu testcent],
|
|
30
|
+
:excludes => %w[prodbuntu]
|
|
31
|
+
}
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
let(:suite) { Kitchen::Suite.new(opts) }
|
|
35
|
+
|
|
36
|
+
it "returns the name" do
|
|
37
|
+
suite.name.must_equal "suitezy"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "raises an ArgumentError if name is missing" do
|
|
41
|
+
opts.delete(:name)
|
|
42
|
+
proc { Kitchen::Suite.new(opts) }.must_raise Kitchen::ClientError
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "returns the includes" do
|
|
46
|
+
suite.includes.must_equal %w[testbuntu testcent]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "returns an empty Array when includes not given" do
|
|
50
|
+
opts.delete(:includes)
|
|
51
|
+
suite.includes.must_equal []
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "returns the excludes" do
|
|
55
|
+
suite.excludes.must_equal %w[prodbuntu]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "returns an empty Array when excludes not given" do
|
|
59
|
+
opts.delete(:excludes)
|
|
60
|
+
suite.excludes.must_equal []
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
|
-
#
|
|
3
|
-
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
|
4
|
-
#
|
|
5
|
-
# Copyright (C) 2015, Fletcher Nichol
|
|
6
|
-
#
|
|
7
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
-
# you may not use this file except in compliance with the License.
|
|
9
|
-
# You may obtain a copy of the License at
|
|
10
|
-
#
|
|
11
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
#
|
|
13
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
# See the License for the specific language governing permissions and
|
|
17
|
-
# limitations under the License.
|
|
18
|
-
|
|
19
|
-
require_relative "../../spec_helper"
|
|
20
|
-
|
|
21
|
-
require "kitchen"
|
|
22
|
-
|
|
23
|
-
describe Kitchen::Transport::Base do
|
|
24
|
-
|
|
25
|
-
let(:logged_output) { StringIO.new }
|
|
26
|
-
let(:logger) { Logger.new(logged_output) }
|
|
27
|
-
let(:config) { Hash.new }
|
|
28
|
-
|
|
29
|
-
let(:instance) do
|
|
30
|
-
stub(:name => "coolbeans", :logger => logger)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
let(:transport) do
|
|
34
|
-
Kitchen::Transport::Base.new(config).finalize_config!(instance)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it "has an #connection method which raises a ClientError" do
|
|
38
|
-
proc { transport.connection({}) }.must_raise Kitchen::ClientError
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
describe "#logger" do
|
|
42
|
-
|
|
43
|
-
before { @klog = Kitchen.logger }
|
|
44
|
-
after { Kitchen.logger = @klog }
|
|
45
|
-
|
|
46
|
-
it "returns the instance's logger" do
|
|
47
|
-
transport.send(:logger).must_equal logger
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it "returns the default logger if instance's logger is not set" do
|
|
51
|
-
transport = Kitchen::Transport::Base.new(config)
|
|
52
|
-
Kitchen.logger = "yep"
|
|
53
|
-
|
|
54
|
-
transport.send(:logger).must_equal Kitchen.logger
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
describe Kitchen::Transport::Base::Connection do
|
|
60
|
-
|
|
61
|
-
let(:logged_output) { StringIO.new }
|
|
62
|
-
let(:logger) { Logger.new(logged_output) }
|
|
63
|
-
let(:options) { { :logger => logger } }
|
|
64
|
-
|
|
65
|
-
let(:connection) do
|
|
66
|
-
Kitchen::Transport::Base::Connection.new(options)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
it "has a #close method that does nothing" do
|
|
70
|
-
connection.close.must_be_nil
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it "has an #execute method which raises a ClientError" do
|
|
74
|
-
proc { connection.execute("boo") }.must_raise Kitchen::ClientError
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it "has a #login_command method which raises an ActionFailed" do
|
|
78
|
-
proc { connection.login_command }.must_raise Kitchen::ActionFailed
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it "has an #upload method which raises a ClientError" do
|
|
82
|
-
proc { connection.upload(["file"], "/path/to") }.
|
|
83
|
-
must_raise Kitchen::ClientError
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
it "has a #wait_until_ready method that does nothing" do
|
|
87
|
-
connection.wait_until_ready.must_be_nil
|
|
88
|
-
end
|
|
89
|
-
end
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
|
4
|
+
#
|
|
5
|
+
# Copyright (C) 2015, Fletcher Nichol
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
|
|
19
|
+
require_relative "../../spec_helper"
|
|
20
|
+
|
|
21
|
+
require "kitchen"
|
|
22
|
+
|
|
23
|
+
describe Kitchen::Transport::Base do
|
|
24
|
+
|
|
25
|
+
let(:logged_output) { StringIO.new }
|
|
26
|
+
let(:logger) { Logger.new(logged_output) }
|
|
27
|
+
let(:config) { Hash.new }
|
|
28
|
+
|
|
29
|
+
let(:instance) do
|
|
30
|
+
stub(:name => "coolbeans", :logger => logger)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
let(:transport) do
|
|
34
|
+
Kitchen::Transport::Base.new(config).finalize_config!(instance)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "has an #connection method which raises a ClientError" do
|
|
38
|
+
proc { transport.connection({}) }.must_raise Kitchen::ClientError
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "#logger" do
|
|
42
|
+
|
|
43
|
+
before { @klog = Kitchen.logger }
|
|
44
|
+
after { Kitchen.logger = @klog }
|
|
45
|
+
|
|
46
|
+
it "returns the instance's logger" do
|
|
47
|
+
transport.send(:logger).must_equal logger
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "returns the default logger if instance's logger is not set" do
|
|
51
|
+
transport = Kitchen::Transport::Base.new(config)
|
|
52
|
+
Kitchen.logger = "yep"
|
|
53
|
+
|
|
54
|
+
transport.send(:logger).must_equal Kitchen.logger
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
describe Kitchen::Transport::Base::Connection do
|
|
60
|
+
|
|
61
|
+
let(:logged_output) { StringIO.new }
|
|
62
|
+
let(:logger) { Logger.new(logged_output) }
|
|
63
|
+
let(:options) { { :logger => logger } }
|
|
64
|
+
|
|
65
|
+
let(:connection) do
|
|
66
|
+
Kitchen::Transport::Base::Connection.new(options)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "has a #close method that does nothing" do
|
|
70
|
+
connection.close.must_be_nil
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "has an #execute method which raises a ClientError" do
|
|
74
|
+
proc { connection.execute("boo") }.must_raise Kitchen::ClientError
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "has a #login_command method which raises an ActionFailed" do
|
|
78
|
+
proc { connection.login_command }.must_raise Kitchen::ActionFailed
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "has an #upload method which raises a ClientError" do
|
|
82
|
+
proc { connection.upload(["file"], "/path/to") }.
|
|
83
|
+
must_raise Kitchen::ClientError
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "has a #wait_until_ready method that does nothing" do
|
|
87
|
+
connection.wait_until_ready.must_be_nil
|
|
88
|
+
end
|
|
89
|
+
end
|