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,561 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
class CompilerTestResource
|
6
|
+
attr_accessor :builtin, :virtual, :evaluated, :type, :title
|
7
|
+
|
8
|
+
def initialize(type, title)
|
9
|
+
@type = type
|
10
|
+
@title = title
|
11
|
+
end
|
12
|
+
|
13
|
+
def ref
|
14
|
+
"%s[%s]" % [type.to_s.capitalize, title]
|
15
|
+
end
|
16
|
+
|
17
|
+
def evaluated?
|
18
|
+
@evaluated
|
19
|
+
end
|
20
|
+
|
21
|
+
def builtin?
|
22
|
+
@builtin
|
23
|
+
end
|
24
|
+
|
25
|
+
def virtual?
|
26
|
+
@virtual
|
27
|
+
end
|
28
|
+
|
29
|
+
def evaluate
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe Puppet::Parser::Compiler do
|
34
|
+
before :each do
|
35
|
+
@node = Puppet::Node.new "testnode"
|
36
|
+
@parser = Puppet::Parser::Parser.new :environment => "development"
|
37
|
+
|
38
|
+
@scope_resource = stub 'scope_resource', :builtin? => true, :finish => nil, :ref => 'Class[main]'
|
39
|
+
@scope = stub 'scope', :resource => @scope_resource, :source => mock("source")
|
40
|
+
@compiler = Puppet::Parser::Compiler.new(@node, @parser)
|
41
|
+
end
|
42
|
+
|
43
|
+
describe Puppet::Parser::Compiler do
|
44
|
+
|
45
|
+
it "should be able to store references to class scopes" do
|
46
|
+
lambda { @compiler.class_set "myname", "myscope" }.should_not raise_error
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should be able to retrieve class scopes by name" do
|
50
|
+
@compiler.class_set "myname", "myscope"
|
51
|
+
@compiler.class_scope("myname").should == "myscope"
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should be able to retrieve class scopes by object" do
|
55
|
+
klass = mock 'ast_class'
|
56
|
+
klass.expects(:classname).returns("myname")
|
57
|
+
@compiler.class_set "myname", "myscope"
|
58
|
+
@compiler.class_scope(klass).should == "myscope"
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should be able to return a class list containing all set classes" do
|
62
|
+
@compiler.class_set "", "empty"
|
63
|
+
@compiler.class_set "one", "yep"
|
64
|
+
@compiler.class_set "two", "nope"
|
65
|
+
|
66
|
+
@compiler.classlist.sort.should == %w{one two}.sort
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe Puppet::Parser::Compiler, " when initializing" do
|
71
|
+
|
72
|
+
it "should set its node attribute" do
|
73
|
+
@compiler.node.should equal(@node)
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should set its parser attribute" do
|
77
|
+
@compiler.parser.should equal(@parser)
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should detect when ast nodes are absent" do
|
81
|
+
@compiler.ast_nodes?.should be_false
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should detect when ast nodes are present" do
|
85
|
+
@parser.nodes["testing"] = "yay"
|
86
|
+
@compiler.ast_nodes?.should be_true
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe Puppet::Parser::Compiler, "when managing scopes" do
|
91
|
+
|
92
|
+
it "should create a top scope" do
|
93
|
+
@compiler.topscope.should be_instance_of(Puppet::Parser::Scope)
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should be able to create new scopes" do
|
97
|
+
@compiler.newscope(@compiler.topscope).should be_instance_of(Puppet::Parser::Scope)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should correctly set the level of newly created scopes" do
|
101
|
+
@compiler.newscope(@compiler.topscope, :level => 5).level.should == 5
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should set the parent scope of the new scope to be the passed-in parent" do
|
105
|
+
scope = mock 'scope'
|
106
|
+
newscope = @compiler.newscope(scope)
|
107
|
+
|
108
|
+
@compiler.parent(newscope).should equal(scope)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe Puppet::Parser::Compiler, " when compiling" do
|
113
|
+
|
114
|
+
def compile_methods
|
115
|
+
[:set_node_parameters, :evaluate_main, :evaluate_ast_node, :evaluate_node_classes, :evaluate_generators, :fail_on_unevaluated,
|
116
|
+
:finish, :store, :extract]
|
117
|
+
end
|
118
|
+
|
119
|
+
# Stub all of the main compile methods except the ones we're specifically interested in.
|
120
|
+
def compile_stub(*except)
|
121
|
+
(compile_methods - except).each { |m| @compiler.stubs(m) }
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should set node parameters as variables in the top scope" do
|
125
|
+
params = {"a" => "b", "c" => "d"}
|
126
|
+
@node.stubs(:parameters).returns(params)
|
127
|
+
compile_stub(:set_node_parameters)
|
128
|
+
@compiler.compile
|
129
|
+
@compiler.topscope.lookupvar("a").should == "b"
|
130
|
+
@compiler.topscope.lookupvar("c").should == "d"
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should evaluate any existing classes named in the node" do
|
134
|
+
classes = %w{one two three four}
|
135
|
+
main = stub 'main'
|
136
|
+
one = stub 'one', :classname => "one"
|
137
|
+
three = stub 'three', :classname => "three"
|
138
|
+
@node.stubs(:name).returns("whatever")
|
139
|
+
@node.stubs(:classes).returns(classes)
|
140
|
+
|
141
|
+
@compiler.expects(:evaluate_classes).with(classes, @compiler.topscope)
|
142
|
+
@compiler.class.publicize_methods(:evaluate_node_classes) { @compiler.evaluate_node_classes }
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should enable ast_nodes if the parser has any nodes" do
|
146
|
+
@parser.expects(:nodes).returns(:one => :yay)
|
147
|
+
@compiler.ast_nodes?.should be_true
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should disable ast_nodes if the parser has no nodes" do
|
151
|
+
@parser.expects(:nodes).returns({})
|
152
|
+
@compiler.ast_nodes?.should be_false
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should evaluate the main class if it exists" do
|
156
|
+
compile_stub(:evaluate_main)
|
157
|
+
main_class = mock 'main_class'
|
158
|
+
main_class.expects(:evaluate_code).with { |r| r.is_a?(Puppet::Parser::Resource) }
|
159
|
+
@compiler.topscope.expects(:source=).with(main_class)
|
160
|
+
@parser.stubs(:findclass).with("", "").returns(main_class)
|
161
|
+
|
162
|
+
@compiler.compile
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should evaluate any node classes" do
|
166
|
+
@node.stubs(:classes).returns(%w{one two three four})
|
167
|
+
@compiler.expects(:evaluate_classes).with(%w{one two three four}, @compiler.topscope)
|
168
|
+
@compiler.send(:evaluate_node_classes)
|
169
|
+
end
|
170
|
+
|
171
|
+
it "should evaluate all added collections" do
|
172
|
+
colls = []
|
173
|
+
# And when the collections fail to evaluate.
|
174
|
+
colls << mock("coll1-false")
|
175
|
+
colls << mock("coll2-false")
|
176
|
+
colls.each { |c| c.expects(:evaluate).returns(false) }
|
177
|
+
|
178
|
+
@compiler.add_collection(colls[0])
|
179
|
+
@compiler.add_collection(colls[1])
|
180
|
+
|
181
|
+
compile_stub(:evaluate_generators)
|
182
|
+
@compiler.compile
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should ignore builtin resources" do
|
186
|
+
resource = stub 'builtin', :ref => "File[testing]", :builtin? => true
|
187
|
+
|
188
|
+
@compiler.add_resource(@scope, resource)
|
189
|
+
resource.expects(:evaluate).never
|
190
|
+
|
191
|
+
@compiler.compile
|
192
|
+
end
|
193
|
+
|
194
|
+
it "should evaluate unevaluated resources" do
|
195
|
+
resource = CompilerTestResource.new(:file, "testing")
|
196
|
+
|
197
|
+
@compiler.add_resource(@scope, resource)
|
198
|
+
|
199
|
+
# We have to now mark the resource as evaluated
|
200
|
+
resource.expects(:evaluate).with { |*whatever| resource.evaluated = true }
|
201
|
+
|
202
|
+
@compiler.compile
|
203
|
+
end
|
204
|
+
|
205
|
+
it "should not evaluate already-evaluated resources" do
|
206
|
+
resource = stub 'already_evaluated', :ref => "File[testing]", :builtin? => false, :evaluated? => true, :virtual? => false
|
207
|
+
@compiler.add_resource(@scope, resource)
|
208
|
+
resource.expects(:evaluate).never
|
209
|
+
|
210
|
+
@compiler.compile
|
211
|
+
end
|
212
|
+
|
213
|
+
it "should evaluate unevaluated resources created by evaluating other resources" do
|
214
|
+
resource = CompilerTestResource.new(:file, "testing")
|
215
|
+
@compiler.add_resource(@scope, resource)
|
216
|
+
|
217
|
+
resource2 = CompilerTestResource.new(:file, "other")
|
218
|
+
|
219
|
+
# We have to now mark the resource as evaluated
|
220
|
+
resource.expects(:evaluate).with { |*whatever| resource.evaluated = true; @compiler.add_resource(@scope, resource2) }
|
221
|
+
resource2.expects(:evaluate).with { |*whatever| resource2.evaluated = true }
|
222
|
+
|
223
|
+
|
224
|
+
@compiler.compile
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should call finish() on all resources" do
|
228
|
+
# Add a resource that does respond to :finish
|
229
|
+
resource = Puppet::Parser::Resource.new :scope => @scope, :type => "file", :title => "finish"
|
230
|
+
resource.expects(:finish)
|
231
|
+
|
232
|
+
@compiler.add_resource(@scope, resource)
|
233
|
+
|
234
|
+
# And one that does not
|
235
|
+
dnf = stub "dnf", :ref => "File[dnf]"
|
236
|
+
|
237
|
+
@compiler.add_resource(@scope, dnf)
|
238
|
+
|
239
|
+
@compiler.send(:finish)
|
240
|
+
end
|
241
|
+
|
242
|
+
it "should add resources that do not conflict with existing resources" do
|
243
|
+
resource = stub "noconflict", :ref => "File[yay]"
|
244
|
+
@compiler.add_resource(@scope, resource)
|
245
|
+
|
246
|
+
@compiler.catalog.should be_vertex(resource)
|
247
|
+
end
|
248
|
+
|
249
|
+
it "should fail to add resources that conflict with existing resources" do
|
250
|
+
type = stub 'faketype', :isomorphic? => true, :name => "mytype"
|
251
|
+
Puppet::Type.stubs(:type).with("mytype").returns(type)
|
252
|
+
|
253
|
+
resource1 = stub "iso1conflict", :ref => "Mytype[yay]", :type => "mytype", :file => "eh", :line => 0
|
254
|
+
resource2 = stub "iso2conflict", :ref => "Mytype[yay]", :type => "mytype", :file => "eh", :line => 0
|
255
|
+
|
256
|
+
@compiler.add_resource(@scope, resource1)
|
257
|
+
lambda { @compiler.add_resource(@scope, resource2) }.should raise_error(ArgumentError)
|
258
|
+
end
|
259
|
+
|
260
|
+
it "should have a method for looking up resources" do
|
261
|
+
resource = stub 'resource', :ref => "Yay[foo]"
|
262
|
+
@compiler.add_resource(@scope, resource)
|
263
|
+
@compiler.findresource("Yay[foo]").should equal(resource)
|
264
|
+
end
|
265
|
+
|
266
|
+
it "should be able to look resources up by type and title" do
|
267
|
+
resource = stub 'resource', :ref => "Yay[foo]"
|
268
|
+
@compiler.add_resource(@scope, resource)
|
269
|
+
@compiler.findresource("Yay", "foo").should equal(resource)
|
270
|
+
end
|
271
|
+
|
272
|
+
it "should not evaluate virtual defined resources" do
|
273
|
+
resource = stub 'notevaluated', :ref => "File[testing]", :builtin? => false, :evaluated? => false, :virtual? => true
|
274
|
+
@compiler.add_resource(@scope, resource)
|
275
|
+
|
276
|
+
resource.expects(:evaluate).never
|
277
|
+
|
278
|
+
@compiler.compile
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
describe Puppet::Parser::Compiler, " when evaluating collections" do
|
283
|
+
|
284
|
+
it "should evaluate each collection" do
|
285
|
+
2.times { |i|
|
286
|
+
coll = mock 'coll%s' % i
|
287
|
+
@compiler.add_collection(coll)
|
288
|
+
|
289
|
+
# This is the hard part -- we have to emulate the fact that
|
290
|
+
# collections delete themselves if they are done evaluating.
|
291
|
+
coll.expects(:evaluate).with do
|
292
|
+
@compiler.delete_collection(coll)
|
293
|
+
end
|
294
|
+
}
|
295
|
+
|
296
|
+
@compiler.class.publicize_methods(:evaluate_collections) { @compiler.evaluate_collections }
|
297
|
+
end
|
298
|
+
|
299
|
+
it "should not fail when there are unevaluated resource collections that do not refer to specific resources" do
|
300
|
+
coll = stub 'coll', :evaluate => false
|
301
|
+
coll.expects(:resources).returns(nil)
|
302
|
+
|
303
|
+
@compiler.add_collection(coll)
|
304
|
+
|
305
|
+
lambda { @compiler.compile }.should_not raise_error
|
306
|
+
end
|
307
|
+
|
308
|
+
it "should fail when there are unevaluated resource collections that refer to a specific resource" do
|
309
|
+
coll = stub 'coll', :evaluate => false
|
310
|
+
coll.expects(:resources).returns(:something)
|
311
|
+
|
312
|
+
@compiler.add_collection(coll)
|
313
|
+
|
314
|
+
lambda { @compiler.compile }.should raise_error(Puppet::ParseError)
|
315
|
+
end
|
316
|
+
|
317
|
+
it "should fail when there are unevaluated resource collections that refer to multiple specific resources" do
|
318
|
+
coll = stub 'coll', :evaluate => false
|
319
|
+
coll.expects(:resources).returns([:one, :two])
|
320
|
+
|
321
|
+
@compiler.add_collection(coll)
|
322
|
+
|
323
|
+
lambda { @compiler.compile }.should raise_error(Puppet::ParseError)
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
describe Puppet::Parser::Compiler, "when told to evaluate missing classes" do
|
328
|
+
|
329
|
+
it "should fail if there's no source listed for the scope" do
|
330
|
+
scope = stub 'scope', :source => nil
|
331
|
+
proc { @compiler.evaluate_classes(%w{one two}, scope) }.should raise_error(Puppet::DevError)
|
332
|
+
end
|
333
|
+
|
334
|
+
it "should tag the catalog with the name of each not-found class" do
|
335
|
+
@compiler.catalog.expects(:tag).with("notfound")
|
336
|
+
@scope.expects(:findclass).with("notfound").returns(nil)
|
337
|
+
@compiler.evaluate_classes(%w{notfound}, @scope)
|
338
|
+
end
|
339
|
+
end
|
340
|
+
|
341
|
+
describe Puppet::Parser::Compiler, " when evaluating found classes" do
|
342
|
+
|
343
|
+
before do
|
344
|
+
@class = stub 'class', :classname => "my::class"
|
345
|
+
@scope.stubs(:findclass).with("myclass").returns(@class)
|
346
|
+
|
347
|
+
@resource = stub 'resource', :ref => "Class[myclass]"
|
348
|
+
end
|
349
|
+
|
350
|
+
it "should evaluate each class" do
|
351
|
+
@compiler.catalog.stubs(:tag)
|
352
|
+
|
353
|
+
@class.expects(:evaluate).with(@scope)
|
354
|
+
|
355
|
+
@compiler.evaluate_classes(%w{myclass}, @scope)
|
356
|
+
end
|
357
|
+
|
358
|
+
it "should not evaluate the resources created for found classes unless asked" do
|
359
|
+
@compiler.catalog.stubs(:tag)
|
360
|
+
|
361
|
+
@resource.expects(:evaluate).never
|
362
|
+
|
363
|
+
@class.expects(:evaluate).returns(@resource)
|
364
|
+
|
365
|
+
@compiler.evaluate_classes(%w{myclass}, @scope)
|
366
|
+
end
|
367
|
+
|
368
|
+
it "should immediately evaluate the resources created for found classes when asked" do
|
369
|
+
@compiler.catalog.stubs(:tag)
|
370
|
+
|
371
|
+
@resource.expects(:evaluate)
|
372
|
+
@class.expects(:evaluate).returns(@resource)
|
373
|
+
|
374
|
+
@compiler.evaluate_classes(%w{myclass}, @scope, false)
|
375
|
+
end
|
376
|
+
|
377
|
+
it "should skip classes that have already been evaluated" do
|
378
|
+
@compiler.catalog.stubs(:tag)
|
379
|
+
|
380
|
+
@compiler.expects(:class_scope).with(@class).returns("something")
|
381
|
+
|
382
|
+
@compiler.expects(:add_resource).never
|
383
|
+
|
384
|
+
@resource.expects(:evaluate).never
|
385
|
+
|
386
|
+
Puppet::Parser::Resource.expects(:new).never
|
387
|
+
@compiler.evaluate_classes(%w{myclass}, @scope, false)
|
388
|
+
end
|
389
|
+
|
390
|
+
it "should return the list of found classes" do
|
391
|
+
@compiler.catalog.stubs(:tag)
|
392
|
+
|
393
|
+
@compiler.stubs(:add_resource)
|
394
|
+
@scope.stubs(:findclass).with("notfound").returns(nil)
|
395
|
+
|
396
|
+
Puppet::Parser::Resource.stubs(:new).returns(@resource)
|
397
|
+
@class.stubs :evaluate
|
398
|
+
@compiler.evaluate_classes(%w{myclass notfound}, @scope).should == %w{myclass}
|
399
|
+
end
|
400
|
+
end
|
401
|
+
|
402
|
+
describe Puppet::Parser::Compiler, " when evaluating AST nodes with no AST nodes present" do
|
403
|
+
|
404
|
+
it "should do nothing" do
|
405
|
+
@compiler.expects(:ast_nodes?).returns(false)
|
406
|
+
@compiler.parser.expects(:nodes).never
|
407
|
+
Puppet::Parser::Resource.expects(:new).never
|
408
|
+
|
409
|
+
@compiler.send(:evaluate_ast_node)
|
410
|
+
end
|
411
|
+
end
|
412
|
+
|
413
|
+
describe Puppet::Parser::Compiler, " when evaluating AST nodes with AST nodes present" do
|
414
|
+
|
415
|
+
before do
|
416
|
+
@nodes = mock 'node_hash'
|
417
|
+
@compiler.stubs(:ast_nodes?).returns(true)
|
418
|
+
@compiler.parser.stubs(:nodes).returns(@nodes)
|
419
|
+
|
420
|
+
# Set some names for our test
|
421
|
+
@node.stubs(:names).returns(%w{a b c})
|
422
|
+
@nodes.stubs(:[]).with("a").returns(nil)
|
423
|
+
@nodes.stubs(:[]).with("b").returns(nil)
|
424
|
+
@nodes.stubs(:[]).with("c").returns(nil)
|
425
|
+
|
426
|
+
# It should check this last, of course.
|
427
|
+
@nodes.stubs(:[]).with("default").returns(nil)
|
428
|
+
end
|
429
|
+
|
430
|
+
it "should fail if the named node cannot be found" do
|
431
|
+
proc { @compiler.send(:evaluate_ast_node) }.should raise_error(Puppet::ParseError)
|
432
|
+
end
|
433
|
+
|
434
|
+
it "should evaluate the first node class matching the node name" do
|
435
|
+
node_class = stub 'node', :classname => "c", :evaluate_code => nil
|
436
|
+
@nodes.stubs(:[]).with("c").returns(node_class)
|
437
|
+
|
438
|
+
node_resource = stub 'node resource', :ref => "Node[c]", :evaluate => nil
|
439
|
+
node_class.expects(:evaluate).returns(node_resource)
|
440
|
+
|
441
|
+
@compiler.compile
|
442
|
+
end
|
443
|
+
|
444
|
+
it "should match the default node if no matching node can be found" do
|
445
|
+
node_class = stub 'node', :classname => "default", :evaluate_code => nil
|
446
|
+
@nodes.stubs(:[]).with("default").returns(node_class)
|
447
|
+
|
448
|
+
node_resource = stub 'node resource', :ref => "Node[default]", :evaluate => nil
|
449
|
+
node_class.expects(:evaluate).returns(node_resource)
|
450
|
+
|
451
|
+
@compiler.compile
|
452
|
+
end
|
453
|
+
|
454
|
+
it "should evaluate the node resource immediately rather than using lazy evaluation" do
|
455
|
+
node_class = stub 'node', :classname => "c"
|
456
|
+
@nodes.stubs(:[]).with("c").returns(node_class)
|
457
|
+
|
458
|
+
node_resource = stub 'node resource', :ref => "Node[c]"
|
459
|
+
node_class.expects(:evaluate).returns(node_resource)
|
460
|
+
|
461
|
+
node_resource.expects(:evaluate)
|
462
|
+
|
463
|
+
@compiler.send(:evaluate_ast_node)
|
464
|
+
end
|
465
|
+
|
466
|
+
it "should set the node's scope as the top scope" do
|
467
|
+
node_resource = stub 'node resource', :ref => "Node[c]", :evaluate => nil
|
468
|
+
node_class = stub 'node', :classname => "c", :evaluate => node_resource
|
469
|
+
|
470
|
+
@nodes.stubs(:[]).with("c").returns(node_class)
|
471
|
+
|
472
|
+
# The #evaluate method normally does this.
|
473
|
+
scope = stub 'scope', :source => "mysource"
|
474
|
+
@compiler.class_set(node_class.classname, scope)
|
475
|
+
node_resource.stubs(:evaluate)
|
476
|
+
|
477
|
+
@compiler.compile
|
478
|
+
|
479
|
+
@compiler.topscope.should equal(scope)
|
480
|
+
end
|
481
|
+
end
|
482
|
+
|
483
|
+
describe Puppet::Parser::Compiler, "when storing compiled resources" do
|
484
|
+
|
485
|
+
it "should store the resources" do
|
486
|
+
Puppet.features.expects(:rails?).returns(true)
|
487
|
+
Puppet::Rails.expects(:connect)
|
488
|
+
|
489
|
+
@compiler.catalog.expects(:vertices).returns(:resources)
|
490
|
+
|
491
|
+
@compiler.expects(:store_to_active_record).with(@node, :resources)
|
492
|
+
@compiler.send(:store)
|
493
|
+
end
|
494
|
+
|
495
|
+
it "should store to active_record" do
|
496
|
+
@node.expects(:name).returns("myname")
|
497
|
+
Puppet::Rails::Host.stubs(:transaction).yields
|
498
|
+
Puppet::Rails::Host.expects(:store).with(@node, :resources)
|
499
|
+
@compiler.send(:store_to_active_record, @node, :resources)
|
500
|
+
end
|
501
|
+
end
|
502
|
+
|
503
|
+
describe Puppet::Parser::Compiler, "when managing resource overrides" do
|
504
|
+
|
505
|
+
before do
|
506
|
+
@override = stub 'override', :ref => "My[ref]"
|
507
|
+
@resource = stub 'resource', :ref => "My[ref]", :builtin? => true
|
508
|
+
end
|
509
|
+
|
510
|
+
it "should be able to store overrides" do
|
511
|
+
lambda { @compiler.add_override(@override) }.should_not raise_error
|
512
|
+
end
|
513
|
+
|
514
|
+
it "should apply overrides to the appropriate resources" do
|
515
|
+
@compiler.add_resource(@scope, @resource)
|
516
|
+
@resource.expects(:merge).with(@override)
|
517
|
+
|
518
|
+
@compiler.add_override(@override)
|
519
|
+
|
520
|
+
@compiler.compile
|
521
|
+
end
|
522
|
+
|
523
|
+
it "should accept overrides before the related resource has been created" do
|
524
|
+
@resource.expects(:merge).with(@override)
|
525
|
+
|
526
|
+
# First store the override
|
527
|
+
@compiler.add_override(@override)
|
528
|
+
|
529
|
+
# Then the resource
|
530
|
+
@compiler.add_resource(@scope, @resource)
|
531
|
+
|
532
|
+
# And compile, so they get resolved
|
533
|
+
@compiler.compile
|
534
|
+
end
|
535
|
+
|
536
|
+
it "should fail if the compile is finished and resource overrides have not been applied" do
|
537
|
+
@compiler.add_override(@override)
|
538
|
+
|
539
|
+
lambda { @compiler.compile }.should raise_error(Puppet::ParseError)
|
540
|
+
end
|
541
|
+
end
|
542
|
+
|
543
|
+
# #620 - Nodes and classes should conflict, else classes don't get evaluated
|
544
|
+
describe Puppet::Parser::Compiler, "when evaluating nodes and classes with the same name (#620)" do
|
545
|
+
|
546
|
+
before do
|
547
|
+
@node = stub :nodescope? => true
|
548
|
+
@class = stub :nodescope? => false
|
549
|
+
end
|
550
|
+
|
551
|
+
it "should fail if a node already exists with the same name as the class being evaluated" do
|
552
|
+
@compiler.class_set("one", @node)
|
553
|
+
lambda { @compiler.class_set("one", @class) }.should raise_error(Puppet::ParseError)
|
554
|
+
end
|
555
|
+
|
556
|
+
it "should fail if a class already exists with the same name as the node being evaluated" do
|
557
|
+
@compiler.class_set("one", @class)
|
558
|
+
lambda { @compiler.class_set("one", @node) }.should raise_error(Puppet::ParseError)
|
559
|
+
end
|
560
|
+
end
|
561
|
+
end
|