summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorBlake Barnett <bdb@bdb-debvm1.stanford.edu>2008-02-28 22:54:12 -0800
committerBlake Barnett <bdb@bdb-debvm1.stanford.edu>2008-02-28 22:54:12 -0800
commit5d3dd9e718cbe69b2fe7f37bc3ec422c88a1080b (patch)
tree787bf2a1a6833a2d7e1f5ae9f9d4e4dfdeb91139 /spec
parent0139889be92add151e624710261ef6f8c0048586 (diff)
parent65b72676aef2d58314f546eb31780d1b9925b9b3 (diff)
downloadpuppet-5d3dd9e718cbe69b2fe7f37bc3ec422c88a1080b.tar.gz
puppet-5d3dd9e718cbe69b2fe7f37bc3ec422c88a1080b.tar.xz
puppet-5d3dd9e718cbe69b2fe7f37bc3ec422c88a1080b.zip
Merge branch '0.24.x' of git://reductivelabs.com/puppet into 0.24.x
Diffstat (limited to 'spec')
-rwxr-xr-xspec/integration/node.rb5
-rwxr-xr-xspec/unit/file_serving/file_base.rb6
-rwxr-xr-xspec/unit/parser/compiler.rb4
-rwxr-xr-xspec/unit/parser/interpreter.rb286
-rwxr-xr-xspec/unit/parser/resource.rb6
-rwxr-xr-xspec/unit/ral/type/exec.rb (renamed from spec/unit/ral/types/exec.rb)0
-rwxr-xr-xspec/unit/ral/type/file.rb (renamed from spec/unit/ral/types/file.rb)0
-rwxr-xr-xspec/unit/ral/type/interface.rb (renamed from spec/unit/ral/types/interface.rb)0
-rwxr-xr-xspec/unit/ral/type/mount.rb (renamed from spec/unit/ral/types/mount.rb)0
-rwxr-xr-xspec/unit/ral/type/nagios.rb (renamed from spec/unit/ral/types/nagios.rb)0
-rwxr-xr-xspec/unit/ral/type/package.rb (renamed from spec/unit/ral/types/package.rb)0
-rwxr-xr-xspec/unit/ral/type/schedule.rb (renamed from spec/unit/ral/types/schedule.rb)0
-rwxr-xr-xspec/unit/ral/type/service.rb (renamed from spec/unit/ral/types/service.rb)15
-rwxr-xr-xspec/unit/ral/type/user.rb (renamed from spec/unit/ral/types/user.rb)0
14 files changed, 177 insertions, 145 deletions
diff --git a/spec/integration/node.rb b/spec/integration/node.rb
index e4a311998..87ff448e4 100755
--- a/spec/integration/node.rb
+++ b/spec/integration/node.rb
@@ -10,10 +10,15 @@ require 'puppet/node'
describe Puppet::Node, " when using the memory terminus" do
before do
@name = "me"
+ @old_terminus = Puppet::Node.indirection.terminus_class
Puppet::Node.terminus_class = :memory
@node = Puppet::Node.new(@name)
end
+ after do
+ Puppet::Node.terminus_class = @old_terminus
+ end
+
it "should find no nodes by default" do
Puppet::Node.find(@name).should be_nil
end
diff --git a/spec/unit/file_serving/file_base.rb b/spec/unit/file_serving/file_base.rb
index e1a61cd65..ded6ae4a8 100755
--- a/spec/unit/file_serving/file_base.rb
+++ b/spec/unit/file_serving/file_base.rb
@@ -13,7 +13,11 @@ describe Puppet::FileServing::FileBase do
Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :links => :manage).links.should == :manage
end
- it "should fail if :links is set to anything other than :manage or :follow" do
+ it "should consider :ignore links equivalent to :manage links" do
+ Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :links => :ignore).links.should == :manage
+ end
+
+ it "should fail if :links is set to anything other than :manage, :follow, or :ignore" do
proc { Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :links => :else) }.should raise_error(ArgumentError)
end
diff --git a/spec/unit/parser/compiler.rb b/spec/unit/parser/compiler.rb
index 9980f2c6a..ab430da62 100755
--- a/spec/unit/parser/compiler.rb
+++ b/spec/unit/parser/compiler.rb
@@ -7,7 +7,7 @@ describe Puppet::Parser::Compiler do
@node = Puppet::Node.new "testnode"
@parser = Puppet::Parser::Parser.new :environment => "development"
- @scope_resource = stub 'scope_resource', :builtin? => true
+ @scope_resource = stub 'scope_resource', :builtin? => true, :finish => nil, :ref => 'Class[main]'
@scope = stub 'scope', :resource => @scope_resource, :source => mock("source")
@compiler = Puppet::Parser::Compiler.new(@node, @parser)
end
@@ -529,4 +529,4 @@ describe Puppet::Parser::Compiler do
lambda { @compiler.class_set("one", @node) }.should raise_error(Puppet::ParseError)
end
end
-end \ No newline at end of file
+end
diff --git a/spec/unit/parser/interpreter.rb b/spec/unit/parser/interpreter.rb
index eb5dd9aaf..f2526c73d 100755
--- a/spec/unit/parser/interpreter.rb
+++ b/spec/unit/parser/interpreter.rb
@@ -2,148 +2,158 @@
require File.dirname(__FILE__) + '/../../spec_helper'
-describe Puppet::Parser::Interpreter, " when creating parser instances" do
+describe Puppet::Parser::Interpreter do
before do
@interp = Puppet::Parser::Interpreter.new
- @parser = mock('parser')
- end
-
- it "should create a parser with code if there is code defined in the :code setting" do
- Puppet.settings.stubs(:value).with(:code, :myenv).returns("mycode")
- @parser.expects(:string=).with("mycode")
- @parser.expects(:parse)
- Puppet::Parser::Parser.expects(:new).with(:environment => :myenv).returns(@parser)
- @interp.send(:create_parser, :myenv).object_id.should equal(@parser.object_id)
- end
-
- it "should create a parser with the main manifest when the code setting is an empty string" do
- Puppet.settings.stubs(:value).with(:code, :myenv).returns("")
- Puppet.settings.stubs(:value).with(:manifest, :myenv).returns("/my/file")
- @parser.expects(:parse)
- @parser.expects(:file=).with("/my/file")
- Puppet::Parser::Parser.expects(:new).with(:environment => :myenv).returns(@parser)
- @interp.send(:create_parser, :myenv).should equal(@parser)
- end
-
- it "should return nothing when new parsers fail" do
- Puppet::Parser::Parser.expects(:new).with(:environment => :myenv).raises(ArgumentError)
- proc { @interp.send(:create_parser, :myenv) }.should raise_error(Puppet::Error)
- end
-
- it "should create parsers with environment-appropriate manifests" do
- # Set our per-environment values. We can't just stub :value, because
- # it's called by too much of the rest of the code.
- text = "[env1]\nmanifest = /t/env1.pp\n[env2]\nmanifest = /t/env2.pp"
- file = mock 'file'
- file.stubs(:changed?).returns(true)
- file.stubs(:file).returns("/whatever")
- Puppet.settings.stubs(:read_file).with(file).returns(text)
- Puppet.settings.parse(file)
-
- parser1 = mock 'parser1'
- Puppet::Parser::Parser.expects(:new).with(:environment => :env1).returns(parser1)
- parser1.expects(:file=).with("/t/env1.pp")
- parser1.expects(:parse)
- @interp.send(:create_parser, :env1)
-
- parser2 = mock 'parser2'
- Puppet::Parser::Parser.expects(:new).with(:environment => :env2).returns(parser2)
- parser2.expects(:file=).with("/t/env2.pp")
- parser2.expects(:parse)
- @interp.send(:create_parser, :env2)
- end
-end
-
-describe Puppet::Parser::Interpreter, " when managing parser instances" do
- before do
- @interp = Puppet::Parser::Interpreter.new
- @parser = mock('parser')
- end
-
- it "should use the same parser when the parser does not need reparsing" do
- @interp.expects(:create_parser).with(:myenv).returns(@parser)
- @interp.send(:parser, :myenv).should equal(@parser)
-
- @parser.expects(:reparse?).returns(false)
- @interp.send(:parser, :myenv).should equal(@parser)
- end
-
- it "should create a new parser when reparse is true" do
- oldparser = mock('oldparser')
- newparser = mock('newparser')
- oldparser.expects(:reparse?).returns(true)
- oldparser.expects(:clear)
-
- @interp.expects(:create_parser).with(:myenv).returns(oldparser)
- @interp.send(:parser, :myenv).should equal(oldparser)
- @interp.expects(:create_parser).with(:myenv).returns(newparser)
- @interp.send(:parser, :myenv).should equal(newparser)
- end
-
- it "should fail intelligently if a parser cannot be created and one does not already exist" do
- @interp.expects(:create_parser).with(:myenv).raises(ArgumentError)
- proc { @interp.send(:parser, :myenv) }.should raise_error(ArgumentError)
- end
-
- it "should keep the old parser if a new parser cannot be created" do
- # Get the first parser in the hash.
- @interp.expects(:create_parser).with(:myenv).returns(@parser)
- @interp.send(:parser, :myenv).should equal(@parser)
-
- # Have it indicate something has changed
- @parser.expects(:reparse?).returns(true)
-
- # But fail to create a new parser
- @interp.expects(:create_parser).with(:myenv).raises(ArgumentError)
-
- # And make sure we still get the old valid parser
- @interp.send(:parser, :myenv).should equal(@parser)
- end
-
- it "should use different parsers for different environments" do
- # get one for the first env
- @interp.expects(:create_parser).with(:first_env).returns(@parser)
- @interp.send(:parser, :first_env).should equal(@parser)
-
- other_parser = mock('otherparser')
- @interp.expects(:create_parser).with(:second_env).returns(other_parser)
- @interp.send(:parser, :second_env).should equal(other_parser)
- end
-end
-
-describe Puppet::Parser::Interpreter, " when compiling catalog" do
- before do
- @interp = Puppet::Parser::Interpreter.new
- @node = stub 'node', :environment => :myenv
- @compiler = mock 'compile'
@parser = mock 'parser'
end
- it "should create a compile with the node and parser" do
- @compiler.expects(:compile).returns(:config)
- @interp.expects(:parser).with(:myenv).returns(@parser)
- Puppet::Parser::Compiler.expects(:new).with(@node, @parser).returns(@compiler)
- @interp.compile(@node)
- end
-
- it "should fail intelligently when no parser can be found" do
- @node.stubs(:name).returns("whatever")
- @interp.expects(:parser).with(:myenv).returns(nil)
- proc { @interp.compile(@node) }.should raise_error(Puppet::ParseError)
- end
-end
-
-describe Puppet::Parser::Interpreter, " when returning catalog version" do
- before do
- @interp = Puppet::Parser::Interpreter.new
- end
-
- it "should ask the appropriate parser for the catalog version" do
- node = mock 'node'
- node.expects(:environment).returns(:myenv)
- parser = mock 'parser'
- parser.expects(:version).returns(:myvers)
- @interp.expects(:parser).with(:myenv).returns(parser)
- @interp.configuration_version(node).should equal(:myvers)
+ describe "when creating parser instances" do
+ it "should create a parser with code if there is code defined in the :code setting" do
+ Puppet.settings.stubs(:value).with(:code, :myenv).returns("mycode")
+ @parser.expects(:string=).with("mycode")
+ @parser.expects(:parse)
+ Puppet::Parser::Parser.expects(:new).with(:environment => :myenv).returns(@parser)
+ @interp.send(:create_parser, :myenv).object_id.should equal(@parser.object_id)
+ end
+
+ it "should create a parser with the main manifest when the code setting is an empty string" do
+ Puppet.settings.stubs(:value).with(:code, :myenv).returns("")
+ Puppet.settings.stubs(:value).with(:manifest, :myenv).returns("/my/file")
+ @parser.expects(:parse)
+ @parser.expects(:file=).with("/my/file")
+ Puppet::Parser::Parser.expects(:new).with(:environment => :myenv).returns(@parser)
+ @interp.send(:create_parser, :myenv).should equal(@parser)
+ end
+
+ it "should return nothing when new parsers fail" do
+ Puppet::Parser::Parser.expects(:new).with(:environment => :myenv).raises(ArgumentError)
+ proc { @interp.send(:create_parser, :myenv) }.should raise_error(Puppet::Error)
+ end
+
+ it "should create parsers with environment-appropriate manifests" do
+ # Set our per-environment values. We can't just stub :value, because
+ # it's called by too much of the rest of the code.
+ text = "[env1]\nmanifest = /t/env1.pp\n[env2]\nmanifest = /t/env2.pp"
+ file = mock 'file'
+ file.stubs(:changed?).returns(true)
+ file.stubs(:file).returns("/whatever")
+ Puppet.settings.stubs(:read_file).with(file).returns(text)
+ Puppet.settings.parse(file)
+
+ parser1 = mock 'parser1'
+ Puppet::Parser::Parser.expects(:new).with(:environment => :env1).returns(parser1)
+ parser1.expects(:file=).with("/t/env1.pp")
+ parser1.expects(:parse)
+ @interp.send(:create_parser, :env1)
+
+ parser2 = mock 'parser2'
+ Puppet::Parser::Parser.expects(:new).with(:environment => :env2).returns(parser2)
+ parser2.expects(:file=).with("/t/env2.pp")
+ parser2.expects(:parse)
+ @interp.send(:create_parser, :env2)
+ end
+ end
+
+ describe "when managing parser instances" do
+ it "should use the same parser when the parser does not need reparsing" do
+ @interp.expects(:create_parser).with(:myenv).returns(@parser)
+ @interp.send(:parser, :myenv).should equal(@parser)
+
+ @parser.expects(:reparse?).returns(false)
+ @interp.send(:parser, :myenv).should equal(@parser)
+ end
+
+ it "should fail intelligently if a parser cannot be created and one does not already exist" do
+ @interp.expects(:create_parser).with(:myenv).raises(ArgumentError)
+ proc { @interp.send(:parser, :myenv) }.should raise_error(ArgumentError)
+ end
+
+ it "should use different parsers for different environments" do
+ # get one for the first env
+ @interp.expects(:create_parser).with(:first_env).returns(@parser)
+ @interp.send(:parser, :first_env).should equal(@parser)
+
+ other_parser = mock('otherparser')
+ @interp.expects(:create_parser).with(:second_env).returns(other_parser)
+ @interp.send(:parser, :second_env).should equal(other_parser)
+ end
+
+ describe "when files need reparsing" do
+ it "should create a new parser" do
+ oldparser = mock('oldparser')
+ newparser = mock('newparser')
+ oldparser.expects(:reparse?).returns(true)
+ oldparser.expects(:clear)
+
+ @interp.expects(:create_parser).with(:myenv).returns(oldparser)
+ @interp.send(:parser, :myenv).should equal(oldparser)
+ @interp.expects(:create_parser).with(:myenv).returns(newparser)
+ @interp.send(:parser, :myenv).should equal(newparser)
+ end
+
+ it "should keep the old parser if a new parser cannot be created" do
+ # Get the first parser in the hash.
+ @interp.expects(:create_parser).with(:myenv).returns(@parser)
+ @interp.send(:parser, :myenv).should equal(@parser)
+
+ # Have it indicate something has changed
+ @parser.expects(:reparse?).returns(true)
+
+ # But fail to create a new parser
+ @interp.expects(:create_parser).with(:myenv).raises(ArgumentError)
+
+ # And make sure we still get the old valid parser
+ @interp.send(:parser, :myenv).should equal(@parser)
+ end
+
+ it "should log syntax errors when using the old parser" do
+ # Get the first parser in the hash.
+ @interp.stubs(:create_parser).with(:myenv).returns(@parser)
+ @interp.send(:parser, :myenv)
+
+ # Have it indicate something has changed
+ @parser.stubs(:reparse?).returns(true)
+
+ # But fail to create a new parser
+ @interp.stubs(:create_parser).with(:myenv).raises(ArgumentError)
+
+ Puppet.expects(:err)
+
+ # And make sure we still get the old valid parser
+ @interp.send(:parser, :myenv)
+ end
+ end
+ end
+
+ describe "when compiling a catalog" do
+ before do
+ @node = stub 'node', :environment => :myenv
+ @compiler = mock 'compile'
+ end
+
+ it "should create a compile with the node and parser" do
+ @compiler.expects(:compile).returns(:config)
+ @interp.expects(:parser).with(:myenv).returns(@parser)
+ Puppet::Parser::Compiler.expects(:new).with(@node, @parser).returns(@compiler)
+ @interp.compile(@node)
+ end
+
+ it "should fail intelligently when no parser can be found" do
+ @node.stubs(:name).returns("whatever")
+ @interp.expects(:parser).with(:myenv).returns(nil)
+ proc { @interp.compile(@node) }.should raise_error(Puppet::ParseError)
+ end
+ end
+
+ describe "when returning catalog version" do
+ it "should ask the appropriate parser for the catalog version" do
+ node = mock 'node'
+ node.expects(:environment).returns(:myenv)
+ parser = mock 'parser'
+ parser.expects(:version).returns(:myvers)
+ @interp.expects(:parser).with(:myenv).returns(parser)
+ @interp.configuration_version(node).should equal(:myvers)
+ end
end
end
diff --git a/spec/unit/parser/resource.rb b/spec/unit/parser/resource.rb
index 035590341..9ce7b391b 100755
--- a/spec/unit/parser/resource.rb
+++ b/spec/unit/parser/resource.rb
@@ -67,6 +67,12 @@ describe Puppet::Parser::Resource do
@resource = Puppet::Parser::Resource.new(:type => "mydefine", :title => "whatever", :scope => @scope, :source => @source)
end
+ it "should do nothing if it has already been finished" do
+ @resource.finish
+ @resource.expects(:add_metaparams).never
+ @resource.finish
+ end
+
it "should copy metaparams from its scope" do
@scope.setvar("noop", "true")
diff --git a/spec/unit/ral/types/exec.rb b/spec/unit/ral/type/exec.rb
index 260804227..260804227 100755
--- a/spec/unit/ral/types/exec.rb
+++ b/spec/unit/ral/type/exec.rb
diff --git a/spec/unit/ral/types/file.rb b/spec/unit/ral/type/file.rb
index b213987bb..b213987bb 100755
--- a/spec/unit/ral/types/file.rb
+++ b/spec/unit/ral/type/file.rb
diff --git a/spec/unit/ral/types/interface.rb b/spec/unit/ral/type/interface.rb
index 2e0176152..2e0176152 100755
--- a/spec/unit/ral/types/interface.rb
+++ b/spec/unit/ral/type/interface.rb
diff --git a/spec/unit/ral/types/mount.rb b/spec/unit/ral/type/mount.rb
index 9247601e6..9247601e6 100755
--- a/spec/unit/ral/types/mount.rb
+++ b/spec/unit/ral/type/mount.rb
diff --git a/spec/unit/ral/types/nagios.rb b/spec/unit/ral/type/nagios.rb
index 8aca7d401..8aca7d401 100755
--- a/spec/unit/ral/types/nagios.rb
+++ b/spec/unit/ral/type/nagios.rb
diff --git a/spec/unit/ral/types/package.rb b/spec/unit/ral/type/package.rb
index 5d96dc4ae..5d96dc4ae 100755
--- a/spec/unit/ral/types/package.rb
+++ b/spec/unit/ral/type/package.rb
diff --git a/spec/unit/ral/types/schedule.rb b/spec/unit/ral/type/schedule.rb
index 4e9840c34..4e9840c34 100755
--- a/spec/unit/ral/types/schedule.rb
+++ b/spec/unit/ral/type/schedule.rb
diff --git a/spec/unit/ral/types/service.rb b/spec/unit/ral/type/service.rb
index 981d38a15..0f00992fa 100755
--- a/spec/unit/ral/types/service.rb
+++ b/spec/unit/ral/type/service.rb
@@ -15,7 +15,7 @@ describe Puppet::Type::Service do
end
describe Puppet::Type::Service, "when validating attributes" do
- [:name, :binary, :hasstatus, :path, :pattern, :start, :restart, :stop, :status, :hasrestart].each do |param|
+ [:name, :binary, :hasstatus, :path, :pattern, :start, :restart, :stop, :status, :hasrestart, :control].each do |param|
it "should have a #{param} parameter" do
Puppet::Type::Service.attrtype(param).should == :param
end
@@ -30,7 +30,7 @@ end
describe Puppet::Type::Service, "when validating attribute values" do
before do
- @provider = stub 'provider', :class => Puppet::Type::Service.defaultprovider, :clear => nil
+ @provider = stub 'provider', :class => Puppet::Type::Service.defaultprovider, :clear => nil, :controllable? => false
Puppet::Type::Service.defaultprovider.stubs(:new).returns(@provider)
end
@@ -132,16 +132,23 @@ describe Puppet::Type::Service, "when setting default attribute values" do
svc[:path].should == ["testing"]
end
- it "should default to the binary for the pattern if one is provided" do
+ it "should default 'pattern' to the binary if one is provided" do
svc = Puppet::Type::Service.create(:name => "other", :binary => "/some/binary")
svc[:pattern].should == "/some/binary"
end
- it "should default to the name for the pattern if no pattern is provided" do
+ it "should default 'pattern' to the name if no pattern is provided" do
svc = Puppet::Type::Service.create(:name => "other")
svc[:pattern].should == "other"
end
+ it "should default 'control' to the upcased service name with periods replaced by underscores if the provider supports the 'controllable' feature" do
+ provider = stub 'provider', :controllable? => true, :class => Puppet::Type::Service.defaultprovider, :clear => nil
+ Puppet::Type::Service.defaultprovider.stubs(:new).returns(provider)
+ svc = Puppet::Type::Service.create(:name => "nfs.client")
+ svc[:control].should == "NFS_CLIENT_START"
+ end
+
after { Puppet::Type::Service.clear }
end
diff --git a/spec/unit/ral/types/user.rb b/spec/unit/ral/type/user.rb
index 4e43a8ceb..4e43a8ceb 100755
--- a/spec/unit/ral/types/user.rb
+++ b/spec/unit/ral/type/user.rb