83
83
"botscope values shadow parent scope values")
88
scope = mkscope :parser => parser
90
# first do the plain lookups
91
assert_equal("", scope.lookupvar("var"), "scope did not default to string")
92
assert_equal("", scope.lookupvar("var", true), "scope ignored usestring setting")
93
assert_equal(:undefined, scope.lookupvar("var", false), "scope ignored usestring setting when false")
96
scope.setvar("var", "yep")
97
assert_equal("yep", scope.lookupvar("var"), "did not retrieve value correctly")
99
# Now test the parent lookups
100
subscope = mkscope :parser => parser
101
subscope.parent = scope
102
assert_equal("", subscope.lookupvar("nope"), "scope did not default to string with parent")
103
assert_equal("", subscope.lookupvar("nope", true), "scope ignored usestring setting with parent")
104
assert_equal(:undefined, subscope.lookupvar("nope", false), "scope ignored usestring setting when false with parent")
106
assert_equal("yep", subscope.lookupvar("var"), "did not retrieve value correctly from parent")
108
# Now override the value in the subscope
109
subscope.setvar("var", "sub")
110
assert_equal("sub", subscope.lookupvar("var"), "did not retrieve overridden value correctly")
112
# Make sure we punt when the var is qualified. Specify the usestring value, so we know it propagates.
113
scope.expects(:lookup_qualified_var).with("one::two", false).returns(:punted)
114
assert_equal(:punted, scope.lookupvar("one::two", false), "did not return the value of lookup_qualified_var")
117
def test_lookup_qualified_var
119
scope = mkscope :parser => parser
122
classes = ["", "one", "one::two", "one::two::three"].each do |name|
123
klass = parser.newclass(name)
124
Puppet::Parser::Resource.new(:type => "class", :title => name, :scope => scope, :source => mock('source')).evaluate
125
scopes[name] = scope.compiler.class_scope(klass)
128
classes.each do |name|
129
var = [name, "var"].join("::")
130
scopes[name].expects(:lookupvar).with("var", false).returns(name)
132
assert_equal(name, scope.send(:lookup_qualified_var, var, false), "did not get correct value from lookupvar")
136
86
def test_declarative
137
87
# set to declarative
405
if defined? ActiveRecord
357
if defined? ::ActiveRecord
406
358
# Verify that we can both store and collect an object in the same
407
359
# run, whether it's in the same scope as a collection or a different
409
361
def test_storeandcollect
362
catalog_cache_class = Puppet::Resource::Catalog.indirection.cache_class
363
facts_cache_class = Puppet::Node::Facts.indirection.cache_class
364
node_cache_class = Puppet::Node.indirection.cache_class
410
365
Puppet[:storeconfigs] = true
411
366
Puppet::Rails.init
440
395
assert(flat.find{|o| o.name == name }, "Did not find #{name}")
398
Puppet[:storeconfigs] = false
399
Puppet::Resource::Catalog.cache_class = catalog_cache_class
400
Puppet::Node::Facts.cache_class = facts_cache_class
401
Puppet::Node.cache_class = node_cache_class
445
404
$stderr.puts "No ActiveRecord -- skipping collection tests"
458
417
"Did not add extra namespace correctly")
461
def test_findclass_and_finddefine
420
def test_find_hostclass_and_find_definition
462
421
parser = mkparser
464
# Make sure our scope calls the parser findclass method with
423
# Make sure our scope calls the parser find_hostclass method with
465
424
# the right namespaces
466
425
scope = mkscope :parser => parser
468
427
parser.metaclass.send(:attr_accessor, :last)
470
methods = [:findclass, :finddefine]
429
methods = [:find_hostclass, :find_definition]
471
430
methods.each do |m|
472
431
parser.meta_def(m) do |namespace, name|