kitchen-vagrant 0.21.0 → 0.21.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -1
- data/README.md +17 -0
- data/lib/kitchen/driver/vagrant.rb +48 -7
- data/lib/kitchen/driver/vagrant_version.rb +1 -1
- data/spec/kitchen/driver/vagrant_spec.rb +57 -2
- data/spec/spec_helper.rb +2 -2
- data/templates/Vagrantfile.erb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad1eb2e544973ec0e6864be3d857c448edce6be0
|
4
|
+
data.tar.gz: 80092da59b88a3f00ba1dab7d4160d3bd030c238
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6ea18edbddc33dadcf7ee8be669ab216507364094d6cf04aba8655bff6901449fc7d0217ea351abee4aaa2ca67d4b15a282ab3941daf58e5802f03476287db4
|
7
|
+
data.tar.gz: fd16e4495a3b1fd544b267ab8f8fa072e6d417801e0109262c3fe12b51b7abd40c749dcacf6595b8021d7b179ee0988265759960a096e72baa5cbd5001a05104
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,21 @@
|
|
1
|
+
## [0.21.1](https://github.com/test-kitchen/kitchen-vagrant/tree/0.21.1) (2016-12-05)
|
2
|
+
[Full Changelog](https://github.com/test-kitchen/kitchen-vagrant/compare/v0.21.0...v0.21.1)
|
3
|
+
|
4
|
+
**Implemented enhancements:**
|
5
|
+
|
6
|
+
- add oracle as supported bento-box type [\#258](https://github.com/test-kitchen/kitchen-vagrant/pull/258) ([lamont-granquist](https://github.com/lamont-granquist))
|
7
|
+
|
8
|
+
**Fixed bugs:**
|
9
|
+
|
10
|
+
- Change default cache dir for Windows [\#259](https://github.com/test-kitchen/kitchen-vagrant/pull/259) ([afiune](https://github.com/afiune))
|
11
|
+
- Vagrant requires also to scape slashes [\#253](https://github.com/test-kitchen/kitchen-vagrant/pull/253) ([afiune](https://github.com/afiune))
|
12
|
+
- Fix cache directory on windows [\#251](https://github.com/test-kitchen/kitchen-vagrant/pull/251) ([afiune](https://github.com/afiune))
|
13
|
+
- Exclude freebsd and ability to disable cache dir [\#262](https://github.com/test-kitchen/kitchen-vagrant/pull/262) ([afiune](https://github.com/afiune))
|
14
|
+
- Don't alter the path during the bundler cleanup on windows [\#241](https://github.com/test-kitchen/kitchen-vagrant/pull/241) ([mwrock](https://github.com/mwrock))
|
15
|
+
- do not map the extra cache drive on non virtualbox windows [\#255](https://github.com/test-kitchen/kitchen-vagrant/pull/255) ([mwrock](https://github.com/mwrock))
|
16
|
+
|
1
17
|
## [0.21.0](https://github.com/test-kitchen/kitchen-vagrant/tree/0.21.0) (2016-11-29)
|
2
|
-
[Full Changelog](https://github.com/test-kitchen/kitchen-vagrant/compare/v0.20.0...
|
18
|
+
[Full Changelog](https://github.com/test-kitchen/kitchen-vagrant/compare/v0.20.0...v0.21.0)
|
3
19
|
|
4
20
|
**Fixed bugs:**
|
5
21
|
|
data/README.md
CHANGED
@@ -394,6 +394,23 @@ Vagrant.configure("2") do |config|
|
|
394
394
|
end
|
395
395
|
```
|
396
396
|
|
397
|
+
### <a name="config-cache_directory"></a> cache_directory
|
398
|
+
|
399
|
+
Customize the cache directory on the instance. This parameter must be an
|
400
|
+
absolute path.
|
401
|
+
|
402
|
+
The defaults are:
|
403
|
+
* Windows: `C:\\omnibus\\cache`
|
404
|
+
* Unix: `/tmp/omnibus/cache`
|
405
|
+
|
406
|
+
The example:
|
407
|
+
|
408
|
+
```yaml
|
409
|
+
---
|
410
|
+
driver:
|
411
|
+
cache_directory: Z:\\custom\\cache
|
412
|
+
```
|
413
|
+
|
397
414
|
### <a name="config-vagrantfile-erb"></a> vagrantfile\_erb
|
398
415
|
|
399
416
|
An alternate Vagrantfile ERB template that will be rendered for use by this
|
@@ -84,6 +84,10 @@ module Kitchen
|
|
84
84
|
driver.windows_os? ? nil : driver.instance.name
|
85
85
|
end
|
86
86
|
|
87
|
+
default_config(:cache_directory) do |driver|
|
88
|
+
driver.windows_os? ? "/omnibus/cache" : "/tmp/omnibus/cache"
|
89
|
+
end
|
90
|
+
|
87
91
|
no_parallel_for :create, :destroy
|
88
92
|
|
89
93
|
# Creates a Vagrant VM instance.
|
@@ -173,7 +177,8 @@ module Kitchen
|
|
173
177
|
# and share a local folder to that directory so that we don't pull them
|
174
178
|
# down every single time
|
175
179
|
def cache_directory
|
176
|
-
|
180
|
+
return if disable_cache?
|
181
|
+
config[:cache_directory]
|
177
182
|
end
|
178
183
|
|
179
184
|
protected
|
@@ -201,7 +206,23 @@ module Kitchen
|
|
201
206
|
# box
|
202
207
|
# @api private
|
203
208
|
def bento_box?(name)
|
204
|
-
name =~ /^(centos|debian|fedora|freebsd|opensuse|ubuntu)-/
|
209
|
+
name =~ /^(centos|debian|fedora|freebsd|opensuse|ubuntu|oracle)-/
|
210
|
+
end
|
211
|
+
|
212
|
+
# Return true if we found the criteria to disable the cache_directory
|
213
|
+
# functionality
|
214
|
+
def disable_cache?
|
215
|
+
# Disable for Windows not using Virtualbox
|
216
|
+
if windows_host? && config[:provider] != "virtualbox" ||
|
217
|
+
# Disable for FreeBSD
|
218
|
+
instance.platform.name == "freebsd" ||
|
219
|
+
# Disable if cache_directory is set to "false" on .kitchen.yml
|
220
|
+
!config[:cache_directory]
|
221
|
+
return true
|
222
|
+
end
|
223
|
+
|
224
|
+
# Otherwise
|
225
|
+
false
|
205
226
|
end
|
206
227
|
|
207
228
|
# Renders and writes out a Vagrantfile dedicated to this instance.
|
@@ -337,6 +358,7 @@ module Kitchen
|
|
337
358
|
# will inherit our bundled environment.
|
338
359
|
# @see https://github.com/test-kitchen/kitchen-vagrant/issues/190
|
339
360
|
# @see Kitchen::ShellOut#run_command
|
361
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
340
362
|
def run_command(cmd, options = {})
|
341
363
|
merged = {
|
342
364
|
:use_sudo => config[:use_sudo],
|
@@ -355,15 +377,27 @@ module Kitchen
|
|
355
377
|
RUBYOPT _ORIGINAL_GEM_PATH].each do |var|
|
356
378
|
env[var] = nil
|
357
379
|
end
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
380
|
+
|
381
|
+
# Altering the path seems to break vagrant. When the :environment
|
382
|
+
# is passed to a windows process with a PATH, Vagrant's batch installer
|
383
|
+
# (https://github.com/mitchellh/vagrant-installers/blob/master/substrate
|
384
|
+
# /modules/vagrant_installer/templates/windows_vagrant.bat.erb)
|
385
|
+
# does not efectively prepend the vagrant ruby path in a persistent
|
386
|
+
# manner which causes vagrant to use the same ruby as test-kitchen and
|
387
|
+
# then the environment is essentially corrupted leading to many errors
|
388
|
+
# and dispair
|
389
|
+
unless windows_host?
|
390
|
+
gem_home = ENV["GEM_HOME"]
|
391
|
+
if gem_home && (env["PATH"] || ENV["PATH"])
|
392
|
+
env["PATH"] ||= ENV["PATH"].dup if ENV["PATH"]
|
393
|
+
gem_bin = File.join(gem_home, "bin") + File::PATH_SEPARATOR
|
394
|
+
env["PATH"][gem_bin] = "" if env["PATH"].include?(gem_bin)
|
395
|
+
end
|
363
396
|
end
|
364
397
|
|
365
398
|
super(cmd, merged)
|
366
399
|
end
|
400
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
367
401
|
|
368
402
|
# Runs a local command before `vagrant up` has been called.
|
369
403
|
#
|
@@ -473,6 +507,13 @@ module Kitchen
|
|
473
507
|
end
|
474
508
|
end
|
475
509
|
|
510
|
+
# @return [true,false] whether or not the host is windows
|
511
|
+
#
|
512
|
+
# @api private
|
513
|
+
def windows_host?
|
514
|
+
RbConfig::CONFIG["host_os"] =~ /mswin|mingw/
|
515
|
+
end
|
516
|
+
|
476
517
|
# @return [true,false] whether or not the vagrant-winrm plugin is
|
477
518
|
# installed
|
478
519
|
# @api private
|
@@ -136,6 +136,8 @@ describe Kitchen::Driver::Vagrant do
|
|
136
136
|
end
|
137
137
|
|
138
138
|
it "fixes path if it notices gem_home in it" do
|
139
|
+
allow(RbConfig::CONFIG).to receive(:[]).with("host_os").
|
140
|
+
and_return("linux")
|
139
141
|
env.merge!(bundler_env)
|
140
142
|
env["PATH"] = "gem_home/bin#{File::PATH_SEPARATOR}/something/else"
|
141
143
|
options = driver.send(:run_command, "cmd")
|
@@ -155,7 +157,7 @@ describe Kitchen::Driver::Vagrant do
|
|
155
157
|
]
|
156
158
|
end
|
157
159
|
|
158
|
-
%W[centos debian fedora opensuse ubuntu].each do |name|
|
160
|
+
%W[centos debian fedora opensuse ubuntu oracle freebsd].each do |name|
|
159
161
|
|
160
162
|
context "for known bento platform names starting with #{name}" do
|
161
163
|
|
@@ -328,6 +330,18 @@ describe Kitchen::Driver::Vagrant do
|
|
328
330
|
expect(driver[:synced_folders]).to eq([cache_directory_array])
|
329
331
|
end
|
330
332
|
|
333
|
+
it "does not set :synced_folders to cache_directory on windows/non-vbox" do
|
334
|
+
allow(RbConfig::CONFIG).to receive(:[]).with("host_os").
|
335
|
+
and_return("mingw")
|
336
|
+
config[:provider] = "notvbox"
|
337
|
+
expect(driver[:synced_folders]).to eq([])
|
338
|
+
end
|
339
|
+
|
340
|
+
it "does not set :synced_folders to cache_directory on freebsd systems" do
|
341
|
+
allow(platform).to receive(:name).and_return("freebsd")
|
342
|
+
expect(driver[:synced_folders]).to eq([])
|
343
|
+
end
|
344
|
+
|
331
345
|
it "sets :synced_folders to a custom value" do
|
332
346
|
config[:synced_folders] = [
|
333
347
|
["/host_path", "/vm_path", "create: true, type: :nfs"]
|
@@ -436,7 +450,7 @@ describe Kitchen::Driver::Vagrant do
|
|
436
450
|
let(:win_cache_directory_array) do
|
437
451
|
[
|
438
452
|
File.expand_path("~/.kitchen/cache"),
|
439
|
-
"
|
453
|
+
"/omnibus/cache",
|
440
454
|
"create: true"
|
441
455
|
]
|
442
456
|
end
|
@@ -468,6 +482,34 @@ describe Kitchen::Driver::Vagrant do
|
|
468
482
|
])
|
469
483
|
end
|
470
484
|
end
|
485
|
+
|
486
|
+
context "when cache_directory is customized" do
|
487
|
+
|
488
|
+
let(:custom_cache_directory_array) do
|
489
|
+
[
|
490
|
+
File.expand_path("~/.kitchen/cache"),
|
491
|
+
"Z:\\awesome\\cache",
|
492
|
+
"create: true"
|
493
|
+
]
|
494
|
+
end
|
495
|
+
|
496
|
+
before { config[:cache_directory] = 'Z:\\awesome\\cache' }
|
497
|
+
|
498
|
+
it "sets :synced_folders with the custom cache_directory" do
|
499
|
+
expect(driver[:synced_folders]).to eq([custom_cache_directory_array])
|
500
|
+
end
|
501
|
+
|
502
|
+
it "replaces %{instance_name} with instance name in :synced_folders" do
|
503
|
+
config[:synced_folders] = [
|
504
|
+
["/root/%{instance_name}", "/vm_path", "stuff"]
|
505
|
+
]
|
506
|
+
|
507
|
+
expect(driver[:synced_folders]).to eq([
|
508
|
+
[File.expand_path("/root/suitey-fooos-99"), "/vm_path", "stuff"],
|
509
|
+
custom_cache_directory_array
|
510
|
+
])
|
511
|
+
end
|
512
|
+
end
|
471
513
|
end
|
472
514
|
|
473
515
|
describe "#verify_dependencies" do
|
@@ -1188,6 +1230,19 @@ describe Kitchen::Driver::Vagrant do
|
|
1188
1230
|
RUBY
|
1189
1231
|
end
|
1190
1232
|
|
1233
|
+
it "vm.synced_folder scapes the back slashes for Windows paths" do
|
1234
|
+
config[:synced_folders] = [
|
1235
|
+
["/a/b", "C:\\opt\\instance_data", "nil"],
|
1236
|
+
["Z:\\host_path", "/vm_path", "create: true"]
|
1237
|
+
]
|
1238
|
+
cmd
|
1239
|
+
|
1240
|
+
expect(vagrantfile).to match(regexify(<<-RUBY.gsub(/^ {6}/, "").chomp))
|
1241
|
+
c.vm.synced_folder "/a/b", "C:\\\\opt\\\\instance_data", nil
|
1242
|
+
c.vm.synced_folder "Z:\\\\host_path", "/vm_path", create: true
|
1243
|
+
RUBY
|
1244
|
+
end
|
1245
|
+
|
1191
1246
|
context "for virtualbox provider" do
|
1192
1247
|
|
1193
1248
|
before { config[:provider] = "virtualbox" }
|
data/spec/spec_helper.rb
CHANGED
@@ -17,8 +17,8 @@
|
|
17
17
|
# limitations under the License.
|
18
18
|
|
19
19
|
if ENV["CODECLIMATE_REPO_TOKEN"]
|
20
|
-
require "
|
21
|
-
|
20
|
+
require "simplecov"
|
21
|
+
SimpleCov.start
|
22
22
|
elsif ENV["COVERAGE"]
|
23
23
|
require "simplecov"
|
24
24
|
SimpleCov.profiles.define "gem" do
|
data/templates/Vagrantfile.erb
CHANGED
@@ -72,7 +72,7 @@ Vagrant.configure("2") do |c|
|
|
72
72
|
|
73
73
|
c.vm.synced_folder ".", "/vagrant", disabled: true
|
74
74
|
<% config[:synced_folders].each do |source, destination, options| %>
|
75
|
-
c.vm.synced_folder
|
75
|
+
c.vm.synced_folder <%= source.inspect %>, <%= destination.inspect %>, <%= options %>
|
76
76
|
<% end %>
|
77
77
|
|
78
78
|
c.vm.provider :<%= config[:provider] %> do |p|
|
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.21.
|
4
|
+
version: 0.21.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fletcher Nichol
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-kitchen
|