summaryrefslogtreecommitdiff
path: root/spec/functions/assert_private_spec.rb
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2014-12-19 12:25:21 +0100
committerTravis Fields <travis@puppetlabs.com>2015-03-05 10:59:31 -0800
commit56d815bcfc5f57d8dff974fd8bba192c6b141f89 (patch)
treed64a5cf7d5223e6bcba82248108ca32dd10ecadf /spec/functions/assert_private_spec.rb
parent706b9e8205f1ff205226ef53e7d9b58de5cb6e54 (diff)
Rename private() to assert_private()
As mentioned in #270, private is a reserved keyword in the future parser which is to be released with Puppet 4. As it stands, this function is not useable with the future parser so it needs to renamed. This is a breaking change.
Diffstat (limited to 'spec/functions/assert_private_spec.rb')
-rwxr-xr-xspec/functions/assert_private_spec.rb55
1 files changed, 55 insertions, 0 deletions
diff --git a/spec/functions/assert_private_spec.rb b/spec/functions/assert_private_spec.rb
new file mode 100755
index 0000000..a009d28
--- /dev/null
+++ b/spec/functions/assert_private_spec.rb
@@ -0,0 +1,55 @@
+#! /usr/bin/env ruby -S rspec
+require 'spec_helper'
+
+describe Puppet::Parser::Functions.function(:assert_private) do
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
+
+ subject do
+ function_name = Puppet::Parser::Functions.function(:assert_private)
+ scope.method(function_name)
+ end
+
+ context "when called from inside module" do
+ it "should not fail" do
+ scope.expects(:lookupvar).with('module_name').returns('foo')
+ scope.expects(:lookupvar).with('caller_module_name').returns('foo')
+ expect {
+ subject.call []
+ }.not_to raise_error
+ end
+ end
+
+ context "with an explicit failure message" do
+ it "prints the failure message on error" do
+ scope.expects(:lookupvar).with('module_name').returns('foo')
+ scope.expects(:lookupvar).with('caller_module_name').returns('bar')
+ expect {
+ subject.call ['failure message!']
+ }.to raise_error Puppet::ParseError, /failure message!/
+ end
+ end
+
+ context "when called from private class" do
+ it "should fail with a class error message" do
+ scope.expects(:lookupvar).with('module_name').returns('foo')
+ scope.expects(:lookupvar).with('caller_module_name').returns('bar')
+ scope.source.expects(:name).returns('foo::baz')
+ scope.source.expects(:type).returns('hostclass')
+ expect {
+ subject.call []
+ }.to raise_error Puppet::ParseError, /Class foo::baz is private/
+ end
+ end
+
+ context "when called from private definition" do
+ it "should fail with a class error message" do
+ scope.expects(:lookupvar).with('module_name').returns('foo')
+ scope.expects(:lookupvar).with('caller_module_name').returns('bar')
+ scope.source.expects(:name).returns('foo::baz')
+ scope.source.expects(:type).returns('definition')
+ expect {
+ subject.call []
+ }.to raise_error Puppet::ParseError, /Definition foo::baz is private/
+ end
+ end
+end