berkshelf-vagrant 1.0.3 → 1.0.4
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/Gemfile +0 -5
- data/lib/berkshelf/vagrant/config.rb +28 -16
- data/lib/berkshelf/vagrant/version.rb +1 -1
- data/spec/spec_helper.rb +3 -15
- data/spec/unit/berkshelf/vagrant/config_spec.rb +58 -0
- metadata +5 -3
data/Gemfile
CHANGED
@@ -1,13 +1,9 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
# Specify your gem's dependencies in berkshelf-vagrant.gemspec
|
4
3
|
gemspec
|
5
4
|
|
6
5
|
group :development do
|
7
6
|
gem 'vagrant', github: "mitchellh/vagrant", tag: "v1.1.2"
|
8
|
-
end
|
9
|
-
|
10
|
-
group :test do
|
11
7
|
gem 'coolline'
|
12
8
|
gem 'guard', '>= 1.5.0'
|
13
9
|
gem 'guard-rspec'
|
@@ -16,7 +12,6 @@ group :test do
|
|
16
12
|
gem 'redcarpet'
|
17
13
|
gem 'yard'
|
18
14
|
gem 'fuubar'
|
19
|
-
gem 'rspec'
|
20
15
|
|
21
16
|
require 'rbconfig'
|
22
17
|
|
@@ -18,20 +18,24 @@ module Berkshelf
|
|
18
18
|
# and copied to Vagrant's shelf
|
19
19
|
attr_accessor :except
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
# @return [String]
|
22
|
+
# the Chef node name (client name) to use to authenticate with the remote
|
23
|
+
# chef server to upload cookbooks when using the chef client provisioner
|
24
|
+
attr_accessor :node_name
|
23
25
|
|
24
|
-
|
25
|
-
|
26
|
-
|
26
|
+
# @return [String]
|
27
|
+
# a filepath to a chef client key to use to authenticate with the remote
|
28
|
+
# chef server to upload cookbooks when using the chef client provisioner
|
29
|
+
attr_accessor :client_key
|
27
30
|
|
28
|
-
|
29
|
-
|
31
|
+
def initialize
|
32
|
+
super
|
30
33
|
|
31
|
-
|
32
|
-
@
|
33
|
-
@
|
34
|
-
@
|
34
|
+
@berksfile_path = File.join(Dir.pwd, Berkshelf::DEFAULT_FILENAME)
|
35
|
+
@except = Array.new
|
36
|
+
@only = Array.new
|
37
|
+
@node_name = Berkshelf::Config.instance.chef.node_name
|
38
|
+
@client_key = Berkshelf::Config.instance.chef.client_key
|
35
39
|
end
|
36
40
|
|
37
41
|
# @param [String] value
|
@@ -49,17 +53,25 @@ module Berkshelf
|
|
49
53
|
def validate(machine)
|
50
54
|
errors = Array.new
|
51
55
|
|
56
|
+
if machine.config.berkshelf.berksfile_path.nil?
|
57
|
+
errors << "berkshelf.berksfile_path cannot be nil."
|
58
|
+
end
|
59
|
+
|
60
|
+
unless File.exist?(machine.config.berkshelf.berksfile_path)
|
61
|
+
errors << "No Berskfile was found at #{machine.config.berkshelf.berksfile_path}."
|
62
|
+
end
|
63
|
+
|
52
64
|
if !except.empty? && !only.empty?
|
53
|
-
errors
|
65
|
+
errors << "A value for berkshelf.empty and berkshelf.only cannot both be defined."
|
54
66
|
end
|
55
67
|
|
56
68
|
if chef_client?(machine.env)
|
57
|
-
if
|
58
|
-
errors
|
69
|
+
if machine.config.berkshelf.node_name.nil?
|
70
|
+
errors << "A configuration must be set for chef.node_name when using the chef_client provisioner. Run 'berks configure' or edit your configuration."
|
59
71
|
end
|
60
72
|
|
61
|
-
if
|
62
|
-
errors
|
73
|
+
if machine.config.berkshelf.client_key.nil?
|
74
|
+
errors << "A configuration must be set for chef.client_key when using the chef_client provisioner. Run 'berks configure' or edit your configuration."
|
63
75
|
end
|
64
76
|
end
|
65
77
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'bundler'
|
2
|
+
require 'bundler/setup'
|
3
3
|
require 'spork'
|
4
4
|
|
5
5
|
Spork.prefork do
|
@@ -9,23 +9,11 @@ Spork.prefork do
|
|
9
9
|
require 'rspec'
|
10
10
|
|
11
11
|
RSpec.configure do |config|
|
12
|
-
config.mock_with :rspec
|
13
12
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
14
|
-
config.filter_run focus: true
|
15
13
|
config.run_all_when_everything_filtered = true
|
14
|
+
config.filter_run focus: true
|
16
15
|
|
17
|
-
config.
|
18
|
-
clean_tmp_path
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def clean_tmp_path
|
23
|
-
FileUtils.rm_rf(tmp_path)
|
24
|
-
FileUtils.mkdir_p(tmp_path)
|
25
|
-
end
|
26
|
-
|
27
|
-
def tmp_path
|
28
|
-
File.join(APP_ROOT, 'spec', 'tmp')
|
16
|
+
config.order = 'random'
|
29
17
|
end
|
30
18
|
end
|
31
19
|
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Berkshelf::Vagrant::Config do
|
4
|
+
let(:unset_value) { described_class::UNSET_VALUE }
|
5
|
+
|
6
|
+
subject { described_class.new }
|
7
|
+
|
8
|
+
it "sets a path to a Berksfile in the current working directory for berksfile_path" do
|
9
|
+
subject.berksfile_path.should eql(File.join(Dir.pwd, "Berksfile"))
|
10
|
+
end
|
11
|
+
|
12
|
+
it "sets the value of only to an empty array" do
|
13
|
+
subject.only.should be_a(Array)
|
14
|
+
subject.only.should be_empty
|
15
|
+
end
|
16
|
+
|
17
|
+
it "sets the value of except to an empty array" do
|
18
|
+
subject.except.should be_a(Array)
|
19
|
+
subject.except.should be_empty
|
20
|
+
end
|
21
|
+
|
22
|
+
it "sets the value of node_name to the value in the Berkshelf::Config.instance" do
|
23
|
+
subject.node_name.should eql(Berkshelf::Config.instance.chef.node_name)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "sets the value of client_key to the value in Berkshelf::Config.instance" do
|
27
|
+
subject.client_key.should eql(Berkshelf::Config.instance.chef.client_key)
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#validate" do
|
31
|
+
let(:env) { double('env') }
|
32
|
+
let(:config) { double('config', berkshelf: subject) }
|
33
|
+
let(:machine) { double('machine', config: config, env: env) }
|
34
|
+
|
35
|
+
before(:each) do
|
36
|
+
subject.finalize!
|
37
|
+
subject.should_receive(:chef_client?).with(env).and_return(true)
|
38
|
+
end
|
39
|
+
|
40
|
+
let(:result) { subject.validate(machine) }
|
41
|
+
|
42
|
+
it "returns a Hash with a 'berkshelf configuration' key" do
|
43
|
+
result.should be_a(Hash)
|
44
|
+
result.should have_key("berkshelf configuration")
|
45
|
+
end
|
46
|
+
|
47
|
+
context "when all validations pass" do
|
48
|
+
before(:each) do
|
49
|
+
File.should_receive(:exist?).with(subject.berksfile_path).and_return(true)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "contains an empty Array for the 'berkshelf configuration' key" do
|
53
|
+
result["berkshelf configuration"].should be_a(Array)
|
54
|
+
result["berkshelf configuration"].should be_empty
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: berkshelf-vagrant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
prerelease:
|
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-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: berkshelf
|
@@ -216,6 +216,7 @@ files:
|
|
216
216
|
- lib/berkshelf/vagrant/plugin.rb
|
217
217
|
- lib/berkshelf/vagrant/version.rb
|
218
218
|
- spec/spec_helper.rb
|
219
|
+
- spec/unit/berkshelf/vagrant/config_spec.rb
|
219
220
|
- spec/unit/berkshelf/vagrant/errors_spec.rb
|
220
221
|
- spec/unit/berkshelf/vagrant_spec.rb
|
221
222
|
homepage: http://berkshelf.com
|
@@ -239,7 +240,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
239
240
|
version: '0'
|
240
241
|
segments:
|
241
242
|
- 0
|
242
|
-
hash: -
|
243
|
+
hash: -3541994389694666662
|
243
244
|
requirements: []
|
244
245
|
rubyforge_project:
|
245
246
|
rubygems_version: 1.8.24
|
@@ -248,6 +249,7 @@ specification_version: 3
|
|
248
249
|
summary: A Vagrant plugin to add Berkshelf integration to the Chef provisioners
|
249
250
|
test_files:
|
250
251
|
- spec/spec_helper.rb
|
252
|
+
- spec/unit/berkshelf/vagrant/config_spec.rb
|
251
253
|
- spec/unit/berkshelf/vagrant/errors_spec.rb
|
252
254
|
- spec/unit/berkshelf/vagrant_spec.rb
|
253
255
|
has_rdoc:
|