hiera-puppet 0.3.0 → 1.0.0rc2
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/bin/extlookup2hiera +26 -26
- data/lib/hiera/backend/puppet_backend.rb +87 -75
- data/lib/hiera/scope.rb +40 -39
- data/lib/hiera_puppet.rb +89 -0
- data/lib/puppet/parser/functions/hiera.rb +6 -43
- data/lib/puppet/parser/functions/hiera_array.rb +6 -34
- data/lib/puppet/parser/functions/hiera_hash.rb +6 -34
- data/lib/puppet/parser/functions/hiera_include.rb +9 -35
- data/spec/helpers.rb +0 -0
- data/spec/spec_helper.rb +6 -12
- data/spec/unit/hiera/backend/puppet_backend_spec.rb +143 -0
- data/spec/unit/hiera/scope_spec.rb +64 -0
- data/spec/unit/hiera_puppet_spec.rb +105 -0
- data/spec/unit/puppet/parser/functions/hiera_array_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/hiera_hash_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/hiera_include_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/hiera_spec.rb +21 -0
- data/spec/watchr.rb +79 -0
- metadata +36 -18
- data/spec/unit/puppet_backend_spec.rb +0 -118
- data/spec/unit/scope_spec.rb +0 -64
@@ -1,36 +1,8 @@
|
|
1
1
|
module Puppet::Parser::Functions
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
key = args[0]
|
8
|
-
default = args[1]
|
9
|
-
override = args[2]
|
10
|
-
|
11
|
-
configfile = File.join([File.dirname(Puppet.settings[:config]), "hiera.yaml"])
|
12
|
-
|
13
|
-
raise(Puppet::ParseError, "Hiera config file #{configfile} not readable") unless File.exist?(configfile)
|
14
|
-
raise(Puppet::ParseError, "You need rubygems to use Hiera") unless Puppet.features.rubygems?
|
15
|
-
|
16
|
-
require 'hiera'
|
17
|
-
require 'hiera/scope'
|
18
|
-
|
19
|
-
config = YAML.load_file(configfile)
|
20
|
-
config[:logger] = "puppet"
|
21
|
-
|
22
|
-
hiera = Hiera.new(:config => config)
|
23
|
-
|
24
|
-
if self.respond_to?("[]")
|
25
|
-
hiera_scope = self
|
26
|
-
else
|
27
|
-
hiera_scope = Hiera::Scope.new(self)
|
28
|
-
end
|
29
|
-
|
30
|
-
answer = hiera.lookup(key, default, hiera_scope, override, :array)
|
31
|
-
|
32
|
-
raise(Puppet::ParseError, "Could not find data item #{key} in any Hiera data file and no default supplied") if answer.empty?
|
33
|
-
|
34
|
-
answer
|
35
|
-
end
|
2
|
+
newfunction(:hiera_array, :type => :rvalue) do |*args|
|
3
|
+
require 'hiera_puppet'
|
4
|
+
key, default, override = HieraPuppet.parse_args(args)
|
5
|
+
HieraPuppet.lookup(key, default, self, override, :array)
|
6
|
+
end
|
36
7
|
end
|
8
|
+
|
@@ -1,36 +1,8 @@
|
|
1
1
|
module Puppet::Parser::Functions
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
key = args[0]
|
8
|
-
default = args[1]
|
9
|
-
override = args[2]
|
10
|
-
|
11
|
-
configfile = File.join([File.dirname(Puppet.settings[:config]), "hiera.yaml"])
|
12
|
-
|
13
|
-
raise(Puppet::ParseError, "Hiera config file #{configfile} not readable") unless File.exist?(configfile)
|
14
|
-
raise(Puppet::ParseError, "You need rubygems to use Hiera") unless Puppet.features.rubygems?
|
15
|
-
|
16
|
-
require 'hiera'
|
17
|
-
require 'hiera/scope'
|
18
|
-
|
19
|
-
config = YAML.load_file(configfile)
|
20
|
-
config[:logger] = "puppet"
|
21
|
-
|
22
|
-
hiera = Hiera.new(:config => config)
|
23
|
-
|
24
|
-
if self.respond_to?("{}")
|
25
|
-
hiera_scope = self
|
26
|
-
else
|
27
|
-
hiera_scope = Hiera::Scope.new(self)
|
28
|
-
end
|
29
|
-
|
30
|
-
answer = hiera.lookup(key, default, hiera_scope, override, :hash)
|
31
|
-
|
32
|
-
raise(Puppet::ParseError, "Could not find data item #{key} in any Hiera data file and no default supplied") if answer.empty?
|
33
|
-
|
34
|
-
answer
|
35
|
-
end
|
2
|
+
newfunction(:hiera_hash, :type => :rvalue) do |*args|
|
3
|
+
require 'hiera_puppet'
|
4
|
+
key, default, override = HieraPuppet.parse_args(args)
|
5
|
+
HieraPuppet.lookup(key, default, self, override, :hash)
|
6
|
+
end
|
36
7
|
end
|
8
|
+
|
@@ -1,37 +1,11 @@
|
|
1
1
|
module Puppet::Parser::Functions
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
configfile = File.join([File.dirname(Puppet.settings[:config]), "hiera.yaml"])
|
12
|
-
|
13
|
-
raise(Puppet::ParseError, "Hiera config file #{configfile} not readable") unless File.exist?(configfile)
|
14
|
-
raise(Puppet::ParseError, "You need rubygems to use Hiera") unless Puppet.features.rubygems?
|
15
|
-
|
16
|
-
require 'hiera'
|
17
|
-
require 'hiera/scope'
|
18
|
-
|
19
|
-
config = YAML.load_file(configfile)
|
20
|
-
config[:logger] = "puppet"
|
21
|
-
|
22
|
-
hiera = Hiera.new(:config => config)
|
23
|
-
|
24
|
-
if self.respond_to?("[]")
|
25
|
-
hiera_scope = self
|
26
|
-
else
|
27
|
-
hiera_scope = Hiera::Scope.new(self)
|
28
|
-
end
|
29
|
-
|
30
|
-
answer = hiera.lookup(key, default, hiera_scope, override, :array)
|
31
|
-
|
32
|
-
raise(Puppet::ParseError, "Could not find data item #{key} in any Hiera data file and no default supplied") if answer.empty?
|
33
|
-
|
34
|
-
method = Puppet::Parser::Functions.function(:include)
|
35
|
-
send(method, answer)
|
36
|
-
end
|
2
|
+
newfunction(:hiera_include) do |*args|
|
3
|
+
require 'hiera_puppet'
|
4
|
+
key, default, override = HieraPuppet.parse_args(args)
|
5
|
+
answer = HieraPuppet.lookup(key, default, self, override, :array)
|
6
|
+
|
7
|
+
method = Puppet::Parser::Functions.function(:include)
|
8
|
+
send(method, answer)
|
9
|
+
end
|
37
10
|
end
|
11
|
+
|
data/spec/helpers.rb
ADDED
File without changes
|
data/spec/spec_helper.rb
CHANGED
@@ -1,20 +1,14 @@
|
|
1
|
-
|
1
|
+
$LOAD_PATH.insert(0, File.join([File.dirname(__FILE__), "..", "..", "lib"]))
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'rspec'
|
5
|
+
require 'rspec/mocks'
|
6
|
+
require 'hiera'
|
7
|
+
require 'puppetlabs_spec_helper/module_spec_helper'
|
8
|
+
require 'hiera_puppet'
|
5
9
|
require 'hiera/backend/puppet_backend'
|
6
10
|
require 'hiera/scope'
|
7
|
-
require 'rspec/mocks'
|
8
|
-
require 'mocha'
|
9
11
|
|
10
12
|
RSpec.configure do |config|
|
11
|
-
|
13
|
+
config.mock_with :mocha
|
12
14
|
end
|
13
|
-
|
14
|
-
class Puppet
|
15
|
-
class Parser
|
16
|
-
class Functions
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
@@ -0,0 +1,143 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class Hiera
|
4
|
+
module Backend
|
5
|
+
describe Puppet_backend do
|
6
|
+
before do
|
7
|
+
Hiera.stubs(:warn)
|
8
|
+
Hiera.stubs(:debug)
|
9
|
+
Backend.stubs(:datasources).yields([])
|
10
|
+
Puppet::Parser::Functions.stubs(:function).with(:include)
|
11
|
+
|
12
|
+
@mockresource = mock
|
13
|
+
@mockresource.stubs(:name).returns("ntp::config")
|
14
|
+
|
15
|
+
@mockscope = mock
|
16
|
+
@mockscope.stubs(:resource).returns(@mockresource)
|
17
|
+
|
18
|
+
@scope = Scope.new(@mockscope)
|
19
|
+
|
20
|
+
@backend = Puppet_backend.new
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#hierarchy" do
|
24
|
+
it "should use the configured datasource" do
|
25
|
+
Config.expects("[]").with(:puppet).returns({:datasource => "rspec"})
|
26
|
+
Config.expects("[]").with(:hierarchy)
|
27
|
+
|
28
|
+
["ntp", "ntp::config"].each do |klass|
|
29
|
+
Backend.expects(:parse_string).with(klass, @scope, {"calling_module" => "ntp", "calling_class" => "ntp::config"}).returns(klass)
|
30
|
+
end
|
31
|
+
|
32
|
+
@backend.hierarchy(@scope, nil).should == ["rspec::ntp::config", "rspec::ntp", "ntp::config::rspec", "ntp::rspec"]
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should not include empty class names" do
|
36
|
+
Config.expects("[]").with(:puppet).returns({:datasource => "rspec"})
|
37
|
+
Config.expects("[]").with(:hierarchy).returns(["%{foo}", "common"])
|
38
|
+
|
39
|
+
Backend.expects(:parse_string).with("common", @scope, {"calling_module" => "ntp", "calling_class" => "ntp::config"}).returns("common")
|
40
|
+
Backend.expects(:parse_string).with("%{foo}", @scope, {"calling_module" => "ntp", "calling_class" => "ntp::config"}).returns("")
|
41
|
+
|
42
|
+
@backend.hierarchy(@scope, nil).should == ["rspec::common", "ntp::config::rspec", "ntp::rspec"]
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should allow for an override data source" do
|
46
|
+
Config.expects("[]").with(:puppet).returns({:datasource => "rspec"})
|
47
|
+
Config.expects("[]").with(:hierarchy)
|
48
|
+
|
49
|
+
["ntp", "ntp::config"].each do |klass|
|
50
|
+
Backend.expects(:parse_string).with(klass, @scope, {"calling_module" => "ntp", "calling_class" => "ntp::config"}).returns(klass)
|
51
|
+
end
|
52
|
+
|
53
|
+
@backend.hierarchy(@scope, "override").should == ["rspec::override", "rspec::ntp::config", "rspec::ntp", "ntp::config::rspec", "ntp::rspec"]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "#lookup" do
|
58
|
+
it "should attempt to load data from unincluded classes" do
|
59
|
+
Backend.expects(:parse_answer).with("rspec", @scope).returns("rspec")
|
60
|
+
|
61
|
+
catalog = mock
|
62
|
+
catalog.expects(:classes).returns([])
|
63
|
+
|
64
|
+
@scope.expects(:catalog).returns(catalog)
|
65
|
+
@scope.expects(:function_include).with("rspec")
|
66
|
+
@mockscope.expects(:lookupvar).with("rspec::key").returns("rspec")
|
67
|
+
|
68
|
+
@backend.expects(:hierarchy).with(@scope, nil).returns(["rspec"])
|
69
|
+
@backend.lookup("key", @scope, nil, nil).should == "rspec"
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should not load loaded classes" do
|
73
|
+
Backend.expects(:parse_answer).with("rspec", @scope).returns("rspec")
|
74
|
+
catalog = mock
|
75
|
+
catalog.expects(:classes).returns(["rspec"])
|
76
|
+
@mockscope.expects(:catalog).returns(catalog)
|
77
|
+
@mockscope.expects(:function_include).never
|
78
|
+
@mockscope.expects(:lookupvar).with("rspec::key").returns("rspec")
|
79
|
+
|
80
|
+
@backend.expects(:hierarchy).with(@scope, nil).returns(["rspec"])
|
81
|
+
@backend.lookup("key", @scope, nil, nil).should == "rspec"
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should return the first found data" do
|
85
|
+
Backend.expects(:parse_answer).with("rspec", @scope).returns("rspec")
|
86
|
+
catalog = mock
|
87
|
+
catalog.expects(:classes).returns(["rspec", "override"])
|
88
|
+
@mockscope.expects(:catalog).returns(catalog)
|
89
|
+
@mockscope.expects(:function_include).never
|
90
|
+
@mockscope.expects(:lookupvar).with("override::key").returns("rspec")
|
91
|
+
@mockscope.expects(:lookupvar).with("rspec::key").never
|
92
|
+
|
93
|
+
@backend.expects(:hierarchy).with(@scope, "override").returns(["override", "rspec"])
|
94
|
+
@backend.lookup("key", @scope, "override", nil).should == "rspec"
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should return an array of found data for array searches" do
|
98
|
+
Backend.expects(:parse_answer).with("rspec::key", @scope).returns("rspec::key")
|
99
|
+
Backend.expects(:parse_answer).with("test::key", @scope).returns("test::key")
|
100
|
+
catalog = mock
|
101
|
+
catalog.expects(:classes).returns(["rspec", "test"])
|
102
|
+
@mockscope.expects(:catalog).returns(catalog)
|
103
|
+
@mockscope.expects(:function_include).never
|
104
|
+
@mockscope.expects(:lookupvar).with("rspec::key").returns("rspec::key")
|
105
|
+
@mockscope.expects(:lookupvar).with("test::key").returns("test::key")
|
106
|
+
|
107
|
+
@backend.expects(:hierarchy).with(@scope, nil).returns(["rspec", "test"])
|
108
|
+
@backend.lookup("key", @scope, nil, :array).should == ["rspec::key", "test::key"]
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
it "should return a hash of found data for hash searches" do
|
113
|
+
Backend.expects(:parse_answer).with("rspec::key", @scope).returns({'rspec'=>'key'})
|
114
|
+
Backend.expects(:parse_answer).with("test::key", @scope).returns({'test'=>'key'})
|
115
|
+
catalog = mock
|
116
|
+
catalog.expects(:classes).returns(["rspec", "test"])
|
117
|
+
@mockscope.expects(:catalog).returns(catalog)
|
118
|
+
@mockscope.expects(:function_include).never
|
119
|
+
@mockscope.expects(:lookupvar).with("rspec::key").returns("rspec::key")
|
120
|
+
@mockscope.expects(:lookupvar).with("test::key").returns("test::key")
|
121
|
+
|
122
|
+
@backend.expects(:hierarchy).with(@scope, nil).returns(["rspec", "test"])
|
123
|
+
@backend.lookup("key", @scope, nil, :hash).should == {'rspec'=>'key', 'test'=>'key'}
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should return a merged hash of found data for hash searches" do
|
127
|
+
Backend.expects(:parse_answer).with("rspec::key", @scope).returns({'rspec'=>'key', 'common'=>'rspec'})
|
128
|
+
Backend.expects(:parse_answer).with("test::key", @scope).returns({'test'=>'key', 'common'=>'rspec'})
|
129
|
+
catalog = mock
|
130
|
+
catalog.expects(:classes).returns(["rspec", "test"])
|
131
|
+
@mockscope.expects(:catalog).returns(catalog)
|
132
|
+
@mockscope.expects(:function_include).never
|
133
|
+
@mockscope.expects(:lookupvar).with("rspec::key").returns("rspec::key")
|
134
|
+
@mockscope.expects(:lookupvar).with("test::key").returns("test::key")
|
135
|
+
|
136
|
+
@backend.expects(:hierarchy).with(@scope, nil).returns(["rspec", "test"])
|
137
|
+
@backend.lookup("key", @scope, nil, :hash).should == {'rspec'=>'key', 'common'=>'rspec', 'test'=>'key'}
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class Hiera
|
4
|
+
describe Scope do
|
5
|
+
describe "#initialize" do
|
6
|
+
it "should store the supplied puppet scope" do
|
7
|
+
real = {}
|
8
|
+
scope = Scope.new(real)
|
9
|
+
scope.real.should == real
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#[]" do
|
14
|
+
it "should treat '' as nil" do
|
15
|
+
real = mock
|
16
|
+
real.expects(:lookupvar).with("foo").returns("")
|
17
|
+
|
18
|
+
scope = Scope.new(real)
|
19
|
+
scope["foo"].should == nil
|
20
|
+
end
|
21
|
+
|
22
|
+
it "sould return found data" do
|
23
|
+
real = mock
|
24
|
+
real.expects(:lookupvar).with("foo").returns("bar")
|
25
|
+
|
26
|
+
scope = Scope.new(real)
|
27
|
+
scope["foo"].should == "bar"
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should get calling_class and calling_module from puppet scope" do
|
31
|
+
real = mock
|
32
|
+
resource = mock
|
33
|
+
resource.expects(:name).returns("Foo::Bar").twice
|
34
|
+
|
35
|
+
real.expects(:resource).returns(resource).twice
|
36
|
+
|
37
|
+
scope = Scope.new(real)
|
38
|
+
scope["calling_class"].should == "foo::bar"
|
39
|
+
scope["calling_module"].should == "foo"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#include?" do
|
44
|
+
it "should correctly report missing data" do
|
45
|
+
real = mock
|
46
|
+
real.expects(:lookupvar).with("foo").returns("")
|
47
|
+
|
48
|
+
scope = Scope.new(real)
|
49
|
+
scope.include?("foo").should == false
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should always return true for calling_class and calling_module" do
|
53
|
+
real = mock
|
54
|
+
real.expects(:lookupvar).with("calling_class").never
|
55
|
+
real.expects(:lookupvar).with("calling_module").never
|
56
|
+
|
57
|
+
scope = Scope.new(real)
|
58
|
+
scope.include?("calling_class").should == true
|
59
|
+
scope.include?("calling_module").should == true
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'HieraPuppet' do
|
4
|
+
describe 'HieraPuppet#hiera_config' do
|
5
|
+
let(:hiera_config_data) do
|
6
|
+
{ :backend => 'yaml' }
|
7
|
+
end
|
8
|
+
|
9
|
+
context "when the hiera_config_file exists" do
|
10
|
+
before do
|
11
|
+
Hiera::Config.expects(:load).returns(hiera_config_data)
|
12
|
+
HieraPuppet.expects(:hiera_config_file).returns(true)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return a configuration hash" do
|
16
|
+
expected_results = {
|
17
|
+
:backend => 'yaml',
|
18
|
+
:logger => 'puppet'
|
19
|
+
}
|
20
|
+
HieraPuppet.send(:hiera_config).should == expected_results
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "when the hiera_config_file does not exist" do
|
25
|
+
before do
|
26
|
+
Hiera::Config.expects(:load).never
|
27
|
+
HieraPuppet.expects(:hiera_config_file).returns(nil)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should return a configuration hash" do
|
31
|
+
HieraPuppet.send(:hiera_config).should == { :logger => 'puppet' }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe 'HieraPuppet#hiera_config_file' do
|
37
|
+
it "should return nil when we cannot derive the hiera config file form Puppet.settings" do
|
38
|
+
begin
|
39
|
+
Puppet.settings[:hiera_config] = nil
|
40
|
+
rescue ArgumentError => detail
|
41
|
+
raise unless detail.message =~ /unknown configuration parameter/
|
42
|
+
end
|
43
|
+
HieraPuppet.send(:hiera_config_file).should be_nil
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should use Puppet.settings[:hiera_config] as the hiera config file" do
|
47
|
+
begin
|
48
|
+
Puppet.settings[:hiera_config] = "/dev/null/my_hiera.yaml"
|
49
|
+
rescue ArgumentError => detail
|
50
|
+
raise unless detail.message =~ /unknown configuration parameter/
|
51
|
+
pending("This example does not apply to Puppet #{Puppet.version} because it does not have this setting")
|
52
|
+
end
|
53
|
+
|
54
|
+
File.stubs(:exist?).with("/dev/null/my_hiera.yaml").returns(true)
|
55
|
+
HieraPuppet.send(:hiera_config_file).should == '/dev/null/my_hiera.yaml'
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should use Puppet.settings[:confdir] as the base directory when hiera_config is not set" do
|
59
|
+
begin
|
60
|
+
Puppet.settings[:hiera_config] = nil
|
61
|
+
rescue ArgumentError => detail
|
62
|
+
raise unless detail.message =~ /unknown configuration parameter/
|
63
|
+
end
|
64
|
+
Puppet.settings[:confdir] = "/dev/null/puppet"
|
65
|
+
File.stubs(:exist?).with('/dev/null/puppet/hiera.yaml').returns(true)
|
66
|
+
|
67
|
+
HieraPuppet.send(:hiera_config_file).should == '/dev/null/puppet/hiera.yaml'
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe 'HieraPuppet#lookup' do
|
72
|
+
let(:scope) { PuppetlabsSpec::PuppetSeams.parser_scope }
|
73
|
+
|
74
|
+
it "should return the value from Hiera" do
|
75
|
+
Hiera.any_instance.stubs(:lookup).returns('8080')
|
76
|
+
HieraPuppet.lookup('port', nil, scope, nil, :priority).should == '8080'
|
77
|
+
|
78
|
+
Hiera.any_instance.stubs(:lookup).returns(['foo', 'bar'])
|
79
|
+
HieraPuppet.lookup('ntpservers', nil, scope, nil, :array).should == ['foo', 'bar']
|
80
|
+
|
81
|
+
Hiera.any_instance.stubs(:lookup).returns({'uid' => '1000'})
|
82
|
+
HieraPuppet.lookup('user', nil, scope, nil, :hash).should == {'uid' => '1000'}
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should raise a useful error when the answer is nil" do
|
86
|
+
Hiera.any_instance.stubs(:lookup).returns(nil)
|
87
|
+
expect do
|
88
|
+
HieraPuppet.lookup('port', nil, scope, nil, :priority)
|
89
|
+
end.to raise_error(Puppet::ParseError,
|
90
|
+
/Could not find data item port in any Hiera data file and no default supplied/)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe 'HieraPuppet#parse_args' do
|
95
|
+
it 'should return a 3 item array' do
|
96
|
+
args = ['foo', '8080', nil, nil]
|
97
|
+
HieraPuppet.parse_args(args).should == ['foo', '8080', nil]
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should raise a useful error when no key is supplied' do
|
101
|
+
expect { HieraPuppet.parse_args([]) }.to raise_error(Puppet::ParseError,
|
102
|
+
/Please supply a parameter to perform a Hiera lookup/)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|