Skip to content

Instantly share code, notes, and snippets.

@llowder
Created November 16, 2012 19:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save llowder/4090041 to your computer and use it in GitHub Desktop.
Save llowder/4090041 to your computer and use it in GitHub Desktop.
require 'spec_helper'
require 'puppet_spec/compiler'
describe "When a node includes class of same name" do
include PuppetSpec::Compiler
def expect_the_message_to_be(message1, message2, node = Puppet::Node.new('ubuntu'))
catalog = compile_to_catalog(yield, node)
catalog.resource('Notify', 'nodenotify')[:message].should == message1
catalog.resource('Notify', 'classnotify')[:message].should == message2
end
def expect_the_class_to_not_be(message1, node = Puppet::Node.new('ubuntu'))
catalog1 = compile_to_catalog(yield, node)
catalog1.resource('Notify', 'nodenotify')[:message].should == message1
catalog1.resource('Notify', 'classnotify').nil?
end
describe "when include syntax is used with an absolute node name" do
it "does not load the class (1)" do
expect_the_class_to_not_be('This is the node var') do <<-MANIFEST
node ubuntu {
$var = 'This is the node var'
include ubuntu
notify { 'nodenotify': message => $var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
#Variable scope tests.
it "does not load the class, var in node and class; name::var is node::var (2)" do
expect_the_class_to_not_be('This is the node var') do <<-MANIFEST
node ubuntu {
$var = 'This is the node var'
include ubuntu
notify { 'nodenotify': message => $ubuntu::var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
it "does not load the class, var in node and class; ::name::var is node::var (3)" do
expect_the_class_to_not_be('This is the node var') do <<-MANIFEST
node ubuntu {
$var = 'This is the node var'
include ubuntu
notify { 'nodenotify': message => $::ubuntu::var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
it "does not load the class, var in class only; name::var is undefined (4)" do
expect_the_class_to_not_be(nil) do <<-MANIFEST
node ubuntu {
include ubuntu
notify { 'nodenotify': message => $ubuntu::var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
it "does not load the class, var in class only; ::name::var is undefined (5)" do
expect_the_class_to_not_be(nil) do <<-MANIFEST
node ubuntu {
include ubuntu
notify { 'nodenotify': message => $::ubuntu::var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
end
describe "when include syntax is used with a wildcard regex node name" do
it "does load the class (1)" do
expect_the_message_to_be('This is the node var', 'This is the class var') do <<-MANIFEST
node /ubunt./ {
$var = 'This is the node var'
include ubuntu
notify { 'nodenotify': message => $var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
#Variable scope tests.
it "does load the class, var in node and class; name::var in node is class::var (2)" do
expect_the_message_to_be('This is the class var', 'This is the class var') do <<-MANIFEST
node /ubunt./ {
$var = 'This is the node var'
include ubuntu
notify { 'nodenotify': message => $ubuntu::var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
it "does load the class, var in node and class; ::name::var in node is class::var (3)" do
expect_the_message_to_be('This is the class var', 'This is the class var') do <<-MANIFEST
node /ubunt./ {
$var = 'This is the node var'
include ubuntu
notify { 'nodenotify': message => $::ubuntu::var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
it "does load the class, var in class only; name::var in node is class::var (4)" do
expect_the_message_to_be('This is the class var', 'This is the class var') do <<-MANIFEST
node /ubunt./ {
include ubuntu
notify { 'nodenotify': message => $ubuntu::var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
it "does load the class, var in class only; ::name::var in node is class::var (5)" do
expect_the_message_to_be('This is the class var', 'This is the class var') do <<-MANIFEST
node /ubunt./ {
include ubuntu
notify { 'nodenotify': message => $::ubuntu::var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
end
describe "when include syntax is used with a fixed string regex node name" do
it "does load the class (1)" do
expect_the_message_to_be('This is the node var', 'This is the class var') do <<-MANIFEST
node /ubunt./ {
$var = 'This is the node var'
class { 'ubuntu': }
notify { 'nodenotify': message => $var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
#Variable scope tests.
it "does load the class, var in node and class; name::var in node is class::var (2)" do
expect_the_message_to_be('This is the class var', 'This is the class var') do <<-MANIFEST
node /ubunt./ {
$var = 'This is the node var'
class { 'ubuntu': }
notify { 'nodenotify': message => $ubuntu::var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
it "does load the class, ::name::var in node is class::var (3)" do
expect_the_message_to_be('This is the class var', 'This is the class var') do <<-MANIFEST
node /ubunt./ {
$var = 'This is the node var'
class { 'ubuntu': }
notify { 'nodenotify': message => $::ubuntu::var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
it "does load the class, var in class only; name::var in node is class::var (4)" do
expect_the_message_to_be('This is the class var', 'This is the class var') do <<-MANIFEST
node /ubunt./ {
class { 'ubuntu': }
notify { 'nodenotify': message => $ubuntu::var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
it "does load the class, var in class only; ::name::var is class::var (5)" do
expect_the_message_to_be('This is the class var', 'This is the class var') do <<-MANIFEST
node /ubunt./ {
class { 'ubuntu': }
notify { 'nodenotify': message => $::ubuntu::var, }
}
class ubuntu {
$var = 'This is the class var'
notify { 'classnotify': message => $var, }
}
MANIFEST
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment