test-kitchen 1.24.0 → 1.25.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/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
|