summaryrefslogtreecommitdiff
path: root/spec/unit/parser/functions/contain_spec.rb
diff options
context:
space:
mode:
authorStig Sandbeck Mathisen <ssm@debian.org>2014-09-07 10:14:36 +0200
committerStig Sandbeck Mathisen <ssm@debian.org>2014-09-07 10:14:36 +0200
commitd4b83be375ac1dead058e091191ee7c7b7c24c8a (patch)
treedc825687392ae3068de5b764be60c53122d9e02a /spec/unit/parser/functions/contain_spec.rb
parent229cbb976fe0f70f5f30548b83517b415840f9bb (diff)
parent1681684857c6e39d60d87b0b3520d8783977ceff (diff)
downloadpuppet-upstream/3.7.0.tar.gz
Imported Upstream version 3.7.0upstream/3.7.0
Diffstat (limited to 'spec/unit/parser/functions/contain_spec.rb')
-rw-r--r--spec/unit/parser/functions/contain_spec.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/spec/unit/parser/functions/contain_spec.rb b/spec/unit/parser/functions/contain_spec.rb
index 3150e0c8e..2a5aa57c7 100644
--- a/spec/unit/parser/functions/contain_spec.rb
+++ b/spec/unit/parser/functions/contain_spec.rb
@@ -3,11 +3,15 @@ require 'spec_helper'
require 'puppet_spec/compiler'
require 'puppet/parser/functions'
require 'matchers/containment_matchers'
+require 'matchers/resource'
require 'matchers/include_in_order'
+require 'unit/parser/functions/shared'
+
describe 'The "contain" function' do
include PuppetSpec::Compiler
include ContainmentMatchers
+ include Matchers::Resource
it "includes the class" do
catalog = compile_to_catalog(<<-MANIFEST)
@@ -25,6 +29,41 @@ describe 'The "contain" function' do
expect(catalog.classes).to include("contained")
end
+ it "includes the class when using a fully qualified anchored name" do
+ catalog = compile_to_catalog(<<-MANIFEST)
+ class contained {
+ notify { "contained": }
+ }
+
+ class container {
+ contain ::contained
+ }
+
+ include container
+ MANIFEST
+
+ expect(catalog.classes).to include("contained")
+ end
+
+ it "ensures that the edge is with the correct class" do
+ catalog = compile_to_catalog(<<-MANIFEST)
+ class outer {
+ class named { }
+ contain named
+ }
+
+ class named { }
+
+ include named
+ include outer
+ MANIFEST
+
+ expect(catalog).to have_resource("Class[Named]")
+ expect(catalog).to have_resource("Class[Outer]")
+ expect(catalog).to have_resource("Class[Outer::Named]")
+ expect(catalog).to contain_class("outer::named").in("outer")
+ end
+
it "makes the class contained in the current class" do
catalog = compile_to_catalog(<<-MANIFEST)
class contained {
@@ -182,4 +221,16 @@ describe 'The "contain" function' do
)
end
end
+
+ describe "When the future parser is in use" do
+ require 'puppet/pops'
+ before(:each) do
+ Puppet[:parser] = 'future'
+ compiler = Puppet::Parser::Compiler.new(Puppet::Node.new("foo"))
+ @scope = Puppet::Parser::Scope.new(compiler)
+ end
+
+ it_should_behave_like 'all functions transforming relative to absolute names', :function_contain
+ it_should_behave_like 'an inclusion function, regardless of the type of class reference,', :contain
+ end
end