We were previously not defaulting to an environment,
which is silly given that there's always a default.  It
just made setup code harder.  We now default to the default
environment.

This makes further testing involving scopes much easier.

Signed-off-by: Luke Kanies <[email protected]>
---
Local-branch: refactor/master/8232-array_indexers_on_scope
 lib/puppet/parser/scope.rb     |    8 ++------
 spec/unit/parser/scope_spec.rb |   24 ++++++++++++------------
 2 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb
index 67dcb1c..711655e 100644
--- a/lib/puppet/parser/scope.rb
+++ b/lib/puppet/parser/scope.rb
@@ -82,10 +82,6 @@ class Puppet::Parser::Scope
     compiler.catalog
   end
 
-  def environment
-    compiler.environment
-  end
-
   # Proxy accessors
   def host
     @compiler.node.name
@@ -130,7 +126,7 @@ class Puppet::Parser::Scope
 
   # Remove this when rebasing
   def environment
-    compiler ? compiler.environment : nil
+    compiler ? compiler.environment : Puppet::Node::Environment.new
   end
 
   def find_hostclass(name)
@@ -454,6 +450,6 @@ class Puppet::Parser::Scope
 
   def extend_with_functions_module
     extend 
Puppet::Parser::Functions.environment_module(Puppet::Node::Environment.root)
-    extend Puppet::Parser::Functions.environment_module(environment)
+    extend Puppet::Parser::Functions.environment_module(environment) if 
environment != Puppet::Node::Environment.root
   end
 end
diff --git a/spec/unit/parser/scope_spec.rb b/spec/unit/parser/scope_spec.rb
index cd34df0..e081800 100755
--- a/spec/unit/parser/scope_spec.rb
+++ b/spec/unit/parser/scope_spec.rb
@@ -47,6 +47,10 @@ describe Puppet::Parser::Scope do
     scope = Puppet::Parser::Scope.new :compiler => compiler
     scope.environment.should equal(env)
   end
+  
+  it "should use the default environment if none is available" do
+    Puppet::Parser::Scope.new.environment.should 
equal(Puppet::Node::Environment.new)
+  end
 
   it "should use the resource type collection helper to find its known 
resource types" do
     Puppet::Parser::Scope.ancestors.should 
include(Puppet::Resource::TypeCollectionHelper)
@@ -55,22 +59,18 @@ describe Puppet::Parser::Scope do
   describe "when initializing" do
     it "should extend itself with its environment's Functions module as well 
as the default" do
       env = Puppet::Node::Environment.new("myenv")
+      root = Puppet::Node::Environment.root
       compiler = stub 'compiler', :environment => env
-      mod      = Module.new
-      root_mod = Module.new
-      
Puppet::Parser::Functions.expects(:environment_module).with(Puppet::Node::Environment.root).returns
 root_mod
-      Puppet::Parser::Functions.expects(:environment_module).with(env).returns 
mod
 
-      Puppet::Parser::Scope.new(:compiler => 
compiler).singleton_class.ancestors.should be_include(mod)
+      scope = Puppet::Parser::Scope.new(:compiler => compiler)
+      scope.singleton_class.ancestors.should 
be_include(Puppet::Parser::Functions.environment_module(env))
+      scope.singleton_class.ancestors.should 
be_include(Puppet::Parser::Functions.environment_module(root))
     end
 
-    it "should extend itself with the default Functions module if it has no 
environment" do
-      mod = Module.new
-      
Puppet::Parser::Functions.expects(:environment_module).with(Puppet::Node::Environment.root).returns(mod)
-
-      Puppet::Parser::Functions.expects(:environment_module).with(nil).returns 
mod
-
-      Puppet::Parser::Scope.new.singleton_class.ancestors.should 
be_include(mod)
+    it "should extend itself with the default Functions module if its 
environment is the default" do
+      root = Puppet::Node::Environment.root
+      scope = Puppet::Parser::Scope.new
+      scope.singleton_class.ancestors.should 
be_include(Puppet::Parser::Functions.environment_module(root))
     end
 
     it "should remember if it is dynamic" do
-- 
1.7.3.1

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to