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,77 +1,77 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
|
-
#
|
|
3
|
-
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
|
4
|
-
#
|
|
5
|
-
# Copyright (C) 2014, 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
|
-
require "base64"
|
|
21
|
-
require "stringio"
|
|
22
|
-
require "securerandom"
|
|
23
|
-
|
|
24
|
-
require "kitchen/base64_stream"
|
|
25
|
-
|
|
26
|
-
describe Kitchen::Base64Stream do
|
|
27
|
-
|
|
28
|
-
SHORT_BODIES = %w[you test wakkawakkawakka]
|
|
29
|
-
|
|
30
|
-
describe ".strict_encode" do
|
|
31
|
-
|
|
32
|
-
SHORT_BODIES.each do |body|
|
|
33
|
-
it "encodes short payload ('#{body}') from input IO to output IO" do
|
|
34
|
-
output = StringIO.new("", "wb")
|
|
35
|
-
StringIO.open(body) do |input|
|
|
36
|
-
Kitchen::Base64Stream.strict_encode(input, output)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
output.string.must_equal Base64.strict_encode64(body)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it "encodes a large payload from input IO to output IO" do
|
|
44
|
-
body = SecureRandom.random_bytes(1048576 * 8)
|
|
45
|
-
output = StringIO.new("", "wb")
|
|
46
|
-
StringIO.open(body) do |input|
|
|
47
|
-
Kitchen::Base64Stream.strict_encode(input, output)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
output.string.must_equal Base64.strict_encode64(body)
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
describe ".strict_decode" do
|
|
55
|
-
|
|
56
|
-
SHORT_BODIES.map { |b| Base64.strict_encode64(b) }.each do |body|
|
|
57
|
-
it "decodes short payload ('#{body}') from input IO to output IO" do
|
|
58
|
-
output = StringIO.new("", "wb")
|
|
59
|
-
StringIO.open(body) do |input|
|
|
60
|
-
Kitchen::Base64Stream.strict_decode(input, output)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
output.string.must_equal Base64.strict_decode64(body)
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
it "decodes a large payload from input IO to output IO" do
|
|
68
|
-
body = Base64.strict_encode64(SecureRandom.hex(1048576 * 8))
|
|
69
|
-
output = StringIO.new("", "wb")
|
|
70
|
-
StringIO.open(body) do |input|
|
|
71
|
-
Kitchen::Base64Stream.strict_decode(input, output)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
output.string.must_equal Base64.strict_decode64(body)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
|
4
|
+
#
|
|
5
|
+
# Copyright (C) 2014, 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
|
+
require "base64"
|
|
21
|
+
require "stringio"
|
|
22
|
+
require "securerandom"
|
|
23
|
+
|
|
24
|
+
require "kitchen/base64_stream"
|
|
25
|
+
|
|
26
|
+
describe Kitchen::Base64Stream do
|
|
27
|
+
|
|
28
|
+
SHORT_BODIES = %w[you test wakkawakkawakka]
|
|
29
|
+
|
|
30
|
+
describe ".strict_encode" do
|
|
31
|
+
|
|
32
|
+
SHORT_BODIES.each do |body|
|
|
33
|
+
it "encodes short payload ('#{body}') from input IO to output IO" do
|
|
34
|
+
output = StringIO.new("", "wb")
|
|
35
|
+
StringIO.open(body) do |input|
|
|
36
|
+
Kitchen::Base64Stream.strict_encode(input, output)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
output.string.must_equal Base64.strict_encode64(body)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "encodes a large payload from input IO to output IO" do
|
|
44
|
+
body = SecureRandom.random_bytes(1048576 * 8)
|
|
45
|
+
output = StringIO.new("", "wb")
|
|
46
|
+
StringIO.open(body) do |input|
|
|
47
|
+
Kitchen::Base64Stream.strict_encode(input, output)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
output.string.must_equal Base64.strict_encode64(body)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe ".strict_decode" do
|
|
55
|
+
|
|
56
|
+
SHORT_BODIES.map { |b| Base64.strict_encode64(b) }.each do |body|
|
|
57
|
+
it "decodes short payload ('#{body}') from input IO to output IO" do
|
|
58
|
+
output = StringIO.new("", "wb")
|
|
59
|
+
StringIO.open(body) do |input|
|
|
60
|
+
Kitchen::Base64Stream.strict_decode(input, output)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
output.string.must_equal Base64.strict_decode64(body)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "decodes a large payload from input IO to output IO" do
|
|
68
|
+
body = Base64.strict_encode64(SecureRandom.hex(1048576 * 8))
|
|
69
|
+
output = StringIO.new("", "wb")
|
|
70
|
+
StringIO.open(body) do |input|
|
|
71
|
+
Kitchen::Base64Stream.strict_decode(input, output)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
output.string.must_equal Base64.strict_decode64(body)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
data/spec/kitchen/cli_spec.rb
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
|
-
#
|
|
3
|
-
# Author:: Tyler Ball (<tball@chef.io>)
|
|
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/cli"
|
|
22
|
-
require "kitchen"
|
|
23
|
-
|
|
24
|
-
module Kitchen
|
|
25
|
-
describe CLI do
|
|
26
|
-
|
|
27
|
-
let(:cli) { CLI.new }
|
|
28
|
-
|
|
29
|
-
before do
|
|
30
|
-
@orig_env = ENV.to_hash
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
after do
|
|
34
|
-
ENV.clear
|
|
35
|
-
@orig_env.each do |k, v|
|
|
36
|
-
ENV[k] = v
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
describe "#initialize" do
|
|
41
|
-
it "does not set logging config when environment variables are missing" do
|
|
42
|
-
assert_equal Kitchen::DEFAULT_LOG_LEVEL, cli.config.log_level
|
|
43
|
-
assert_equal Kitchen::DEFAULT_LOG_OVERWRITE, cli.config.log_overwrite
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "does set logging config when environment variables are present" do
|
|
47
|
-
ENV["KITCHEN_LOG"] = "warn"
|
|
48
|
-
ENV["KITCHEN_LOG_OVERWRITE"] = "false"
|
|
49
|
-
|
|
50
|
-
assert_equal :warn, cli.config.log_level
|
|
51
|
-
assert_equal false, cli.config.log_overwrite
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
end
|
|
56
|
-
end
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Author:: Tyler Ball (<tball@chef.io>)
|
|
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/cli"
|
|
22
|
+
require "kitchen"
|
|
23
|
+
|
|
24
|
+
module Kitchen
|
|
25
|
+
describe CLI do
|
|
26
|
+
|
|
27
|
+
let(:cli) { CLI.new }
|
|
28
|
+
|
|
29
|
+
before do
|
|
30
|
+
@orig_env = ENV.to_hash
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
after do
|
|
34
|
+
ENV.clear
|
|
35
|
+
@orig_env.each do |k, v|
|
|
36
|
+
ENV[k] = v
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe "#initialize" do
|
|
41
|
+
it "does not set logging config when environment variables are missing" do
|
|
42
|
+
assert_equal Kitchen::DEFAULT_LOG_LEVEL, cli.config.log_level
|
|
43
|
+
assert_equal Kitchen::DEFAULT_LOG_OVERWRITE, cli.config.log_overwrite
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "does set logging config when environment variables are present" do
|
|
47
|
+
ENV["KITCHEN_LOG"] = "warn"
|
|
48
|
+
ENV["KITCHEN_LOG_OVERWRITE"] = "false"
|
|
49
|
+
|
|
50
|
+
assert_equal :warn, cli.config.log_level
|
|
51
|
+
assert_equal false, cli.config.log_overwrite
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -1,80 +1,80 @@
|
|
|
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
|
-
require "ostruct"
|
|
21
|
-
|
|
22
|
-
require "kitchen/collection"
|
|
23
|
-
|
|
24
|
-
describe Kitchen::Collection do
|
|
25
|
-
|
|
26
|
-
let(:collection) do
|
|
27
|
-
Kitchen::Collection.new([
|
|
28
|
-
obj("one"), obj("two", "a"), obj("two", "b"), obj("three")
|
|
29
|
-
])
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it "transparently wraps an Array" do
|
|
33
|
-
collection.must_be_instance_of Array
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
describe "#get" do
|
|
37
|
-
|
|
38
|
-
it "returns a single object by its name" do
|
|
39
|
-
collection.get("three").must_equal obj("three")
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it "returns the first occurance of an object by its name" do
|
|
43
|
-
collection.get("two").must_equal obj("two", "a")
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "returns nil if an object cannot be found by its name" do
|
|
47
|
-
collection.get("nope").must_be_nil
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
describe "#get_all" do
|
|
52
|
-
|
|
53
|
-
it "returns a Collection of objects whose name matches the regex" do
|
|
54
|
-
result = collection.get_all(/(one|three)/)
|
|
55
|
-
result.size.must_equal 2
|
|
56
|
-
result[0].must_equal obj("one")
|
|
57
|
-
result[1].must_equal obj("three")
|
|
58
|
-
result.get_all(/one/).size.must_equal 1
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it "returns an empty Collection if no matches are found" do
|
|
62
|
-
result = collection.get_all(/noppa/)
|
|
63
|
-
result.must_equal []
|
|
64
|
-
result.get("nahuh").must_be_nil
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
describe "#as_name" do
|
|
69
|
-
|
|
70
|
-
it "returns an Array of names as strings" do
|
|
71
|
-
collection.as_names.must_equal %w[one two two three]
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
private
|
|
76
|
-
|
|
77
|
-
def obj(name, extra = nil)
|
|
78
|
-
OpenStruct.new(:name => name, :extra => extra)
|
|
79
|
-
end
|
|
80
|
-
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
|
+
require "ostruct"
|
|
21
|
+
|
|
22
|
+
require "kitchen/collection"
|
|
23
|
+
|
|
24
|
+
describe Kitchen::Collection do
|
|
25
|
+
|
|
26
|
+
let(:collection) do
|
|
27
|
+
Kitchen::Collection.new([
|
|
28
|
+
obj("one"), obj("two", "a"), obj("two", "b"), obj("three")
|
|
29
|
+
])
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "transparently wraps an Array" do
|
|
33
|
+
collection.must_be_instance_of Array
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe "#get" do
|
|
37
|
+
|
|
38
|
+
it "returns a single object by its name" do
|
|
39
|
+
collection.get("three").must_equal obj("three")
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "returns the first occurance of an object by its name" do
|
|
43
|
+
collection.get("two").must_equal obj("two", "a")
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "returns nil if an object cannot be found by its name" do
|
|
47
|
+
collection.get("nope").must_be_nil
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
describe "#get_all" do
|
|
52
|
+
|
|
53
|
+
it "returns a Collection of objects whose name matches the regex" do
|
|
54
|
+
result = collection.get_all(/(one|three)/)
|
|
55
|
+
result.size.must_equal 2
|
|
56
|
+
result[0].must_equal obj("one")
|
|
57
|
+
result[1].must_equal obj("three")
|
|
58
|
+
result.get_all(/one/).size.must_equal 1
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "returns an empty Collection if no matches are found" do
|
|
62
|
+
result = collection.get_all(/noppa/)
|
|
63
|
+
result.must_equal []
|
|
64
|
+
result.get("nahuh").must_be_nil
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "#as_name" do
|
|
69
|
+
|
|
70
|
+
it "returns an Array of names as strings" do
|
|
71
|
+
collection.as_names.must_equal %w[one two two three]
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
private
|
|
76
|
+
|
|
77
|
+
def obj(name, extra = nil)
|
|
78
|
+
OpenStruct.new(:name => name, :extra => extra)
|
|
79
|
+
end
|
|
80
|
+
end
|
data/spec/kitchen/color_spec.rb
CHANGED
|
@@ -1,54 +1,54 @@
|
|
|
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/color"
|
|
22
|
-
|
|
23
|
-
describe Kitchen::Color do
|
|
24
|
-
|
|
25
|
-
describe ".escape" do
|
|
26
|
-
|
|
27
|
-
it "returns an empty string if name is nil" do
|
|
28
|
-
Kitchen::Color.escape(nil).must_equal ""
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it "returns an empty string if name is not in the ANSI hash" do
|
|
32
|
-
Kitchen::Color.escape(:puce).must_equal ""
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it "returns an ansi escape sequence string for cyan" do
|
|
36
|
-
Kitchen::Color.escape(:cyan).must_equal "\e[36m"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it "returns an ansi escape sequence string for reset" do
|
|
40
|
-
Kitchen::Color.escape(:reset).must_equal "\e[0m"
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
describe ".colorize" do
|
|
45
|
-
|
|
46
|
-
it "returns an ansi escaped string colored yellow" do
|
|
47
|
-
Kitchen::Color.colorize("hello", :yellow).must_equal "\e[33mhello\e[0m"
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it "returns an unescaped string if color is not in the ANSI hash" do
|
|
51
|
-
Kitchen::Color.colorize("double", :rainbow).must_equal "double"
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
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/color"
|
|
22
|
+
|
|
23
|
+
describe Kitchen::Color do
|
|
24
|
+
|
|
25
|
+
describe ".escape" do
|
|
26
|
+
|
|
27
|
+
it "returns an empty string if name is nil" do
|
|
28
|
+
Kitchen::Color.escape(nil).must_equal ""
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "returns an empty string if name is not in the ANSI hash" do
|
|
32
|
+
Kitchen::Color.escape(:puce).must_equal ""
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "returns an ansi escape sequence string for cyan" do
|
|
36
|
+
Kitchen::Color.escape(:cyan).must_equal "\e[36m"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "returns an ansi escape sequence string for reset" do
|
|
40
|
+
Kitchen::Color.escape(:reset).must_equal "\e[0m"
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe ".colorize" do
|
|
45
|
+
|
|
46
|
+
it "returns an ansi escaped string colored yellow" do
|
|
47
|
+
Kitchen::Color.colorize("hello", :yellow).must_equal "\e[33mhello\e[0m"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "returns an unescaped string if color is not in the ANSI hash" do
|
|
51
|
+
Kitchen::Color.colorize("double", :rainbow).must_equal "double"
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|