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,195 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Parser::AST::Definition, "when initializing" do
|
6
|
+
end
|
7
|
+
|
8
|
+
describe Puppet::Parser::AST::Definition, "when evaluating" do
|
9
|
+
before do
|
10
|
+
@type = Puppet::Parser::Resource
|
11
|
+
@parser = Puppet::Parser::Parser.new :Code => ""
|
12
|
+
@source = @parser.newclass ""
|
13
|
+
@definition = @parser.newdefine "mydefine"
|
14
|
+
@node = Puppet::Node.new("yaynode")
|
15
|
+
@compiler = Puppet::Parser::Compiler.new(@node, @parser)
|
16
|
+
@scope = @compiler.topscope
|
17
|
+
|
18
|
+
@resource = Puppet::Parser::Resource.new(:type => "mydefine", :title => "myresource", :scope => @scope, :source => @source)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should create a new scope" do
|
22
|
+
scope = nil
|
23
|
+
code = mock 'code'
|
24
|
+
code.expects(:safeevaluate).with do |scope|
|
25
|
+
scope.object_id.should_not == @scope.object_id
|
26
|
+
true
|
27
|
+
end
|
28
|
+
@definition.stubs(:code).returns(code)
|
29
|
+
@definition.evaluate_code(@resource)
|
30
|
+
end
|
31
|
+
|
32
|
+
# it "should copy its namespace to the scope"
|
33
|
+
#
|
34
|
+
# it "should mark the scope virtual if the resource is virtual"
|
35
|
+
#
|
36
|
+
# it "should mark the scope exported if the resource is exported"
|
37
|
+
#
|
38
|
+
# it "should set the resource's parameters as variables in the scope"
|
39
|
+
#
|
40
|
+
# it "should set the resource's title as a variable in the scope"
|
41
|
+
#
|
42
|
+
# it "should copy the resource's title in a 'name' variable in the scope"
|
43
|
+
#
|
44
|
+
# it "should not copy the resource's title as the name if 'name' is one of the resource parameters"
|
45
|
+
#
|
46
|
+
# it "should evaluate the associated code with the new scope"
|
47
|
+
|
48
|
+
def old_test_initialize
|
49
|
+
parser = mkparser
|
50
|
+
|
51
|
+
# Create a new definition
|
52
|
+
klass = parser.newdefine "yayness",
|
53
|
+
:arguments => [["owner", stringobj("nobody")], %w{mode}],
|
54
|
+
:code => AST::ASTArray.new(
|
55
|
+
:children => [resourcedef("file", "/tmp/$name",
|
56
|
+
"owner" => varref("owner"), "mode" => varref("mode"))]
|
57
|
+
)
|
58
|
+
|
59
|
+
# Test validattr? a couple different ways
|
60
|
+
[:owner, "owner", :schedule, "schedule"].each do |var|
|
61
|
+
assert(klass.validattr?(var), "%s was not considered valid" % var.inspect)
|
62
|
+
end
|
63
|
+
|
64
|
+
[:random, "random"].each do |var|
|
65
|
+
assert(! klass.validattr?(var), "%s was considered valid" % var.inspect)
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
def oldtest_evaluate
|
71
|
+
parser = mkparser
|
72
|
+
config = mkcompiler
|
73
|
+
config.send(:evaluate_main)
|
74
|
+
scope = config.topscope
|
75
|
+
klass = parser.newdefine "yayness",
|
76
|
+
:arguments => [["owner", stringobj("nobody")], %w{mode}],
|
77
|
+
:code => AST::ASTArray.new(
|
78
|
+
:children => [resourcedef("file", "/tmp/$name",
|
79
|
+
"owner" => varref("owner"), "mode" => varref("mode"))]
|
80
|
+
)
|
81
|
+
|
82
|
+
resource = Puppet::Parser::Resource.new(
|
83
|
+
:title => "first",
|
84
|
+
:type => "yayness",
|
85
|
+
:exported => false,
|
86
|
+
:virtual => false,
|
87
|
+
:scope => scope,
|
88
|
+
:source => scope.source
|
89
|
+
)
|
90
|
+
resource.send(:set_parameter, "name", "first")
|
91
|
+
resource.send(:set_parameter, "mode", "755")
|
92
|
+
|
93
|
+
resource.stubs(:title)
|
94
|
+
assert_nothing_raised do
|
95
|
+
klass.evaluate_code(resource)
|
96
|
+
end
|
97
|
+
|
98
|
+
firstobj = config.findresource("File[/tmp/first]")
|
99
|
+
assert(firstobj, "Did not create /tmp/first obj")
|
100
|
+
|
101
|
+
assert_equal("File", firstobj.type)
|
102
|
+
assert_equal("/tmp/first", firstobj.title)
|
103
|
+
assert_equal("nobody", firstobj[:owner])
|
104
|
+
assert_equal("755", firstobj[:mode])
|
105
|
+
|
106
|
+
# Make sure we can't evaluate it with the same args
|
107
|
+
assert_raise(Puppet::ParseError) do
|
108
|
+
klass.evaluate_code(resource)
|
109
|
+
end
|
110
|
+
|
111
|
+
# Now create another with different args
|
112
|
+
resource2 = Puppet::Parser::Resource.new(
|
113
|
+
:title => "second",
|
114
|
+
:type => "yayness",
|
115
|
+
:exported => false,
|
116
|
+
:virtual => false,
|
117
|
+
:scope => scope,
|
118
|
+
:source => scope.source
|
119
|
+
)
|
120
|
+
resource2.send(:set_parameter, "name", "second")
|
121
|
+
resource2.send(:set_parameter, "mode", "755")
|
122
|
+
resource2.send(:set_parameter, "owner", "daemon")
|
123
|
+
|
124
|
+
assert_nothing_raised do
|
125
|
+
klass.evaluate_code(resource2)
|
126
|
+
end
|
127
|
+
|
128
|
+
secondobj = config.findresource("File[/tmp/second]")
|
129
|
+
assert(secondobj, "Did not create /tmp/second obj")
|
130
|
+
|
131
|
+
assert_equal("File", secondobj.type)
|
132
|
+
assert_equal("/tmp/second", secondobj.title)
|
133
|
+
assert_equal("daemon", secondobj[:owner])
|
134
|
+
assert_equal("755", secondobj[:mode])
|
135
|
+
end
|
136
|
+
|
137
|
+
# #539 - definitions should support both names and titles
|
138
|
+
def oldtest_names_and_titles
|
139
|
+
parser = mkparser
|
140
|
+
scope = mkscope :parser => parser
|
141
|
+
|
142
|
+
[
|
143
|
+
{:name => "one", :title => "two"},
|
144
|
+
{:title => "mytitle"}
|
145
|
+
].each_with_index do |hash, i|
|
146
|
+
# Create a definition that uses both name and title. Put this
|
147
|
+
# inside the loop so the subscope expectations work.
|
148
|
+
klass = parser.newdefine "yayness%s" % i
|
149
|
+
|
150
|
+
resource = Puppet::Parser::Resource.new(
|
151
|
+
:title => hash[:title],
|
152
|
+
:type => "yayness%s" % i,
|
153
|
+
:exported => false,
|
154
|
+
:virtual => false,
|
155
|
+
:scope => scope,
|
156
|
+
:source => scope.source
|
157
|
+
)
|
158
|
+
|
159
|
+
subscope = klass.subscope(scope, resource)
|
160
|
+
|
161
|
+
klass.expects(:subscope).returns(subscope)
|
162
|
+
|
163
|
+
if hash[:name]
|
164
|
+
resource.stubs(:to_hash).returns({:name => hash[:name]})
|
165
|
+
end
|
166
|
+
|
167
|
+
assert_nothing_raised("Could not evaluate definition with %s" % hash.inspect) do
|
168
|
+
klass.evaluate_code(resource)
|
169
|
+
end
|
170
|
+
|
171
|
+
name = hash[:name] || hash[:title]
|
172
|
+
title = hash[:title]
|
173
|
+
|
174
|
+
assert_equal(name, subscope.lookupvar("name"),
|
175
|
+
"Name did not get set correctly")
|
176
|
+
assert_equal(title, subscope.lookupvar("title"),
|
177
|
+
"title did not get set correctly")
|
178
|
+
|
179
|
+
[:name, :title].each do |param|
|
180
|
+
val = resource.send(param)
|
181
|
+
assert(subscope.tags.include?(val),
|
182
|
+
"Scope was not tagged with %s '%s'" % [param, val])
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
# Testing the root cause of #615. We should be using the fqname for the type, instead
|
188
|
+
# of just the short name.
|
189
|
+
def oldtest_fully_qualified_types
|
190
|
+
parser = mkparser
|
191
|
+
klass = parser.newclass("one::two")
|
192
|
+
|
193
|
+
assert_equal("one::two", klass.classname, "Class did not get fully qualified class name")
|
194
|
+
end
|
195
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Parser::AST::Function do
|
6
|
+
before :each do
|
7
|
+
@scope = mock 'scope'
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "when initializing" do
|
11
|
+
it "should not fail if the function doesn't exist" do
|
12
|
+
Puppet::Parser::Functions.stubs(:function).returns(false)
|
13
|
+
|
14
|
+
lambda{ Puppet::Parser::AST::Function.new :name => "dontexist" }.should_not raise_error(Puppet::ParseError)
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "when evaluating" do
|
20
|
+
|
21
|
+
it "should fail if the function doesn't exist" do
|
22
|
+
Puppet::Parser::Functions.stubs(:function).returns(false)
|
23
|
+
func = Puppet::Parser::AST::Function.new :name => "dontexist"
|
24
|
+
|
25
|
+
lambda{ func.evaluate(@scope) }.should raise_error(Puppet::ParseError)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should fail if the function is a statement used as rvalue" do
|
29
|
+
Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
|
30
|
+
Puppet::Parser::Functions.stubs(:rvalue?).with("exist").returns(false)
|
31
|
+
|
32
|
+
func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :rvalue
|
33
|
+
|
34
|
+
lambda{ func.evaluate(@scope) }.should raise_error(Puppet::ParseError, "Function 'exist' does not return a value")
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should fail if the function is an rvalue used as statement" do
|
38
|
+
Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
|
39
|
+
Puppet::Parser::Functions.stubs(:rvalue?).with("exist").returns(true)
|
40
|
+
|
41
|
+
func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :statement
|
42
|
+
|
43
|
+
lambda{ func.evaluate(@scope) }.should raise_error(Puppet::ParseError,"Function 'exist' must be the value of a statement")
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should evaluate its arguments" do
|
47
|
+
argument = stub 'arg'
|
48
|
+
Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
|
49
|
+
func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :statement, :arguments => argument
|
50
|
+
@scope.stubs(:function_exist)
|
51
|
+
|
52
|
+
argument.expects(:safeevaluate).with(@scope).returns("argument")
|
53
|
+
|
54
|
+
func.evaluate(@scope)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should call the underlying ruby function" do
|
58
|
+
argument = stub 'arg', :safeevaluate => "nothing"
|
59
|
+
Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
|
60
|
+
func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :statement, :arguments => argument
|
61
|
+
|
62
|
+
@scope.expects(:function_exist).with("nothing")
|
63
|
+
|
64
|
+
func.evaluate(@scope)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should return the ruby function return for rvalue functions" do
|
68
|
+
argument = stub 'arg', :safeevaluate => "nothing"
|
69
|
+
Puppet::Parser::Functions.stubs(:function).with("exist").returns(true)
|
70
|
+
func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :statement, :arguments => argument
|
71
|
+
@scope.stubs(:function_exist).with("nothing").returns("returning")
|
72
|
+
|
73
|
+
func.evaluate(@scope).should == "returning"
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,148 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Parser::AST::HostClass do
|
6
|
+
before :each do
|
7
|
+
@node = Puppet::Node.new "testnode"
|
8
|
+
@parser = Puppet::Parser::Parser.new :environment => "development"
|
9
|
+
@scope_resource = stub 'scope_resource', :builtin? => true
|
10
|
+
@compiler = Puppet::Parser::Compiler.new(@node, @parser)
|
11
|
+
|
12
|
+
@scope = @compiler.topscope
|
13
|
+
end
|
14
|
+
|
15
|
+
describe Puppet::Parser::AST::HostClass, "when evaluating" do
|
16
|
+
|
17
|
+
before do
|
18
|
+
@top = @parser.newclass "top"
|
19
|
+
@middle = @parser.newclass "middle", :parent => "top"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should create a resource that references itself" do
|
23
|
+
@top.evaluate(@scope)
|
24
|
+
|
25
|
+
@compiler.catalog.resource(:class, "top").should be_instance_of(Puppet::Parser::Resource)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should evaluate the parent class if one exists" do
|
29
|
+
@middle.evaluate(@scope)
|
30
|
+
|
31
|
+
@compiler.catalog.resource(:class, "top").should be_instance_of(Puppet::Parser::Resource)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should fail to evaluate if a parent class is defined but cannot be found" do
|
35
|
+
othertop = @parser.newclass "something", :parent => "yay"
|
36
|
+
lambda { othertop.evaluate(@scope) }.should raise_error(Puppet::ParseError)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should not create a new resource if one already exists" do
|
40
|
+
@compiler.catalog.expects(:resource).with(:class, "top").returns("something")
|
41
|
+
@compiler.catalog.expects(:add_resource).never
|
42
|
+
@top.evaluate(@scope)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should return the existing resource when not creating a new one" do
|
46
|
+
@compiler.catalog.expects(:resource).with(:class, "top").returns("something")
|
47
|
+
@compiler.catalog.expects(:add_resource).never
|
48
|
+
@top.evaluate(@scope).should == "something"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should not create a new parent resource if one already exists and it has a parent class" do
|
52
|
+
@top.evaluate(@scope)
|
53
|
+
|
54
|
+
top_resource = @compiler.catalog.resource(:class, "top")
|
55
|
+
|
56
|
+
@middle.evaluate(@scope)
|
57
|
+
|
58
|
+
@compiler.catalog.resource(:class, "top").should equal(top_resource)
|
59
|
+
end
|
60
|
+
|
61
|
+
# #795 - tag before evaluation.
|
62
|
+
it "should tag the catalog with the resource tags when it is evaluated" do
|
63
|
+
@middle.evaluate(@scope)
|
64
|
+
|
65
|
+
@compiler.catalog.should be_tagged("middle")
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should tag the catalog with the parent class tags when it is evaluated" do
|
69
|
+
@middle.evaluate(@scope)
|
70
|
+
|
71
|
+
@compiler.catalog.should be_tagged("top")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe Puppet::Parser::AST::HostClass, "when evaluating code" do
|
76
|
+
|
77
|
+
before do
|
78
|
+
@top_resource = stub "top_resource"
|
79
|
+
@top = @parser.newclass "top", :code => @top_resource
|
80
|
+
|
81
|
+
@middle_resource = stub "middle_resource"
|
82
|
+
@middle = @parser.newclass "top::middle", :parent => "top", :code => @middle_resource
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should set its namespace to its fully qualified name" do
|
86
|
+
@middle.namespace.should == "top::middle"
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should evaluate the code referred to by the class" do
|
90
|
+
@top_resource.expects(:safeevaluate)
|
91
|
+
|
92
|
+
resource = @top.evaluate(@scope)
|
93
|
+
|
94
|
+
@top.evaluate_code(resource)
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should evaluate the parent class's code if it has a parent" do
|
98
|
+
@top_resource.expects(:safeevaluate)
|
99
|
+
@middle_resource.expects(:safeevaluate)
|
100
|
+
|
101
|
+
resource = @middle.evaluate(@scope)
|
102
|
+
|
103
|
+
@middle.evaluate_code(resource)
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should not evaluate the parent class's code if the parent has already been evaluated" do
|
107
|
+
@top_resource.stubs(:safeevaluate)
|
108
|
+
resource = @top.evaluate(@scope)
|
109
|
+
@top.evaluate_code(resource)
|
110
|
+
|
111
|
+
@top_resource.expects(:safeevaluate).never
|
112
|
+
@middle_resource.stubs(:safeevaluate)
|
113
|
+
resource = @middle.evaluate(@scope)
|
114
|
+
@middle.evaluate_code(resource)
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should use the parent class's scope as its parent scope" do
|
118
|
+
@top_resource.stubs(:safeevaluate)
|
119
|
+
@middle_resource.stubs(:safeevaluate)
|
120
|
+
resource = @middle.evaluate(@scope)
|
121
|
+
@middle.evaluate_code(resource)
|
122
|
+
|
123
|
+
@compiler.class_scope(@middle).parent.should equal(@compiler.class_scope(@top))
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should add the class's name and title to its own scope" do
|
127
|
+
@top_resource.stubs(:safeevaluate)
|
128
|
+
@middle_resource.stubs(:safeevaluate)
|
129
|
+
resource = @middle.evaluate(@scope)
|
130
|
+
scope = stub_everything 'scope', :compiler => @compiler
|
131
|
+
@middle.stubs(:subscope).returns(scope)
|
132
|
+
|
133
|
+
scope.expects(:setvar).with("title","top::middle")
|
134
|
+
scope.expects(:setvar).with("name","top::middle")
|
135
|
+
|
136
|
+
@middle.evaluate_code(resource)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should add the parent class's namespace to its namespace search path" do
|
140
|
+
@top_resource.stubs(:safeevaluate)
|
141
|
+
@middle_resource.stubs(:safeevaluate)
|
142
|
+
resource = @middle.evaluate(@scope)
|
143
|
+
@middle.evaluate_code(resource)
|
144
|
+
|
145
|
+
@compiler.class_scope(@middle).namespaces.should be_include(@top.namespace)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Parser::AST::Minus do
|
6
|
+
before :each do
|
7
|
+
@scope = Puppet::Parser::Scope.new()
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should evaluate its argument" do
|
11
|
+
value = stub "value"
|
12
|
+
value.expects(:safeevaluate).with(@scope).returns(123)
|
13
|
+
|
14
|
+
operator = Puppet::Parser::AST::Minus.new :value => value
|
15
|
+
operator.evaluate(@scope)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should fail if argument is not a string or integer" do
|
19
|
+
array_ast = stub 'array_ast', :safeevaluate => [2]
|
20
|
+
operator = Puppet::Parser::AST::Minus.new :value => array_ast
|
21
|
+
lambda { operator.evaluate(@scope) }.should raise_error
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should work with integer as string" do
|
25
|
+
string = stub 'string', :safeevaluate => "123"
|
26
|
+
operator = Puppet::Parser::AST::Minus.new :value => string
|
27
|
+
operator.evaluate(@scope).should == -123
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should work with integers" do
|
31
|
+
int = stub 'int', :safeevaluate => 123
|
32
|
+
operator = Puppet::Parser::AST::Minus.new :value => int
|
33
|
+
operator.evaluate(@scope).should == -123
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|