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
data/lib/kitchen/logging.rb
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
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
|
-
module Kitchen
|
|
20
|
-
|
|
21
|
-
# Mixin module that delegates logging methods to a local `#logger`.
|
|
22
|
-
#
|
|
23
|
-
# @author Fletcher Nichol <fnichol@nichol.ca>
|
|
24
|
-
module Logging
|
|
25
|
-
|
|
26
|
-
class << self
|
|
27
|
-
|
|
28
|
-
private
|
|
29
|
-
|
|
30
|
-
# @api private
|
|
31
|
-
# @!macro logger_method
|
|
32
|
-
# @method $1($2)
|
|
33
|
-
# Log a message with severity of $1
|
|
34
|
-
# @param message_or_progname [#to_s] the message to log. In the block
|
|
35
|
-
# form, this is the progname to use in the log message.
|
|
36
|
-
# @yield evaluates to the message to log. This is not evaluated unless
|
|
37
|
-
# the logger's level is sufficient to log the message. This allows
|
|
38
|
-
# you to create potentially expensive logging messages that are
|
|
39
|
-
# only called when the logger is configured to show them.
|
|
40
|
-
# @return [nil,true] when the given severity is not high enough (for
|
|
41
|
-
# this particular logger), log no message, and return true
|
|
42
|
-
def logger_method(meth)
|
|
43
|
-
define_method(meth) do |*args|
|
|
44
|
-
logger.public_send(meth, *args)
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
logger_method :banner
|
|
50
|
-
logger_method :debug
|
|
51
|
-
logger_method :info
|
|
52
|
-
logger_method :warn
|
|
53
|
-
logger_method :error
|
|
54
|
-
logger_method :fatal
|
|
55
|
-
end
|
|
56
|
-
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
|
+
module Kitchen
|
|
20
|
+
|
|
21
|
+
# Mixin module that delegates logging methods to a local `#logger`.
|
|
22
|
+
#
|
|
23
|
+
# @author Fletcher Nichol <fnichol@nichol.ca>
|
|
24
|
+
module Logging
|
|
25
|
+
|
|
26
|
+
class << self
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
# @api private
|
|
31
|
+
# @!macro logger_method
|
|
32
|
+
# @method $1($2)
|
|
33
|
+
# Log a message with severity of $1
|
|
34
|
+
# @param message_or_progname [#to_s] the message to log. In the block
|
|
35
|
+
# form, this is the progname to use in the log message.
|
|
36
|
+
# @yield evaluates to the message to log. This is not evaluated unless
|
|
37
|
+
# the logger's level is sufficient to log the message. This allows
|
|
38
|
+
# you to create potentially expensive logging messages that are
|
|
39
|
+
# only called when the logger is configured to show them.
|
|
40
|
+
# @return [nil,true] when the given severity is not high enough (for
|
|
41
|
+
# this particular logger), log no message, and return true
|
|
42
|
+
def logger_method(meth)
|
|
43
|
+
define_method(meth) do |*args|
|
|
44
|
+
logger.public_send(meth, *args)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
logger_method :banner
|
|
50
|
+
logger_method :debug
|
|
51
|
+
logger_method :info
|
|
52
|
+
logger_method :warn
|
|
53
|
+
logger_method :error
|
|
54
|
+
logger_method :fatal
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -1,52 +1,52 @@
|
|
|
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
|
-
module Kitchen
|
|
20
|
-
|
|
21
|
-
# Value object to track a shell command that will be passed to Kernel.exec
|
|
22
|
-
# for execution.
|
|
23
|
-
#
|
|
24
|
-
# @author Fletcher Nichol <fnichol@nichol.ca>
|
|
25
|
-
class LoginCommand
|
|
26
|
-
|
|
27
|
-
# @return [String] login command
|
|
28
|
-
attr_reader :command
|
|
29
|
-
|
|
30
|
-
# @return [Array] array of arguments to the command
|
|
31
|
-
attr_reader :arguments
|
|
32
|
-
|
|
33
|
-
# @return [Hash] options hash, passed to `Kernel#exec`
|
|
34
|
-
attr_reader :options
|
|
35
|
-
|
|
36
|
-
# Constructs a new LoginCommand instance.
|
|
37
|
-
#
|
|
38
|
-
# @param command [String] command
|
|
39
|
-
# @param arguments [Array] array of arguments to the command
|
|
40
|
-
# @param options [Hash] options hash, passed to `Kernel#exec`
|
|
41
|
-
# @see http://www.ruby-doc.org/core-2.1.2/Kernel.html#method-i-exec
|
|
42
|
-
def initialize(command, arguments, options = {})
|
|
43
|
-
@command = command
|
|
44
|
-
@arguments = Array(arguments)
|
|
45
|
-
@options = options
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def exec_args
|
|
49
|
-
[command, *arguments, options]
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
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
|
+
module Kitchen
|
|
20
|
+
|
|
21
|
+
# Value object to track a shell command that will be passed to Kernel.exec
|
|
22
|
+
# for execution.
|
|
23
|
+
#
|
|
24
|
+
# @author Fletcher Nichol <fnichol@nichol.ca>
|
|
25
|
+
class LoginCommand
|
|
26
|
+
|
|
27
|
+
# @return [String] login command
|
|
28
|
+
attr_reader :command
|
|
29
|
+
|
|
30
|
+
# @return [Array] array of arguments to the command
|
|
31
|
+
attr_reader :arguments
|
|
32
|
+
|
|
33
|
+
# @return [Hash] options hash, passed to `Kernel#exec`
|
|
34
|
+
attr_reader :options
|
|
35
|
+
|
|
36
|
+
# Constructs a new LoginCommand instance.
|
|
37
|
+
#
|
|
38
|
+
# @param command [String] command
|
|
39
|
+
# @param arguments [Array] array of arguments to the command
|
|
40
|
+
# @param options [Hash] options hash, passed to `Kernel#exec`
|
|
41
|
+
# @see http://www.ruby-doc.org/core-2.1.2/Kernel.html#method-i-exec
|
|
42
|
+
def initialize(command, arguments, options = {})
|
|
43
|
+
@command = command
|
|
44
|
+
@arguments = Array(arguments)
|
|
45
|
+
@options = options
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def exec_args
|
|
49
|
+
[command, *arguments, options]
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -1,52 +1,52 @@
|
|
|
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
|
-
module Kitchen
|
|
20
|
-
|
|
21
|
-
# A rather insane and questionable class to quickly consume a metadata.rb
|
|
22
|
-
# file and return the cookbook name and version attributes.
|
|
23
|
-
#
|
|
24
|
-
# @see https://twitter.com/fnichol/status/281650077901144064
|
|
25
|
-
# @see https://gist.github.com/4343327
|
|
26
|
-
class MetadataChopper < Hash
|
|
27
|
-
|
|
28
|
-
# Return an Array containing the cookbook name and version attributes,
|
|
29
|
-
# or nil values if they could not be parsed.
|
|
30
|
-
#
|
|
31
|
-
# @param metadata_file [String] path to a metadata.rb file
|
|
32
|
-
# @return [Array<String>] array containing the cookbook name and version
|
|
33
|
-
# attributes or nil values if they could not be determined
|
|
34
|
-
def self.extract(metadata_file)
|
|
35
|
-
mc = new(File.expand_path(metadata_file))
|
|
36
|
-
[mc[:name], mc[:version]]
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# Creates a new instances and loads in the contents of the metdata.rb
|
|
40
|
-
# file. If you value your life, you may want to avoid reading the
|
|
41
|
-
# implementation.
|
|
42
|
-
#
|
|
43
|
-
# @param metadata_file [String] path to a metadata.rb file
|
|
44
|
-
def initialize(metadata_file)
|
|
45
|
-
instance_eval(IO.read(metadata_file), metadata_file)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def method_missing(meth, *args, &_block)
|
|
49
|
-
self[meth] = args.first
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
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
|
+
module Kitchen
|
|
20
|
+
|
|
21
|
+
# A rather insane and questionable class to quickly consume a metadata.rb
|
|
22
|
+
# file and return the cookbook name and version attributes.
|
|
23
|
+
#
|
|
24
|
+
# @see https://twitter.com/fnichol/status/281650077901144064
|
|
25
|
+
# @see https://gist.github.com/4343327
|
|
26
|
+
class MetadataChopper < Hash
|
|
27
|
+
|
|
28
|
+
# Return an Array containing the cookbook name and version attributes,
|
|
29
|
+
# or nil values if they could not be parsed.
|
|
30
|
+
#
|
|
31
|
+
# @param metadata_file [String] path to a metadata.rb file
|
|
32
|
+
# @return [Array<String>] array containing the cookbook name and version
|
|
33
|
+
# attributes or nil values if they could not be determined
|
|
34
|
+
def self.extract(metadata_file)
|
|
35
|
+
mc = new(File.expand_path(metadata_file))
|
|
36
|
+
[mc[:name], mc[:version]]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Creates a new instances and loads in the contents of the metdata.rb
|
|
40
|
+
# file. If you value your life, you may want to avoid reading the
|
|
41
|
+
# implementation.
|
|
42
|
+
#
|
|
43
|
+
# @param metadata_file [String] path to a metadata.rb file
|
|
44
|
+
def initialize(metadata_file)
|
|
45
|
+
instance_eval(IO.read(metadata_file), metadata_file)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def method_missing(meth, *args, &_block)
|
|
49
|
+
self[meth] = args.first
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
data/lib/kitchen/platform.rb
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
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
|
-
module Kitchen
|
|
20
|
-
|
|
21
|
-
# A target operating system environment in which convergence integration
|
|
22
|
-
# will take place. This may represent a specific operating system, version,
|
|
23
|
-
# and machine architecture.
|
|
24
|
-
#
|
|
25
|
-
# @author Fletcher Nichol <fnichol@nichol.ca>
|
|
26
|
-
class Platform
|
|
27
|
-
|
|
28
|
-
# @return [String] logical name of this platform
|
|
29
|
-
attr_reader :name
|
|
30
|
-
|
|
31
|
-
# @return [String] operating system type hint (default: `"unix"`)
|
|
32
|
-
attr_reader :os_type
|
|
33
|
-
|
|
34
|
-
# @return [String] shell command flavor hint (default: `"bourne"`)
|
|
35
|
-
attr_reader :shell_type
|
|
36
|
-
|
|
37
|
-
# Constructs a new platform.
|
|
38
|
-
#
|
|
39
|
-
# @param [Hash] options configuration for a new platform
|
|
40
|
-
# @option options [String] :name logical name of this platform
|
|
41
|
-
# (**Required**)
|
|
42
|
-
def initialize(options = {})
|
|
43
|
-
@name = options.fetch(:name) do
|
|
44
|
-
raise ClientError, "Platform#new requires option :name"
|
|
45
|
-
end
|
|
46
|
-
@os_type = options.fetch(:os_type) do
|
|
47
|
-
windows?(options) ? "windows" : "unix"
|
|
48
|
-
end
|
|
49
|
-
@shell_type = options.fetch(:shell_type) do
|
|
50
|
-
windows?(options) ? "powershell" : "bourne"
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def windows?(options)
|
|
55
|
-
@name.downcase =~ /^win/ || (
|
|
56
|
-
!options[:transport].nil? && options[:transport][:name] == "winrm"
|
|
57
|
-
)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# Returns a Hash of configuration and other useful diagnostic information.
|
|
61
|
-
#
|
|
62
|
-
# @return [Hash] a diagnostic hash
|
|
63
|
-
def diagnose
|
|
64
|
-
{ :os_type => os_type, :shell_type => shell_type }
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
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
|
+
module Kitchen
|
|
20
|
+
|
|
21
|
+
# A target operating system environment in which convergence integration
|
|
22
|
+
# will take place. This may represent a specific operating system, version,
|
|
23
|
+
# and machine architecture.
|
|
24
|
+
#
|
|
25
|
+
# @author Fletcher Nichol <fnichol@nichol.ca>
|
|
26
|
+
class Platform
|
|
27
|
+
|
|
28
|
+
# @return [String] logical name of this platform
|
|
29
|
+
attr_reader :name
|
|
30
|
+
|
|
31
|
+
# @return [String] operating system type hint (default: `"unix"`)
|
|
32
|
+
attr_reader :os_type
|
|
33
|
+
|
|
34
|
+
# @return [String] shell command flavor hint (default: `"bourne"`)
|
|
35
|
+
attr_reader :shell_type
|
|
36
|
+
|
|
37
|
+
# Constructs a new platform.
|
|
38
|
+
#
|
|
39
|
+
# @param [Hash] options configuration for a new platform
|
|
40
|
+
# @option options [String] :name logical name of this platform
|
|
41
|
+
# (**Required**)
|
|
42
|
+
def initialize(options = {})
|
|
43
|
+
@name = options.fetch(:name) do
|
|
44
|
+
raise ClientError, "Platform#new requires option :name"
|
|
45
|
+
end
|
|
46
|
+
@os_type = options.fetch(:os_type) do
|
|
47
|
+
windows?(options) ? "windows" : "unix"
|
|
48
|
+
end
|
|
49
|
+
@shell_type = options.fetch(:shell_type) do
|
|
50
|
+
windows?(options) ? "powershell" : "bourne"
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def windows?(options)
|
|
55
|
+
@name.downcase =~ /^win/ || (
|
|
56
|
+
!options[:transport].nil? && options[:transport][:name] == "winrm"
|
|
57
|
+
)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Returns a Hash of configuration and other useful diagnostic information.
|
|
61
|
+
#
|
|
62
|
+
# @return [Hash] a diagnostic hash
|
|
63
|
+
def diagnose
|
|
64
|
+
{ :os_type => os_type, :shell_type => shell_type }
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|