puppet 0.24.6 → 0.24.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +115 -0
- data/Rakefile +43 -14
- data/bin/puppetca +6 -5
- data/bin/puppetdoc +109 -15
- data/bin/ralsh +3 -1
- data/conf/redhat/puppet.spec +74 -48
- data/examples/mcx_dock_absent.pp +4 -0
- data/examples/mcx_dock_default.pp +118 -0
- data/examples/mcx_dock_full.pp +125 -0
- data/examples/mcx_dock_invalid.pp +9 -0
- data/examples/mcx_nogroup.pp +118 -0
- data/examples/mcx_notexists_absent.pp +4 -0
- data/ext/emacs/puppet-mode.el +1 -1
- data/lib/puppet.rb +1 -1
- data/lib/puppet/external/nagios/base.rb +114 -71
- data/lib/puppet/feature/base.rb +6 -0
- data/lib/puppet/indirector/yaml.rb +12 -3
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/network/client/master.rb +1 -1
- data/lib/puppet/network/xmlrpc/client.rb +3 -1
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast.rb +15 -0
- data/lib/puppet/parser/ast/astarray.rb +1 -2
- data/lib/puppet/parser/ast/casestatement.rb +2 -0
- data/lib/puppet/parser/ast/collection.rb +2 -0
- data/lib/puppet/parser/ast/comparison_operator.rb +4 -0
- data/lib/puppet/parser/ast/definition.rb +2 -0
- data/lib/puppet/parser/ast/else.rb +3 -0
- data/lib/puppet/parser/ast/function.rb +19 -12
- data/lib/puppet/parser/ast/hostclass.rb +9 -1
- data/lib/puppet/parser/ast/ifstatement.rb +3 -0
- data/lib/puppet/parser/ast/node.rb +3 -0
- data/lib/puppet/parser/ast/resource.rb +3 -0
- data/lib/puppet/parser/ast/resource_defaults.rb +2 -0
- data/lib/puppet/parser/ast/resource_override.rb +3 -0
- data/lib/puppet/parser/ast/vardef.rb +3 -0
- data/lib/puppet/parser/functions.rb +14 -0
- data/lib/puppet/parser/functions/inline_template.rb +21 -0
- data/lib/puppet/parser/functions/template.rb +3 -2
- data/lib/puppet/parser/lexer.rb +56 -7
- data/lib/puppet/parser/parser.rb +114 -98
- data/lib/puppet/parser/parser_support.rb +24 -4
- data/lib/puppet/parser/resource/reference.rb +4 -3
- data/lib/puppet/parser/templatewrapper.rb +30 -22
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/list.rb +7 -2
- data/lib/puppet/property/ordered_list.rb +22 -0
- data/lib/puppet/provider/augeas/augeas.rb +189 -0
- data/lib/puppet/provider/computer/computer.rb +22 -0
- data/lib/puppet/provider/confine.rb +4 -1
- data/lib/puppet/provider/confine/variable.rb +13 -2
- data/lib/puppet/provider/confine_collection.rb +4 -1
- data/lib/puppet/provider/confiner.rb +1 -1
- data/lib/puppet/provider/group/directoryservice.rb +6 -3
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/group/ldap.rb +11 -9
- data/lib/puppet/provider/group/netinfo.rb +8 -4
- data/lib/puppet/provider/group/pw.rb +5 -1
- data/lib/puppet/provider/host/netinfo.rb +5 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +315 -0
- data/lib/puppet/provider/mcx/mcxcontent.rb +201 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +210 -107
- data/lib/puppet/provider/nameservice/netinfo.rb +7 -2
- data/lib/puppet/provider/package/appdmg.rb +0 -3
- data/lib/puppet/provider/package/apt.rb +6 -0
- data/lib/puppet/provider/package/rpm.rb +2 -0
- data/lib/puppet/provider/package/yum.rb +5 -1
- data/lib/puppet/provider/package/yumhelper.py +9 -0
- data/lib/puppet/provider/service/base.rb +9 -6
- data/lib/puppet/provider/service/daemontools.rb +25 -15
- data/lib/puppet/provider/service/debian.rb +6 -2
- data/lib/puppet/provider/service/freebsd.rb +5 -2
- data/lib/puppet/provider/service/gentoo.rb +6 -3
- data/lib/puppet/provider/service/init.rb +31 -21
- data/lib/puppet/provider/service/launchd.rb +195 -0
- data/lib/puppet/provider/service/redhat.rb +5 -2
- data/lib/puppet/provider/service/runit.rb +30 -20
- data/lib/puppet/provider/service/smf.rb +7 -4
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +21 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/netinfo.rb +9 -3
- data/lib/puppet/provider/user/user_role_add.rb +43 -6
- data/lib/puppet/provider/zfs/solaris.rb +45 -0
- data/lib/puppet/provider/zone/solaris.rb +8 -4
- data/lib/puppet/provider/zpool/solaris.rb +116 -0
- data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
- data/lib/puppet/rails/database/schema.rb +1 -0
- data/lib/puppet/rails/host.rb +4 -0
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reports/tagmail.rb +15 -6
- data/lib/puppet/transaction/change.rb +3 -5
- data/lib/puppet/transportable.rb +1 -0
- data/lib/puppet/type/augeas.rb +155 -0
- data/lib/puppet/type/computer.rb +62 -0
- data/lib/puppet/type/exec.rb +2 -1
- data/lib/puppet/type/file.rb +1 -1
- data/lib/puppet/type/file/ensure.rb +8 -5
- data/lib/puppet/type/file/mode.rb +0 -14
- data/lib/puppet/type/file/owner.rb +32 -64
- data/lib/puppet/type/file/selcontext.rb +3 -8
- data/lib/puppet/type/group.rb +27 -45
- data/lib/puppet/type/k5login.rb +1 -1
- data/lib/puppet/type/macauthorization.rb +141 -0
- data/lib/puppet/type/mcx.rb +115 -0
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/nagios_hostdependency.rb +3 -0
- data/lib/puppet/type/ssh_authorized_key.rb +16 -0
- data/lib/puppet/type/tidy.rb +43 -14
- data/lib/puppet/type/user.rb +25 -1
- data/lib/puppet/type/zfs.rb +51 -0
- data/lib/puppet/type/zone.rb +8 -0
- data/lib/puppet/type/zpool.rb +93 -0
- data/lib/puppet/util.rb +17 -38
- data/lib/puppet/util/file_locking.rb +44 -0
- data/lib/puppet/util/filetype.rb +3 -3
- data/lib/puppet/util/log.rb +1 -16
- data/lib/puppet/util/metric.rb +0 -5
- data/lib/puppet/util/rdoc.rb +85 -0
- data/lib/puppet/util/rdoc/code_objects.rb +219 -0
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +829 -0
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1051 -0
- data/lib/puppet/util/rdoc/parser.rb +437 -0
- data/lib/puppet/util/selinux.rb +135 -63
- data/lib/puppet/util/settings.rb +136 -126
- data/lib/puppet/util/storage.rb +4 -2
- data/spec/Rakefile +91 -0
- data/spec/integration/checksum.rb +47 -0
- data/spec/integration/defaults.rb +47 -0
- data/spec/integration/file_serving/configuration.rb +43 -0
- data/spec/integration/file_serving/content.rb +18 -0
- data/spec/integration/file_serving/metadata.rb +18 -0
- data/spec/integration/indirector/direct_file_server.rb +80 -0
- data/spec/integration/indirector/file_content/file_server.rb +18 -0
- data/spec/integration/indirector/file_metadata/file_server.rb +18 -0
- data/spec/integration/indirector/module_files.rb +57 -0
- data/spec/integration/indirector/node/ldap.rb +15 -0
- data/spec/integration/indirector/rest.rb +464 -0
- data/spec/integration/network/server/mongrel.rb +48 -0
- data/spec/integration/network/server/webrick.rb +48 -0
- data/spec/integration/node.rb +93 -0
- data/spec/integration/node/catalog.rb +54 -0
- data/spec/integration/node/facts.rb +45 -0
- data/spec/integration/provider/package.rb +26 -0
- data/spec/integration/provider/service/init.rb +32 -0
- data/spec/integration/reference/providers.rb +17 -0
- data/spec/integration/reports.rb +14 -0
- data/spec/integration/transaction/report.rb +26 -0
- data/spec/integration/type/package.rb +22 -0
- data/spec/integration/util/file_locking.rb +36 -0
- data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +46 -0
- data/spec/monkey_patches/alias_should_to_must.rb +5 -0
- data/spec/shared_behaviours/file_server_terminus.rb +42 -0
- data/spec/shared_behaviours/file_serving.rb +64 -0
- data/spec/shared_behaviours/memory_terminus.rb +32 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +36 -0
- data/spec/unit/executables/client/certhandler.rb +122 -0
- data/spec/unit/file_serving/configuration.rb +224 -0
- data/spec/unit/file_serving/configuration/parser.rb +135 -0
- data/spec/unit/file_serving/content.rb +71 -0
- data/spec/unit/file_serving/file_base.rb +124 -0
- data/spec/unit/file_serving/fileset.rb +239 -0
- data/spec/unit/file_serving/indirection_hooks.rb +124 -0
- data/spec/unit/file_serving/metadata.rb +187 -0
- data/spec/unit/file_serving/mount.rb +143 -0
- data/spec/unit/file_serving/terminus_helper.rb +76 -0
- data/spec/unit/indirector.rb +152 -0
- data/spec/unit/indirector/catalog/compiler.rb +156 -0
- data/spec/unit/indirector/catalog/yaml.rb +25 -0
- data/spec/unit/indirector/checksum/file.rb +139 -0
- data/spec/unit/indirector/code.rb +33 -0
- data/spec/unit/indirector/direct_file_server.rb +89 -0
- data/spec/unit/indirector/envelope.rb +47 -0
- data/spec/unit/indirector/exec.rb +51 -0
- data/spec/unit/indirector/facts/facter.rb +76 -0
- data/spec/unit/indirector/facts/yaml.rb +26 -0
- data/spec/unit/indirector/file.rb +154 -0
- data/spec/unit/indirector/file_content/file.rb +18 -0
- data/spec/unit/indirector/file_content/file_server.rb +18 -0
- data/spec/unit/indirector/file_content/modules.rb +18 -0
- data/spec/unit/indirector/file_content/rest.rb +11 -0
- data/spec/unit/indirector/file_metadata/file.rb +52 -0
- data/spec/unit/indirector/file_metadata/file_server.rb +18 -0
- data/spec/unit/indirector/file_metadata/modules.rb +42 -0
- data/spec/unit/indirector/file_metadata/rest.rb +9 -0
- data/spec/unit/indirector/file_server.rb +184 -0
- data/spec/unit/indirector/indirection.rb +731 -0
- data/spec/unit/indirector/ldap.rb +143 -0
- data/spec/unit/indirector/memory.rb +29 -0
- data/spec/unit/indirector/module_files.rb +259 -0
- data/spec/unit/indirector/node/exec.rb +69 -0
- data/spec/unit/indirector/node/ldap.rb +424 -0
- data/spec/unit/indirector/node/memory.rb +19 -0
- data/spec/unit/indirector/node/plain.rb +19 -0
- data/spec/unit/indirector/node/rest.rb +13 -0
- data/spec/unit/indirector/node/yaml.rb +25 -0
- data/spec/unit/indirector/plain.rb +29 -0
- data/spec/unit/indirector/report/processor.rb +81 -0
- data/spec/unit/indirector/request.rb +87 -0
- data/spec/unit/indirector/rest.rb +372 -0
- data/spec/unit/indirector/ssl_rsa/file.rb +116 -0
- data/spec/unit/indirector/terminus.rb +245 -0
- data/spec/unit/indirector/yaml.rb +145 -0
- data/spec/unit/module.rb +247 -0
- data/spec/unit/network/client.rb +45 -0
- data/spec/unit/network/client/master.rb +442 -0
- data/spec/unit/network/handler/fileserver.rb +179 -0
- data/spec/unit/network/http.rb +35 -0
- data/spec/unit/network/http/mongrel.rb +117 -0
- data/spec/unit/network/http/mongrel/rest.rb +377 -0
- data/spec/unit/network/http/mongrel/xmlrpc.rb +0 -0
- data/spec/unit/network/http/webrick.rb +127 -0
- data/spec/unit/network/http/webrick/rest.rb +323 -0
- data/spec/unit/network/http/webrick/xmlrpc.rb +0 -0
- data/spec/unit/network/http_pool.rb +238 -0
- data/spec/unit/network/server.rb +316 -0
- data/spec/unit/network/xmlrpc/client.rb +13 -0
- data/spec/unit/node.rb +167 -0
- data/spec/unit/node/catalog.rb +864 -0
- data/spec/unit/node/environment.rb +37 -0
- data/spec/unit/node/facts.rb +44 -0
- data/spec/unit/other/checksum.rb +92 -0
- data/spec/unit/other/pgraph.rb +210 -0
- data/spec/unit/other/transaction.rb +33 -0
- data/spec/unit/other/transbucket.rb +172 -0
- data/spec/unit/other/transobject.rb +92 -0
- data/spec/unit/parameter.rb +24 -0
- data/spec/unit/parser/ast.rb +37 -0
- data/spec/unit/parser/ast/arithmetic_operator.rb +73 -0
- data/spec/unit/parser/ast/astarray.rb +66 -0
- data/spec/unit/parser/ast/boolean_operator.rb +53 -0
- data/spec/unit/parser/ast/collexpr.rb +92 -0
- data/spec/unit/parser/ast/comparison_operator.rb +92 -0
- data/spec/unit/parser/ast/definition.rb +195 -0
- data/spec/unit/parser/ast/function.rb +77 -0
- data/spec/unit/parser/ast/hostclass.rb +148 -0
- data/spec/unit/parser/ast/minus.rb +36 -0
- data/spec/unit/parser/ast/node.rb +125 -0
- data/spec/unit/parser/ast/nop.rb +20 -0
- data/spec/unit/parser/ast/not.rb +30 -0
- data/spec/unit/parser/ast/resource_override.rb +51 -0
- data/spec/unit/parser/ast/resource_reference.rb +63 -0
- data/spec/unit/parser/ast/vardef.rb +47 -0
- data/spec/unit/parser/collector.rb +426 -0
- data/spec/unit/parser/compiler.rb +561 -0
- data/spec/unit/parser/functions.rb +83 -0
- data/spec/unit/parser/functions/inline_template.rb +59 -0
- data/spec/unit/parser/functions/template.rb +62 -0
- data/spec/unit/parser/interpreter.rb +138 -0
- data/spec/unit/parser/lexer.rb +646 -0
- data/spec/unit/parser/parser.rb +228 -0
- data/spec/unit/parser/resource.rb +336 -0
- data/spec/unit/parser/resource/reference.rb +95 -0
- data/spec/unit/parser/scope.rb +87 -0
- data/spec/unit/parser/templatewrapper.rb +129 -0
- data/spec/unit/property.rb +35 -0
- data/spec/unit/property/keyvalue.rb +168 -0
- data/spec/unit/property/list.rb +156 -0
- data/spec/unit/property/ordered_list.rb +64 -0
- data/spec/unit/provider/augeas/augeas.rb +238 -0
- data/spec/unit/provider/confine.rb +78 -0
- data/spec/unit/provider/confine/exists.rb +81 -0
- data/spec/unit/provider/confine/false.rb +53 -0
- data/spec/unit/provider/confine/feature.rb +60 -0
- data/spec/unit/provider/confine/true.rb +53 -0
- data/spec/unit/provider/confine/variable.rb +107 -0
- data/spec/unit/provider/confine_collection.rb +134 -0
- data/spec/unit/provider/confiner.rb +63 -0
- data/spec/unit/provider/group/groupadd.rb +31 -0
- data/spec/unit/provider/group/ldap.rb +105 -0
- data/spec/unit/provider/ldap.rb +248 -0
- data/spec/unit/provider/macauthorization.rb +147 -0
- data/spec/unit/provider/mcx/mcxcontent.rb +175 -0
- data/spec/unit/provider/mount.rb +130 -0
- data/spec/unit/provider/mount/parsed.rb +185 -0
- data/spec/unit/provider/package/apt.rb +138 -0
- data/spec/unit/provider/package/dpkg.rb +163 -0
- data/spec/unit/provider/package/gem.rb +87 -0
- data/spec/unit/provider/package/hpux.rb +52 -0
- data/spec/unit/provider/selboolean.rb +37 -0
- data/spec/unit/provider/selmodule-example.pp +0 -0
- data/spec/unit/provider/selmodule.rb +66 -0
- data/spec/unit/provider/service/daemontools.rb +124 -0
- data/spec/unit/provider/service/launchd.rb +134 -0
- data/spec/unit/provider/service/runit.rb +117 -0
- data/spec/unit/provider/ssh_authorized_key/parsed.rb +102 -0
- data/spec/unit/provider/user/hpux.rb +25 -0
- data/spec/unit/provider/user/ldap.rb +279 -0
- data/spec/unit/provider/user/user_role_add.rb +249 -0
- data/spec/unit/provider/user/useradd.rb +115 -0
- data/spec/unit/provider/zfs/solaris.rb +87 -0
- data/spec/unit/provider/zone/solaris.rb +42 -0
- data/spec/unit/provider/zpool/solaris.rb +179 -0
- data/spec/unit/rails.rb +125 -0
- data/spec/unit/relationship.rb +149 -0
- data/spec/unit/reports.rb +61 -0
- data/spec/unit/resource_reference.rb +73 -0
- data/spec/unit/simple_graph.rb +280 -0
- data/spec/unit/transaction/change.rb +187 -0
- data/spec/unit/transaction/event.rb +25 -0
- data/spec/unit/transaction/report.rb +40 -0
- data/spec/unit/type.rb +64 -0
- data/spec/unit/type/augeas.rb +113 -0
- data/spec/unit/type/computer.rb +82 -0
- data/spec/unit/type/exec.rb +91 -0
- data/spec/unit/type/file.rb +155 -0
- data/spec/unit/type/file/ensure.rb +21 -0
- data/spec/unit/type/file/group.rb +118 -0
- data/spec/unit/type/file/owner.rb +132 -0
- data/spec/unit/type/file/selinux.rb +82 -0
- data/spec/unit/type/group.rb +40 -0
- data/spec/unit/type/macauthorization.rb +78 -0
- data/spec/unit/type/mcx.rb +108 -0
- data/spec/unit/type/mount.rb +219 -0
- data/spec/unit/type/nagios.rb +63 -0
- data/spec/unit/type/noop_metaparam.rb +38 -0
- data/spec/unit/type/package.rb +246 -0
- data/spec/unit/type/resources.rb +27 -0
- data/spec/unit/type/schedule.rb +339 -0
- data/spec/unit/type/selboolean.rb +47 -0
- data/spec/unit/type/selmodule.rb +18 -0
- data/spec/unit/type/service.rb +254 -0
- data/spec/unit/type/ssh_authorized_key.rb +106 -0
- data/spec/unit/type/tidy.rb +68 -0
- data/spec/unit/type/user.rb +260 -0
- data/spec/unit/type/zfs.rb +45 -0
- data/spec/unit/type/zone.rb +20 -0
- data/spec/unit/type/zpool.rb +110 -0
- data/spec/unit/util/checksums.rb +99 -0
- data/spec/unit/util/constant_inflector.rb +70 -0
- data/spec/unit/util/file_locking.rb +115 -0
- data/spec/unit/util/ldap/connection.rb +169 -0
- data/spec/unit/util/ldap/generator.rb +54 -0
- data/spec/unit/util/ldap/manager.rb +654 -0
- data/spec/unit/util/loadedfile.rb +65 -0
- data/spec/unit/util/log.rb +107 -0
- data/spec/unit/util/metric.rb +95 -0
- data/spec/unit/util/nagios_maker.rb +128 -0
- data/spec/unit/util/posix.rb +256 -0
- data/spec/unit/util/resource_template.rb +58 -0
- data/spec/unit/util/selinux.rb +219 -0
- data/spec/unit/util/settings.rb +847 -0
- data/spec/unit/util/storage.rb +248 -0
- data/spec/unit/util/tagging.rb +92 -0
- data/spec/unit/util/uri_helper.rb +41 -0
- data/spec/unit/util/user_attr.rb +47 -0
- data/spec/unit/util/warnings.rb +35 -0
- data/test/certmgr/support.rb +0 -6
- data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +1 -0
- data/test/data/snippets/multilinecomments.pp +6 -0
- data/test/data/snippets/multipleclass.pp +9 -0
- data/test/language/functions.rb +11 -1
- data/test/language/snippets.rb +16 -0
- data/test/lib/puppettest/runnable_test.rb +1 -1
- data/test/network/handler/fileserver.rb +5 -0
- data/test/other/report.rb +0 -4
- data/test/ral/type/resources.rb +2 -19
- data/test/util/settings.rb +4 -4
- data/test/util/storage.rb +0 -24
- data/test/util/utiltest.rb +0 -33
- metadata +319 -26
- data/conf/debian/README.source +0 -2
- data/conf/debian/TODO.Debian +0 -1
- data/conf/debian/changelog +0 -257
- data/conf/debian/compat +0 -1
- data/conf/debian/control +0 -45
- data/conf/debian/copyright +0 -17
- data/conf/debian/docs +0 -1
- data/conf/debian/fileserver.conf +0 -12
- data/conf/debian/puppet.NEWS +0 -63
- data/conf/debian/puppet.conf +0 -8
- data/conf/debian/puppet.dirs +0 -7
- data/conf/debian/puppet.files +0 -6
- data/conf/debian/puppet.init +0 -64
- data/conf/debian/puppet.logrotate +0 -11
- data/conf/debian/puppet.postinst +0 -9
- data/conf/debian/puppet.postrm +0 -21
- data/conf/debian/puppet.preinst +0 -25
- data/conf/debian/puppetmaster.files +0 -4
- data/conf/debian/puppetmaster.init +0 -58
- data/conf/debian/rules +0 -115
- data/conf/debian/watch +0 -2
- data/lib/puppet/type/nagios_hostgroupescalation.rb +0 -3
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/node/environment'
|
6
|
+
|
7
|
+
describe Puppet::Node::Environment do
|
8
|
+
it "should use the default environment if no name is provided while initializing an environment" do
|
9
|
+
Puppet.settings.expects(:value).with(:environment).returns("one")
|
10
|
+
Puppet::Node::Environment.new().name.should == :one
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should treat environment instances as singletons" do
|
14
|
+
Puppet::Node::Environment.new("one").should equal(Puppet::Node::Environment.new("one"))
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should treat an environment specified as names or strings as equivalent" do
|
18
|
+
Puppet::Node::Environment.new(:one).should equal(Puppet::Node::Environment.new("one"))
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe Puppet::Node::Environment, " when modeling a specific environment" do
|
23
|
+
it "should have a method for returning the environment name" do
|
24
|
+
Puppet::Node::Environment.new("testing").name.should == :testing
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should provide an array-like accessor method for returning any environment-specific setting" do
|
28
|
+
env = Puppet::Node::Environment.new("testing")
|
29
|
+
env.should respond_to(:[])
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should ask the Puppet settings instance for the setting qualified with the environment name" do
|
33
|
+
Puppet.settings.expects(:value).with("myvar", :testing).returns("myval")
|
34
|
+
env = Puppet::Node::Environment.new("testing")
|
35
|
+
env["myvar"].should == "myval"
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/node/facts'
|
6
|
+
|
7
|
+
describe Puppet::Node::Facts, " when indirecting" do
|
8
|
+
before do
|
9
|
+
@indirection = stub 'indirection', :request => mock('request'), :name => :facts
|
10
|
+
|
11
|
+
# We have to clear the cache so that the facts ask for our indirection stub,
|
12
|
+
# instead of anything that might be cached.
|
13
|
+
Puppet::Indirector::Indirection.clear_cache
|
14
|
+
@facts = Puppet::Node::Facts.new("me", "one" => "two")
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should redirect to the specified fact store for retrieval" do
|
18
|
+
Puppet::Node::Facts.stubs(:indirection).returns(@indirection)
|
19
|
+
@indirection.expects(:find)
|
20
|
+
Puppet::Node::Facts.find(:my_facts)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should redirect to the specified fact store for storage" do
|
24
|
+
Puppet::Node::Facts.stubs(:indirection).returns(@indirection)
|
25
|
+
@indirection.expects(:save)
|
26
|
+
@facts.save
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should default to the 'facter' terminus" do
|
30
|
+
Puppet::Node::Facts.indirection.terminus_class.should == :facter
|
31
|
+
end
|
32
|
+
|
33
|
+
after do
|
34
|
+
mocha_verify
|
35
|
+
Puppet::Indirector::Indirection.clear_cache
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe Puppet::Node::Facts, " when storing and retrieving" do
|
40
|
+
it "should add metadata to the facts" do
|
41
|
+
facts = Puppet::Node::Facts.new("me", "one" => "two", "three" => "four")
|
42
|
+
facts.values[:_timestamp].should be_instance_of(Time)
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-9-22.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/checksum'
|
9
|
+
|
10
|
+
describe Puppet::Checksum do
|
11
|
+
it "should have 'Checksum' and the checksum algorithm when converted to a string" do
|
12
|
+
inst = Puppet::Checksum.new("whatever", "md5")
|
13
|
+
inst.to_s.should == "Checksum<{md5}#{inst.checksum}>"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should convert algorithm names to symbols when they are set after checksum creation" do
|
17
|
+
sum = Puppet::Checksum.new("whatever")
|
18
|
+
sum.algorithm = "md5"
|
19
|
+
sum.algorithm.should == :md5
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should return the checksum as the name" do
|
23
|
+
sum = Puppet::Checksum.new("whatever")
|
24
|
+
sum.checksum.should == sum.name
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe Puppet::Checksum, " when initializing" do
|
29
|
+
before do
|
30
|
+
@content = "this is some content"
|
31
|
+
@sum = Puppet::Checksum.new(@content)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should require content" do
|
35
|
+
proc { Puppet::Checksum.new(nil) }.should raise_error(ArgumentError)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should set the content appropriately" do
|
39
|
+
@sum.content.should == @content
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should calculate the checksum" do
|
43
|
+
require 'digest/md5'
|
44
|
+
Digest::MD5.expects(:hexdigest).with(@content).returns(:mychecksum)
|
45
|
+
@sum.checksum.should == :mychecksum
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should not calculate the checksum until it is asked for" do
|
49
|
+
require 'digest/md5'
|
50
|
+
Digest::MD5.expects(:hexdigest).never
|
51
|
+
sum = Puppet::Checksum.new(@content, :md5)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should remove the old checksum value if the algorithm is changed" do
|
55
|
+
Digest::MD5.expects(:hexdigest).with(@content).returns(:oldsum)
|
56
|
+
oldsum = @sum.checksum
|
57
|
+
@sum.algorithm = :sha1
|
58
|
+
Digest::SHA1.expects(:hexdigest).with(@content).returns(:newsum)
|
59
|
+
@sum.checksum.should == :newsum
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should default to 'md5' as the checksum algorithm if the algorithm is not in the name" do
|
63
|
+
@sum.algorithm.should == :md5
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should support specifying the algorithm during initialization" do
|
67
|
+
sum = Puppet::Checksum.new(@content, :sha1)
|
68
|
+
sum.algorithm.should == :sha1
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should fail when an unsupported algorithm is used" do
|
72
|
+
proc { Puppet::Checksum.new(@content, :nope) }.should raise_error(ArgumentError)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe Puppet::Checksum, " when using back-ends" do
|
77
|
+
it "should redirect using Puppet::Indirector" do
|
78
|
+
Puppet::Indirector::Indirection.instance(:checksum).model.should equal(Puppet::Checksum)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should have a :save instance method" do
|
82
|
+
Puppet::Checksum.new("mysum").should respond_to(:save)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should respond to :find" do
|
86
|
+
Puppet::Checksum.should respond_to(:find)
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should respond to :destroy" do
|
90
|
+
Puppet::Checksum.should respond_to(:destroy)
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,210 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-9-12.
|
4
|
+
# Copyright (c) 2006. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/pgraph'
|
9
|
+
require 'puppet/util/graph'
|
10
|
+
|
11
|
+
class Container
|
12
|
+
include Puppet::Util::Graph
|
13
|
+
include Enumerable
|
14
|
+
attr_accessor :name
|
15
|
+
def each
|
16
|
+
@children.each do |c| yield c end
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(name, ary)
|
20
|
+
@name = name
|
21
|
+
@children = ary
|
22
|
+
end
|
23
|
+
|
24
|
+
def push(*ary)
|
25
|
+
ary.each { |c| @children.push(c)}
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_s
|
29
|
+
@name
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe Puppet::PGraph do
|
34
|
+
before do
|
35
|
+
@graph = Puppet::PGraph.new
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should correctly clear vertices and edges when asked" do
|
39
|
+
@graph.add_edge("a", "b")
|
40
|
+
@graph.add_vertex "c"
|
41
|
+
@graph.clear
|
42
|
+
@graph.vertices.should be_empty
|
43
|
+
@graph.edges.should be_empty
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe Puppet::PGraph, " when matching edges" do
|
48
|
+
before do
|
49
|
+
@graph = Puppet::PGraph.new
|
50
|
+
@event = Puppet::Transaction::Event.new(:yay, "a")
|
51
|
+
@none = Puppet::Transaction::Event.new(:NONE, "a")
|
52
|
+
|
53
|
+
@edges = {}
|
54
|
+
@edges["a/b"] = Puppet::Relationship.new("a", "b", {:event => :yay, :callback => :refresh})
|
55
|
+
@edges["a/c"] = Puppet::Relationship.new("a", "c", {:event => :yay, :callback => :refresh})
|
56
|
+
@graph.add_edge(@edges["a/b"])
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should match edges whose source matches the source of the event" do
|
60
|
+
@graph.matching_edges([@event]).should == [@edges["a/b"]]
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should match always match nothing when the event is :NONE" do
|
64
|
+
@graph.matching_edges([@none]).should be_empty
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should match multiple edges" do
|
68
|
+
@graph.add_edge(@edges["a/c"])
|
69
|
+
edges = @graph.matching_edges([@event])
|
70
|
+
edges.should be_include(@edges["a/b"])
|
71
|
+
edges.should be_include(@edges["a/c"])
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe Puppet::PGraph, " when determining dependencies" do
|
76
|
+
before do
|
77
|
+
@graph = Puppet::PGraph.new
|
78
|
+
|
79
|
+
@graph.add_edge("a", "b")
|
80
|
+
@graph.add_edge("a", "c")
|
81
|
+
@graph.add_edge("b", "d")
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should find all dependents when they are on multiple levels" do
|
85
|
+
@graph.dependents("a").sort.should == %w{b c d}.sort
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should find single dependents" do
|
89
|
+
@graph.dependents("b").sort.should == %w{d}.sort
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should return an empty array when there are no dependents" do
|
93
|
+
@graph.dependents("c").sort.should == [].sort
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should find all dependencies when they are on multiple levels" do
|
97
|
+
@graph.dependencies("d").sort.should == %w{a b}
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should find single dependencies" do
|
101
|
+
@graph.dependencies("c").sort.should == %w{a}
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should return an empty array when there are no dependencies" do
|
105
|
+
@graph.dependencies("a").sort.should == []
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe Puppet::PGraph, " when splicing the relationship graph" do
|
110
|
+
def container_graph
|
111
|
+
@one = Container.new("one", %w{a b})
|
112
|
+
@two = Container.new("two", ["c", "d"])
|
113
|
+
@three = Container.new("three", ["i", "j"])
|
114
|
+
@middle = Container.new("middle", ["e", "f", @two])
|
115
|
+
@top = Container.new("top", ["g", "h", @middle, @one, @three])
|
116
|
+
@empty = Container.new("empty", [])
|
117
|
+
|
118
|
+
@contgraph = @top.to_graph
|
119
|
+
|
120
|
+
# We have to add the container to the main graph, else it won't
|
121
|
+
# be spliced in the dependency graph.
|
122
|
+
@contgraph.add_vertex(@empty)
|
123
|
+
end
|
124
|
+
|
125
|
+
def dependency_graph
|
126
|
+
@depgraph = Puppet::PGraph.new
|
127
|
+
@contgraph.vertices.each do |v|
|
128
|
+
@depgraph.add_vertex(v)
|
129
|
+
end
|
130
|
+
|
131
|
+
# We have to specify a relationship to our empty container, else it
|
132
|
+
# never makes it into the dep graph in the first place.
|
133
|
+
{@one => @two, "f" => "c", "h" => @middle, "c" => @empty}.each do |source, target|
|
134
|
+
@depgraph.add_edge(source, target, :callback => :refresh)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def splice
|
139
|
+
@depgraph.splice!(@contgraph, Container)
|
140
|
+
end
|
141
|
+
|
142
|
+
before do
|
143
|
+
container_graph
|
144
|
+
dependency_graph
|
145
|
+
splice
|
146
|
+
end
|
147
|
+
|
148
|
+
# This is the real heart of splicing -- replacing all containers in
|
149
|
+
# our relationship and exploding their relationships so that each
|
150
|
+
# relationship to a container gets copied to all of its children.
|
151
|
+
it "should remove all Container objects from the dependency graph" do
|
152
|
+
@depgraph.vertices.find_all { |v| v.is_a?(Container) }.should be_empty
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should add container relationships to contained objects" do
|
156
|
+
@contgraph.leaves(@middle).each do |leaf|
|
157
|
+
@depgraph.should be_edge("h", leaf)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should explode container-to-container relationships, making edges between all respective contained objects" do
|
162
|
+
@one.each do |oobj|
|
163
|
+
@two.each do |tobj|
|
164
|
+
@depgraph.should be_edge(oobj, tobj)
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
it "should no longer contain anything but the non-container objects" do
|
170
|
+
@depgraph.vertices.find_all { |v| ! v.is_a?(String) }.should be_empty
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should copy labels" do
|
174
|
+
@depgraph.edges.each do |edge|
|
175
|
+
edge.label.should == {:callback => :refresh}
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
it "should not add labels to edges that have none" do
|
180
|
+
@depgraph.add_edge(@two, @three)
|
181
|
+
splice
|
182
|
+
@depgraph.edge_label("c", "i").should == {}
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should copy labels over edges that have none" do
|
186
|
+
@depgraph.add_edge("c", @three, {:callback => :refresh})
|
187
|
+
splice
|
188
|
+
# And make sure the label got copied.
|
189
|
+
@depgraph.edge_label("c", "i").should == {:callback => :refresh}
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should not replace a label with a nil label" do
|
193
|
+
# Lastly, add some new label-less edges and make sure the label stays.
|
194
|
+
@depgraph.add_edge(@middle, @three)
|
195
|
+
@depgraph.add_edge("c", @three, {:callback => :refresh})
|
196
|
+
splice
|
197
|
+
@depgraph.edge_label("c", "i").should == {:callback => :refresh}
|
198
|
+
end
|
199
|
+
|
200
|
+
it "should copy labels to all created edges" do
|
201
|
+
@depgraph.add_edge(@middle, @three)
|
202
|
+
@depgraph.add_edge("c", @three, {:callback => :refresh})
|
203
|
+
splice
|
204
|
+
@three.each do |child|
|
205
|
+
edge = Puppet::Relationship.new("c", child)
|
206
|
+
@depgraph.should be_edge(edge.source, edge.target)
|
207
|
+
@depgraph.edge_label(edge.source, edge.target).should == {:callback => :refresh}
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/transaction'
|
6
|
+
|
7
|
+
describe Puppet::Transaction, " when determining tags" do
|
8
|
+
before do
|
9
|
+
@config = Puppet::Node::Catalog.new
|
10
|
+
@transaction = Puppet::Transaction.new(@config)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should default to the tags specified in the :tags setting" do
|
14
|
+
Puppet.expects(:[]).with(:tags).returns("one")
|
15
|
+
@transaction.tags.should == %w{one}
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should split tags based on ','" do
|
19
|
+
Puppet.expects(:[]).with(:tags).returns("one,two")
|
20
|
+
@transaction.tags.should == %w{one two}
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should use any tags set after creation" do
|
24
|
+
Puppet.expects(:[]).with(:tags).never
|
25
|
+
@transaction.tags = %w{one two}
|
26
|
+
@transaction.tags.should == %w{one two}
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should always convert assigned tags to an array" do
|
30
|
+
@transaction.tags = "one::two"
|
31
|
+
@transaction.tags.should == %w{one::two}
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,172 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::TransBucket do
|
6
|
+
before do
|
7
|
+
@bucket = Puppet::TransBucket.new
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should be able to produce a RAL component" do
|
11
|
+
@bucket.name = "luke"
|
12
|
+
@bucket.type = "user"
|
13
|
+
|
14
|
+
resource = nil
|
15
|
+
proc { resource = @bucket.to_type }.should_not raise_error
|
16
|
+
resource.should be_instance_of(Puppet::Type::Component)
|
17
|
+
resource.title.should == "User[luke]"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should accept TransObjects into its children list" do
|
21
|
+
object = Puppet::TransObject.new("luke", "user")
|
22
|
+
proc { @bucket.push(object) }.should_not raise_error
|
23
|
+
@bucket.each do |o|
|
24
|
+
o.should equal(object)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should accept TransBuckets into its children list" do
|
29
|
+
object = Puppet::TransBucket.new()
|
30
|
+
proc { @bucket.push(object) }.should_not raise_error
|
31
|
+
@bucket.each do |o|
|
32
|
+
o.should equal(object)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should refuse to accept any children that are not TransObjects or TransBuckets" do
|
37
|
+
proc { @bucket.push "a test" }.should raise_error
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should return use 'node' as the type and the provided name as the title if only a type is provided" do
|
41
|
+
@bucket.type = "mystuff"
|
42
|
+
@bucket.to_ref.should == "Node[mystuff]"
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should return use 'component' as the type and the provided type as the title if only a name is provided" do
|
46
|
+
@bucket.name = "mystuff"
|
47
|
+
@bucket.to_ref.should == "Class[mystuff]"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should return nil as its reference when type and name are missing" do
|
51
|
+
@bucket.to_ref.should be_nil
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should return the title as its reference" do
|
55
|
+
@bucket.name = "luke"
|
56
|
+
@bucket.type = "user"
|
57
|
+
@bucket.to_ref.should == "User[luke]"
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should canonize resource references when the type is 'component'" do
|
61
|
+
@bucket.name = 'something'
|
62
|
+
@bucket.type = 'foo::bar'
|
63
|
+
|
64
|
+
@bucket.to_ref.should == "Foo::Bar[something]"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe Puppet::TransBucket, " when generating a catalog" do
|
69
|
+
before do
|
70
|
+
@bottom = Puppet::TransBucket.new
|
71
|
+
@bottom.type = "fake"
|
72
|
+
@bottom.name = "bottom"
|
73
|
+
@bottomobj = Puppet::TransObject.new("bottom", "user")
|
74
|
+
@bottom.push @bottomobj
|
75
|
+
|
76
|
+
@middle = Puppet::TransBucket.new
|
77
|
+
@middle.type = "fake"
|
78
|
+
@middle.name = "middle"
|
79
|
+
@middleobj = Puppet::TransObject.new("middle", "user")
|
80
|
+
@middle.push(@middleobj)
|
81
|
+
@middle.push(@bottom)
|
82
|
+
|
83
|
+
@top = Puppet::TransBucket.new
|
84
|
+
@top.type = "fake"
|
85
|
+
@top.name = "top"
|
86
|
+
@topobj = Puppet::TransObject.new("top", "user")
|
87
|
+
@top.push(@topobj)
|
88
|
+
@top.push(@middle)
|
89
|
+
|
90
|
+
@users = %w{top middle bottom}
|
91
|
+
@fakes = %w{Fake[bottom] Fake[middle] Fake[top]}
|
92
|
+
end
|
93
|
+
|
94
|
+
after do
|
95
|
+
Puppet::Type.allclear
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should convert all transportable objects to RAL resources" do
|
99
|
+
@catalog = @top.to_catalog
|
100
|
+
@users.each do |name|
|
101
|
+
@catalog.vertices.find { |r| r.class.name == :user and r.title == name }.should be_instance_of(Puppet::Type.type(:user))
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should fail if any transportable resources fail to convert to RAL resources" do
|
106
|
+
@bottomobj.expects(:to_type).raises ArgumentError
|
107
|
+
lambda { @bottom.to_catalog }.should raise_error(ArgumentError)
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should convert all transportable buckets to RAL components" do
|
111
|
+
@catalog = @top.to_catalog
|
112
|
+
@fakes.each do |name|
|
113
|
+
@catalog.vertices.find { |r| r.class.name == :component and r.title == name }.should be_instance_of(Puppet::Type.type(:component))
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should add all resources to the graph's resource table" do
|
118
|
+
@catalog = @top.to_catalog
|
119
|
+
@catalog.resource("fake[top]").should equal(@top)
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should finalize all resources" do
|
123
|
+
@catalog = @top.to_catalog
|
124
|
+
@catalog.vertices.each do |vertex| vertex.should be_finalized end
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should only call to_type on each resource once" do
|
128
|
+
# We just raise exceptions here because we're not interested in
|
129
|
+
# what happens with the result, only that the method only
|
130
|
+
# gets called once.
|
131
|
+
resource = @topobj.to_type
|
132
|
+
@topobj.expects(:to_type).once.returns resource
|
133
|
+
@top.to_catalog
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should set each TransObject's catalog before converting to a RAL resource" do
|
137
|
+
@middleobj.expects(:catalog=).with { |c| c.is_a?(Puppet::Node::Catalog) }
|
138
|
+
@top.to_catalog
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should set each TransBucket's catalog before converting to a RAL resource" do
|
142
|
+
# each bucket is seen twice in the loop, so we have to handle the case where the config
|
143
|
+
# is set twice
|
144
|
+
@bottom.expects(:catalog=).with { |c| c.is_a?(Puppet::Node::Catalog) }.at_least_once
|
145
|
+
@top.to_catalog
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
describe Puppet::TransBucket, " when serializing" do
|
150
|
+
before do
|
151
|
+
@bucket = Puppet::TransBucket.new(%w{one two})
|
152
|
+
@bucket.name = "one"
|
153
|
+
@bucket.type = "two"
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should be able to be dumped to yaml" do
|
157
|
+
proc { YAML.dump(@bucket) }.should_not raise_error
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should dump YAML that produces an equivalent object" do
|
161
|
+
result = YAML.dump(@bucket)
|
162
|
+
|
163
|
+
newobj = YAML.load(result)
|
164
|
+
newobj.name.should == "one"
|
165
|
+
newobj.type.should == "two"
|
166
|
+
children = []
|
167
|
+
newobj.each do |o|
|
168
|
+
children << o
|
169
|
+
end
|
170
|
+
children.should == %w{one two}
|
171
|
+
end
|
172
|
+
end
|