test-kitchen 1.24.0 → 1.25.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kitchen/cli.rb +10 -5
- data/lib/kitchen/command.rb +5 -4
- data/lib/kitchen/generator/init.rb +3 -3
- data/lib/kitchen/instance.rb +1 -0
- data/lib/kitchen/loader/yaml.rb +16 -4
- data/lib/kitchen/provisioner/base.rb +6 -0
- data/lib/kitchen/provisioner/chef/common_sandbox.rb +6 -5
- data/lib/kitchen/provisioner/chef/policyfile.rb +3 -3
- data/lib/kitchen/provisioner/chef_apply.rb +1 -0
- data/lib/kitchen/provisioner/chef_base.rb +58 -8
- data/lib/kitchen/provisioner/chef_solo.rb +0 -1
- data/lib/kitchen/provisioner/shell.rb +1 -1
- data/lib/kitchen/transport/ssh.rb +1 -1
- data/lib/kitchen/verifier/busser.rb +1 -1
- data/lib/kitchen/version.rb +1 -1
- data/templates/driver/gemspec.erb +2 -2
- data/templates/driver/travis.yml.erb +3 -3
- data/templates/init/kitchen.yml.erb +1 -1
- data/test-kitchen.gemspec +6 -3
- metadata +39 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6c10ada5565a14188f81198ab603201f831f7b7237def1517b92695fb851d49
|
4
|
+
data.tar.gz: 232f4a053884a07eef2edff6415cf4582d76e685464943eebfb547494dd887c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7594aa1002500ab9130b39293fdc795da406202e7438627b2f42fffc29b0d1c17f200ec79fd0c85b69a5a984a4b5062a889c9fdbd1ae685ba435e89e347d80d6
|
7
|
+
data.tar.gz: 4044d16718fa0b27425c4a0a91fc67ff50f0c77c2fab3266d8b88afaadec3259d67dfe51cb0db0f850410922d0901e081d9c9fcdc3ee5ea1094afd5a6d7fccdd
|
data/lib/kitchen/cli.rb
CHANGED
@@ -171,14 +171,14 @@ module Kitchen
|
|
171
171
|
desc: <<-DESC.gsub(/^\s+/, "").tr("\n", " ")
|
172
172
|
Run a #{action} against all matching instances concurrently. Only N
|
173
173
|
instances will run at the same time if a number is given.
|
174
|
-
|
174
|
+
DESC
|
175
175
|
method_option :parallel,
|
176
176
|
aliases: "-p",
|
177
177
|
type: :boolean,
|
178
178
|
desc: <<-DESC.gsub(/^\s+/, "").tr("\n", " ")
|
179
179
|
[Future DEPRECATION, use --concurrency]
|
180
180
|
Run a #{action} against all matching instances concurrently.
|
181
|
-
|
181
|
+
DESC
|
182
182
|
if action == :converge || action == :verify
|
183
183
|
method_option :debug,
|
184
184
|
aliases: "-D",
|
@@ -186,6 +186,11 @@ module Kitchen
|
|
186
186
|
default: false,
|
187
187
|
desc: "Run the #{action} with debugging enabled."
|
188
188
|
end
|
189
|
+
method_option :fail_fast,
|
190
|
+
aliases: "-f",
|
191
|
+
type: :boolean,
|
192
|
+
desc: "Fail immediately when errors occur in concurrency mode"
|
193
|
+
|
189
194
|
test_base_path
|
190
195
|
log_options
|
191
196
|
define_method(action) do |*args|
|
@@ -216,14 +221,14 @@ module Kitchen
|
|
216
221
|
desc: <<-DESC.gsub(/^\s+/, "").tr("\n", " ")
|
217
222
|
Run a test against all matching instances concurrently. Only N
|
218
223
|
instances will run at the same time if a number is given.
|
219
|
-
|
224
|
+
DESC
|
220
225
|
method_option :parallel,
|
221
226
|
aliases: "-p",
|
222
227
|
type: :boolean,
|
223
228
|
desc: <<-DESC.gsub(/^\s+/, "").tr("\n", " ")
|
224
229
|
[Future DEPRECATION, use --concurrency]
|
225
230
|
Run a test against all matching instances concurrently.
|
226
|
-
|
231
|
+
DESC
|
227
232
|
method_option :destroy,
|
228
233
|
aliases: "-d",
|
229
234
|
default: "passing",
|
@@ -300,7 +305,7 @@ module Kitchen
|
|
300
305
|
"init", "Adds some configuration to your cookbook so Kitchen can rock"
|
301
306
|
long_desc <<-D, for: "init"
|
302
307
|
Init will add Test Kitchen support to an existing project for
|
303
|
-
convergence integration testing. A default
|
308
|
+
convergence integration testing. A default kitchen.yml file (which is
|
304
309
|
intended to be customized) is created in the project's root directory
|
305
310
|
and one or more gems will be added to the project's Gemfile.
|
306
311
|
D
|
data/lib/kitchen/command.rb
CHANGED
@@ -111,10 +111,10 @@ module Kitchen
|
|
111
111
|
result = begin
|
112
112
|
@config.instances.get(regexp) ||
|
113
113
|
@config.instances.get_all(/#{regexp}/)
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
114
|
+
rescue RegexpError => e
|
115
|
+
die "Invalid Ruby regular expression, " \
|
116
|
+
"you may need to single quote the argument. " \
|
117
|
+
"Please try again or consult http://rubular.com/ (#{e.message})"
|
118
118
|
end
|
119
119
|
result = Array(result)
|
120
120
|
|
@@ -170,6 +170,7 @@ module Kitchen
|
|
170
170
|
end
|
171
171
|
end
|
172
172
|
end
|
173
|
+
Thread.abort_on_exception = true if options[:fail_fast]
|
173
174
|
threads.map(&:join)
|
174
175
|
report_errors
|
175
176
|
end
|
@@ -35,7 +35,7 @@ module Kitchen
|
|
35
35
|
desc: <<-D.gsub(/^\s+/, "").tr("\n", " ")
|
36
36
|
One or more Kitchen Driver gems to be installed or added to a
|
37
37
|
Gemfile
|
38
|
-
|
38
|
+
D
|
39
39
|
|
40
40
|
class_option :provisioner,
|
41
41
|
type: :string,
|
@@ -43,7 +43,7 @@ module Kitchen
|
|
43
43
|
default: "chef_solo",
|
44
44
|
desc: <<-D.gsub(/^\s+/, "").tr("\n", " ")
|
45
45
|
The default Kitchen Provisioner to use
|
46
|
-
|
46
|
+
D
|
47
47
|
|
48
48
|
class_option :create_gemfile,
|
49
49
|
type: :boolean,
|
@@ -51,7 +51,7 @@ module Kitchen
|
|
51
51
|
desc: <<-D.gsub(/^\s+/, "").tr("\n", " ")
|
52
52
|
Whether or not to create a Gemfile if one does not exist.
|
53
53
|
Default: false
|
54
|
-
|
54
|
+
D
|
55
55
|
|
56
56
|
# Invoke the command.
|
57
57
|
def init
|
data/lib/kitchen/instance.rb
CHANGED
data/lib/kitchen/loader/yaml.rb
CHANGED
@@ -196,6 +196,10 @@ module Kitchen
|
|
196
196
|
raise UserError, "Both #{kitchen_yml} and #{dot_kitchen_yml} found. Please use the un-dotted variant: #{kitchen_yml}."
|
197
197
|
end
|
198
198
|
|
199
|
+
if !File.exist?(kitchen_yml) && !File.exist?(dot_kitchen_yml)
|
200
|
+
return kitchen_yml
|
201
|
+
end
|
202
|
+
|
199
203
|
File.exist?(kitchen_yml) ? kitchen_yml : dot_kitchen_yml
|
200
204
|
end
|
201
205
|
|
@@ -221,11 +225,12 @@ module Kitchen
|
|
221
225
|
|
222
226
|
undot_config = default_local_config.sub(/^\./, "")
|
223
227
|
dot_config = ".#{undot_config}"
|
228
|
+
|
224
229
|
if File.exist?(File.join(config_dir, undot_config)) && File.exist?(File.join(config_dir, dot_config))
|
225
230
|
raise UserError, "Both #{undot_config} and #{dot_config} found in #{config_dir}. Please use #{default_local_config} which matches your #{config_file}."
|
226
231
|
end
|
227
232
|
|
228
|
-
File.join(config_dir,
|
233
|
+
File.exist?(File.join(config_dir, dot_config)) ? File.join(config_dir, dot_config) : File.join(config_dir, undot_config)
|
229
234
|
end
|
230
235
|
|
231
236
|
# Determines the default absolute path to the Kitchen global YAML file,
|
@@ -251,8 +256,8 @@ module Kitchen
|
|
251
256
|
|
252
257
|
hash = begin
|
253
258
|
send(component)
|
254
|
-
|
255
|
-
|
259
|
+
rescue => e
|
260
|
+
failure_hash(e, file)
|
256
261
|
end
|
257
262
|
|
258
263
|
{ filename: file, raw_data: hash }
|
@@ -347,7 +352,14 @@ module Kitchen
|
|
347
352
|
def parse_yaml_string(string, file_name)
|
348
353
|
return {} if string.nil? || string.empty?
|
349
354
|
|
350
|
-
result =
|
355
|
+
result =
|
356
|
+
if Gem::Requirement.new(">= 3.1.0").satisfied_by?(Gem::Version.new(Psych::VERSION))
|
357
|
+
# ruby >= 2.6.0
|
358
|
+
::YAML.safe_load(string, permitted_classes: [Symbol], permitted_symbols: [], aliases: true) || {}
|
359
|
+
else
|
360
|
+
# ruby < 2.6.0
|
361
|
+
::YAML.safe_load(string, [Symbol], [], true) || {}
|
362
|
+
end
|
351
363
|
unless result.is_a?(Hash)
|
352
364
|
raise UserError, "Error parsing #{file_name} as YAML " \
|
353
365
|
"(Result of parse was not a Hash, but was a #{result.class}).\n" \
|
@@ -105,6 +105,12 @@ module Kitchen
|
|
105
105
|
false
|
106
106
|
end
|
107
107
|
|
108
|
+
# Certain products that Test Kitchen uses to provision require accepting
|
109
|
+
# a license to use. Overwrite this method in the specific provisioner
|
110
|
+
# to implement this check.
|
111
|
+
def check_license
|
112
|
+
end
|
113
|
+
|
108
114
|
# Generates a command string which will install and configure the
|
109
115
|
# provisioner software on an instance. If no work is required, then `nil`
|
110
116
|
# will be returned.
|
@@ -89,14 +89,15 @@ module Kitchen
|
|
89
89
|
# @api private
|
90
90
|
def policyfile
|
91
91
|
basename = config[:policyfile_path] || config[:policyfile] || "Policyfile.rb"
|
92
|
-
File.
|
92
|
+
File.expand_path(basename, config[:kitchen_root])
|
93
93
|
end
|
94
94
|
|
95
95
|
# @return [String] an absolute path to a Berksfile, relative to the
|
96
96
|
# kitchen root
|
97
97
|
# @api private
|
98
98
|
def berksfile
|
99
|
-
|
99
|
+
basename = config[:berksfile_path] || "Berksfile"
|
100
|
+
File.expand_path(basename, config[:kitchen_root])
|
100
101
|
end
|
101
102
|
|
102
103
|
# @return [String] an absolute path to a Cheffile, relative to the
|
@@ -179,8 +180,8 @@ module Kitchen
|
|
179
180
|
#
|
180
181
|
# @api private
|
181
182
|
def make_fake_cookbook
|
182
|
-
info("Berksfile, Cheffile, cookbooks/, or metadata.rb not found " \
|
183
|
-
"so Chef will run
|
183
|
+
info("Policyfile, Berksfile, Cheffile, cookbooks/, or metadata.rb not found " \
|
184
|
+
"so Chef Infra Client will run, but do nothing. Is this intended?")
|
184
185
|
name = File.basename(config[:kitchen_root])
|
185
186
|
fake_cb = File.join(tmpbooks_dir, name)
|
186
187
|
FileUtils.mkdir_p(fake_cb)
|
@@ -292,7 +293,7 @@ module Kitchen
|
|
292
293
|
|
293
294
|
def update_dna_for_policyfile
|
294
295
|
if !config[:run_list].nil? && !config[:run_list].empty?
|
295
|
-
warn("You must set your run_list in your
|
296
|
+
warn("You must set your run_list in your Policyfile instead of "\
|
296
297
|
"kitchen config. The run_list in your config will be ignored.")
|
297
298
|
warn("Ignored run_list: #{config[:run_list].inspect}")
|
298
299
|
end
|
@@ -87,7 +87,7 @@ module Kitchen
|
|
87
87
|
|
88
88
|
private
|
89
89
|
|
90
|
-
# @return [String] path to a
|
90
|
+
# @return [String] path to a Policyfile
|
91
91
|
# @api private
|
92
92
|
attr_reader :policyfile
|
93
93
|
|
@@ -139,8 +139,8 @@ module Kitchen
|
|
139
139
|
File.exist?(File.join(p, "chef"))
|
140
140
|
end
|
141
141
|
logger.fatal("The `chef` executable cannot be found in your " \
|
142
|
-
"PATH. Ensure you have installed ChefDK
|
143
|
-
"https://downloads.chef.io and that your PATH " \
|
142
|
+
"PATH. Ensure you have installed ChefDK or Chef Workstation " \
|
143
|
+
"from https://downloads.chef.io and that your PATH " \
|
144
144
|
"setting includes the path to the `chef` comand.")
|
145
145
|
raise UserError,
|
146
146
|
"Could not find the chef executable in your PATH."
|
@@ -28,6 +28,7 @@ require "kitchen/provisioner/chef/librarian"
|
|
28
28
|
require "kitchen/util"
|
29
29
|
require "mixlib/install"
|
30
30
|
require "mixlib/install/script_generator"
|
31
|
+
require "license_acceptance/acceptor"
|
31
32
|
|
32
33
|
begin
|
33
34
|
require "chef-config/config"
|
@@ -45,6 +46,7 @@ module Kitchen
|
|
45
46
|
default_config :require_chef_omnibus, true
|
46
47
|
default_config :chef_omnibus_url, "https://omnitruck.chef.io/install.sh"
|
47
48
|
default_config :chef_omnibus_install_options, nil
|
49
|
+
default_config :chef_license, nil
|
48
50
|
default_config :run_list, []
|
49
51
|
default_config :attributes, {}
|
50
52
|
default_config :config_path, nil
|
@@ -58,6 +60,9 @@ module Kitchen
|
|
58
60
|
# Will try to autodetect by searching for `Policyfile.rb` if not set.
|
59
61
|
# If set, will error if the file doesn't exist.
|
60
62
|
default_config :policyfile_path, nil
|
63
|
+
# Will try to autodetect by searching for `Berksfile` if not set.
|
64
|
+
# If set, will error if the file doesn't exist.
|
65
|
+
default_config :berksfile_path, nil
|
61
66
|
# If set to true (which is the default from `chef generate`), try to update
|
62
67
|
# backend cookbook downloader on every kitchen run.
|
63
68
|
default_config :always_update_cookbooks, false
|
@@ -244,6 +249,43 @@ module Kitchen
|
|
244
249
|
end
|
245
250
|
end
|
246
251
|
|
252
|
+
# gives us the product version from either require_chef_omnibus or product_version
|
253
|
+
# If the non-default (true) value of require_chef_omnibus is present use that
|
254
|
+
# otherwise use config[:product_version] which defaults to :latest and is the actual
|
255
|
+
# default for chef provisioners
|
256
|
+
#
|
257
|
+
# @return [String,Symbol,NilClass] version or nil if not applicable
|
258
|
+
def product_version
|
259
|
+
case config[:require_chef_omnibus]
|
260
|
+
when FalseClass
|
261
|
+
nil
|
262
|
+
when TrueClass
|
263
|
+
config[:product_version]
|
264
|
+
else
|
265
|
+
config[:require_chef_omnibus]
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
# (see Base#check_license)
|
270
|
+
def check_license
|
271
|
+
name = config[:product_name] || "chef"
|
272
|
+
version = product_version
|
273
|
+
debug("Checking if we need to prompt for license acceptance on product: #{name} version: #{version}.")
|
274
|
+
|
275
|
+
acceptor = LicenseAcceptance::Acceptor.new(logger: Kitchen.logger, provided: config[:chef_license])
|
276
|
+
if acceptor.license_required?(name, version)
|
277
|
+
debug("License acceptance required for #{name} version: #{version}. Prompting")
|
278
|
+
license_id = acceptor.id_from_mixlib(name)
|
279
|
+
begin
|
280
|
+
acceptor.check_and_persist(license_id, version.to_s)
|
281
|
+
rescue LicenseAcceptance::LicenseNotAcceptedError => e
|
282
|
+
error("Cannot converge without accepting the #{e.product.pretty_name} License. Set it in your kitchen.yml or using the CHEF_LICENSE environment variable")
|
283
|
+
raise
|
284
|
+
end
|
285
|
+
config[:chef_license] ||= acceptor.acceptance_value
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
247
289
|
# (see Base#create_sandbox)
|
248
290
|
def create_sandbox
|
249
291
|
super
|
@@ -316,14 +358,15 @@ module Kitchen
|
|
316
358
|
# @api private
|
317
359
|
def policyfile
|
318
360
|
policyfile_basename = config[:policyfile_path] || config[:policyfile] || "Policyfile.rb"
|
319
|
-
File.
|
361
|
+
File.expand_path(policyfile_basename, config[:kitchen_root])
|
320
362
|
end
|
321
363
|
|
322
364
|
# @return [String] an absolute path to a Berksfile, relative to the
|
323
365
|
# kitchen root
|
324
366
|
# @api private
|
325
367
|
def berksfile
|
326
|
-
|
368
|
+
berksfile_basename = config[:berksfile_path] || config[:berksfile] || "Berksfile"
|
369
|
+
File.expand_path(berksfile_basename, config[:kitchen_root])
|
327
370
|
end
|
328
371
|
|
329
372
|
# @return [String] an absolute path to a Cheffile, relative to the
|
@@ -341,7 +384,7 @@ module Kitchen
|
|
341
384
|
def default_config_rb # rubocop:disable Metrics/MethodLength
|
342
385
|
root = config[:root_path].gsub("$env:TEMP", "\#{ENV['TEMP']\}")
|
343
386
|
|
344
|
-
{
|
387
|
+
config_rb = {
|
345
388
|
node_name: instance.name,
|
346
389
|
checksum_path: remote_path_join(root, "checksums"),
|
347
390
|
file_cache_path: remote_path_join(root, "cache"),
|
@@ -364,6 +407,8 @@ module Kitchen
|
|
364
407
|
),
|
365
408
|
treat_deprecation_warnings_as_errors: config[:deprecations_as_errors],
|
366
409
|
}
|
410
|
+
config_rb[:chef_license] = config[:chef_license] unless config[:chef_license].nil?
|
411
|
+
config_rb
|
367
412
|
end
|
368
413
|
|
369
414
|
# Generates a rendered client.rb/solo.rb/knife.rb formatted file as a
|
@@ -427,10 +472,10 @@ module Kitchen
|
|
427
472
|
def load_needed_dependencies!
|
428
473
|
super
|
429
474
|
if File.exist?(policyfile)
|
430
|
-
debug("Policyfile found at #{policyfile}, using Policyfile to resolve dependencies")
|
475
|
+
debug("Policyfile found at #{policyfile}, using Policyfile to resolve cookbook dependencies")
|
431
476
|
Chef::Policyfile.load!(logger: logger)
|
432
477
|
elsif File.exist?(berksfile)
|
433
|
-
debug("Berksfile found at #{berksfile},
|
478
|
+
debug("Berksfile found at #{berksfile}, using Berkshelf to resolve cookbook dependencies")
|
434
479
|
Chef::Berkshelf.load!(logger: logger)
|
435
480
|
elsif File.exist?(cheffile)
|
436
481
|
debug("Cheffile found at #{cheffile}, loading Librarian-Chef")
|
@@ -537,13 +582,18 @@ module Kitchen
|
|
537
582
|
if (config[:policyfile_path] || config[:policyfile]) && !File.exist?(policyfile)
|
538
583
|
raise UserError, "policyfile_path set in config "\
|
539
584
|
"(#{config[:policyfile_path]} could not be found. " \
|
540
|
-
"Expected to find it at full path #{policyfile}
|
585
|
+
"Expected to find it at full path #{policyfile}."
|
586
|
+
end
|
587
|
+
if config[:berksfile_path] && !File.exist?(berksfile)
|
588
|
+
raise UserError, "berksfile_path set in config "\
|
589
|
+
"(#{config[:berksfile_path]} could not be found. " \
|
590
|
+
"Expected to find it at full path #{berksfile}."
|
541
591
|
end
|
542
592
|
if File.exist?(policyfile) && !supports_policyfile?
|
543
593
|
raise UserError, "policyfile detected, but provisioner " \
|
544
|
-
"#{self.class.name} doesn't support
|
594
|
+
"#{self.class.name} doesn't support Policyfiles. " \
|
545
595
|
"Either use a different provisioner, or delete/rename " \
|
546
|
-
"#{policyfile}"
|
596
|
+
"#{policyfile}."
|
547
597
|
end
|
548
598
|
end
|
549
599
|
|
@@ -232,7 +232,7 @@ module Kitchen
|
|
232
232
|
Errno::EACCES, Errno::EALREADY, Errno::EADDRINUSE, Errno::ECONNREFUSED, Errno::ETIMEDOUT,
|
233
233
|
Errno::ECONNRESET, Errno::ENETUNREACH, Errno::EHOSTUNREACH, Errno::EPIPE,
|
234
234
|
Net::SSH::Disconnect, Net::SSH::AuthenticationFailed, Net::SSH::ConnectionTimeout,
|
235
|
-
Timeout::Error
|
235
|
+
Net::SSH::Proxy::ConnectError, Timeout::Error
|
236
236
|
].freeze
|
237
237
|
|
238
238
|
# @return [Integer] cap on number of parallel ssh sessions we can use
|
@@ -182,7 +182,7 @@ module Kitchen
|
|
182
182
|
# to be under /tmp/verifier
|
183
183
|
args = gem
|
184
184
|
args += " --version #{version}" if version
|
185
|
-
args += " --no-
|
185
|
+
args += " --no-document --no-format-executable -n #{gem_bin}"
|
186
186
|
args += " --no-user-install"
|
187
187
|
args
|
188
188
|
end
|
data/lib/kitchen/version.rb
CHANGED
@@ -18,9 +18,9 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency 'test-kitchen', '~> 1.0.0
|
21
|
+
spec.add_dependency 'test-kitchen', '~> 1.0.0'
|
22
22
|
|
23
|
-
spec.add_development_dependency 'bundler'
|
23
|
+
spec.add_development_dependency 'bundler'
|
24
24
|
spec.add_development_dependency 'rake'
|
25
25
|
|
26
26
|
spec.add_development_dependency 'cane'
|
data/test-kitchen.gemspec
CHANGED
@@ -24,17 +24,20 @@ Gem::Specification.new do |gem|
|
|
24
24
|
gem.required_ruby_version = ">= 2.3"
|
25
25
|
|
26
26
|
gem.add_dependency "mixlib-shellout", ">= 1.2", "< 3.0"
|
27
|
-
gem.add_dependency "net-scp",
|
27
|
+
gem.add_dependency "net-scp", ">= 1.1", "< 3.0" # pinning until we can confirm 3+ works
|
28
28
|
gem.add_dependency "net-ssh", ">= 2.9", "< 5.0"
|
29
|
-
gem.add_dependency "net-ssh-gateway", "
|
29
|
+
gem.add_dependency "net-ssh-gateway", ">= 1.2", "< 3.0" # pinning until we can confirm 3+ works
|
30
30
|
gem.add_dependency "thor", "~> 0.19"
|
31
31
|
gem.add_dependency "mixlib-install", "~> 3.6"
|
32
32
|
gem.add_dependency "winrm", "~> 2.0"
|
33
33
|
gem.add_dependency "winrm-elevated", "~> 1.0"
|
34
34
|
gem.add_dependency "winrm-fs", "~> 1.1"
|
35
35
|
|
36
|
-
|
36
|
+
# Required to run the Chef provisioner local license check for remote systems
|
37
|
+
# TK is not under Chef EULA
|
38
|
+
gem.add_dependency "license-acceptance", "~> 1.0", ">= 1.0.11"
|
37
39
|
|
40
|
+
gem.add_development_dependency "rb-readline"
|
38
41
|
gem.add_development_dependency "bundler"
|
39
42
|
gem.add_development_dependency "rake"
|
40
43
|
|
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: 1.
|
4
|
+
version: 1.25.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: 2019-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-shellout
|
@@ -34,16 +34,22 @@ dependencies:
|
|
34
34
|
name: net-scp
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '1.1'
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '3.0'
|
40
43
|
type: :runtime
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
46
|
requirements:
|
44
|
-
- - "
|
47
|
+
- - ">="
|
45
48
|
- !ruby/object:Gem::Version
|
46
49
|
version: '1.1'
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '3.0'
|
47
53
|
- !ruby/object:Gem::Dependency
|
48
54
|
name: net-ssh
|
49
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -68,16 +74,22 @@ dependencies:
|
|
68
74
|
name: net-ssh-gateway
|
69
75
|
requirement: !ruby/object:Gem::Requirement
|
70
76
|
requirements:
|
71
|
-
- - "
|
77
|
+
- - ">="
|
72
78
|
- !ruby/object:Gem::Version
|
73
79
|
version: '1.2'
|
80
|
+
- - "<"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
74
83
|
type: :runtime
|
75
84
|
prerelease: false
|
76
85
|
version_requirements: !ruby/object:Gem::Requirement
|
77
86
|
requirements:
|
78
|
-
- - "
|
87
|
+
- - ">="
|
79
88
|
- !ruby/object:Gem::Version
|
80
89
|
version: '1.2'
|
90
|
+
- - "<"
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '3.0'
|
81
93
|
- !ruby/object:Gem::Dependency
|
82
94
|
name: thor
|
83
95
|
requirement: !ruby/object:Gem::Requirement
|
@@ -148,6 +160,26 @@ dependencies:
|
|
148
160
|
- - "~>"
|
149
161
|
- !ruby/object:Gem::Version
|
150
162
|
version: '1.1'
|
163
|
+
- !ruby/object:Gem::Dependency
|
164
|
+
name: license-acceptance
|
165
|
+
requirement: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - "~>"
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '1.0'
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: 1.0.11
|
173
|
+
type: :runtime
|
174
|
+
prerelease: false
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - "~>"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '1.0'
|
180
|
+
- - ">="
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: 1.0.11
|
151
183
|
- !ruby/object:Gem::Dependency
|
152
184
|
name: rb-readline
|
153
185
|
requirement: !ruby/object:Gem::Requirement
|
@@ -425,8 +457,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
425
457
|
- !ruby/object:Gem::Version
|
426
458
|
version: '0'
|
427
459
|
requirements: []
|
428
|
-
|
429
|
-
rubygems_version: 2.7.7
|
460
|
+
rubygems_version: 3.0.3
|
430
461
|
signing_key:
|
431
462
|
specification_version: 4
|
432
463
|
summary: Test Kitchen is an integration tool for developing and testing infrastructure
|