test-kitchen 1.0.0.alpha.1 → 1.0.0.alpha.2
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.
- data/CHANGELOG.md +18 -1
- data/features/kitchen_init_command.feature +13 -13
- data/features/support/env.rb +1 -1
- data/lib/kitchen/cli.rb +18 -2
- data/lib/kitchen/driver.rb +0 -2
- data/lib/kitchen/driver/ssh_base.rb +12 -5
- data/lib/kitchen/version.rb +1 -1
- metadata +2 -2
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
## 1.0.0.alpha.2 / 2013-03-28
|
2
|
+
|
3
|
+
### Bug fixes
|
4
|
+
|
5
|
+
* Remove catch-all rescue in Driver.for_plugin (reason provided in commit message). ([@fnichol][])
|
6
|
+
|
7
|
+
### New features
|
8
|
+
|
9
|
+
* Add --log-level flag to CLI for test, create, converge, setup, verify, destroy, and login actions. The environment variable `KITCHEN_LOG` may still be used to also set the logging level. ([@fnichol][])
|
10
|
+
* Driver::SSHBase and subclass drivers now support setting a :port number in .kitchen.yml or in instance state. ([@fnichol][])
|
11
|
+
|
12
|
+
### Improvements
|
13
|
+
|
14
|
+
* Support thor 0.16.0 and 0.17.0+. ([@fnichol][])
|
15
|
+
* Support SSH config from #state & #config in Driver::SSHBase, helping drivers such as kitchen-vagrant. ([@fnichol][])
|
16
|
+
|
17
|
+
|
1
18
|
## 1.0.0.alpha.1 / 2013-03-22
|
2
19
|
|
3
20
|
### Bug fixes
|
@@ -32,4 +49,4 @@ The initial release.
|
|
32
49
|
[@ChrisLundquist]: https://github.com/ChrisLundquist
|
33
50
|
[@fnichol]: https://github.com/fnichol
|
34
51
|
[@mattray]: https://github.com/mattray
|
35
|
-
[@reset]: https://github.com/reset
|
52
|
+
[@reset]: https://github.com/reset
|
@@ -12,19 +12,19 @@ Feature: Add Test Kitchen support to an existing project
|
|
12
12
|
"""
|
13
13
|
And the exit status should be 0
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
15
|
+
Scenario: Running init with default values
|
16
|
+
Given a sandboxed GEM_HOME directory named "kitchen-init"
|
17
|
+
When I run `kitchen init`
|
18
|
+
Then the exit status should be 0
|
19
|
+
And a directory named ".kitchen" should exist
|
20
|
+
And a directory named "test/integration/default" should exist
|
21
|
+
And the file ".gitignore" should contain ".kitchen/"
|
22
|
+
And the file ".gitignore" should contain ".kitchen.local.yml"
|
23
|
+
And the file ".kitchen.yml" should contain "driver_plugin: vagrant"
|
24
|
+
And a file named "Gemfile" should not exist
|
25
|
+
And a file named "Rakefile" should not exist
|
26
|
+
And a file named "Thorfile" should not exist
|
27
|
+
And a gem named "kitchen-vagrant" is installed
|
28
28
|
|
29
29
|
Scenario: Running init that creates a Gemfile
|
30
30
|
When I successfully run `kitchen init --create-gemfile`
|
data/features/support/env.rb
CHANGED
data/lib/kitchen/cli.rb
CHANGED
@@ -70,6 +70,8 @@ module Kitchen
|
|
70
70
|
)
|
71
71
|
method_option :parallel, :aliases => "-p", :type => :boolean,
|
72
72
|
:desc => "Perform action against all matching instances in parallel"
|
73
|
+
method_option :log_level, :aliases => "-l",
|
74
|
+
:desc => "Set the log level (debug, info, warn, error, fatal)"
|
73
75
|
define_method(action) { |*args| exec_action(action) }
|
74
76
|
end
|
75
77
|
|
@@ -86,6 +88,8 @@ module Kitchen
|
|
86
88
|
DESC
|
87
89
|
method_option :parallel, :aliases => "-p", :type => :boolean,
|
88
90
|
:desc => "Perform action against all matching instances in parallel"
|
91
|
+
method_option :log_level, :aliases => "-l",
|
92
|
+
:desc => "Set the log level (debug, info, warn, error, fatal)"
|
89
93
|
method_option :destroy, :aliases => "-d", :default => "passing",
|
90
94
|
:desc => "Destroy strategy to use after testing (passing, always, never)."
|
91
95
|
def test(*args)
|
@@ -93,6 +97,7 @@ module Kitchen
|
|
93
97
|
raise ArgumentError, "Destroy mode must be passing, always, or never."
|
94
98
|
end
|
95
99
|
|
100
|
+
update_config!
|
96
101
|
banner "Starting Kitchen"
|
97
102
|
elapsed = Benchmark.measure do
|
98
103
|
destroy_mode = options[:destroy].to_sym
|
@@ -109,7 +114,10 @@ module Kitchen
|
|
109
114
|
end
|
110
115
|
|
111
116
|
desc "login (['REGEX']|[INSTANCE])", "Log in to one instance"
|
117
|
+
method_option :log_level, :aliases => "-l",
|
118
|
+
:desc => "Set the log level (debug, info, warn, error, fatal)"
|
112
119
|
def login(regexp)
|
120
|
+
update_config!
|
113
121
|
results = get_filtered_instances(regexp)
|
114
122
|
if results.size > 1
|
115
123
|
die task, "Argument `#{regexp}' returned multiple results:\n" +
|
@@ -214,13 +222,14 @@ module Kitchen
|
|
214
222
|
"driver", "Driver subcommands"
|
215
223
|
|
216
224
|
no_tasks do
|
217
|
-
def invoke_task(
|
218
|
-
if
|
225
|
+
def invoke_task(command, *args)
|
226
|
+
if command.name == "help" && args.first.first == "driver"
|
219
227
|
Kitchen::CLI::Driver.task_help(shell, args.first.last)
|
220
228
|
else
|
221
229
|
super
|
222
230
|
end
|
223
231
|
end
|
232
|
+
alias_method :invoke_command, :invoke_task
|
224
233
|
end
|
225
234
|
|
226
235
|
private
|
@@ -232,6 +241,7 @@ module Kitchen
|
|
232
241
|
end
|
233
242
|
|
234
243
|
def exec_action(action)
|
244
|
+
update_config!
|
235
245
|
banner "Starting Kitchen"
|
236
246
|
elapsed = Benchmark.measure do
|
237
247
|
@task = action
|
@@ -289,6 +299,12 @@ module Kitchen
|
|
289
299
|
[set_color(instance.name, :white), action]
|
290
300
|
end
|
291
301
|
|
302
|
+
def update_config!
|
303
|
+
if options[:log_level]
|
304
|
+
@config.log_level = options[:log_level].downcase.to_sym
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
292
308
|
def die(task, msg)
|
293
309
|
error "\n#{msg}\n\n"
|
294
310
|
help(task)
|
data/lib/kitchen/driver.rb
CHANGED
@@ -66,10 +66,14 @@ module Kitchen
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def login_command(state)
|
69
|
+
combined = config.merge(state)
|
70
|
+
|
69
71
|
args = %W{ -o UserKnownHostsFile=/dev/null }
|
70
72
|
args += %W{ -o StrictHostKeyChecking=no }
|
71
|
-
args += %W{ -
|
72
|
-
args += %W{ #{
|
73
|
+
args += %W{ -o LogLevel=#{logger.debug? ? "VERBOSE" : "ERROR"} }
|
74
|
+
args += %W{ -i #{combined[:ssh_key]}} if combined[:ssh_key]
|
75
|
+
args += %W{ -p #{combined[:port]}} if combined[:port]
|
76
|
+
args += %W{ #{combined[:username]}@#{combined[:hostname]}}
|
73
77
|
|
74
78
|
Driver::LoginCommand.new(["ssh", *args])
|
75
79
|
end
|
@@ -77,13 +81,16 @@ module Kitchen
|
|
77
81
|
protected
|
78
82
|
|
79
83
|
def build_ssh_args(state)
|
84
|
+
combined = config.merge(state)
|
85
|
+
|
80
86
|
opts = Hash.new
|
81
87
|
opts[:user_known_hosts_file] = "/dev/null"
|
82
88
|
opts[:paranoid] = false
|
83
|
-
opts[:password] =
|
84
|
-
opts[:
|
89
|
+
opts[:password] = combined[:password] if combined[:password]
|
90
|
+
opts[:port] = combined[:port] if combined[:port]
|
91
|
+
opts[:keys] = Array(combined[:ssh_key]) if combined[:ssh_key]
|
85
92
|
|
86
|
-
[
|
93
|
+
[combined[:hostname], combined[:username], opts]
|
87
94
|
end
|
88
95
|
|
89
96
|
def chef_home
|
data/lib/kitchen/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test-kitchen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.alpha.
|
4
|
+
version: 1.0.0.alpha.2
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: celluloid
|