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,228 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Parser do
|
6
|
+
|
7
|
+
ast = Puppet::Parser::AST
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
@parser = Puppet::Parser::Parser.new :environment => "development"
|
11
|
+
@true_ast = Puppet::Parser::AST::Boolean.new :value => true
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "when parsing append operator" do
|
15
|
+
|
16
|
+
it "should not raise syntax errors" do
|
17
|
+
lambda { @parser.parse("$var += something") }.should_not raise_error
|
18
|
+
end
|
19
|
+
|
20
|
+
it "shouldraise syntax error on incomplete syntax " do
|
21
|
+
lambda { @parser.parse("$var += ") }.should raise_error
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should call ast::VarDef with append=true" do
|
25
|
+
ast::VarDef.expects(:new).with { |h| h[:append] == true }
|
26
|
+
@parser.parse("$var += 2")
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should work with arrays too" do
|
30
|
+
ast::VarDef.expects(:new).with { |h| h[:append] == true }
|
31
|
+
@parser.parse("$var += ['test']")
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
describe Puppet::Parser, "when parsing 'if'" do
|
37
|
+
it "not, it should create the correct ast objects" do
|
38
|
+
ast::Not.expects(:new).with { |h| h[:value].is_a?(ast::Boolean) }
|
39
|
+
@parser.parse("if ! true { $var = 1 }")
|
40
|
+
end
|
41
|
+
|
42
|
+
it "boolean operation, it should create the correct ast objects" do
|
43
|
+
ast::BooleanOperator.expects(:new).with {
|
44
|
+
|h| h[:rval].is_a?(ast::Boolean) and h[:lval].is_a?(ast::Boolean) and h[:operator]=="or"
|
45
|
+
}
|
46
|
+
@parser.parse("if true or true { $var = 1 }")
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
it "comparison operation, it should create the correct ast objects" do
|
51
|
+
ast::ComparisonOperator.expects(:new).with {
|
52
|
+
|h| h[:lval].is_a?(ast::Name) and h[:rval].is_a?(ast::Name) and h[:operator]=="<"
|
53
|
+
}
|
54
|
+
@parser.parse("if 1 < 2 { $var = 1 }")
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
describe Puppet::Parser, "when parsing if complex expressions" do
|
61
|
+
it "should create a correct ast tree" do
|
62
|
+
aststub = stub_everything 'ast'
|
63
|
+
ast::ComparisonOperator.expects(:new).with {
|
64
|
+
|h| h[:rval].is_a?(ast::Name) and h[:lval].is_a?(ast::Name) and h[:operator]==">"
|
65
|
+
}.returns(aststub)
|
66
|
+
ast::ComparisonOperator.expects(:new).with {
|
67
|
+
|h| h[:rval].is_a?(ast::Name) and h[:lval].is_a?(ast::Name) and h[:operator]=="=="
|
68
|
+
}.returns(aststub)
|
69
|
+
ast::BooleanOperator.expects(:new).with {
|
70
|
+
|h| h[:rval]==aststub and h[:lval]==aststub and h[:operator]=="and"
|
71
|
+
}
|
72
|
+
@parser.parse("if (1 > 2) and (1 == 2) { $var = 1 }")
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should raise an error on incorrect expression" do
|
76
|
+
lambda { @parser.parse("if (1 > 2 > ) or (1 == 2) { $var = 1 }") }.should raise_error
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
describe Puppet::Parser, "when parsing resource references" do
|
82
|
+
|
83
|
+
it "should not raise syntax errors" do
|
84
|
+
lambda { @parser.parse('exec { test: param => File["a"] }') }.should_not raise_error
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should not raise syntax errors with multiple references" do
|
88
|
+
lambda { @parser.parse('exec { test: param => File["a","b"] }') }.should_not raise_error
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should create an ast::ResourceReference" do
|
92
|
+
ast::Resource.stubs(:new)
|
93
|
+
ast::ResourceReference.expects(:new).with { |arg|
|
94
|
+
arg[:line]==1 and arg[:type]=="File" and arg[:title].is_a?(ast::ASTArray)
|
95
|
+
}
|
96
|
+
@parser.parse('exec { test: command => File["a","b"] }')
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe Puppet::Parser, "when parsing resource overrides" do
|
101
|
+
|
102
|
+
it "should not raise syntax errors" do
|
103
|
+
lambda { @parser.parse('Resource["title"] { param => value }') }.should_not raise_error
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should not raise syntax errors with multiple overrides" do
|
107
|
+
lambda { @parser.parse('Resource["title1","title2"] { param => value }') }.should_not raise_error
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should create an ast::ResourceOverride" do
|
111
|
+
ast::ResourceOverride.expects(:new).with { |arg|
|
112
|
+
arg[:line]==1 and arg[:object].is_a?(ast::ResourceReference) and arg[:params].is_a?(ast::ResourceParam)
|
113
|
+
}
|
114
|
+
@parser.parse('Resource["title1","title2"] { param => value }')
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
describe Puppet::Parser, "when parsing if statements" do
|
120
|
+
|
121
|
+
it "should not raise errors with empty if" do
|
122
|
+
lambda { @parser.parse("if true { }") }.should_not raise_error
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should not raise errors with empty else" do
|
126
|
+
lambda { @parser.parse("if false { notice('if') } else { }") }.should_not raise_error
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should not raise errors with empty if and else" do
|
130
|
+
lambda { @parser.parse("if false { } else { }") }.should_not raise_error
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should create a nop node for empty branch" do
|
134
|
+
ast::Nop.expects(:new)
|
135
|
+
@parser.parse("if true { }")
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should create a nop node for empty else branch" do
|
139
|
+
ast::Nop.expects(:new)
|
140
|
+
@parser.parse("if true { notice('test') } else { }")
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
144
|
+
|
145
|
+
describe Puppet::Parser, "when parsing function calls" do
|
146
|
+
|
147
|
+
it "should not raise errors with no arguments" do
|
148
|
+
lambda { @parser.parse("tag()") }.should_not raise_error
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should not raise errors with rvalue function with no args" do
|
152
|
+
lambda { @parser.parse("$a = template()") }.should_not raise_error
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should not raise errors with arguments" do
|
156
|
+
lambda { @parser.parse("notice(1)") }.should_not raise_error
|
157
|
+
end
|
158
|
+
|
159
|
+
it "should not raise errors with multiple arguments" do
|
160
|
+
lambda { @parser.parse("notice(1,2)") }.should_not raise_error
|
161
|
+
end
|
162
|
+
|
163
|
+
it "should not raise errors with multiple arguments and a trailing comma" do
|
164
|
+
lambda { @parser.parse("notice(1,2,)") }.should_not raise_error
|
165
|
+
end
|
166
|
+
|
167
|
+
end
|
168
|
+
|
169
|
+
describe Puppet::Parser, "when parsing arrays with trailing comma" do
|
170
|
+
|
171
|
+
it "should not raise errors with a trailing comma" do
|
172
|
+
lambda { @parser.parse("$a = [1,2,]") }.should_not raise_error
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
describe Puppet::Parser, "when instantiating class of same name" do
|
177
|
+
|
178
|
+
before :each do
|
179
|
+
@one = stub 'one', :is_a? => true
|
180
|
+
@one.stubs(:is_a?).with(ast::ASTArray).returns(false)
|
181
|
+
@one.stubs(:is_a?).with(ast).returns(true)
|
182
|
+
|
183
|
+
@two = stub 'two'
|
184
|
+
@two.stubs(:is_a?).with(ast::ASTArray).returns(false)
|
185
|
+
@two.stubs(:is_a?).with(ast).returns(true)
|
186
|
+
end
|
187
|
+
|
188
|
+
it "should return the first class" do
|
189
|
+
|
190
|
+
klass1 = @parser.newclass("one", { :code => @one })
|
191
|
+
|
192
|
+
@parser.newclass("one", { :code => @two }).should == klass1
|
193
|
+
end
|
194
|
+
|
195
|
+
it "should concatenate code" do
|
196
|
+
klass1 = @parser.newclass("one", { :code => @one })
|
197
|
+
|
198
|
+
@parser.newclass("one", { :code => @two })
|
199
|
+
|
200
|
+
klass1.code.children.should == [@one,@two]
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
describe Puppet::Parser, "when parsing comments before statement" do
|
205
|
+
it "should associate the documentation to the statement AST node" do
|
206
|
+
ast = @parser.parse("""
|
207
|
+
# comment
|
208
|
+
class test {}
|
209
|
+
""")
|
210
|
+
|
211
|
+
ast[:classes]["test"].doc.should == "comment\n"
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
describe Puppet::Parser, "when building ast nodes" do
|
216
|
+
it "should get lexer comments if ast node declares use_docs" do
|
217
|
+
lexer = stub 'lexer'
|
218
|
+
ast = mock 'ast', :nil? => false, :use_docs => true, :doc => ""
|
219
|
+
@parser.stubs(:lexer).returns(lexer)
|
220
|
+
|
221
|
+
Puppet::Parser::AST::Definition.expects(:new).returns(ast)
|
222
|
+
lexer.expects(:getcomment).returns("comment")
|
223
|
+
ast.expects(:doc=).with("comment")
|
224
|
+
|
225
|
+
@parser.ast(Puppet::Parser::AST::Definition)
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
@@ -0,0 +1,336 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
# LAK: FIXME This is just new tests for resources; I have
|
6
|
+
# not moved all tests over yet.
|
7
|
+
|
8
|
+
describe Puppet::Parser::Resource do
|
9
|
+
before do
|
10
|
+
@parser = Puppet::Parser::Parser.new :Code => ""
|
11
|
+
@source = @parser.newclass ""
|
12
|
+
@node = Puppet::Node.new("yaynode")
|
13
|
+
@compiler = Puppet::Parser::Compiler.new(@node, @parser)
|
14
|
+
@scope = @compiler.topscope
|
15
|
+
end
|
16
|
+
|
17
|
+
def mkresource(args = {})
|
18
|
+
args[:source] ||= "source"
|
19
|
+
args[:scope] ||= stub('scope', :source => mock('source'))
|
20
|
+
|
21
|
+
{:type => "resource", :title => "testing", :source => "source", :scope => "scope"}.each do |param, value|
|
22
|
+
args[param] ||= value
|
23
|
+
end
|
24
|
+
|
25
|
+
params = args[:params] || {:one => "yay", :three => "rah"}
|
26
|
+
if args[:params] == :none
|
27
|
+
args.delete(:params)
|
28
|
+
else
|
29
|
+
args[:params] = paramify(args[:source], params)
|
30
|
+
end
|
31
|
+
|
32
|
+
Puppet::Parser::Resource.new(args)
|
33
|
+
end
|
34
|
+
|
35
|
+
def param(name, value, source)
|
36
|
+
Puppet::Parser::Resource::Param.new(:name => name, :value => value, :source => source)
|
37
|
+
end
|
38
|
+
|
39
|
+
def paramify(source, hash)
|
40
|
+
hash.collect do |name, value|
|
41
|
+
Puppet::Parser::Resource::Param.new(
|
42
|
+
:name => name, :value => value, :source => source
|
43
|
+
)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should be isomorphic if it is builtin and models an isomorphic type" do
|
48
|
+
Puppet::Type.type(:file).expects(:isomorphic?).returns(true)
|
49
|
+
@resource = Puppet::Parser::Resource.new(:type => "file", :title => "whatever", :scope => @scope, :source => @source).isomorphic?.should be_true
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should not be isomorphic if it is builtin and models a non-isomorphic type" do
|
53
|
+
Puppet::Type.type(:file).expects(:isomorphic?).returns(false)
|
54
|
+
@resource = Puppet::Parser::Resource.new(:type => "file", :title => "whatever", :scope => @scope, :source => @source).isomorphic?.should be_false
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should be isomorphic if it is not builtin" do
|
58
|
+
@parser.newdefine "whatever"
|
59
|
+
@resource = Puppet::Parser::Resource.new(:type => "whatever", :title => "whatever", :scope => @scope, :source => @source).isomorphic?.should be_true
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should have a array-indexing method for retrieving parameter values" do
|
63
|
+
@resource = mkresource
|
64
|
+
@resource[:one].should == "yay"
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should have a method for converting to a ral resource" do
|
68
|
+
trans = mock 'trans', :to_type => "yay"
|
69
|
+
@resource = mkresource
|
70
|
+
@resource.expects(:to_trans).returns trans
|
71
|
+
@resource.to_type.should == "yay"
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "when initializing" do
|
75
|
+
before do
|
76
|
+
@arguments = {:type => "resource", :title => "testing", :scope => stub('scope', :source => mock('source'))}
|
77
|
+
end
|
78
|
+
|
79
|
+
[:type, :title, :scope].each do |name|
|
80
|
+
it "should fail unless #{name.to_s} is specified" do
|
81
|
+
try = @arguments.dup
|
82
|
+
try.delete(name)
|
83
|
+
lambda { Puppet::Parser::Resource.new(try) }.should raise_error(ArgumentError)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should set the reference correctly" do
|
88
|
+
res = Puppet::Parser::Resource.new(@arguments)
|
89
|
+
res.ref.should == "Resource[testing]"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "when evaluating" do
|
94
|
+
before do
|
95
|
+
@type = Puppet::Parser::Resource
|
96
|
+
|
97
|
+
@definition = @parser.newdefine "mydefine"
|
98
|
+
@class = @parser.newclass "myclass"
|
99
|
+
@nodedef = @parser.newnode("mynode")[0]
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should evaluate the associated AST definition" do
|
103
|
+
res = @type.new(:type => "mydefine", :title => "whatever", :scope => @scope, :source => @source)
|
104
|
+
@definition.expects(:evaluate_code).with(res)
|
105
|
+
|
106
|
+
res.evaluate
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should evaluate the associated AST class" do
|
110
|
+
res = @type.new(:type => "class", :title => "myclass", :scope => @scope, :source => @source)
|
111
|
+
@class.expects(:evaluate_code).with(res)
|
112
|
+
res.evaluate
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should evaluate the associated AST node" do
|
116
|
+
res = @type.new(:type => "node", :title => "mynode", :scope => @scope, :source => @source)
|
117
|
+
@nodedef.expects(:evaluate_code).with(res)
|
118
|
+
res.evaluate
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
describe "when finishing" do
|
123
|
+
before do
|
124
|
+
@class = @parser.newclass "myclass"
|
125
|
+
@nodedef = @parser.newnode("mynode")[0]
|
126
|
+
|
127
|
+
@resource = Puppet::Parser::Resource.new(:type => "file", :title => "whatever", :scope => @scope, :source => @source)
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should do nothing if it has already been finished" do
|
131
|
+
@resource.finish
|
132
|
+
@resource.expects(:add_metaparams).never
|
133
|
+
@resource.finish
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should add all defaults available from the scope" do
|
137
|
+
@resource.scope.expects(:lookupdefaults).with(@resource.type).returns(:owner => param(:owner, "default", @resource.source))
|
138
|
+
@resource.finish
|
139
|
+
|
140
|
+
@resource[:owner].should == "default"
|
141
|
+
end
|
142
|
+
|
143
|
+
it "should not replace existing parameters with defaults" do
|
144
|
+
@resource.set_parameter :owner, "oldvalue"
|
145
|
+
@resource.scope.expects(:lookupdefaults).with(@resource.type).returns(:owner => :replaced)
|
146
|
+
@resource.finish
|
147
|
+
|
148
|
+
@resource[:owner].should == "oldvalue"
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should add a copy of each default, rather than the actual default parameter instance" do
|
152
|
+
newparam = param(:owner, "default", @resource.source)
|
153
|
+
other = newparam.dup
|
154
|
+
other.value = "other"
|
155
|
+
newparam.expects(:dup).returns(other)
|
156
|
+
@resource.scope.expects(:lookupdefaults).with(@resource.type).returns(:owner => newparam)
|
157
|
+
@resource.finish
|
158
|
+
|
159
|
+
@resource[:owner].should == "other"
|
160
|
+
end
|
161
|
+
|
162
|
+
it "should copy metaparams from its scope" do
|
163
|
+
@scope.setvar("noop", "true")
|
164
|
+
|
165
|
+
@resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
|
166
|
+
|
167
|
+
@resource["noop"].should == "true"
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should not copy metaparams that it already has" do
|
171
|
+
@resource.set_parameter("noop", "false")
|
172
|
+
@scope.setvar("noop", "true")
|
173
|
+
|
174
|
+
@resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
|
175
|
+
|
176
|
+
@resource["noop"].should == "false"
|
177
|
+
end
|
178
|
+
|
179
|
+
it "should copy all metaparams that it finds" do
|
180
|
+
@scope.setvar("require", "container")
|
181
|
+
@scope.setvar("notify", "container")
|
182
|
+
|
183
|
+
@resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
|
184
|
+
|
185
|
+
@resource["require"].should == "container"
|
186
|
+
@resource["notify"].should == "container"
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should stack relationship metaparams from its container if it already has them" do
|
190
|
+
@resource.set_parameter("require", "resource")
|
191
|
+
@scope.setvar("require", "container")
|
192
|
+
|
193
|
+
@resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
|
194
|
+
|
195
|
+
@resource["require"].sort.should == %w{container resource}
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should flatten the array resulting from stacking relationship metaparams" do
|
199
|
+
@resource.set_parameter("require", ["resource1", "resource2"])
|
200
|
+
@scope.setvar("require", %w{container1 container2})
|
201
|
+
|
202
|
+
@resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
|
203
|
+
|
204
|
+
@resource["require"].sort.should == %w{container1 container2 resource1 resource2}
|
205
|
+
end
|
206
|
+
|
207
|
+
it "should add any tags from the scope resource" do
|
208
|
+
scope_resource = stub 'scope_resource', :tags => %w{one two}
|
209
|
+
@scope.stubs(:resource).returns(scope_resource)
|
210
|
+
|
211
|
+
@resource.class.publicize_methods(:add_scope_tags) { @resource.add_scope_tags }
|
212
|
+
|
213
|
+
@resource.tags.should be_include("one")
|
214
|
+
@resource.tags.should be_include("two")
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
describe "when being tagged" do
|
219
|
+
before do
|
220
|
+
@scope_resource = stub 'scope_resource', :tags => %w{srone srtwo}
|
221
|
+
@scope = stub 'scope', :resource => @scope_resource
|
222
|
+
@resource = Puppet::Parser::Resource.new(:type => "file", :title => "yay", :scope => @scope, :source => mock('source'))
|
223
|
+
end
|
224
|
+
|
225
|
+
it "should get tagged with the resource type" do
|
226
|
+
@resource.tags.should be_include("file")
|
227
|
+
end
|
228
|
+
|
229
|
+
it "should get tagged with the title" do
|
230
|
+
@resource.tags.should be_include("yay")
|
231
|
+
end
|
232
|
+
|
233
|
+
it "should get tagged with each name in the title if the title is a qualified class name" do
|
234
|
+
resource = Puppet::Parser::Resource.new(:type => "file", :title => "one::two", :scope => @scope, :source => mock('source'))
|
235
|
+
resource.tags.should be_include("one")
|
236
|
+
resource.tags.should be_include("two")
|
237
|
+
end
|
238
|
+
|
239
|
+
it "should get tagged with each name in the type if the type is a qualified class name" do
|
240
|
+
resource = Puppet::Parser::Resource.new(:type => "one::two", :title => "whatever", :scope => @scope, :source => mock('source'))
|
241
|
+
resource.tags.should be_include("one")
|
242
|
+
resource.tags.should be_include("two")
|
243
|
+
end
|
244
|
+
|
245
|
+
it "should not get tagged with non-alphanumeric titles" do
|
246
|
+
resource = Puppet::Parser::Resource.new(:type => "file", :title => "this is a test", :scope => @scope, :source => mock('source'))
|
247
|
+
resource.tags.should_not be_include("this is a test")
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should fail on tags containing '*' characters" do
|
251
|
+
lambda { @resource.tag("bad*tag") }.should raise_error(Puppet::ParseError)
|
252
|
+
end
|
253
|
+
|
254
|
+
it "should fail on tags starting with '-' characters" do
|
255
|
+
lambda { @resource.tag("-badtag") }.should raise_error(Puppet::ParseError)
|
256
|
+
end
|
257
|
+
|
258
|
+
it "should fail on tags containing ' ' characters" do
|
259
|
+
lambda { @resource.tag("bad tag") }.should raise_error(Puppet::ParseError)
|
260
|
+
end
|
261
|
+
|
262
|
+
it "should allow alpha tags" do
|
263
|
+
lambda { @resource.tag("good_tag") }.should_not raise_error(Puppet::ParseError)
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
describe "when merging overrides" do
|
268
|
+
before do
|
269
|
+
@source = "source1"
|
270
|
+
@resource = mkresource :source => @source
|
271
|
+
@override = mkresource :source => @source
|
272
|
+
end
|
273
|
+
|
274
|
+
it "should fail when the override was not created by a parent class" do
|
275
|
+
@override.source = "source2"
|
276
|
+
@override.source.expects(:child_of?).with("source1").returns(false)
|
277
|
+
lambda { @resource.merge(@override) }.should raise_error(Puppet::ParseError)
|
278
|
+
end
|
279
|
+
|
280
|
+
it "should succeed when the override was created in the current scope" do
|
281
|
+
@resource.source = "source3"
|
282
|
+
@override.source = @resource.source
|
283
|
+
@override.source.expects(:child_of?).with("source3").never
|
284
|
+
params = {:a => :b, :c => :d}
|
285
|
+
@override.expects(:params).returns(params)
|
286
|
+
@resource.expects(:override_parameter).with(:b)
|
287
|
+
@resource.expects(:override_parameter).with(:d)
|
288
|
+
@resource.merge(@override)
|
289
|
+
end
|
290
|
+
|
291
|
+
it "should succeed when a parent class created the override" do
|
292
|
+
@resource.source = "source3"
|
293
|
+
@override.source = "source4"
|
294
|
+
@override.source.expects(:child_of?).with("source3").returns(true)
|
295
|
+
params = {:a => :b, :c => :d}
|
296
|
+
@override.expects(:params).returns(params)
|
297
|
+
@resource.expects(:override_parameter).with(:b)
|
298
|
+
@resource.expects(:override_parameter).with(:d)
|
299
|
+
@resource.merge(@override)
|
300
|
+
end
|
301
|
+
|
302
|
+
it "should add new parameters when the parameter is not set" do
|
303
|
+
@source.stubs(:child_of?).returns true
|
304
|
+
@override.set_parameter(:testing, "value")
|
305
|
+
@resource.merge(@override)
|
306
|
+
|
307
|
+
@resource[:testing].should == "value"
|
308
|
+
end
|
309
|
+
|
310
|
+
it "should replace existing parameter values" do
|
311
|
+
@source.stubs(:child_of?).returns true
|
312
|
+
@resource.set_parameter(:testing, "old")
|
313
|
+
@override.set_parameter(:testing, "value")
|
314
|
+
|
315
|
+
@resource.merge(@override)
|
316
|
+
|
317
|
+
@resource[:testing].should == "value"
|
318
|
+
end
|
319
|
+
|
320
|
+
it "should add values to the parameter when the override was created with the '+>' syntax" do
|
321
|
+
@source.stubs(:child_of?).returns true
|
322
|
+
param = Puppet::Parser::Resource::Param.new(:name => :testing, :value => "testing", :source => @resource.source)
|
323
|
+
param.add = true
|
324
|
+
|
325
|
+
@override.set_parameter(param)
|
326
|
+
|
327
|
+
@resource.set_parameter(:testing, "other")
|
328
|
+
|
329
|
+
@resource.merge(@override)
|
330
|
+
|
331
|
+
@resource[:testing].should == %w{other testing}
|
332
|
+
end
|
333
|
+
|
334
|
+
|
335
|
+
end
|
336
|
+
end
|