kitchen-vagrant 0.18.0 → 0.19.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/.rspec +2 -0
- data/CHANGELOG.md +28 -1
- data/README.md +1 -1
- data/lib/kitchen/driver/vagrant.rb +26 -1
- data/lib/kitchen/driver/vagrant_version.rb +1 -1
- data/spec/kitchen/driver/vagrant_spec.rb +103 -11
- data/templates/Vagrantfile.erb +7 -1
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aa2fafbce94824f6ab027a6c789c348f632b1f73
|
|
4
|
+
data.tar.gz: 8c9e54c05057b57e46906e737c7a04c20101ede1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 21d53d3e3fa7bb48da1bf39d2af83cffeecea6c2d1fbf444ba188eaeb52650a6db05fdb19b552f3e27b3f2d61a2061c4059919a77fb9a3d30d9077345edee5ae
|
|
7
|
+
data.tar.gz: abacc35c6a871434db004664a72d88547d008ec9f5b9d3154ba404003233bfbf0e812ac4d1ebf82aa0c4f8ae0d35429ba4fabd995ce32e6142167fed6e430f92
|
data/.rspec
ADDED
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
## 0.19.0 / 2015-09-18
|
|
2
|
+
|
|
3
|
+
### Bug fixes
|
|
4
|
+
|
|
5
|
+
* Pull request [#163][]: Properly quote `config[:ssh]` values. ([@zuazo][])
|
|
6
|
+
* Pull request [#191][], pull request [#197][], issue [#190][]: Escape Bundler environment when shelling out to `vagrant` command. ([@ksubrama][], [@tknerr][])
|
|
7
|
+
|
|
8
|
+
### New features
|
|
9
|
+
|
|
10
|
+
* Pull request 172, issue [#171][]: Add support for OpenStack provider. ([@xmik][])
|
|
11
|
+
|
|
12
|
+
### Improvements
|
|
13
|
+
|
|
14
|
+
* Pull request [#174][]: Correct grammer error in README. ([@albsOps][])
|
|
15
|
+
* Support running unit test suite on Windows ([@ksubrama][])
|
|
16
|
+
|
|
17
|
+
|
|
1
18
|
## 0.18.0 / 2015-05-07
|
|
2
19
|
|
|
3
20
|
### Bug fixes
|
|
@@ -72,7 +89,7 @@
|
|
|
72
89
|
|
|
73
90
|
### New features
|
|
74
91
|
|
|
75
|
-
* Pull request
|
|
92
|
+
* Pull request [#84][]: Add support for Parallels provider. ([@jhx][])
|
|
76
93
|
* Pull request [#107][]: Add support for libvirt provider. ([@bradleyd][])
|
|
77
94
|
* Pull request [#128][]: Add support for LXC provider. ([@tknerr][])
|
|
78
95
|
* Pull request [#142][]: Add support for managed-servers provider. ([@kbruner][])
|
|
@@ -314,12 +331,19 @@ The initial release.
|
|
|
314
331
|
[#157]: https://github.com/test-kitchen/kitchen-vagrant/issues/157
|
|
315
332
|
[#158]: https://github.com/test-kitchen/kitchen-vagrant/issues/158
|
|
316
333
|
[#161]: https://github.com/test-kitchen/kitchen-vagrant/issues/161
|
|
334
|
+
[#163]: https://github.com/test-kitchen/kitchen-vagrant/issues/163
|
|
317
335
|
[#166]: https://github.com/test-kitchen/kitchen-vagrant/issues/166
|
|
336
|
+
[#171]: https://github.com/test-kitchen/kitchen-vagrant/issues/171
|
|
337
|
+
[#174]: https://github.com/test-kitchen/kitchen-vagrant/issues/174
|
|
338
|
+
[#190]: https://github.com/test-kitchen/kitchen-vagrant/issues/190
|
|
339
|
+
[#191]: https://github.com/test-kitchen/kitchen-vagrant/issues/191
|
|
340
|
+
[#197]: https://github.com/test-kitchen/kitchen-vagrant/issues/197
|
|
318
341
|
[@Annih]: https://github.com/Annih
|
|
319
342
|
[@Igorshp]: https://github.com/Igorshp
|
|
320
343
|
[@RobertRehberg]: https://github.com/RobertRehberg
|
|
321
344
|
[@TheDude05]: https://github.com/TheDude05
|
|
322
345
|
[@albertsj1]: https://github.com/albertsj1
|
|
346
|
+
[@albsOps]: https://github.com/albsOps
|
|
323
347
|
[@alex-slynko-wonga]: https://github.com/alex-slynko-wonga
|
|
324
348
|
[@antonio-osorio]: https://github.com/antonio-osorio
|
|
325
349
|
[@arangamani]: https://github.com/arangamani
|
|
@@ -338,6 +362,7 @@ The initial release.
|
|
|
338
362
|
[@josephholsten]: https://github.com/josephholsten
|
|
339
363
|
[@kbruner]: https://github.com/kbruner
|
|
340
364
|
[@keiths-osc]: https://github.com/keiths-osc
|
|
365
|
+
[@ksubrama]: https://github.com/ksubrama
|
|
341
366
|
[@manul]: https://github.com/manul
|
|
342
367
|
[@martinisoft]: https://github.com/martinisoft
|
|
343
368
|
[@mattray]: https://github.com/mattray
|
|
@@ -352,3 +377,5 @@ The initial release.
|
|
|
352
377
|
[@tmatilai]: https://github.com/tmatilai
|
|
353
378
|
[@vinyar]: https://github.com/vinyar
|
|
354
379
|
[@whiteley]: https://github.com/whiteley
|
|
380
|
+
[@xmik]: https://github.com/xmik
|
|
381
|
+
[@zuazo]: https://github.com/zuazo
|
data/README.md
CHANGED
|
@@ -129,7 +129,7 @@ Many host wide defaults for Vagrant can be set using `$HOME/.vagrant.d/Vagrantfi
|
|
|
129
129
|
details, please read the Vagrant [machine settings][vagrant_machine_settings]
|
|
130
130
|
page.
|
|
131
131
|
|
|
132
|
-
The default will be computed from the platform name of the instance.
|
|
132
|
+
The default will be computed from the platform name of the instance. However, for a small number of common/known platforms in the [Bento][bento] project, the default will prepend `"opscode-"` to the start to match the downloadable `box_url` (see below).
|
|
133
133
|
|
|
134
134
|
For example, a platform with a Bento box called "ubuntu-14.04" will produce a
|
|
135
135
|
default `box` value of `"opscode-ubuntu-14.04"`. Alternatively, a box called
|
|
@@ -310,11 +310,36 @@ module Kitchen
|
|
|
310
310
|
# * `:log_subject` defaults to a String representation of the Driver's
|
|
311
311
|
# class name
|
|
312
312
|
#
|
|
313
|
+
# Since vagrant does not support being run through bundler, we escape
|
|
314
|
+
# any bundler environment should we detect one. Otherwise, subcommands
|
|
315
|
+
# will inherit our bundled environment.
|
|
316
|
+
# @see https://github.com/test-kitchen/kitchen-vagrant/issues/190
|
|
313
317
|
# @see Kitchen::ShellOut#run_command
|
|
314
318
|
def run_command(cmd, options = {})
|
|
315
319
|
merged = {
|
|
316
|
-
:use_sudo => config[:use_sudo],
|
|
320
|
+
:use_sudo => config[:use_sudo],
|
|
321
|
+
:log_subject => name,
|
|
322
|
+
:environment => {}
|
|
317
323
|
}.merge(options)
|
|
324
|
+
|
|
325
|
+
# Attempt to extract bundler and associated GEM related values.
|
|
326
|
+
# TODO: To this accurately, we'd need to create a test-kitchen
|
|
327
|
+
# launch wrapper that serializes the existing environment before
|
|
328
|
+
# bundler touches it so that we can go back to it. Since that is
|
|
329
|
+
# "A Hard Problem"(TM), we simply blow away all known bundler
|
|
330
|
+
# related changes.
|
|
331
|
+
env = merged[:environment]
|
|
332
|
+
%w[BUNDLE_BIN_PATH BUNDLE_GEMFILE GEM_HOME GEM_PATH GEM_ROOT RUBYLIB
|
|
333
|
+
RUBYOPT _ORIGINAL_GEM_PATH].each do |var|
|
|
334
|
+
env[var] = nil
|
|
335
|
+
end
|
|
336
|
+
gem_home = ENV["GEM_HOME"]
|
|
337
|
+
if gem_home && (env["PATH"] || ENV["PATH"])
|
|
338
|
+
env["PATH"] ||= ENV["PATH"].dup if ENV["PATH"]
|
|
339
|
+
gem_bin = File.join(gem_home, "bin") + File::PATH_SEPARATOR
|
|
340
|
+
env["PATH"][gem_bin] = "" if env["PATH"].include?(gem_bin)
|
|
341
|
+
end
|
|
342
|
+
|
|
318
343
|
super(cmd, merged)
|
|
319
344
|
end
|
|
320
345
|
|
|
@@ -61,7 +61,17 @@ describe Kitchen::Driver::Vagrant do
|
|
|
61
61
|
)
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
module RunCommandStub
|
|
65
|
+
def run_command(_cmd, options = {})
|
|
66
|
+
options
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
before(:all) do
|
|
71
|
+
Kitchen::Driver::Vagrant.instance_eval { include RunCommandStub }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
before(:each) { stub_const("ENV", env) }
|
|
65
75
|
|
|
66
76
|
after do
|
|
67
77
|
driver_object.class.send(:winrm_plugin_passed=, nil)
|
|
@@ -77,6 +87,64 @@ describe Kitchen::Driver::Vagrant do
|
|
|
77
87
|
Kitchen::Driver::VAGRANT_VERSION)
|
|
78
88
|
end
|
|
79
89
|
|
|
90
|
+
describe "#run_command" do
|
|
91
|
+
|
|
92
|
+
context "when invoked from a clean environment" do
|
|
93
|
+
|
|
94
|
+
it "passes through environment variables" do
|
|
95
|
+
options = driver.send(
|
|
96
|
+
:run_command,
|
|
97
|
+
"cmd",
|
|
98
|
+
:environment => { "EV1" => "Val1", "EV2" => "Val2" })
|
|
99
|
+
expect(options[:environment]["EV1"]).to eq("Val1")
|
|
100
|
+
expect(options[:environment]["EV2"]).to eq("Val2")
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "leaves path alone" do
|
|
104
|
+
path = "/foo/#{File::PATH_SEPARATOR}/bar"
|
|
105
|
+
options = driver.send(
|
|
106
|
+
:run_command,
|
|
107
|
+
"cmd",
|
|
108
|
+
:environment => { "PATH" => path })
|
|
109
|
+
expect(options[:environment]["PATH"]).to eq(path)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
context "when invoked from a bundler[:environment]" do
|
|
115
|
+
|
|
116
|
+
let(:bundler_env) do
|
|
117
|
+
{
|
|
118
|
+
"BUNDLE_BIN_PATH" => "bundle_bin_path",
|
|
119
|
+
"BUNDLE_GEMFILE" => "bundle_gem_file",
|
|
120
|
+
"GEM_HOME" => "gem_home",
|
|
121
|
+
"GEM_PATH" => "gem_path",
|
|
122
|
+
"GEM_ROOT" => "gem_root",
|
|
123
|
+
"RUBYLIB" => "ruby_lib",
|
|
124
|
+
"RUBYOPT" => "ruby_opt",
|
|
125
|
+
"_ORIGINAL_GEM_PATH" => "original_gem_path"
|
|
126
|
+
}
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it "removes all bundler related variables" do
|
|
130
|
+
env.merge!(bundler_env)
|
|
131
|
+
options = driver.send(:run_command, "cmd")
|
|
132
|
+
bundler_env.each do |k, _v|
|
|
133
|
+
expect(options[:environment]).to include(k)
|
|
134
|
+
expect(options[:environment][k]).to eq(nil)
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it "fixes path if it notices gem_home in it" do
|
|
139
|
+
env.merge!(bundler_env)
|
|
140
|
+
env["PATH"] = "gem_home/bin#{File::PATH_SEPARATOR}/something/else"
|
|
141
|
+
options = driver.send(:run_command, "cmd")
|
|
142
|
+
puts(options)
|
|
143
|
+
expect(options[:environment]["PATH"]).to eq("/something/else")
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
80
148
|
describe "configuration" do
|
|
81
149
|
|
|
82
150
|
%W[centos debian fedora opensuse ubuntu].each do |name|
|
|
@@ -252,7 +320,7 @@ describe Kitchen::Driver::Vagrant do
|
|
|
252
320
|
]
|
|
253
321
|
|
|
254
322
|
expect(driver[:synced_folders]).to eq([
|
|
255
|
-
["/host_path", "/vm_path", "create: true, type: :nfs"]
|
|
323
|
+
[File.expand_path("/host_path"), "/vm_path", "create: true, type: :nfs"]
|
|
256
324
|
])
|
|
257
325
|
end
|
|
258
326
|
|
|
@@ -262,7 +330,7 @@ describe Kitchen::Driver::Vagrant do
|
|
|
262
330
|
]
|
|
263
331
|
|
|
264
332
|
expect(driver[:synced_folders]).to eq([
|
|
265
|
-
["/root/suitey-fooos-99", "/vm_path", "stuff"]
|
|
333
|
+
[File.expand_path("/root/suitey-fooos-99"), "/vm_path", "stuff"]
|
|
266
334
|
])
|
|
267
335
|
end
|
|
268
336
|
|
|
@@ -272,7 +340,7 @@ describe Kitchen::Driver::Vagrant do
|
|
|
272
340
|
]
|
|
273
341
|
|
|
274
342
|
expect(driver[:synced_folders]).to eq([
|
|
275
|
-
["/kroot/a", "/vm_path", "stuff"]
|
|
343
|
+
[File.expand_path("/kroot/a"), "/vm_path", "stuff"]
|
|
276
344
|
])
|
|
277
345
|
end
|
|
278
346
|
|
|
@@ -282,7 +350,7 @@ describe Kitchen::Driver::Vagrant do
|
|
|
282
350
|
]
|
|
283
351
|
|
|
284
352
|
expect(driver[:synced_folders]).to eq([
|
|
285
|
-
["/host_path", "/vm_path", "nil"]
|
|
353
|
+
[File.expand_path("/host_path"), "/vm_path", "nil"]
|
|
286
354
|
])
|
|
287
355
|
end
|
|
288
356
|
|
|
@@ -295,13 +363,15 @@ describe Kitchen::Driver::Vagrant do
|
|
|
295
363
|
it "sets :vagrantfile_erb to a default value" do
|
|
296
364
|
config[:vagrantfile_erb] = "/a/Vagrantfile.erb"
|
|
297
365
|
|
|
298
|
-
expect(driver[:vagrantfile_erb]).to eq(
|
|
366
|
+
expect(driver[:vagrantfile_erb]).to eq(
|
|
367
|
+
File.expand_path("/a/Vagrantfile.erb"))
|
|
299
368
|
end
|
|
300
369
|
|
|
301
370
|
it "expands path for :vagrantfile_erb" do
|
|
302
371
|
config[:vagrantfile_erb] = "Yep.erb"
|
|
303
372
|
|
|
304
|
-
expect(driver[:vagrantfile_erb]).to eq(
|
|
373
|
+
expect(driver[:vagrantfile_erb]).to eq(
|
|
374
|
+
File.expand_path("/kroot/Yep.erb"))
|
|
305
375
|
end
|
|
306
376
|
|
|
307
377
|
it "sets :vagrantfiles to an empty array by default" do
|
|
@@ -312,7 +382,7 @@ describe Kitchen::Driver::Vagrant do
|
|
|
312
382
|
config[:vagrantfiles] = %W[one two three]
|
|
313
383
|
|
|
314
384
|
expect(driver[:vagrantfiles]).to eq(
|
|
315
|
-
%W[/kroot/one /kroot/two /kroot/three]
|
|
385
|
+
%W[/kroot/one /kroot/two /kroot/three].map { |f| File.expand_path(f) }
|
|
316
386
|
)
|
|
317
387
|
end
|
|
318
388
|
|
|
@@ -972,9 +1042,9 @@ describe Kitchen::Driver::Vagrant do
|
|
|
972
1042
|
|
|
973
1043
|
it "adds a vm.ssh line for each key/value pair in :ssh" do
|
|
974
1044
|
config[:ssh] = {
|
|
975
|
-
:username => %{
|
|
976
|
-
:password => %{
|
|
977
|
-
:private_key_path => %{
|
|
1045
|
+
:username => %{jdoe},
|
|
1046
|
+
:password => %{secret},
|
|
1047
|
+
:private_key_path => %{/key}
|
|
978
1048
|
}
|
|
979
1049
|
cmd
|
|
980
1050
|
|
|
@@ -1365,6 +1435,28 @@ describe Kitchen::Driver::Vagrant do
|
|
|
1365
1435
|
RUBY
|
|
1366
1436
|
end
|
|
1367
1437
|
end
|
|
1438
|
+
|
|
1439
|
+
context "for openstack provider" do
|
|
1440
|
+
|
|
1441
|
+
before { config[:provider] = "openstack" }
|
|
1442
|
+
|
|
1443
|
+
it "adds a line for each element in :customize" do
|
|
1444
|
+
config[:customize] = {
|
|
1445
|
+
:key1 => "some string value",
|
|
1446
|
+
:key2 => 22,
|
|
1447
|
+
:key3 => false
|
|
1448
|
+
}
|
|
1449
|
+
cmd
|
|
1450
|
+
|
|
1451
|
+
expect(vagrantfile).to match(regexify(<<-RUBY.gsub(/^ {8}/, "").chomp))
|
|
1452
|
+
c.vm.provider :openstack do |p|
|
|
1453
|
+
p.key1 = "some string value"
|
|
1454
|
+
p.key2 = 22
|
|
1455
|
+
p.key3 = false
|
|
1456
|
+
end
|
|
1457
|
+
RUBY
|
|
1458
|
+
end
|
|
1459
|
+
end
|
|
1368
1460
|
end
|
|
1369
1461
|
|
|
1370
1462
|
def debug_lines
|
data/templates/Vagrantfile.erb
CHANGED
|
@@ -50,7 +50,7 @@ Vagrant.configure("2") do |c|
|
|
|
50
50
|
c.ssh.private_key_path = "<%= config[:ssh_key] %>"
|
|
51
51
|
<% end %>
|
|
52
52
|
<% config[:ssh].each do |key, value| %>
|
|
53
|
-
c.ssh.<%= key %> = <%= value %>
|
|
53
|
+
c.ssh.<%= key %> = "<%= value %>"
|
|
54
54
|
<% end %>
|
|
55
55
|
<% if config[:winrm] %>
|
|
56
56
|
<% config[:winrm].each do |key, value| %>
|
|
@@ -118,6 +118,12 @@ Vagrant.configure("2") do |c|
|
|
|
118
118
|
<% else %>
|
|
119
119
|
p.vmx["<%= key %>"] = "<%= value %>"
|
|
120
120
|
<% end %>
|
|
121
|
+
<% when "openstack" %>
|
|
122
|
+
<% if value.is_a? String %>
|
|
123
|
+
p.<%= key %> = "<%= value%>"
|
|
124
|
+
<% else %>
|
|
125
|
+
p.<%= key %> = <%= value%>
|
|
126
|
+
<% end %>
|
|
121
127
|
<% end %>
|
|
122
128
|
<% end %>
|
|
123
129
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kitchen-vagrant
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.19.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: 2015-
|
|
11
|
+
date: 2015-09-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: test-kitchen
|
|
@@ -116,6 +116,7 @@ extensions: []
|
|
|
116
116
|
extra_rdoc_files: []
|
|
117
117
|
files:
|
|
118
118
|
- ".gitignore"
|
|
119
|
+
- ".rspec"
|
|
119
120
|
- ".travis.yml"
|
|
120
121
|
- CHANGELOG.md
|
|
121
122
|
- Gemfile
|
|
@@ -149,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
149
150
|
version: '0'
|
|
150
151
|
requirements: []
|
|
151
152
|
rubyforge_project:
|
|
152
|
-
rubygems_version: 2.4.5
|
|
153
|
+
rubygems_version: 2.4.5.1
|
|
153
154
|
signing_key:
|
|
154
155
|
specification_version: 4
|
|
155
156
|
summary: Kitchen::Driver::Vagrant - A Vagrant Driver for Test Kitchen.
|