summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/parser/ast/leaf.rb4
-rw-r--r--lib/puppet/parser/compiler.rb4
-rw-r--r--lib/puppet/parser/functions/extlookup.rb12
-rw-r--r--lib/puppet/parser/functions/fqdn_rand.rb2
-rw-r--r--lib/puppet/parser/resource.rb2
-rw-r--r--lib/puppet/parser/scope.rb57
-rw-r--r--lib/puppet/parser/templatewrapper.rb4
-rw-r--r--lib/puppet/resource/type.rb16
-rwxr-xr-xspec/unit/parser/ast/casestatement_spec.rb2
-rwxr-xr-xspec/unit/parser/ast/leaf_spec.rb53
-rwxr-xr-xspec/unit/parser/ast/resource_reference_spec.rb2
-rwxr-xr-xspec/unit/parser/compiler_spec.rb4
-rwxr-xr-xspec/unit/parser/functions/extlookup_spec.rb10
-rwxr-xr-xspec/unit/parser/functions/fqdn_rand_spec.rb12
-rwxr-xr-xspec/unit/parser/resource_spec.rb6
-rwxr-xr-xspec/unit/parser/scope_spec.rb83
-rwxr-xr-xspec/unit/parser/templatewrapper_spec.rb6
-rwxr-xr-xspec/unit/resource/type_spec.rb20
-rwxr-xr-xtest/language/ast/variable.rb29
-rwxr-xr-xtest/language/functions.rb24
-rwxr-xr-xtest/language/scope.rb30
21 files changed, 178 insertions, 204 deletions
diff --git a/lib/puppet/parser/ast/leaf.rb b/lib/puppet/parser/ast/leaf.rb
index c8ebc9483..64a197492 100644
--- a/lib/puppet/parser/ast/leaf.rb
+++ b/lib/puppet/parser/ast/leaf.rb
@@ -124,7 +124,7 @@ class Puppet::Parser::AST
# not include syntactical constructs, like '$' and '{}').
def evaluate(scope)
parsewrap do
- if (var = scope.lookupvar(@value, :file => file, :line => line)) == :undefined
+ if (var = scope[@value, {:file => file, :line => line}]) == :undefined
var = :undef
end
var
@@ -141,7 +141,7 @@ class Puppet::Parser::AST
def evaluate_container(scope)
container = variable.respond_to?(:evaluate) ? variable.safeevaluate(scope) : variable
- (container.is_a?(Hash) or container.is_a?(Array)) ? container : scope.lookupvar(container, :file => file, :line => line)
+ (container.is_a?(Hash) or container.is_a?(Array)) ? container : scope[container, {:file => file, :line => line}]
end
def evaluate_key(scope)
diff --git a/lib/puppet/parser/compiler.rb b/lib/puppet/parser/compiler.rb
index c1daade4c..f43a31285 100644
--- a/lib/puppet/parser/compiler.rb
+++ b/lib/puppet/parser/compiler.rb
@@ -450,7 +450,7 @@ class Puppet::Parser::Compiler
# Set the node's parameters into the top-scope as variables.
def set_node_parameters
node.parameters.each do |param, value|
- @topscope.setvar(param, value)
+ @topscope[param] = value
end
# These might be nil.
@@ -473,7 +473,7 @@ class Puppet::Parser::Compiler
Puppet.settings.each do |name, setting|
next if name.to_s == "name"
- scope.setvar name.to_s, environment[name]
+ scope[name.to_s] = environment[name]
end
end
diff --git a/lib/puppet/parser/functions/extlookup.rb b/lib/puppet/parser/functions/extlookup.rb
index 5fbf26cec..9ffca59a7 100644
--- a/lib/puppet/parser/functions/extlookup.rb
+++ b/lib/puppet/parser/functions/extlookup.rb
@@ -91,9 +91,9 @@ This is for back compatibility to interpolate variables with %. % interpolation
raise Puppet::ParseError, ("extlookup(): wrong number of arguments (#{args.length}; must be <= 3)") if args.length > 3
- extlookup_datadir = undef_as('',lookupvar('::extlookup_datadir'))
+ extlookup_datadir = undef_as('',self['::extlookup_datadir'])
- extlookup_precedence = undef_as([],lookupvar('::extlookup_precedence')).collect { |var| var.gsub(/%\{(.+?)\}/) { lookupvar("::#{$1}") } }
+ extlookup_precedence = undef_as([],self['::extlookup_precedence']).collect { |var| var.gsub(/%\{(.+?)\}/) { self["::#{$1}"] } }
datafiles = Array.new
@@ -121,9 +121,9 @@ This is for back compatibility to interpolate variables with %. % interpolation
if result[0].length == 2
val = result[0][1].to_s
- # parse %{}'s in the CSV into local variables using lookupvar()
+ # parse %{}'s in the CSV into local variables using the current scope
while val =~ /%\{(.+?)\}/
- val.gsub!(/%\{#{$1}\}/, lookupvar($1))
+ val.gsub!(/%\{#{$1}\}/, self[$1])
end
desired = val
@@ -134,9 +134,9 @@ This is for back compatibility to interpolate variables with %. % interpolation
# Individual cells in a CSV result are a weird data type and throws
# puppets yaml parsing, so just map it all to plain old strings
desired = cells.map do |c|
- # parse %{}'s in the CSV into local variables using lookupvar()
+ # parse %{}'s in the CSV into local variables using the current scope
while c =~ /%\{(.+?)\}/
- c.gsub!(/%\{#{$1}\}/, lookupvar($1))
+ c.gsub!(/%\{#{$1}\}/, self[$1])
end
c.to_s
diff --git a/lib/puppet/parser/functions/fqdn_rand.rb b/lib/puppet/parser/functions/fqdn_rand.rb
index 93ab98bcd..668802e73 100644
--- a/lib/puppet/parser/functions/fqdn_rand.rb
+++ b/lib/puppet/parser/functions/fqdn_rand.rb
@@ -7,6 +7,6 @@ Puppet::Parser::Functions::newfunction(:fqdn_rand, :type => :rvalue, :doc =>
$random_number_seed = fqdn_rand(30,30)") do |args|
require 'digest/md5'
max = args.shift
- srand(Digest::MD5.hexdigest([lookupvar('::fqdn'),args].join(':')).hex)
+ srand(Digest::MD5.hexdigest([self['::fqdn'],args].join(':')).hex)
rand(max).to_s
end
diff --git a/lib/puppet/parser/resource.rb b/lib/puppet/parser/resource.rb
index 3bb5f8601..305ba81e8 100644
--- a/lib/puppet/parser/resource.rb
+++ b/lib/puppet/parser/resource.rb
@@ -258,7 +258,7 @@ class Puppet::Parser::Resource < Puppet::Resource
def add_backward_compatible_relationship_param(name)
# Skip metaparams for which we get no value.
- return unless val = scope.lookupvar(name.to_s) and val != :undefined
+ return unless val = scope[name.to_s] and val != :undefined
# The default case: just set the value
set_parameter(name, val) and return unless @parameters[name]
diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb
index ed67cd141..67dcb1cb0 100644
--- a/lib/puppet/parser/scope.rb
+++ b/lib/puppet/parser/scope.rb
@@ -48,6 +48,35 @@ class Puppet::Parser::Scope
end
end
+ def [](name, options = {})
+ table = ephemeral?(name) ? @ephemeral.last : @symtable
+ # If the variable is qualified, then find the specified scope and look the variable up there instead.
+ if name =~ /^(.*)::(.+)$/
+ begin
+ qualified_scope($1)[$2,options]
+ rescue RuntimeError => e
+ location = (options[:file] && options[:line]) ? " at #{options[:file]}:#{options[:line]}" : ''
+ warning "Could not look up qualified variable '#{name}'; #{e.message}#{location}"
+ :undefined
+ end
+ elsif ephemeral_include?(name) or table.include?(name)
+ # We can't use "if table[name]" here because the value might be false
+ if options[:dynamic] and self != compiler.topscope
+ location = (options[:file] && options[:line]) ? " at #{options[:file]}:#{options[:line]}" : ''
+ Puppet.deprecation_warning "Dynamic lookup of $#{name}#{location} is deprecated. Support will be removed in Puppet 2.8. Use a fully-qualified variable name (e.g., $classname::variable) or parameterized classes."
+ end
+ table[name]
+ elsif parent
+ parent[name,options.merge(:dynamic => (dynamic || options[:dynamic]))]
+ else
+ :undefined
+ end
+ end
+
+ def []=(var, value)
+ setvar(var, value)
+ end
+
# A demeterific shortcut to the catalog.
def catalog
compiler.catalog
@@ -223,29 +252,9 @@ class Puppet::Parser::Scope
private :qualified_scope
# Look up a variable. The simplest value search we do.
+ # This method is effectively deprecated - use self[] instead.
def lookupvar(name, options = {})
- table = ephemeral?(name) ? @ephemeral.last : @symtable
- # If the variable is qualified, then find the specified scope and look the variable up there instead.
- if name =~ /^(.*)::(.+)$/
- begin
- qualified_scope($1).lookupvar($2,options)
- rescue RuntimeError => e
- location = (options[:file] && options[:line]) ? " at #{options[:file]}:#{options[:line]}" : ''
- warning "Could not look up qualified variable '#{name}'; #{e.message}#{location}"
- :undefined
- end
- elsif ephemeral_include?(name) or table.include?(name)
- # We can't use "if table[name]" here because the value might be false
- if options[:dynamic] and self != compiler.topscope
- location = (options[:file] && options[:line]) ? " at #{options[:file]}:#{options[:line]}" : ''
- Puppet.deprecation_warning "Dynamic lookup of $#{name}#{location} is deprecated. Support will be removed in Puppet 2.8. Use a fully-qualified variable name (e.g., $classname::variable) or parameterized classes."
- end
- table[name]
- elsif parent
- parent.lookupvar(name,options.merge(:dynamic => (dynamic || options[:dynamic])))
- else
- :undefined
- end
+ self[name, options]
end
# Return a hash containing our variables and their values, optionally (and
@@ -312,6 +321,8 @@ class Puppet::Parser::Scope
# Set a variable in the current scope. This will override settings
# in scopes above, but will not allow variables in the current scope
# to be reassigned.
+ # It's preferred that you use self[]= instead of this; only use this
+ # when you need to set options.
def setvar(name,value, options = {})
table = options[:ephemeral] ? @ephemeral.last : @symtable
if table.include?(name)
@@ -329,7 +340,7 @@ class Puppet::Parser::Scope
table[name] = value
else # append case
# lookup the value in the scope if it exists and insert the var
- table[name] = undef_as('',lookupvar(name))
+ table[name] = undef_as('',self[name])
# concatenate if string, append if array, nothing for other types
case value
when Array
diff --git a/lib/puppet/parser/templatewrapper.rb b/lib/puppet/parser/templatewrapper.rb
index 27d75bf92..83d18cc3f 100644
--- a/lib/puppet/parser/templatewrapper.rb
+++ b/lib/puppet/parser/templatewrapper.rb
@@ -25,7 +25,7 @@ class Puppet::Parser::TemplateWrapper
# Should return true if a variable is defined, false if it is not
def has_variable?(name)
- scope.lookupvar(name.to_s, :file => file, :line => script_line) != :undefined
+ scope[name.to_s, {:file => file, :line => script_line}] != :undefined
end
# Allow templates to access the defined classes
@@ -56,7 +56,7 @@ class Puppet::Parser::TemplateWrapper
# the missing_method definition here until we declare the syntax finally
# dead.
def method_missing(name, *args)
- value = scope.lookupvar(name.to_s,:file => file,:line => script_line)
+ value = scope[name.to_s, {:file => file,:line => script_line}]
if value != :undefined
return value
else
diff --git a/lib/puppet/resource/type.rb b/lib/puppet/resource/type.rb
index f8d820b77..7b251e8c7 100644
--- a/lib/puppet/resource/type.rb
+++ b/lib/puppet/resource/type.rb
@@ -225,22 +225,22 @@ class Puppet::Resource::Type
param = param.to_sym
fail Puppet::ParseError, "#{resource.ref} does not accept attribute #{param}" unless valid_parameter?(param)
- exceptwrap { scope.setvar(param.to_s, value) }
+ exceptwrap { scope[param.to_s] = value }
set[param] = true
end
if @type == :hostclass
- scope.setvar("title", resource.title.to_s.downcase) unless set.include? :title
- scope.setvar("name", resource.name.to_s.downcase ) unless set.include? :name
+ scope["title"] = resource.title.to_s.downcase unless set.include? :title
+ scope["name"] = resource.name.to_s.downcase unless set.include? :name
else
- scope.setvar("title", resource.title ) unless set.include? :title
- scope.setvar("name", resource.name ) unless set.include? :name
+ scope["title"] = resource.title unless set.include? :title
+ scope["name"] = resource.name unless set.include? :name
end
- scope.setvar("module_name", module_name) if module_name and ! set.include? :module_name
+ scope["module_name"] = module_name if module_name and ! set.include? :module_name
if caller_name = scope.parent_module_name and ! set.include?(:caller_module_name)
- scope.setvar("caller_module_name", caller_name)
+ scope["caller_module_name"] = caller_name
end
scope.class_set(self.name,scope) if hostclass? or node?
# Verify that all required arguments are either present or
@@ -253,7 +253,7 @@ class Puppet::Resource::Type
fail Puppet::ParseError, "Must pass #{param} to #{resource.ref}" unless default
value = default.safeevaluate(scope)
- scope.setvar(param.to_s, value)
+ scope[param.to_s] = value
# Set it in the resource, too, so the value makes it to the client.
resource[param] = value
diff --git a/spec/unit/parser/ast/casestatement_spec.rb b/spec/unit/parser/ast/casestatement_spec.rb
index e21190706..a76a9ae1f 100755
--- a/spec/unit/parser/ast/casestatement_spec.rb
+++ b/spec/unit/parser/ast/casestatement_spec.rb
@@ -154,7 +154,7 @@ describe Puppet::Parser::AST::CaseStatement do
tests.each do |should, values|
values.each do |value|
@scope = Puppet::Parser::Scope.new
- @scope.setvar("testparam", value)
+ @scope['testparam'] = value
result = ast.evaluate(@scope)
result.should == should
diff --git a/spec/unit/parser/ast/leaf_spec.rb b/spec/unit/parser/ast/leaf_spec.rb
index ff3fed5e9..36c790a41 100755
--- a/spec/unit/parser/ast/leaf_spec.rb
+++ b/spec/unit/parser/ast/leaf_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
describe Puppet::Parser::AST::Leaf do
before :each do
- @scope = stub 'scope'
+ @scope = Puppet::Parser::Scope.new
@value = stub 'value'
@leaf = Puppet::Parser::AST::Leaf.new(:value => @value)
end
@@ -56,7 +56,7 @@ end
describe Puppet::Parser::AST::Concat do
describe "when evaluating" do
before :each do
- @scope = stub_everything 'scope'
+ @scope = Puppet::Parser::Scope.new
end
it "should interpolate variables and concatenate their values" do
one = Puppet::Parser::AST::String.new(:value => "one")
@@ -86,7 +86,7 @@ end
describe Puppet::Parser::AST::Undef do
before :each do
- @scope = stub 'scope'
+ @scope = Puppet::Parser::Scope.new
@undef = Puppet::Parser::AST::Undef.new(:value => :undef)
end
@@ -101,12 +101,12 @@ end
describe Puppet::Parser::AST::HashOrArrayAccess do
before :each do
- @scope = stub 'scope'
+ @scope = Puppet::Parser::Scope.new
end
describe "when evaluating" do
it "should evaluate the variable part if necessary" do
- @scope.stubs(:lookupvar).with { |name,options| name == 'a'}.returns(["b"])
+ @scope["a"] = ["b"]
variable = stub 'variable', :evaluate => "a"
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => variable, :key => 0 )
@@ -117,7 +117,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
end
it "should evaluate the access key part if necessary" do
- @scope.stubs(:lookupvar).with { |name,options| name == 'a'}.returns(["b"])
+ @scope["a"] = ["b"]
index = stub 'index', :evaluate => 0
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => index )
@@ -128,7 +128,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
end
it "should be able to return an array member" do
- @scope.stubs(:lookupvar).with { |name,options| name == 'a'}.returns(["val1", "val2", "val3"])
+ @scope["a"] = %w{val1 val2 val3}
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => 1 )
@@ -136,7 +136,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
end
it "should be able to return an array member when index is a stringified number" do
- @scope.stubs(:lookupvar).with { |name,options| name == "a" }.returns(["val1", "val2", "val3"])
+ @scope["a"] = %w{val1 val2 val3}
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "1" )
@@ -144,7 +144,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
end
it "should raise an error when accessing an array with a key" do
- @scope.stubs(:lookupvar).with { |name,options| name == "a"}.returns(["val1", "val2", "val3"])
+ @scope["a"] = ["val1", "val2", "val3"]
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "get_me_the_second_element_please" )
@@ -152,7 +152,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
end
it "should be able to return an hash value" do
- @scope.stubs(:lookupvar).with { |name,options| name == 'a'}.returns({ "key1" => "val1", "key2" => "val2", "key3" => "val3" })
+ @scope["a"] = { "key1" => "val1", "key2" => "val2", "key3" => "val3" }
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" )
@@ -160,7 +160,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
end
it "should be able to return an hash value with a numerical key" do
- @scope.stubs(:lookupvar).with { |name,options| name == "a"}.returns({ "key1" => "val1", "key2" => "val2", "45" => "45", "key3" => "val3" })
+ @scope["a"] = { "key1" => "val1", "key2" => "val2", "45" => "45", "key3" => "val3" }
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "45" )
@@ -168,7 +168,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
end
it "should raise an error if the variable lookup didn't return an hash or an array" do
- @scope.stubs(:lookupvar).with { |name,options| name == "a"}.returns("I'm a string")
+ @scope["a"] = "I'm a string"
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" )
@@ -176,8 +176,6 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
end
it "should raise an error if the variable wasn't in the scope" do
- @scope.stubs(:lookupvar).with { |name,options| name == 'a'}.returns(nil)
-
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" )
lambda { access.evaluate(@scope) }.should raise_error
@@ -189,7 +187,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
end
it "should work with recursive hash access" do
- @scope.stubs(:lookupvar).with { |name,options| name == 'a'}.returns({ "key" => { "subkey" => "b" }})
+ @scope["a"] = { "key" => { "subkey" => "b" }}
access1 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key")
access2 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => access1, :key => "subkey")
@@ -198,7 +196,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
end
it "should work with interleaved array and hash access" do
- @scope.stubs(:lookupvar).with { |name,options| name == 'a'}.returns({ "key" => [ "a" , "b" ]})
+ @scope['a'] = { "key" => [ "a" , "b" ]}
access1 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key")
access2 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => access1, :key => 1)
@@ -210,16 +208,16 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
describe "when assigning" do
it "should add a new key and value" do
scope = Puppet::Parser::Scope.new
- scope.setvar("a", { 'a' => 'b' })
+ scope['a'] = { 'a' => 'b' }
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "b")
access.assign(scope, "c" )
- scope.lookupvar("a").should be_include("b")
+ scope['a'].should be_include("b")
end
it "should raise an error when assigning an array element with a key" do
- @scope.stubs(:lookupvar).with { |name,options| name == "a"}.returns([])
+ @scope['a'] = []
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "get_me_the_second_element_please" )
@@ -228,16 +226,16 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
it "should be able to return an array member when index is a stringified number" do
scope = Puppet::Parser::Scope.new
- scope.setvar("a", [])
+ scope['a'] = []
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "0" )
access.assign(scope, "val2")
- scope.lookupvar("a").should == ["val2"]
+ scope['a'].should == ["val2"]
end
it "should raise an error when trying to overwrite an hash value" do
- @scope.stubs(:lookupvar).with { |name,options| name == "a" }.returns({ "key" => [ "a" , "b" ]})
+ @scope['a'] = { "key" => [ "a" , "b" ]}
access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key")
lambda { access.assign(@scope, "test") }.should raise_error
@@ -247,7 +245,7 @@ end
describe Puppet::Parser::AST::Regex do
before :each do
- @scope = stub 'scope'
+ @scope = Puppet::Parser::Scope.new
end
describe "when initializing" do
@@ -330,22 +328,21 @@ end
describe Puppet::Parser::AST::Variable do
before :each do
- @scope = stub 'scope'
+ @scope = Puppet::Parser::Scope.new
@var = Puppet::Parser::AST::Variable.new(:value => "myvar", :file => 'my.pp', :line => 222)
end
it "should lookup the variable in scope" do
- @scope.expects(:lookupvar).with { |name,options| name == "myvar" }.returns(:myvalue)
+ @scope["myvar"] = :myvalue
@var.safeevaluate(@scope).should == :myvalue
end
it "should pass the source location to lookupvar" do
- @scope.expects(:lookupvar).with { |name,options| name == "myvar" and options[:file] == 'my.pp' and options[:line] == 222 }.returns(:myvalue)
+ @scope.setvar("myvar", :myvalue, :file => 'my.pp', :line => 222 )
@var.safeevaluate(@scope).should == :myvalue
end
it "should return undef if the variable wasn't set" do
- @scope.expects(:lookupvar).with { |name,options| name == "myvar" }.returns(:undefined)
@var.safeevaluate(@scope).should == :undef
end
@@ -359,7 +356,7 @@ end
describe Puppet::Parser::AST::HostName do
before :each do
- @scope = stub 'scope'
+ @scope = Puppet::Parser::Scope.new
@value = stub 'value', :=~ => false
@value.stubs(:to_s).returns(@value)
@value.stubs(:downcase).returns(@value)
diff --git a/spec/unit/parser/ast/resource_reference_spec.rb b/spec/unit/parser/ast/resource_reference_spec.rb
index 4d1c191cf..4e069cca0 100755
--- a/spec/unit/parser/ast/resource_reference_spec.rb
+++ b/spec/unit/parser/ast/resource_reference_spec.rb
@@ -36,7 +36,7 @@ describe Puppet::Parser::AST::ResourceReference do
end
it "should return an array of resources if given a variable containing an array of titles" do
- @scope.setvar("my_files", ["foo", "bar"])
+ @scope["my_files"] = ["foo", "bar"]
titles = Puppet::Parser::AST::Variable.new(:value => "my_files")
ref = newref('File', titles)
ref.evaluate(@scope).should == [
diff --git a/spec/unit/parser/compiler_spec.rb b/spec/unit/parser/compiler_spec.rb
index fcce9f6f4..9648e292c 100755
--- a/spec/unit/parser/compiler_spec.rb
+++ b/spec/unit/parser/compiler_spec.rb
@@ -177,8 +177,8 @@ describe Puppet::Parser::Compiler do
@node.stubs(:parameters).returns(params)
compile_stub(:set_node_parameters)
@compiler.compile
- @compiler.topscope.lookupvar("a").should == "b"
- @compiler.topscope.lookupvar("c").should == "d"
+ @compiler.topscope['a'].should == "b"
+ @compiler.topscope['c'].should == "d"
end
it "should set the client and server versions on the catalog" do
diff --git a/spec/unit/parser/functions/extlookup_spec.rb b/spec/unit/parser/functions/extlookup_spec.rb
index f68daaf3f..30962e137 100755
--- a/spec/unit/parser/functions/extlookup_spec.rb
+++ b/spec/unit/parser/functions/extlookup_spec.rb
@@ -64,7 +64,7 @@ describe "the extlookup function" do
describe "should look in $extlookup_datadir for data files listed by $extlookup_precedence" do
before do
- @scope.stubs(:lookupvar).with('::extlookup_datadir').returns("/tmp")
+ @scope.stubs(:[]).with('::extlookup_datadir').returns("/tmp")
File.open("/tmp/one.csv","w"){|one| one.puts "key,value1" }
File.open("/tmp/two.csv","w") do |two|
two.puts "key,value2"
@@ -73,21 +73,21 @@ describe "the extlookup function" do
end
it "when the key is in the first file" do
- @scope.stubs(:lookupvar).with('::extlookup_precedence').returns(["one","two"])
+ @scope.stubs(:[]).with('::extlookup_precedence').returns(["one","two"])
result = @scope.function_extlookup([ "key" ])
result.should == "value1"
end
it "when the key is in the second file" do
- @scope.stubs(:lookupvar).with('::extlookup_precedence').returns(["one","two"])
+ @scope.stubs(:[]).with('::extlookup_precedence').returns(["one","two"])
result = @scope.function_extlookup([ "key2" ])
result.should == "value_two"
end
it "should not modify extlookup_precedence data" do
variable = '%{fqdn}'
- @scope.stubs(:lookupvar).with('::extlookup_precedence').returns([variable,"one"])
- @scope.stubs(:lookupvar).with('::fqdn').returns('myfqdn')
+ @scope.stubs(:[]).with('::extlookup_precedence').returns([variable,"one"])
+ @scope.stubs(:[]).with('::fqdn').returns('myfqdn')
result = @scope.function_extlookup([ "key" ])
variable.should == '%{fqdn}'
end
diff --git a/spec/unit/parser/functions/fqdn_rand_spec.rb b/spec/unit/parser/functions/fqdn_rand_spec.rb
index 90fc0ef41..53c498453 100755
--- a/spec/unit/parser/functions/fqdn_rand_spec.rb
+++ b/spec/unit/parser/functions/fqdn_rand_spec.rb
@@ -8,6 +8,7 @@ describe "the fqdn_rand function" do
before :each do
@scope = Puppet::Parser::Scope.new
+ @scope[:fqdn] = "127.0.0.1"
end
it "should exist" do
@@ -15,49 +16,40 @@ describe "the fqdn_rand function" do
end
it "should handle 0 arguments" do
- @scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.1")
lambda { @scope.function_fqdn_rand([]) }.should_not raise_error(Puppet::ParseError)
end
it "should handle 1 argument'}" do
- @scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.1")
lambda { @scope.function_fqdn_rand([3]) }.should_not raise_error(Puppet::ParseError)
end
(1..10).each { |n|
it "should handle #{n} additional arguments" do
- @scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.1")
lambda { @scope.function_fqdn_rand([3,1,2,3,4,5,6,7,8,9,10][0..n]) }.should_not raise_error(Puppet::ParseError)
end
it "should handle #{n} additional string arguments" do
- @scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.1")
lambda { @scope.function_fqdn_rand([3,%w{ 1 2 3 4 5 6 7 8 9 10}].flatten[0..n]) }.should_not raise_error(Puppet::ParseError)
end
}
it "should return a value less than max" do
- @scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.1")
@scope.function_fqdn_rand([3]).should satisfy {|n| n.to_i < 3 }
end
it "should return the same values on subsequent invocations for the same host" do
- @scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.1").twice
@scope.function_fqdn_rand([3,4]).should eql(@scope.function_fqdn_rand([3, 4]))
end
it "should return different sequences of value for different hosts" do
- @scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.1")
val1 = @scope.function_fqdn_rand([10000000,4])
- @scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.2")
+ @scope.expects(:[]).with("::fqdn").returns("127.0.0.2")
val2 = @scope.function_fqdn_rand([10000000,4])
val1.should_not eql(val2)
end
it "should return different values for the same hosts with different seeds" do
- @scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.1")
val1 = @scope.function_fqdn_rand([10000000,4])
- @scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.1")
val2 = @scope.function_fqdn_rand([10000000,42])
val1.should_not eql(val2)
end
diff --git a/spec/unit/parser/resource_spec.rb b/spec/unit/parser/resource_spec.rb
index 1190716d7..8513b8997 100755
--- a/spec/unit/parser/resource_spec.rb
+++ b/spec/unit/parser/resource_spec.rb
@@ -271,7 +271,7 @@ describe Puppet::Parser::Resource do
end
it "should not copy relationship metaparams when not in metaparam compatibility mode" do
- @scope.setvar("require", "bar")
+ @scope['require'] = "bar"
@resource.stubs(:metaparam_compatibility_mode?).returns false
@resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
@@ -280,7 +280,7 @@ describe Puppet::Parser::Resource do
end
it "should copy relationship metaparams when in metaparam compatibility mode" do
- @scope.setvar("require", "bar")
+ @scope['require'] = "bar"
@resource.stubs(:metaparam_compatibility_mode?).returns true
@resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
@@ -290,7 +290,7 @@ describe Puppet::Parser::Resource do
it "should stack relationship metaparams when in metaparam compatibility mode" do
@resource.set_parameter("require", "foo")
- @scope.setvar("require", "bar")
+ @scope['require'] = "bar"
@resource.stubs(:metaparam_compatibility_mode?).returns true
@resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
diff --git a/spec/unit/parser/scope_spec.rb b/spec/unit/parser/scope_spec.rb
index 5308856ed..cd34df065 100755
--- a/spec/unit/parser/scope_spec.rb
+++ b/spec/unit/parser/scope_spec.rb
@@ -83,29 +83,34 @@ describe Puppet::Parser::Scope do
end
describe "when looking up a variable" do
+ it "should support :lookupvar and :setvar for backward compatibility" do
+ @scope.setvar("var", "yep")
+ @scope.lookupvar("var").should == "yep"
+ end
+
it "should return ':undefined' for unset variables" do
- @scope.lookupvar("var").should == :undefined
+ @scope["var"].should == :undefined
end
it "should be able to look up values" do
- @scope.setvar("var", "yep")
- @scope.lookupvar("var").should == "yep"
+ @scope["var"] = "yep"
+ @scope["var"].should == "yep"
end
it "should be able to look up hashes" do
- @scope.setvar("var", {"a" => "b"})
- @scope.lookupvar("var").should == {"a" => "b"}
+ @scope["var"] = {"a" => "b"}
+ @scope["var"].should == {"a" => "b"}
end
it "should be able to look up variables in parent scopes" do
- @topscope.setvar("var", "parentval")
- @scope.lookupvar("var").should == "parentval"
+ @topscope["var"] = "parentval"
+ @scope["var"].should == "parentval"
end
it "should prefer its own values to parent values" do
- @topscope.setvar("var", "parentval")
- @scope.setvar("var", "childval")
- @scope.lookupvar("var").should == "childval"
+ @topscope["var"] = "parentval"
+ @scope["var"] = "childval"
+ @scope["var"].should == "childval"
end
describe "and the variable is qualified" do
@@ -133,84 +138,84 @@ describe Puppet::Parser::Scope do
it "should be able to look up explicitly fully qualified variables from main" do
other_scope = create_class_scope("")
- other_scope.setvar("othervar", "otherval")
+ other_scope["othervar"] = "otherval"
- @scope.lookupvar("::othervar").should == "otherval"
+ @scope["::othervar"].should == "otherval"
end
it "should be able to look up explicitly fully qualified variables from other scopes" do
other_scope = create_class_scope("other")
- other_scope.setvar("var", "otherval")
+ other_scope["var"] = "otherval"
- @scope.lookupvar("::other::var").should == "otherval"
+ @scope["::other::var"].should == "otherval"
end
it "should be able to look up deeply qualified variables" do
other_scope = create_class_scope("other::deep::klass")
- other_scope.setvar("var", "otherval")
+ other_scope["var"] = "otherval"
- @scope.lookupvar("other::deep::klass::var").should == "otherval"
+ @scope["other::deep::klass::var"].should == "otherval"
end
it "should return ':undefined' for qualified variables that cannot be found in other classes" do
other_scope = create_class_scope("other::deep::klass")
- @scope.lookupvar("other::deep::klass::var").should == :undefined
+ @scope["other::deep::klass::var"].should == :undefined
end
it "should warn and return ':undefined' for qualified variables whose classes have not been evaluated" do
klass = newclass("other::deep::klass")
@scope.expects(:warning)
- @scope.lookupvar("other::deep::klass::var").should == :undefined
+ @scope["other::deep::klass::var"].should == :undefined
end
it "should warn and return ':undefined' for qualified variables whose classes do not exist" do
@scope.expects(:warning)
- @scope.lookupvar("other::deep::klass::var").should == :undefined
+ @scope["other::deep::klass::var"].should == :undefined
end
it "should return ':undefined' when asked for a non-string qualified variable from a class that does not exist" do
@scope.stubs(:warning)
- @scope.lookupvar("other::deep::klass::var").should == :undefined
+ @scope["other::deep::klass::var"].should == :undefined
end
it "should return ':undefined' when asked for a non-string qualified variable from a class that has not been evaluated" do
@scope.stubs(:warning)
klass = newclass("other::deep::klass")
- @scope.lookupvar("other::deep::klass::var").should == :undefined
+ @scope["other::deep::klass::var"].should == :undefined
end
end
end
- describe "when setvar is called with append=true" do
- it "should raise error if the variable is already defined in this scope" do
+ describe "when variables are set with append=true" do
+ it "should raise an error if the variable is already defined in this scope" do
@scope.setvar("var","1", :append => false)
lambda { @scope.setvar("var","1", :append => true) }.should raise_error(Puppet::ParseError)
end
it "should lookup current variable value" do
- @scope.expects(:lookupvar).with("var").returns("2")
+ @scope.expects(:[]).with("var").returns("2")
@scope.setvar("var","1", :append => true)
end
it "should store the concatenated string '42'" do
@topscope.setvar("var","4", :append => false)
@scope.setvar("var","2", :append => true)
- @scope.lookupvar("var").should == "42"
+ @scope["var"].should == "42"
end
it "should store the concatenated array [4,2]" do
@topscope.setvar("var",[4], :append => false)
@scope.setvar("var",[2], :append => true)
- @scope.lookupvar("var").should == [4,2]
+ @scope["var"].should == [4,2]
end
it "should store the merged hash {a => b, c => d}" do
@topscope.setvar("var",{"a" => "b"}, :append => false)
@scope.setvar("var",{"c" => "d"}, :append => true)
- @scope.lookupvar("var").should == {"a" => "b", "c" => "d"}
+ @scope["var"].should == {"a" => "b", "c" => "d"}
end
it "should raise an error when appending a hash with something other than another hash" do
@@ -285,7 +290,7 @@ describe Puppet::Parser::Scope do
it "should store the variable value" do
@scope.setvar("1", :value, :ephemeral => true)
- @scope.lookupvar("1").should == :value
+ @scope["1"].should == :value
end
it "should remove the variable value when unset_ephemeral_var is called" do
@@ -294,17 +299,17 @@ describe Puppet::Parser::Scope do
@scope.unset_ephemeral_var
- @scope.lookupvar("1").should == :undefined
+ @scope["1"].should == :undefined
end
it "should not remove classic variables when unset_ephemeral_var is called" do
- @scope.setvar("myvar", :value1)
+ @scope['myvar'] = :value1
@scope.setvar("1", :value2, :ephemeral => true)
@scope.stubs(:parent).returns(nil)
@scope.unset_ephemeral_var
- @scope.lookupvar("myvar").should == :value1
+ @scope["myvar"].should == :value1
end
it "should raise an error when setting it again" do
@@ -325,7 +330,7 @@ describe Puppet::Parser::Scope do
@scope.setvar("0", :earliest, :ephemeral => true)
@scope.new_ephemeral
@scope.setvar("0", :latest, :ephemeral => true)
- @scope.lookupvar("0").should == :latest
+ @scope["0"].should == :latest
end
it "should be able to report the current level" do
@@ -356,7 +361,7 @@ describe Puppet::Parser::Scope do
@scope.setvar("1", :value1, :ephemeral => true)
@scope.new_ephemeral
@scope.setvar("0", :value2, :ephemeral => true)
- @scope.lookupvar("1").should == :value1
+ @scope["1"].should == :value1
end
describe "when calling unset_ephemeral_var without a level" do
@@ -367,7 +372,7 @@ describe Puppet::Parser::Scope do
@scope.unset_ephemeral_var
- @scope.lookupvar("1").should == :undefined
+ @scope["1"].should == :undefined
end
end
@@ -381,7 +386,7 @@ describe Puppet::Parser::Scope do
@scope.unset_ephemeral_var(2)
- @scope.lookupvar("1").should == :value2
+ @scope["1"].should == :value2
end
end
end
@@ -421,22 +426,22 @@ describe Puppet::Parser::Scope do
describe "when unsetting variables" do
it "should be able to unset normal variables" do
- @scope.setvar("foo", "bar")
+ @scope["foo"] = "bar"
@scope.unsetvar("foo")
- @scope.lookupvar("foo").should == :undefined
+ @scope["foo"].should == :undefined
end
it "should be able to unset ephemeral variables" do
@scope.setvar("0", "bar", :ephemeral => true)
@scope.unsetvar("0")
- @scope.lookupvar("0").should == :undefined
+ @scope["0"].should == :undefined
end
it "should not unset ephemeral variables in previous ephemeral scope" do
@scope.setvar("0", "bar", :ephemeral => true)
@scope.new_ephemeral
@scope.unsetvar("0")
- @scope.lookupvar("0").should == "bar"
+ @scope["0"].should == "bar"
end
end
diff --git a/spec/unit/parser/templatewrapper_spec.rb b/spec/unit/parser/templatewrapper_spec.rb
index 600293bbf..6080346fb 100755
--- a/spec/unit/parser/templatewrapper_spec.rb
+++ b/spec/unit/parser/templatewrapper_spec.rb
@@ -72,25 +72,23 @@ describe Puppet::Parser::TemplateWrapper do
end
it "should return the contents of a variable if called via method_missing" do
- @scope.expects(:lookupvar).with { |name,options| name == "chicken"}.returns("is good")
+ @scope["chicken"] = "is good"
tw = Puppet::Parser::TemplateWrapper.new(@scope)
tw.chicken.should eql("is good")
end
it "should throw an exception if a variable is called via method_missing and it does not exist" do
- @scope.expects(:lookupvar).with { |name,options| name == "chicken"}.returns(:undefined)
tw = Puppet::Parser::TemplateWrapper.new(@scope)
lambda { tw.chicken }.should raise_error(Puppet::ParseError)
end
it "should allow you to check whether a variable is defined with has_variable?" do
- @scope.expects(:lookupvar).with { |name,options| name == "chicken"}.returns("is good")
+ @scope["chicken"] = "is good"
tw = Puppet::Parser::TemplateWrapper.new(@scope)
tw.has_variable?("chicken").should eql(true)
end
it "should allow you to check whether a variable is not defined with has_variable?" do
- @scope.expects(:lookupvar).with { |name,options| name == "chicken"}.returns(:undefined)
tw = Puppet::Parser::TemplateWrapper.new(@scope)
tw.has_variable?("chicken").should eql(false)
end
diff --git a/spec/unit/resource/type_spec.rb b/spec/unit/resource/type_spec.rb
index 352f767e4..f29c93931 100755
--- a/spec/unit/resource/type_spec.rb
+++ b/spec/unit/resource/type_spec.rb
@@ -249,7 +249,7 @@ describe Puppet::Resource::Type do
var = Puppet::Parser::AST::Variable.new({'value' => variable})
@type.set_arguments :foo => var
@type.set_resource_parameters(@resource, @scope)
- @scope.lookupvar('foo').should == 'bar'
+ @scope['foo'].should == 'bar'
end
end
@@ -262,7 +262,7 @@ describe Puppet::Resource::Type do
var = Puppet::Parser::AST::Variable.new({'value' => 'name'})
@type.set_arguments :foo => var
@type.set_resource_parameters(@resource, @scope)
- @scope.lookupvar('foo').should == 'foobar'
+ @scope['foo'].should == 'foobar'
end
it "should set each of the resource's parameters as variables in the scope" do
@@ -272,8 +272,8 @@ describe Puppet::Resource::Type do
@type.set_resource_parameters(@resource, @scope)
- @scope.lookupvar("foo").should == "bar"
- @scope.lookupvar("boo").should == "baz"
+ @scope['foo'].should == "bar"
+ @scope['boo'].should == "baz"
end
it "should set the variables as strings" do
@@ -282,7 +282,7 @@ describe Puppet::Resource::Type do
@type.set_resource_parameters(@resource, @scope)
- @scope.lookupvar("foo").should == "bar"
+ @scope['foo'].should == "bar"
end
it "should fail if any of the resource's parameters are not valid attributes" do
@@ -295,7 +295,7 @@ describe Puppet::Resource::Type do
it "should evaluate and set its default values as variables for parameters not provided by the resource" do
@type.set_arguments :foo => stub("value", :safeevaluate => "something")
@type.set_resource_parameters(@resource, @scope)
- @scope.lookupvar("foo").should == "something"
+ @scope['foo'].should == "something"
end
it "should set all default values as parameters in the resource" do
@@ -316,13 +316,13 @@ describe Puppet::Resource::Type do
it "should set the resource's title as a variable if not otherwise provided" do
@type.set_resource_parameters(@resource, @scope)
- @scope.lookupvar("title").should == "bar"
+ @scope['title'].should == "bar"
end
it "should set the resource's name as a variable if not otherwise provided" do
@type.set_resource_parameters(@resource, @scope)
- @scope.lookupvar("name").should == "bar"
+ @scope['name'].should == "bar"
end
it "should set its module name in the scope if available" do
@@ -330,7 +330,7 @@ describe Puppet::Resource::Type do
@type.set_resource_parameters(@resource, @scope)
- @scope.lookupvar("module_name").should == "mymod"
+ @scope["module_name"].should == "mymod"
end
it "should set its caller module name in the scope if available" do
@@ -338,7 +338,7 @@ describe Puppet::Resource::Type do
@type.set_resource_parameters(@resource, @scope)
- @scope.lookupvar("caller_module_name").should == "mycaller"
+ @scope["caller_module_name"].should == "mycaller"
end
end
diff --git a/test/language/ast/variable.rb b/test/language/ast/variable.rb
deleted file mode 100755
index 968d1b7c3..000000000
--- a/test/language/ast/variable.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env ruby
-#
-# Created by Luke A. Kanies on 2007-0419.
-# Copyright (c) 2006. All rights reserved.
-
-require File.expand_path(File.dirname(__FILE__) + '/../../lib/puppettest')
-
-require 'puppettest'
-require 'puppettest/parsertesting'
-
-class TestVariable < Test::Unit::TestCase
- include PuppetTest
- include PuppetTest::ParserTesting
- AST = Puppet::Parser::AST
-
- def setup
- super
- @scope = mkscope
- @name = "myvar"
- @var = AST::Variable.new(:value => @name)
- end
-
- def test_evaluate
- assert_equal(:undef, @var.evaluate(@scope), "did not return :undef on unset var")
- @scope.setvar(@name, "something")
- assert_equal("something", @var.evaluate(@scope), "incorrect variable value")
- end
-end
-
diff --git a/test/language/functions.rb b/test/language/functions.rb
index 84b1b3861..44d86f0f9 100755
--- a/test/language/functions.rb
+++ b/test/language/functions.rb
@@ -148,17 +148,17 @@ class TestLangFunctions < Test::Unit::TestCase
# Test that our use of an undefined instance variable does not throw
# an exception, but only safely continues.
- scope.setvar("one", "One")
+ scope['one'] = "One"
assert_nothing_raised do
ast.evaluate(scope)
end
# Ensure that we got the output we expected from that evaluation.
- assert_equal("template One\ntemplate \n", scope.lookupvar("output"), "Undefined template variables do not raise exceptions")
+ assert_equal("template One\ntemplate \n", scope['output'], "Undefined template variables do not raise exceptions")
# Now, fill in the last variable and make sure the whole thing
# evaluates correctly.
- scope.setvar("two", "Two")
+ scope['two'] = "Two"
scope.unsetvar("output")
assert_nothing_raised do
ast.evaluate(scope)
@@ -166,7 +166,7 @@ class TestLangFunctions < Test::Unit::TestCase
assert_equal(
- "template One\ntemplate Two\n", scope.lookupvar("output"),
+ "template One\ntemplate Two\n", scope['output'],
"Templates were not handled correctly")
end
@@ -199,7 +199,7 @@ class TestLangFunctions < Test::Unit::TestCase
ast.evaluate(scope)
end
- scope.setvar("yay", "this is yay")
+ scope['yay'] = "this is yay"
assert_nothing_raised do
ast.evaluate(scope)
@@ -207,7 +207,7 @@ class TestLangFunctions < Test::Unit::TestCase
assert_equal(
- "template this is yay\n", scope.lookupvar("output"),
+ "template this is yay\n", scope['output'],
"Templates were not handled correctly")
@@ -243,14 +243,14 @@ class TestLangFunctions < Test::Unit::TestCase
end
# Verify that we evaluate and return their value correctly.
- scope.setvar("deprecated", "deprecated value")
+ scope["deprecated"] = "deprecated value"
assert_nothing_raised do
ast.evaluate(scope)
end
assert_equal(
- "template deprecated value\n", scope.lookupvar("output"),
+ "template deprecated value\n", scope['output'],
"Deprecated template variables were not handled correctly")
end
@@ -305,7 +305,7 @@ class TestLangFunctions < Test::Unit::TestCase
ast = varobj("output", func)
scope = mkscope
- scope.setvar("myvar", "this is yayness")
+ scope['myvar'] = "this is yayness"
assert_raise(Puppet::ParseError) do
ast.evaluate(scope)
end
@@ -381,15 +381,15 @@ class TestLangFunctions < Test::Unit::TestCase
false => "false",
}.each do |string, value|
scope = mkscope
- scope.setvar("yayness", string)
- assert_equal(string, scope.lookupvar("yayness"))
+ scope['yayness'] = string
+ assert_equal(scope['yayness'], string, "did not correctly evaluate '#{string}'")
assert_nothing_raised("An empty string was not a valid variable value") do
ast.evaluate(scope)
end
assert_equal(
- "template #{value}\n", scope.lookupvar("output"),
+ "template #{value}\n", scope['output'],
"#{string.inspect} did not get evaluated correctly")
end
end
diff --git a/test/language/scope.rb b/test/language/scope.rb
index ccc359651..57824d887 100755
--- a/test/language/scope.rb
+++ b/test/language/scope.rb
@@ -40,24 +40,24 @@ class TestScope < Test::Unit::TestCase
scopes = {:top => topscope, :mid => midscope, :bot => botscope}
# Set a variable in the top and make sure all three can get it
- topscope.setvar("first", "topval")
+ topscope['first'] = 'topval'
scopes.each do |name, scope|
- assert_equal("topval", scope.lookupvar("first"), "Could not find var in #{name}")
+ assert_equal("topval", scope['first'], "Could not find var in #{name}")
end
# Now set a var in the midscope and make sure the mid and bottom can see it but not the top
- midscope.setvar("second", "midval")
- assert_equal(:undefined, scopes[:top].lookupvar("second"), "Found child var in top scope")
+ midscope['second'] = "midval"
+ assert_equal(:undefined, scopes[:top]['second'], "Found child var in top scope")
[:mid, :bot].each do |name|
- assert_equal("midval", scopes[name].lookupvar("second"), "Could not find var in #{name}")
+ assert_equal("midval", scopes[name]['second'], "Could not find var in #{name}")
end
# And set something in the bottom, and make sure we only find it there.
- botscope.setvar("third", "botval")
+ botscope['third'] = "botval"
[:top, :mid].each do |name|
- assert_equal(:undefined, scopes[name].lookupvar("third"), "Found child var in top scope")
+ assert_equal(:undefined, scopes[name]['third'], "Found child var in top scope")
end
- assert_equal("botval", scopes[:bot].lookupvar("third"), "Could not find var in bottom scope")
+ assert_equal("botval", scopes[:bot]['third'], "Could not find var in bottom scope")
# Test that the scopes convert to hash structures correctly.
@@ -84,7 +84,7 @@ class TestScope < Test::Unit::TestCase
# Finally, check the ability to shadow symbols by adding a shadow to
# bottomscope, then checking that we see the right stuff.
- botscope.setvar("first", "shadowval")
+ botscope['first'] = "shadowval"
assert_equal(
{"third" => "botval", "first" => "shadowval"},
@@ -105,16 +105,16 @@ class TestScope < Test::Unit::TestCase
sub = mkscope(:parent => top)
assert_nothing_raised {
- top.setvar("test","value")
+ top['test'] = "value"
}
assert_raise(Puppet::ParseError) {
- top.setvar("test","other")
+ top['test'] = 'other'
}
assert_nothing_raised {
- sub.setvar("test","later")
+ top['other'] = 'later'
}
assert_raise(Puppet::ParseError) {
- top.setvar("test","yeehaw")
+ top['other'] = 'yeehaw'
}
end
@@ -259,8 +259,8 @@ Host <<||>>"
def test_lookupvar_with_undef
scope = mkscope
- scope.setvar("testing", :undef)
- assert_equal(:undef, scope.lookupvar("testing"), "undef was not returned as :undef")
+ scope['testing'] = :undef
+ assert_equal(:undef, scope['testing'], "undef was not returned as :undef")
end
end