test-kitchen 3.5.1 → 3.7.0
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/Gemfile +15 -4
- data/lib/kitchen/cli.rb +1 -1
- data/lib/kitchen/command/diagnose.rb +1 -1
- data/lib/kitchen/config.rb +8 -8
- data/lib/kitchen/driver/ssh_base.rb +1 -1
- data/lib/kitchen/lifecycle_hook/local.rb +1 -1
- data/lib/kitchen/platform.rb +1 -1
- data/lib/kitchen/platform_filter.rb +1 -1
- data/lib/kitchen/provisioner/chef/common_sandbox.rb +5 -5
- data/lib/kitchen/provisioner/chef_base.rb +4 -3
- data/lib/kitchen/provisioner/chef_target.rb +130 -0
- data/lib/kitchen/transport/ssh.rb +2 -2
- data/lib/kitchen/transport/winrm.rb +3 -3
- data/lib/kitchen/version.rb +1 -1
- data/lib/kitchen.rb +1 -1
- data/test-kitchen.gemspec +1 -12
- metadata +4 -147
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78dcb8180d72d9ce32f3cf860d2dbb90d4c66ba2920cdf03252717bd4674a3f5
|
4
|
+
data.tar.gz: fc68fb60b6fa811425c3079a317946414cfca980198e4e668fbcc0e4c507841a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04e4ddf2b8c612db3a71ef7a7d720c5f586813f8ba3263415d56385f41e90b89663e2c4091fbbd03f60ff4c8922413988df086c71a93fbf7a396f903303b03d9
|
7
|
+
data.tar.gz: 93131c18cdc7889dd9c2e477c598a409ae4d1b47a865fdf4bba6ae54da6b48de59bfc1c7b57015b0dc011a311762e18b13c13955e8e45cc95f852807845d4073
|
data/Gemfile
CHANGED
@@ -1,15 +1,26 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
-
# Specify your gem"s dependencies in test-kitchen.gemspec
|
4
3
|
gemspec
|
5
4
|
|
5
|
+
group :test do
|
6
|
+
gem "rake"
|
7
|
+
gem "rb-readline"
|
8
|
+
gem "aruba", ">= 0.11", "< 3.0"
|
9
|
+
gem "countloc", "~> 0.4"
|
10
|
+
gem "cucumber", ">= 9.2", "< 10"
|
11
|
+
gem "fakefs", "~> 2.0"
|
12
|
+
gem "maruku", "~> 0.6"
|
13
|
+
gem "minitest", "~> 5.3", "< 6.0"
|
14
|
+
gem "mocha", "~> 2.0"
|
15
|
+
end
|
16
|
+
|
6
17
|
group :integration do
|
7
|
-
gem "
|
18
|
+
gem "chef-cli"
|
8
19
|
gem "kitchen-dokken"
|
9
20
|
gem "kitchen-inspec"
|
10
21
|
gem "kitchen-vagrant"
|
11
22
|
end
|
12
23
|
|
13
24
|
group :chefstyle do
|
14
|
-
gem "chefstyle", "2.2.
|
15
|
-
end
|
25
|
+
gem "chefstyle", "2.2.3"
|
26
|
+
end
|
data/lib/kitchen/cli.rb
CHANGED
data/lib/kitchen/config.rb
CHANGED
@@ -216,11 +216,11 @@ module Kitchen
|
|
216
216
|
/^win/i.match?(platform) ? "winrm" : Transport::DEFAULT_PLUGIN
|
217
217
|
end,
|
218
218
|
},
|
219
|
-
kitchen_root
|
220
|
-
test_base_path
|
221
|
-
log_level
|
222
|
-
log_overwrite
|
223
|
-
debug
|
219
|
+
kitchen_root:,
|
220
|
+
test_base_path:,
|
221
|
+
log_level:,
|
222
|
+
log_overwrite:,
|
223
|
+
debug:,
|
224
224
|
}
|
225
225
|
end
|
226
226
|
|
@@ -250,8 +250,8 @@ module Kitchen
|
|
250
250
|
driver: new_driver(suite, platform),
|
251
251
|
lifecycle_hooks: new_lifecycle_hooks(suite, platform, sf),
|
252
252
|
logger: new_instance_logger(suite, platform, index),
|
253
|
-
suite
|
254
|
-
platform
|
253
|
+
suite:,
|
254
|
+
platform:,
|
255
255
|
provisioner: new_provisioner(suite, platform),
|
256
256
|
transport: new_transport(suite, platform),
|
257
257
|
verifier: new_verifier(suite, platform),
|
@@ -275,7 +275,7 @@ module Kitchen
|
|
275
275
|
color: Color::COLORS[index % Color::COLORS.size].to_sym,
|
276
276
|
logdev: log_location,
|
277
277
|
level: Util.to_logger_level(log_level),
|
278
|
-
log_overwrite
|
278
|
+
log_overwrite:,
|
279
279
|
progname: name,
|
280
280
|
colorize: @colorize
|
281
281
|
)
|
@@ -299,7 +299,7 @@ module Kitchen
|
|
299
299
|
# @param options [Hash] configuration hash (default: `{}`)
|
300
300
|
# @api private
|
301
301
|
def wait_for_sshd(hostname, username = nil, options = {})
|
302
|
-
pseudo_state = { hostname:
|
302
|
+
pseudo_state = { hostname: }
|
303
303
|
pseudo_state[:username] = username if username
|
304
304
|
pseudo_state.merge!(options)
|
305
305
|
|
data/lib/kitchen/platform.rb
CHANGED
@@ -26,7 +26,7 @@ module Kitchen
|
|
26
26
|
# @author Baptiste Courtois <b.courtois@criteo.com>
|
27
27
|
class PlatformFilter
|
28
28
|
# Pattern used to determine whether a filter should be handled as a Regexp
|
29
|
-
REGEXP_LIKE_PATTERN = %r{^/(?<pattern>.*)/(?<options>[ix]*)$}
|
29
|
+
REGEXP_LIKE_PATTERN = %r{^/(?<pattern>.*)/(?<options>[ix]*)$}
|
30
30
|
|
31
31
|
# Converts platform filters into an array of PlatformFilter handling both strings and Regexp.
|
32
32
|
# A string "looks-like" a regexp if it starts by / and end by / + Regexp options i or x
|
@@ -287,9 +287,9 @@ module Kitchen
|
|
287
287
|
def update_dna_for_policyfile
|
288
288
|
policy = Chef::Policyfile.new(
|
289
289
|
policyfile, sandbox_path,
|
290
|
-
logger
|
290
|
+
logger:,
|
291
291
|
always_update: config[:always_update_cookbooks],
|
292
|
-
policy_group
|
292
|
+
policy_group:,
|
293
293
|
license: config[:chef_license]
|
294
294
|
)
|
295
295
|
Kitchen.mutex.synchronize do
|
@@ -297,7 +297,7 @@ module Kitchen
|
|
297
297
|
end
|
298
298
|
policy_name = JSON.parse(IO.read(policy.lockfile))["name"]
|
299
299
|
policy_group = config[:policy_group] || "local"
|
300
|
-
config[:attributes].merge(policy_name
|
300
|
+
config[:attributes].merge(policy_name:, policy_group:)
|
301
301
|
end
|
302
302
|
|
303
303
|
# Performs a Policyfile cookbook resolution inside a common mutex.
|
@@ -307,7 +307,7 @@ module Kitchen
|
|
307
307
|
Kitchen.mutex.synchronize do
|
308
308
|
Chef::Policyfile.new(
|
309
309
|
policyfile, sandbox_path,
|
310
|
-
logger
|
310
|
+
logger:,
|
311
311
|
always_update: config[:always_update_cookbooks],
|
312
312
|
policy_group: config[:policy_group],
|
313
313
|
license: config[:chef_license]
|
@@ -321,7 +321,7 @@ module Kitchen
|
|
321
321
|
def resolve_with_berkshelf
|
322
322
|
Kitchen.mutex.synchronize do
|
323
323
|
Chef::Berkshelf.new(berksfile, tmpbooks_dir,
|
324
|
-
logger
|
324
|
+
logger:,
|
325
325
|
always_update: config[:always_update_cookbooks]).resolve
|
326
326
|
end
|
327
327
|
end
|
@@ -244,6 +244,7 @@ module Kitchen
|
|
244
244
|
end
|
245
245
|
|
246
246
|
def doctor(state)
|
247
|
+
deprecated_config = instance.driver.instance_variable_get(:@deprecated_config)
|
247
248
|
deprecated_config.each do |attr, msg|
|
248
249
|
info("**** #{attr} deprecated\n#{msg}")
|
249
250
|
end
|
@@ -347,7 +348,7 @@ module Kitchen
|
|
347
348
|
omnibus_url: config[:chef_omnibus_url],
|
348
349
|
project: project.nil? ? nil : project[1],
|
349
350
|
install_flags: config[:chef_omnibus_install_options],
|
350
|
-
sudo_command
|
351
|
+
sudo_command:,
|
351
352
|
}.tap do |opts|
|
352
353
|
opts[:root] = config[:chef_omnibus_root] if config.key? :chef_omnibus_root
|
353
354
|
%i{install_msi_url http_proxy https_proxy}.each do |key|
|
@@ -482,10 +483,10 @@ module Kitchen
|
|
482
483
|
super
|
483
484
|
if File.exist?(policyfile)
|
484
485
|
debug("Policyfile found at #{policyfile}, using Policyfile to resolve cookbook dependencies")
|
485
|
-
Chef::Policyfile.load!(logger:
|
486
|
+
Chef::Policyfile.load!(logger:)
|
486
487
|
elsif File.exist?(berksfile)
|
487
488
|
debug("Berksfile found at #{berksfile}, using Berkshelf to resolve cookbook dependencies")
|
488
|
-
Chef::Berkshelf.load!(logger:
|
489
|
+
Chef::Berkshelf.load!(logger:)
|
489
490
|
end
|
490
491
|
end
|
491
492
|
|
@@ -0,0 +1,130 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Thomas Heinen (<thomas.heinen@gmail.com>)
|
3
|
+
#
|
4
|
+
# Copyright (C) 2023, Thomas Heinen
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
|
18
|
+
require_relative "chef_infra"
|
19
|
+
|
20
|
+
module Kitchen
|
21
|
+
module Provisioner
|
22
|
+
# Chef Target provisioner.
|
23
|
+
#
|
24
|
+
# @author Thomas Heinen <thomas.heinen@gmail.com>
|
25
|
+
class ChefTarget < ChefInfra
|
26
|
+
MIN_VERSION_REQUIRED = "19.0.0".freeze
|
27
|
+
class ChefVersionTooLow < UserError; end
|
28
|
+
class ChefClientNotFound < UserError; end
|
29
|
+
class RequireTrainTransport < UserError; end
|
30
|
+
|
31
|
+
default_config :install_strategy, "none"
|
32
|
+
default_config :sudo, true
|
33
|
+
|
34
|
+
def install_command; ""; end
|
35
|
+
def init_command; ""; end
|
36
|
+
def prepare_command; ""; end
|
37
|
+
|
38
|
+
def chef_args(client_rb_filename)
|
39
|
+
# Dummy execution to initialize and test remote connection
|
40
|
+
connection = instance.remote_exec("echo Connection established")
|
41
|
+
|
42
|
+
check_transport(connection)
|
43
|
+
check_local_chef_client
|
44
|
+
|
45
|
+
instance_name = instance.name
|
46
|
+
credentials_file = File.join(kitchen_basepath, ".kitchen", instance_name + ".ini")
|
47
|
+
File.write(credentials_file, connection.credentials_file)
|
48
|
+
|
49
|
+
super.concat([
|
50
|
+
"--target #{instance_name}",
|
51
|
+
"--credentials #{credentials_file}",
|
52
|
+
])
|
53
|
+
end
|
54
|
+
|
55
|
+
def check_transport(connection)
|
56
|
+
debug("Checking for active transport")
|
57
|
+
|
58
|
+
unless connection.respond_to? "train_uri"
|
59
|
+
error("Chef Target Mode provisioner requires a Train-based transport like kitchen-transport-train")
|
60
|
+
raise RequireTrainTransport.new("No Train transport")
|
61
|
+
end
|
62
|
+
|
63
|
+
debug("Kitchen transport responds to train_uri function call, as required")
|
64
|
+
end
|
65
|
+
|
66
|
+
def check_local_chef_client
|
67
|
+
debug("Checking for chef-client version")
|
68
|
+
|
69
|
+
begin
|
70
|
+
client_version = `chef-client -v`.chop.split(":")[-1]
|
71
|
+
rescue Errno::ENOENT => e
|
72
|
+
error("Error determining Chef Infra version: #{e.exception.message}")
|
73
|
+
raise ChefClientNotFound.new("Need chef-client installed locally")
|
74
|
+
end
|
75
|
+
|
76
|
+
minimum_version = Gem::Version.new(MIN_VERSION_REQUIRED)
|
77
|
+
installed_version = Gem::Version.new(client_version)
|
78
|
+
|
79
|
+
if installed_version < minimum_version
|
80
|
+
error("Found Chef Infra version #{installed_version}, but require #{minimum_version} for Target Mode")
|
81
|
+
raise ChefVersionTooLow.new("Need version #{MIN_VERSION_REQUIRED} or higher")
|
82
|
+
end
|
83
|
+
|
84
|
+
debug("Chef Infra found and version constraints match")
|
85
|
+
end
|
86
|
+
|
87
|
+
def kitchen_basepath
|
88
|
+
instance.driver.config[:kitchen_root]
|
89
|
+
end
|
90
|
+
|
91
|
+
def create_sandbox
|
92
|
+
super
|
93
|
+
|
94
|
+
# Change config.rb to point to the local sandbox path, not to /tmp/kitchen
|
95
|
+
config[:root_path] = sandbox_path
|
96
|
+
prepare_config_rb
|
97
|
+
end
|
98
|
+
|
99
|
+
def call(state)
|
100
|
+
remote_connection = instance.transport.connection(state)
|
101
|
+
|
102
|
+
config[:uploads].to_h.each do |locals, remote|
|
103
|
+
debug("Uploading #{Array(locals).join(", ")} to #{remote}")
|
104
|
+
remote_connection.upload(locals.to_s, remote)
|
105
|
+
end
|
106
|
+
|
107
|
+
# no installation
|
108
|
+
create_sandbox
|
109
|
+
# no prepare command
|
110
|
+
|
111
|
+
# Stream output to logger
|
112
|
+
require "open3"
|
113
|
+
Open3.popen2e(run_command) do |_stdin, output, _thread|
|
114
|
+
output.each { |line| logger << line }
|
115
|
+
end
|
116
|
+
|
117
|
+
info("Downloading files from #{instance.to_str}")
|
118
|
+
config[:downloads].to_h.each do |remotes, local|
|
119
|
+
debug("Downloading #{Array(remotes).join(", ")} to #{local}")
|
120
|
+
remote_connection.download(remotes, local)
|
121
|
+
end
|
122
|
+
debug("Download complete")
|
123
|
+
rescue Kitchen::Transport::TransportFailed => ex
|
124
|
+
raise ActionFailed, ex.message
|
125
|
+
ensure
|
126
|
+
cleanup_sandbox
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
@@ -225,7 +225,7 @@ module Kitchen
|
|
225
225
|
delay = 3
|
226
226
|
session(
|
227
227
|
retries: max_wait_until_ready / delay,
|
228
|
-
delay
|
228
|
+
delay:,
|
229
229
|
message: "Waiting for SSH service on #{hostname}:#{port}, " \
|
230
230
|
"retrying in #{delay} seconds"
|
231
231
|
)
|
@@ -468,7 +468,7 @@ module Kitchen
|
|
468
468
|
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
469
469
|
def connection_options(data)
|
470
470
|
opts = {
|
471
|
-
logger
|
471
|
+
logger:,
|
472
472
|
user_known_hosts_file: "/dev/null",
|
473
473
|
hostname: data[:hostname],
|
474
474
|
port: data[:port],
|
@@ -444,8 +444,8 @@ module Kitchen
|
|
444
444
|
opts = {
|
445
445
|
instance_name: instance.name,
|
446
446
|
kitchen_root: data[:kitchen_root],
|
447
|
-
logger
|
448
|
-
endpoint
|
447
|
+
logger:,
|
448
|
+
endpoint:,
|
449
449
|
user: data[:username],
|
450
450
|
password: data[:password],
|
451
451
|
rdp_port: data[:rdp_port],
|
@@ -457,7 +457,7 @@ module Kitchen
|
|
457
457
|
transport: data[:winrm_transport],
|
458
458
|
elevated: data[:elevated],
|
459
459
|
elevated_username: data[:elevated_username] || data[:username],
|
460
|
-
elevated_password
|
460
|
+
elevated_password:,
|
461
461
|
}
|
462
462
|
opts.merge!(additional_transport_args(data, opts[:transport]))
|
463
463
|
if opts[:transport].to_sym == :ssl && opts.key?(:client_cert) && opts.key?(:client_key)
|
data/lib/kitchen/version.rb
CHANGED
data/lib/kitchen.rb
CHANGED
data/test-kitchen.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |gem|
|
|
20
20
|
gem.executables = %w{kitchen}
|
21
21
|
gem.require_paths = ["lib"]
|
22
22
|
|
23
|
-
gem.required_ruby_version = ">=
|
23
|
+
gem.required_ruby_version = ">= 3.1"
|
24
24
|
|
25
25
|
gem.add_dependency "bcrypt_pbkdf", "~> 1.0" # ed25519 ssh key support
|
26
26
|
gem.add_dependency "chef-utils", ">= 16.4.35"
|
@@ -37,15 +37,4 @@ Gem::Specification.new do |gem|
|
|
37
37
|
# Required to run the Chef provisioner local license check for remote systems
|
38
38
|
# TK is not under Chef EULA
|
39
39
|
gem.add_dependency "license-acceptance", ">= 1.0.11", "< 3.0" # pinning until we can confirm 3+ works
|
40
|
-
|
41
|
-
gem.add_development_dependency "rake"
|
42
|
-
gem.add_development_dependency "rb-readline"
|
43
|
-
|
44
|
-
gem.add_development_dependency "aruba", ">= 0.11", "< 3.0"
|
45
|
-
gem.add_development_dependency "countloc", "~> 0.4"
|
46
|
-
gem.add_development_dependency "cucumber", ">= 2.1", "< 8.0"
|
47
|
-
gem.add_development_dependency "fakefs", "~> 2.0"
|
48
|
-
gem.add_development_dependency "maruku", "~> 0.6"
|
49
|
-
gem.add_development_dependency "minitest", "~> 5.3", "< 5.16"
|
50
|
-
gem.add_development_dependency "mocha", "~> 2.0"
|
51
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test-kitchen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fletcher Nichol
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcrypt_pbkdf
|
@@ -228,150 +228,6 @@ dependencies:
|
|
228
228
|
- - "<"
|
229
229
|
- !ruby/object:Gem::Version
|
230
230
|
version: '3.0'
|
231
|
-
- !ruby/object:Gem::Dependency
|
232
|
-
name: rake
|
233
|
-
requirement: !ruby/object:Gem::Requirement
|
234
|
-
requirements:
|
235
|
-
- - ">="
|
236
|
-
- !ruby/object:Gem::Version
|
237
|
-
version: '0'
|
238
|
-
type: :development
|
239
|
-
prerelease: false
|
240
|
-
version_requirements: !ruby/object:Gem::Requirement
|
241
|
-
requirements:
|
242
|
-
- - ">="
|
243
|
-
- !ruby/object:Gem::Version
|
244
|
-
version: '0'
|
245
|
-
- !ruby/object:Gem::Dependency
|
246
|
-
name: rb-readline
|
247
|
-
requirement: !ruby/object:Gem::Requirement
|
248
|
-
requirements:
|
249
|
-
- - ">="
|
250
|
-
- !ruby/object:Gem::Version
|
251
|
-
version: '0'
|
252
|
-
type: :development
|
253
|
-
prerelease: false
|
254
|
-
version_requirements: !ruby/object:Gem::Requirement
|
255
|
-
requirements:
|
256
|
-
- - ">="
|
257
|
-
- !ruby/object:Gem::Version
|
258
|
-
version: '0'
|
259
|
-
- !ruby/object:Gem::Dependency
|
260
|
-
name: aruba
|
261
|
-
requirement: !ruby/object:Gem::Requirement
|
262
|
-
requirements:
|
263
|
-
- - ">="
|
264
|
-
- !ruby/object:Gem::Version
|
265
|
-
version: '0.11'
|
266
|
-
- - "<"
|
267
|
-
- !ruby/object:Gem::Version
|
268
|
-
version: '3.0'
|
269
|
-
type: :development
|
270
|
-
prerelease: false
|
271
|
-
version_requirements: !ruby/object:Gem::Requirement
|
272
|
-
requirements:
|
273
|
-
- - ">="
|
274
|
-
- !ruby/object:Gem::Version
|
275
|
-
version: '0.11'
|
276
|
-
- - "<"
|
277
|
-
- !ruby/object:Gem::Version
|
278
|
-
version: '3.0'
|
279
|
-
- !ruby/object:Gem::Dependency
|
280
|
-
name: countloc
|
281
|
-
requirement: !ruby/object:Gem::Requirement
|
282
|
-
requirements:
|
283
|
-
- - "~>"
|
284
|
-
- !ruby/object:Gem::Version
|
285
|
-
version: '0.4'
|
286
|
-
type: :development
|
287
|
-
prerelease: false
|
288
|
-
version_requirements: !ruby/object:Gem::Requirement
|
289
|
-
requirements:
|
290
|
-
- - "~>"
|
291
|
-
- !ruby/object:Gem::Version
|
292
|
-
version: '0.4'
|
293
|
-
- !ruby/object:Gem::Dependency
|
294
|
-
name: cucumber
|
295
|
-
requirement: !ruby/object:Gem::Requirement
|
296
|
-
requirements:
|
297
|
-
- - ">="
|
298
|
-
- !ruby/object:Gem::Version
|
299
|
-
version: '2.1'
|
300
|
-
- - "<"
|
301
|
-
- !ruby/object:Gem::Version
|
302
|
-
version: '8.0'
|
303
|
-
type: :development
|
304
|
-
prerelease: false
|
305
|
-
version_requirements: !ruby/object:Gem::Requirement
|
306
|
-
requirements:
|
307
|
-
- - ">="
|
308
|
-
- !ruby/object:Gem::Version
|
309
|
-
version: '2.1'
|
310
|
-
- - "<"
|
311
|
-
- !ruby/object:Gem::Version
|
312
|
-
version: '8.0'
|
313
|
-
- !ruby/object:Gem::Dependency
|
314
|
-
name: fakefs
|
315
|
-
requirement: !ruby/object:Gem::Requirement
|
316
|
-
requirements:
|
317
|
-
- - "~>"
|
318
|
-
- !ruby/object:Gem::Version
|
319
|
-
version: '2.0'
|
320
|
-
type: :development
|
321
|
-
prerelease: false
|
322
|
-
version_requirements: !ruby/object:Gem::Requirement
|
323
|
-
requirements:
|
324
|
-
- - "~>"
|
325
|
-
- !ruby/object:Gem::Version
|
326
|
-
version: '2.0'
|
327
|
-
- !ruby/object:Gem::Dependency
|
328
|
-
name: maruku
|
329
|
-
requirement: !ruby/object:Gem::Requirement
|
330
|
-
requirements:
|
331
|
-
- - "~>"
|
332
|
-
- !ruby/object:Gem::Version
|
333
|
-
version: '0.6'
|
334
|
-
type: :development
|
335
|
-
prerelease: false
|
336
|
-
version_requirements: !ruby/object:Gem::Requirement
|
337
|
-
requirements:
|
338
|
-
- - "~>"
|
339
|
-
- !ruby/object:Gem::Version
|
340
|
-
version: '0.6'
|
341
|
-
- !ruby/object:Gem::Dependency
|
342
|
-
name: minitest
|
343
|
-
requirement: !ruby/object:Gem::Requirement
|
344
|
-
requirements:
|
345
|
-
- - "~>"
|
346
|
-
- !ruby/object:Gem::Version
|
347
|
-
version: '5.3'
|
348
|
-
- - "<"
|
349
|
-
- !ruby/object:Gem::Version
|
350
|
-
version: '5.16'
|
351
|
-
type: :development
|
352
|
-
prerelease: false
|
353
|
-
version_requirements: !ruby/object:Gem::Requirement
|
354
|
-
requirements:
|
355
|
-
- - "~>"
|
356
|
-
- !ruby/object:Gem::Version
|
357
|
-
version: '5.3'
|
358
|
-
- - "<"
|
359
|
-
- !ruby/object:Gem::Version
|
360
|
-
version: '5.16'
|
361
|
-
- !ruby/object:Gem::Dependency
|
362
|
-
name: mocha
|
363
|
-
requirement: !ruby/object:Gem::Requirement
|
364
|
-
requirements:
|
365
|
-
- - "~>"
|
366
|
-
- !ruby/object:Gem::Version
|
367
|
-
version: '2.0'
|
368
|
-
type: :development
|
369
|
-
prerelease: false
|
370
|
-
version_requirements: !ruby/object:Gem::Requirement
|
371
|
-
requirements:
|
372
|
-
- - "~>"
|
373
|
-
- !ruby/object:Gem::Version
|
374
|
-
version: '2.0'
|
375
231
|
description: Test Kitchen is an integration tool for developing and testing infrastructure
|
376
232
|
code and software on isolated target platforms.
|
377
233
|
email:
|
@@ -438,6 +294,7 @@ files:
|
|
438
294
|
- lib/kitchen/provisioner/chef_base.rb
|
439
295
|
- lib/kitchen/provisioner/chef_infra.rb
|
440
296
|
- lib/kitchen/provisioner/chef_solo.rb
|
297
|
+
- lib/kitchen/provisioner/chef_target.rb
|
441
298
|
- lib/kitchen/provisioner/chef_zero.rb
|
442
299
|
- lib/kitchen/provisioner/dummy.rb
|
443
300
|
- lib/kitchen/provisioner/shell.rb
|
@@ -500,7 +357,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
500
357
|
requirements:
|
501
358
|
- - ">="
|
502
359
|
- !ruby/object:Gem::Version
|
503
|
-
version: '
|
360
|
+
version: '3.1'
|
504
361
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
505
362
|
requirements:
|
506
363
|
- - ">="
|