puppet 0.23.2 → 0.24.0
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 +112 -1
- data/README +1 -1
- data/Rakefile +1 -2
- data/bin/filebucket +2 -3
- data/bin/puppet +55 -39
- data/bin/puppetca +20 -11
- data/bin/puppetd +30 -31
- data/bin/puppetdoc +27 -28
- data/bin/puppetmasterd +24 -42
- data/bin/puppetrun +3 -4
- data/bin/ralsh +5 -7
- data/conf/redhat/puppet.spec +4 -1
- data/conf/solaris/smf/svc-puppetd +1 -1
- data/conf/solaris/smf/svc-puppetmasterd +1 -1
- data/examples/code/allatonce +1 -1
- data/examples/code/assignments +1 -1
- data/examples/code/components +1 -1
- data/examples/code/file.bl +1 -1
- data/examples/code/filedefaults +1 -1
- data/examples/code/fileparsing +1 -1
- data/examples/code/filerecursion +1 -1
- data/examples/code/functions +1 -1
- data/examples/code/groups +1 -1
- data/examples/code/head +1 -1
- data/examples/code/importing +1 -1
- data/examples/code/modules/sample-module.pp +10 -0
- data/examples/code/modules/sample-module/README.txt +17 -0
- data/examples/code/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +36 -0
- data/examples/code/modules/sample-module/manifests/init.pp +12 -0
- data/examples/code/modules/sample-module/templates/sample.erb +5 -0
- data/examples/code/nodes +1 -1
- data/examples/code/one +1 -1
- data/examples/code/relationships +1 -1
- data/examples/code/selectors +1 -1
- data/examples/code/simpletests +1 -1
- data/examples/root/etc/init.d/sleeper +1 -1
- data/examples/root/etc/puppet/fileserver.conf +1 -1
- data/ext/ldap/puppet.schema +1 -1
- data/ext/module_puppet +30 -21
- data/ext/puppet-test +3 -3
- data/ext/vim/filetype.vim +1 -1
- data/install.rb +1 -2
- data/lib/puppet.rb +20 -19
- data/lib/puppet/checksum.rb +57 -0
- data/lib/puppet/config_stores/rest.rb +1 -1
- data/lib/puppet/daemon.rb +0 -1
- data/lib/puppet/{configuration.rb → defaults.rb} +56 -23
- data/lib/puppet/dsl.rb +22 -116
- data/lib/puppet/error.rb +0 -9
- data/lib/puppet/event.rb +0 -1
- data/lib/puppet/external/gratr/rdot.rb +0 -1
- data/lib/puppet/external/lock.rb +0 -1
- data/lib/puppet/feature/base.rb +3 -2
- data/lib/puppet/feature/rails.rb +0 -1
- data/lib/puppet/file_serving.rb +7 -0
- data/lib/puppet/file_serving/configuration.rb +129 -0
- data/lib/puppet/file_serving/configuration/parser.rb +124 -0
- data/lib/puppet/file_serving/content.rb +34 -0
- data/lib/puppet/file_serving/file_base.rb +63 -0
- data/lib/puppet/file_serving/fileset.rb +138 -0
- data/lib/puppet/file_serving/indirection_hooks.rb +44 -0
- data/lib/puppet/file_serving/metadata.rb +69 -0
- data/lib/puppet/file_serving/mount.rb +186 -0
- data/lib/puppet/file_serving/terminus_helper.rb +19 -0
- data/lib/puppet/indirector.rb +68 -0
- data/lib/puppet/indirector/catalog/compiler.rb +173 -0
- data/lib/puppet/indirector/catalog/yaml.rb +24 -0
- data/lib/puppet/indirector/checksum/file.rb +33 -0
- data/lib/puppet/indirector/code.rb +6 -0
- data/lib/puppet/indirector/direct_file_server.rb +27 -0
- data/lib/puppet/indirector/exec.rb +57 -0
- data/lib/puppet/indirector/facts/facter.rb +65 -0
- data/lib/puppet/indirector/facts/memory.rb +9 -0
- data/lib/puppet/indirector/facts/yaml.rb +7 -0
- data/lib/puppet/indirector/file.rb +54 -0
- data/lib/puppet/indirector/file_content.rb +5 -0
- data/lib/puppet/indirector/file_content/file.rb +11 -0
- data/lib/puppet/indirector/file_content/file_server.rb +11 -0
- data/lib/puppet/indirector/file_content/modules.rb +11 -0
- data/lib/puppet/indirector/file_content/rest.rb +12 -0
- data/lib/puppet/indirector/file_metadata.rb +5 -0
- data/lib/puppet/indirector/file_metadata/file.rb +26 -0
- data/lib/puppet/indirector/file_metadata/file_server.rb +11 -0
- data/lib/puppet/indirector/file_metadata/modules.rb +17 -0
- data/lib/puppet/indirector/file_metadata/rest.rb +12 -0
- data/lib/puppet/indirector/file_server.rb +56 -0
- data/lib/puppet/indirector/indirection.rb +237 -0
- data/lib/puppet/indirector/ldap.rb +90 -0
- data/lib/puppet/indirector/memory.rb +21 -0
- data/lib/puppet/indirector/module_files.rb +82 -0
- data/lib/puppet/indirector/node/exec.rb +52 -0
- data/lib/puppet/indirector/node/ldap.rb +120 -0
- data/lib/puppet/indirector/node/memory.rb +10 -0
- data/lib/puppet/indirector/node/plain.rb +19 -0
- data/lib/puppet/indirector/node/rest.rb +7 -0
- data/lib/puppet/indirector/node/yaml.rb +7 -0
- data/lib/puppet/indirector/plain.rb +9 -0
- data/lib/puppet/indirector/report/processor.rb +50 -0
- data/lib/puppet/indirector/rest.rb +8 -0
- data/lib/puppet/indirector/ssl_rsa.rb +5 -0
- data/lib/puppet/indirector/ssl_rsa/file.rb +33 -0
- data/lib/puppet/indirector/terminus.rb +178 -0
- data/lib/puppet/indirector/yaml.rb +57 -0
- data/lib/puppet/metatype/attributes.rb +3 -3
- data/lib/puppet/metatype/closure.rb +0 -66
- data/lib/puppet/metatype/container.rb +0 -9
- data/lib/puppet/metatype/evaluation.rb +10 -2
- data/lib/puppet/metatype/instances.rb +16 -30
- data/lib/puppet/metatype/manager.rb +1 -2
- data/lib/puppet/metatype/metaparams.rb +27 -21
- data/lib/puppet/metatype/providers.rb +3 -2
- data/lib/puppet/metatype/relationships.rb +1 -2
- data/lib/puppet/metatype/schedules.rb +0 -1
- data/lib/puppet/metatype/tags.rb +0 -1
- data/lib/puppet/module.rb +60 -32
- data/lib/puppet/network/authconfig.rb +0 -1
- data/lib/puppet/network/authorization.rb +0 -1
- data/lib/puppet/network/authstore.rb +0 -1
- data/lib/puppet/network/client.rb +13 -4
- data/lib/puppet/network/client/ca.rb +4 -5
- data/lib/puppet/network/client/dipper.rb +0 -1
- data/lib/puppet/network/client/file.rb +0 -1
- data/lib/puppet/network/client/master.rb +127 -235
- data/lib/puppet/network/client/proxy.rb +0 -1
- data/lib/puppet/network/client/report.rb +0 -1
- data/lib/puppet/network/client/resource.rb +0 -1
- data/lib/puppet/network/client/runner.rb +0 -1
- data/lib/puppet/network/client/status.rb +0 -1
- data/lib/puppet/network/client_request.rb +0 -1
- data/lib/puppet/network/handler.rb +5 -2
- data/lib/puppet/network/handler/ca.rb +1 -2
- data/lib/puppet/network/handler/configuration.rb +184 -0
- data/lib/puppet/network/handler/filebucket.rb +1 -2
- data/lib/puppet/network/handler/fileserver.rb +279 -107
- data/lib/puppet/network/handler/master.rb +57 -152
- data/lib/puppet/network/handler/report.rb +6 -65
- data/lib/puppet/network/handler/resource.rb +5 -13
- data/lib/puppet/network/handler/runner.rb +3 -4
- data/lib/puppet/network/handler/status.rb +0 -1
- data/lib/puppet/network/http.rb +13 -0
- data/lib/puppet/network/http/handler.rb +109 -0
- data/lib/puppet/network/http/mongrel.rb +54 -0
- data/lib/puppet/network/http/mongrel/rest.rb +37 -0
- data/lib/puppet/network/http/mongrel/xmlrpc.rb +4 -0
- data/lib/puppet/network/http/webrick.rb +51 -0
- data/lib/puppet/network/http/webrick/rest.rb +41 -0
- data/lib/puppet/network/http/webrick/xmlrpc.rb +4 -0
- data/lib/puppet/network/http_server.rb +3 -0
- data/lib/puppet/network/{server → http_server}/mongrel.rb +11 -5
- data/lib/puppet/network/{server → http_server}/webrick.rb +9 -5
- data/lib/puppet/network/rest_controller.rb +2 -0
- data/lib/puppet/network/rights.rb +0 -1
- data/lib/puppet/network/server.rb +63 -3
- data/lib/puppet/network/xmlrpc/client.rb +90 -23
- data/lib/puppet/network/xmlrpc/processor.rb +0 -1
- data/lib/puppet/network/xmlrpc/server.rb +0 -1
- data/lib/puppet/network/xmlrpc/webrick_servlet.rb +0 -1
- data/lib/puppet/node.rb +165 -0
- data/lib/puppet/node/catalog.rb +480 -0
- data/lib/puppet/node/environment.rb +46 -0
- data/lib/puppet/node/facts.rb +36 -0
- data/lib/puppet/parameter.rb +34 -28
- data/lib/puppet/parser/ast.rb +0 -1
- data/lib/puppet/parser/ast/astarray.rb +30 -53
- data/lib/puppet/parser/ast/branch.rb +0 -10
- data/lib/puppet/parser/ast/caseopt.rb +0 -11
- data/lib/puppet/parser/ast/casestatement.rb +0 -12
- data/lib/puppet/parser/ast/collection.rb +1 -3
- data/lib/puppet/parser/ast/collexpr.rb +0 -2
- data/lib/puppet/parser/ast/{component.rb → definition.rb} +58 -72
- data/lib/puppet/parser/ast/else.rb +0 -10
- data/lib/puppet/parser/ast/function.rb +0 -2
- data/lib/puppet/parser/ast/hostclass.rb +21 -19
- data/lib/puppet/parser/ast/ifstatement.rb +0 -13
- data/lib/puppet/parser/ast/leaf.rb +0 -8
- data/lib/puppet/parser/ast/node.rb +13 -10
- data/lib/puppet/parser/ast/resource.rb +75 -0
- data/lib/puppet/parser/ast/{resourcedefaults.rb → resource_defaults.rb} +4 -20
- data/lib/puppet/parser/ast/{resourceoverride.rb → resource_override.rb} +3 -5
- data/lib/puppet/parser/ast/resource_reference.rb +66 -0
- data/lib/puppet/parser/ast/resourceparam.rb +0 -14
- data/lib/puppet/parser/ast/selector.rb +0 -10
- data/lib/puppet/parser/ast/tag.rb +0 -2
- data/lib/puppet/parser/ast/vardef.rb +0 -14
- data/lib/puppet/parser/collector.rb +83 -101
- data/lib/puppet/parser/compile.rb +509 -0
- data/lib/puppet/parser/functions.rb +10 -10
- data/lib/puppet/parser/interpreter.rb +44 -662
- data/lib/puppet/parser/lexer.rb +1 -3
- data/lib/puppet/parser/parser.rb +674 -701
- data/lib/puppet/parser/parser_support.rb +33 -24
- data/lib/puppet/parser/resource.rb +219 -162
- data/lib/puppet/parser/resource/param.rb +1 -2
- data/lib/puppet/parser/resource/reference.rb +24 -16
- data/lib/puppet/parser/scope.rb +48 -459
- data/lib/puppet/parser/templatewrapper.rb +4 -5
- data/lib/puppet/pgraph.rb +10 -13
- data/lib/puppet/property.rb +25 -41
- data/lib/puppet/propertychange.rb +0 -2
- data/lib/puppet/provider.rb +15 -11
- data/lib/puppet/provider/cron/crontab.rb +6 -7
- data/lib/puppet/provider/group/groupadd.rb +0 -1
- data/lib/puppet/provider/group/netinfo.rb +0 -1
- data/lib/puppet/provider/group/pw.rb +0 -1
- data/lib/puppet/provider/host/netinfo.rb +0 -1
- data/lib/puppet/provider/host/parsed.rb +0 -1
- data/lib/puppet/provider/interface/redhat.rb +90 -91
- data/lib/puppet/provider/interface/sunos.rb +98 -81
- data/lib/puppet/provider/mailalias/aliases.rb +0 -1
- data/lib/puppet/provider/maillist/mailman.rb +2 -3
- data/lib/puppet/provider/mount.rb +10 -9
- data/lib/puppet/provider/mount/netinfo.rb +0 -1
- data/lib/puppet/provider/mount/parsed.rb +0 -1
- data/lib/puppet/provider/nameservice.rb +0 -1
- data/lib/puppet/provider/nameservice/netinfo.rb +0 -1
- data/lib/puppet/provider/nameservice/objectadd.rb +0 -1
- data/lib/puppet/provider/nameservice/pw.rb +0 -1
- data/lib/puppet/provider/package.rb +0 -2
- data/lib/puppet/provider/package/appdmg.rb +0 -1
- data/lib/puppet/provider/package/apple.rb +0 -1
- data/lib/puppet/provider/package/apt.rb +0 -1
- data/lib/puppet/provider/package/aptitude.rb +0 -1
- data/lib/puppet/provider/package/aptrpm.rb +0 -1
- data/lib/puppet/provider/package/blastwave.rb +0 -1
- data/lib/puppet/provider/package/darwinport.rb +0 -1
- data/lib/puppet/provider/package/dpkg.rb +9 -1
- data/lib/puppet/provider/package/fink.rb +0 -1
- data/lib/puppet/provider/package/freebsd.rb +0 -1
- data/lib/puppet/provider/package/gem.rb +0 -1
- data/lib/puppet/provider/package/openbsd.rb +1 -2
- data/lib/puppet/provider/package/pkgdmg.rb +14 -15
- data/lib/puppet/provider/package/portage.rb +6 -7
- data/lib/puppet/provider/package/ports.rb +1 -4
- data/lib/puppet/provider/package/rpm.rb +31 -45
- data/lib/puppet/provider/package/sun.rb +0 -3
- data/lib/puppet/provider/package/sunfreeware.rb +0 -1
- data/lib/puppet/provider/package/up2date.rb +0 -1
- data/lib/puppet/provider/package/urpmi.rb +0 -1
- data/lib/puppet/provider/package/yum.rb +45 -14
- data/lib/puppet/provider/package/yumhelper.py +37 -0
- data/lib/puppet/provider/parsedfile.rb +2 -3
- data/lib/puppet/provider/port/parsed.rb +0 -1
- data/lib/puppet/provider/service/base.rb +4 -1
- data/lib/puppet/provider/service/debian.rb +5 -2
- data/lib/puppet/provider/service/freebsd.rb +51 -0
- data/lib/puppet/provider/service/init.rb +16 -40
- data/lib/puppet/provider/service/redhat.rb +1 -6
- data/lib/puppet/provider/service/smf.rb +0 -1
- data/lib/puppet/provider/sshkey/parsed.rb +0 -1
- data/lib/puppet/provider/user/netinfo.rb +0 -1
- data/lib/puppet/provider/user/pw.rb +0 -1
- data/lib/puppet/provider/user/useradd.rb +0 -1
- data/lib/puppet/provider/zone/solaris.rb +0 -1
- data/lib/puppet/rails.rb +35 -30
- data/lib/puppet/rails/database/schema.rb +0 -1
- data/lib/puppet/rails/host.rb +6 -15
- data/lib/puppet/rails/param_name.rb +1 -2
- data/lib/puppet/rails/param_value.rb +0 -1
- data/lib/puppet/rails/puppet_class.rb +0 -1
- data/lib/puppet/rails/resource.rb +3 -5
- data/lib/puppet/reference/configuration.rb +12 -6
- data/lib/puppet/reference/indirection.rb +34 -0
- data/lib/puppet/reference/node_source.rb +9 -0
- data/lib/puppet/relationship.rb +10 -8
- data/lib/puppet/reports.rb +51 -0
- data/lib/puppet/reports/log.rb +2 -3
- data/lib/puppet/reports/rrdgraph.rb +2 -5
- data/lib/puppet/reports/store.rb +6 -7
- data/lib/puppet/reports/tagmail.rb +2 -3
- data/lib/puppet/resource_reference.rb +79 -0
- data/lib/puppet/simple_graph.rb +251 -0
- data/lib/puppet/sslcertificates.rb +19 -15
- data/lib/puppet/sslcertificates/ca.rb +56 -15
- data/lib/puppet/sslcertificates/certificate.rb +0 -1
- data/lib/puppet/sslcertificates/inventory.rb +2 -6
- data/lib/puppet/sslcertificates/monkey_patch.rb +6 -0
- data/lib/puppet/sslcertificates/support.rb +4 -5
- data/lib/puppet/transaction.rb +93 -96
- data/lib/puppet/transaction/report.rb +5 -1
- data/lib/puppet/transportable.rb +79 -125
- data/lib/puppet/type.rb +44 -10
- data/lib/puppet/type/component.rb +25 -110
- data/lib/puppet/type/cron.rb +1 -2
- data/lib/puppet/type/exec.rb +19 -13
- data/lib/puppet/type/group.rb +0 -1
- data/lib/puppet/type/host.rb +0 -1
- data/lib/puppet/type/interface.rb +6 -3
- data/lib/puppet/type/k5login.rb +87 -0
- data/lib/puppet/type/mailalias.rb +0 -1
- data/lib/puppet/type/maillist.rb +0 -1
- data/lib/puppet/type/mount.rb +7 -13
- data/lib/puppet/type/notify.rb +0 -1
- data/lib/puppet/type/package.rb +7 -63
- data/lib/puppet/type/pfile.rb +25 -32
- data/lib/puppet/type/pfile/checksum.rb +0 -1
- data/lib/puppet/type/pfile/content.rb +18 -3
- data/lib/puppet/type/pfile/ensure.rb +5 -6
- data/lib/puppet/type/pfile/group.rb +4 -1
- data/lib/puppet/type/pfile/mode.rb +0 -1
- data/lib/puppet/type/pfile/owner.rb +6 -9
- data/lib/puppet/type/pfile/source.rb +28 -11
- data/lib/puppet/type/pfile/target.rb +2 -1
- data/lib/puppet/type/pfile/type.rb +0 -1
- data/lib/puppet/type/pfilebucket.rb +0 -1
- data/lib/puppet/type/port.rb +0 -1
- data/lib/puppet/type/resources.rb +0 -1
- data/lib/puppet/type/schedule.rb +17 -15
- data/lib/puppet/type/service.rb +23 -159
- data/lib/puppet/type/sshkey.rb +0 -1
- data/lib/puppet/type/tidy.rb +15 -7
- data/lib/puppet/type/user.rb +0 -1
- data/lib/puppet/type/zone.rb +0 -1
- data/lib/puppet/util.rb +1 -2
- data/lib/puppet/util/autoload.rb +21 -23
- data/lib/puppet/util/checksums.rb +37 -0
- data/lib/puppet/util/classgen.rb +0 -1
- data/lib/puppet/util/diff.rb +71 -0
- data/lib/puppet/util/docs.rb +8 -2
- data/lib/puppet/util/errors.rb +0 -1
- data/lib/puppet/util/execution.rb +0 -1
- data/lib/puppet/util/fact_store.rb +0 -1
- data/lib/puppet/util/feature.rb +31 -22
- data/lib/puppet/util/fileparsing.rb +3 -2
- data/lib/puppet/util/filetype.rb +30 -12
- data/lib/puppet/util/graph.rb +0 -1
- data/lib/puppet/util/inifile.rb +0 -1
- data/lib/puppet/util/instance_loader.rb +11 -4
- data/lib/puppet/util/loadedfile.rb +0 -1
- data/lib/puppet/util/log.rb +0 -1
- data/lib/puppet/util/log_paths.rb +0 -1
- data/lib/puppet/util/logging.rb +0 -1
- data/lib/puppet/util/metaid.rb +0 -1
- data/lib/puppet/util/methodhelper.rb +0 -2
- data/lib/puppet/util/metric.rb +1 -2
- data/lib/puppet/util/plist.rb +0 -1
- data/lib/puppet/util/plist/generator.rb +0 -1
- data/lib/puppet/util/plist/parser.rb +0 -1
- data/lib/puppet/util/posix.rb +7 -1
- data/lib/puppet/util/provider_features.rb +11 -12
- data/lib/puppet/util/rails/collection_merger.rb +0 -1
- data/lib/puppet/util/reference.rb +2 -3
- data/lib/puppet/util/{config.rb → settings.rb} +424 -300
- data/lib/puppet/util/storage.rb +1 -3
- data/lib/puppet/util/subclass_loader.rb +0 -1
- data/lib/puppet/util/suidmanager.rb +25 -42
- data/lib/puppet/util/uri_helper.rb +22 -0
- data/lib/puppet/util/variables.rb +0 -1
- data/lib/puppet/util/warnings.rb +0 -1
- data/test/Rakefile +1 -1
- data/test/certmgr/ca.rb +8 -2
- data/test/certmgr/certmgr.rb +14 -6
- data/test/certmgr/inventory.rb +18 -30
- data/test/certmgr/support.rb +3 -2
- data/test/executables/filebucket.rb +1 -2
- data/test/executables/puppetbin.rb +1 -2
- data/test/executables/puppetca.rb +7 -2
- data/test/executables/puppetd.rb +23 -29
- data/test/executables/puppetmasterd.rb +1 -2
- data/test/executables/puppetmodule.rb +1 -2
- data/test/language/ast.rb +24 -29
- data/test/language/ast/casestatement.rb +1 -2
- data/test/language/ast/definition.rb +166 -0
- data/test/language/ast/hostclass.rb +50 -29
- data/test/language/ast/resource.rb +59 -0
- data/test/language/ast/{resourceref.rb → resource_reference.rb} +30 -20
- data/test/language/ast/selector.rb +1 -2
- data/test/language/ast/variable.rb +1 -2
- data/test/language/compile.rb +569 -0
- data/test/language/functions.rb +57 -76
- data/test/language/lexer.rb +20 -3
- data/test/language/parser.rb +45 -33
- data/test/language/resource.rb +275 -308
- data/test/language/scope.rb +135 -410
- data/test/language/snippets.rb +19 -41
- data/test/language/transportable.rb +8 -29
- data/test/lib/mocha/auto_verify.rb +6 -6
- data/test/lib/mocha/deprecation.rb +22 -0
- data/test/lib/mocha/exception_raiser.rb +17 -0
- data/test/lib/mocha/expectation.rb +167 -84
- data/test/lib/mocha/infinite_range.rb +4 -6
- data/test/lib/mocha/inspect.rb +3 -1
- data/test/lib/mocha/is_a.rb +9 -0
- data/test/lib/mocha/missing_expectation.rb +27 -0
- data/test/lib/mocha/mock.rb +192 -5
- data/test/lib/mocha/multiple_yields.rb +20 -0
- data/test/lib/mocha/no_yields.rb +11 -0
- data/test/lib/mocha/object.rb +11 -1
- data/test/lib/mocha/parameter_matchers.rb +9 -0
- data/test/lib/mocha/parameter_matchers/all_of.rb +39 -0
- data/test/lib/mocha/parameter_matchers/any_of.rb +44 -0
- data/test/lib/mocha/parameter_matchers/anything.rb +30 -0
- data/test/lib/mocha/parameter_matchers/has_entry.rb +39 -0
- data/test/lib/mocha/parameter_matchers/has_key.rb +39 -0
- data/test/lib/mocha/parameter_matchers/has_value.rb +39 -0
- data/test/lib/mocha/parameter_matchers/includes.rb +37 -0
- data/test/lib/mocha/return_values.rb +31 -0
- data/test/lib/mocha/single_return_value.rb +24 -0
- data/test/lib/mocha/single_yield.rb +18 -0
- data/test/lib/mocha/standalone.rb +2 -0
- data/test/lib/mocha/stub.rb +18 -0
- data/test/lib/mocha/test_case_adapter.rb +3 -3
- data/test/lib/mocha/yield_parameters.rb +31 -0
- data/test/lib/puppettest.rb +38 -20
- data/test/lib/puppettest/certificates.rb +0 -1
- data/test/lib/puppettest/exetest.rb +0 -1
- data/test/lib/puppettest/fakes.rb +0 -1
- data/test/lib/puppettest/fileparsing.rb +8 -15
- data/test/lib/puppettest/filetesting.rb +0 -1
- data/test/lib/puppettest/parsertesting.rb +37 -23
- data/test/lib/puppettest/railstesting.rb +3 -6
- data/test/lib/puppettest/reporttesting.rb +0 -1
- data/test/lib/puppettest/resourcetesting.rb +6 -34
- data/test/lib/puppettest/runnable_test.rb +30 -0
- data/test/lib/puppettest/servertest.rb +2 -3
- data/test/lib/puppettest/support/assertions.rb +13 -41
- data/test/lib/puppettest/support/collection.rb +0 -1
- data/test/lib/puppettest/support/helpers.rb +0 -1
- data/test/lib/puppettest/support/resources.rb +17 -17
- data/test/lib/puppettest/support/utils.rb +45 -27
- data/test/lib/puppettest/testcase.rb +2 -21
- data/test/lib/rake/puppet_test_loader.rb +0 -1
- data/test/lib/rake/puppet_testtask.rb +0 -1
- data/test/network/authconfig.rb +1 -2
- data/test/network/authorization.rb +1 -2
- data/test/network/authstore.rb +1 -2
- data/test/network/client/ca.rb +12 -7
- data/test/network/client/client.rb +17 -22
- data/test/network/client/dipper.rb +1 -2
- data/test/network/client/master.rb +70 -184
- data/test/network/client/resource.rb +9 -2
- data/test/network/client_request.rb +1 -2
- data/test/network/daemon.rb +1 -2
- data/test/network/handler/bucket.rb +2 -31
- data/test/network/handler/ca.rb +9 -3
- data/test/network/handler/configuration.rb +160 -0
- data/test/network/handler/fileserver.rb +24 -5
- data/test/network/handler/handler.rb +1 -2
- data/test/network/handler/master.rb +38 -243
- data/test/network/handler/report.rb +2 -104
- data/test/network/handler/resource.rb +5 -3
- data/test/network/handler/runner.rb +22 -60
- data/test/network/rights.rb +1 -2
- data/test/network/server/mongrel_test.rb +2 -3
- data/test/network/server/webrick.rb +17 -11
- data/test/network/xmlrpc/client.rb +27 -12
- data/test/network/xmlrpc/processor.rb +3 -4
- data/test/network/xmlrpc/server.rb +1 -2
- data/test/network/xmlrpc/webrick_servlet.rb +8 -2
- data/test/other/dsl.rb +2 -4
- data/test/other/events.rb +14 -56
- data/test/other/overrides.rb +3 -6
- data/test/other/propertychange.rb +1 -2
- data/test/other/provider.rb +1 -2
- data/test/other/puppet.rb +1 -2
- data/test/other/relationships.rb +15 -17
- data/test/other/report.rb +14 -20
- data/test/other/transactions.rb +109 -192
- data/test/puppet/conffiles.rb +3 -5
- data/test/puppet/defaults.rb +1 -28
- data/test/puppet/errortest.rb +1 -2
- data/test/puppet/tc_suidmanager.rb +77 -63
- data/test/rails/ast.rb +4 -4
- data/test/rails/configuration.rb +71 -0
- data/test/rails/host.rb +19 -30
- data/test/rails/rails.rb +1 -2
- data/test/rails/railsparameter.rb +3 -4
- data/test/rails/railsresource.rb +6 -5
- data/test/ral/manager/attributes.rb +1 -2
- data/test/ral/manager/instances.rb +3 -3
- data/test/ral/manager/manager.rb +1 -2
- data/test/ral/manager/provider.rb +1 -2
- data/test/ral/manager/type.rb +89 -93
- data/test/ral/providers/cron/crontab.rb +9 -11
- data/test/ral/providers/group.rb +1 -2
- data/test/ral/providers/host/netinfo.rb +1 -2
- data/test/ral/providers/host/parsed.rb +1 -2
- data/test/ral/providers/mailalias/aliases.rb +1 -2
- data/test/ral/providers/mount/netinfo.rb +1 -2
- data/test/ral/providers/nameservice.rb +1 -2
- data/test/ral/providers/package.rb +5 -4
- data/test/ral/providers/package/apt.rb +0 -1
- data/test/ral/providers/package/aptrpm.rb +0 -1
- data/test/ral/providers/parsedfile.rb +1 -2
- data/test/ral/providers/port/parsed.rb +1 -2
- data/test/ral/providers/provider.rb +10 -5
- data/test/ral/providers/service/base.rb +1 -2
- data/test/ral/providers/service/debian.rb +58 -0
- data/test/ral/providers/sshkey/parsed.rb +1 -2
- data/test/ral/providers/user.rb +3 -2
- data/test/ral/providers/user/useradd.rb +0 -1
- data/test/ral/types/basic.rb +4 -9
- data/test/ral/types/cron.rb +6 -12
- data/test/ral/types/exec.rb +6 -7
- data/test/ral/types/file.rb +35 -14
- data/test/ral/types/file/target.rb +6 -5
- data/test/ral/types/filebucket.rb +3 -2
- data/test/ral/types/fileignoresource.rb +10 -42
- data/test/ral/types/filesources.rb +21 -60
- data/test/ral/types/group.rb +3 -3
- data/test/ral/types/host.rb +6 -3
- data/test/ral/types/mailalias.rb +1 -2
- data/test/ral/types/parameter.rb +5 -3
- data/test/ral/types/port.rb +1 -2
- data/test/ral/types/property.rb +3 -3
- data/test/ral/types/resources.rb +1 -2
- data/test/ral/types/service.rb +5 -3
- data/test/ral/types/sshkey.rb +5 -3
- data/test/ral/types/tidy.rb +63 -3
- data/test/ral/types/user.rb +10 -11
- data/test/ral/types/yumrepo.rb +1 -1
- data/test/ral/types/zone.rb +1 -2
- data/test/util/autoload.rb +23 -27
- data/test/util/classgen.rb +1 -2
- data/test/util/execution.rb +1 -2
- data/test/util/features.rb +1 -3
- data/test/util/fileparsing.rb +11 -3
- data/test/util/filetype.rb +1 -2
- data/test/util/inifile.rb +1 -1
- data/test/util/instance_loader.rb +5 -6
- data/test/util/loadedfile.rb +1 -2
- data/test/util/log.rb +1 -2
- data/test/util/metrics.rb +1 -2
- data/test/util/package.rb +1 -2
- data/test/util/posixtest.rb +1 -2
- data/test/util/{config.rb → settings.rb} +123 -265
- data/test/util/storage.rb +1 -2
- data/test/util/subclass_loader.rb +1 -2
- data/test/util/utiltest.rb +1 -111
- metadata +130 -112
- data/ext/tools/passwd2puppet +0 -45
- data/lib/puppet/fact_stores/yaml.rb +0 -42
- data/lib/puppet/network/handler/facts.rb +0 -70
- data/lib/puppet/parser/ast/resourcedef.rb +0 -222
- data/lib/puppet/parser/ast/resourceref.rb +0 -58
- data/test/language/ast/component.rb +0 -142
- data/test/language/collector.rb +0 -179
- data/test/language/interpreter.rb +0 -804
- data/test/language/node.rb +0 -126
- data/test/lib/mocha/mock_methods.rb +0 -122
- data/test/lib/puppettest/graph.rb +0 -41
- data/test/lib/spec.rb +0 -8
- data/test/lib/spec/callback.rb +0 -11
- data/test/lib/spec/callback/callback_container.rb +0 -60
- data/test/lib/spec/callback/extensions/module.rb +0 -24
- data/test/lib/spec/callback/extensions/object.rb +0 -37
- data/test/lib/spec/deprecated.rb +0 -3
- data/test/lib/spec/expectations.rb +0 -59
- data/test/lib/spec/expectations/differs/default.rb +0 -62
- data/test/lib/spec/expectations/errors.rb +0 -6
- data/test/lib/spec/expectations/extensions.rb +0 -3
- data/test/lib/spec/expectations/extensions/object.rb +0 -109
- data/test/lib/spec/expectations/extensions/proc.rb +0 -57
- data/test/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
- data/test/lib/spec/expectations/handler.rb +0 -47
- data/test/lib/spec/expectations/should.rb +0 -5
- data/test/lib/spec/expectations/should/base.rb +0 -64
- data/test/lib/spec/expectations/should/change.rb +0 -69
- data/test/lib/spec/expectations/should/have.rb +0 -128
- data/test/lib/spec/expectations/should/not.rb +0 -74
- data/test/lib/spec/expectations/should/should.rb +0 -81
- data/test/lib/spec/expectations/sugar.rb +0 -47
- data/test/lib/spec/matchers.rb +0 -160
- data/test/lib/spec/matchers/be.rb +0 -161
- data/test/lib/spec/matchers/be_close.rb +0 -37
- data/test/lib/spec/matchers/change.rb +0 -120
- data/test/lib/spec/matchers/eql.rb +0 -43
- data/test/lib/spec/matchers/equal.rb +0 -43
- data/test/lib/spec/matchers/has.rb +0 -44
- data/test/lib/spec/matchers/have.rb +0 -140
- data/test/lib/spec/matchers/include.rb +0 -50
- data/test/lib/spec/matchers/match.rb +0 -41
- data/test/lib/spec/matchers/raise_error.rb +0 -100
- data/test/lib/spec/matchers/respond_to.rb +0 -35
- data/test/lib/spec/matchers/satisfy.rb +0 -47
- data/test/lib/spec/matchers/throw_symbol.rb +0 -75
- data/test/lib/spec/mocks.rb +0 -232
- data/test/lib/spec/mocks/argument_expectation.rb +0 -132
- data/test/lib/spec/mocks/error_generator.rb +0 -85
- data/test/lib/spec/mocks/errors.rb +0 -10
- data/test/lib/spec/mocks/extensions/object.rb +0 -3
- data/test/lib/spec/mocks/message_expectation.rb +0 -231
- data/test/lib/spec/mocks/methods.rb +0 -40
- data/test/lib/spec/mocks/mock.rb +0 -26
- data/test/lib/spec/mocks/mock_handler.rb +0 -166
- data/test/lib/spec/mocks/order_group.rb +0 -29
- data/test/lib/spec/rake/spectask.rb +0 -173
- data/test/lib/spec/rake/verify_rcov.rb +0 -47
- data/test/lib/spec/runner.rb +0 -132
- data/test/lib/spec/runner/backtrace_tweaker.rb +0 -55
- data/test/lib/spec/runner/command_line.rb +0 -34
- data/test/lib/spec/runner/context.rb +0 -154
- data/test/lib/spec/runner/context_eval.rb +0 -142
- data/test/lib/spec/runner/context_runner.rb +0 -55
- data/test/lib/spec/runner/drb_command_line.rb +0 -21
- data/test/lib/spec/runner/execution_context.rb +0 -17
- data/test/lib/spec/runner/extensions/kernel.rb +0 -17
- data/test/lib/spec/runner/extensions/object.rb +0 -32
- data/test/lib/spec/runner/formatter.rb +0 -5
- data/test/lib/spec/runner/formatter/base_text_formatter.rb +0 -118
- data/test/lib/spec/runner/formatter/html_formatter.rb +0 -219
- data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -27
- data/test/lib/spec/runner/formatter/rdoc_formatter.rb +0 -22
- data/test/lib/spec/runner/formatter/specdoc_formatter.rb +0 -23
- data/test/lib/spec/runner/heckle_runner.rb +0 -71
- data/test/lib/spec/runner/heckle_runner_win.rb +0 -10
- data/test/lib/spec/runner/option_parser.rb +0 -224
- data/test/lib/spec/runner/reporter.rb +0 -105
- data/test/lib/spec/runner/spec_matcher.rb +0 -25
- data/test/lib/spec/runner/spec_parser.rb +0 -41
- data/test/lib/spec/runner/spec_should_raise_handler.rb +0 -74
- data/test/lib/spec/runner/specification.rb +0 -114
- data/test/lib/spec/translator.rb +0 -87
- data/test/lib/spec/version.rb +0 -30
- data/test/network/handler/facts.rb +0 -112
- data/test/other/pgraph.rb +0 -290
- data/test/other/relationship.rb +0 -74
- data/test/puppet/modules.rb +0 -59
- data/test/rails/collection.rb +0 -247
- data/test/rails/interpreter.rb +0 -91
- data/test/ral/providers/mount/parsed.rb +0 -251
- data/test/ral/providers/service.rb +0 -235
- data/test/ral/types/component.rb +0 -113
- data/test/ral/types/interface.rb +0 -40
- data/test/ral/types/mount.rb +0 -362
- data/test/ral/types/package.rb +0 -154
- data/test/ral/types/schedule.rb +0 -357
- data/test/tagging/tagging.rb +0 -170
- data/test/util/fact_store.rb +0 -67
- data/test/util/graph.rb +0 -108
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke A. Kanies on 2007-07-8.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../lib/puppettest'
|
7
|
+
|
8
|
+
require 'puppettest'
|
9
|
+
require 'puppettest/parsertesting'
|
10
|
+
|
11
|
+
class TestASTResource< Test::Unit::TestCase
|
12
|
+
include PuppetTest
|
13
|
+
include PuppetTest::ParserTesting
|
14
|
+
AST = Puppet::Parser::AST
|
15
|
+
|
16
|
+
def setup
|
17
|
+
super
|
18
|
+
@scope = mkscope
|
19
|
+
@parser = @scope.compile.parser
|
20
|
+
@scope.compile.send(:evaluate_main)
|
21
|
+
end
|
22
|
+
|
23
|
+
def newdef(type, title, params = nil)
|
24
|
+
params ||= AST::ASTArray.new(:children => [])
|
25
|
+
AST::Resource.new(:type => type, :title => AST::String.new(:value => title), :params => params)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Related to #806, make sure resources always look up the full path to the resource.
|
29
|
+
def test_scoped_types
|
30
|
+
@parser.newdefine "one"
|
31
|
+
@parser.newdefine "one::two"
|
32
|
+
@parser.newdefine "three"
|
33
|
+
twoscope = @scope.newscope(:namespace => "one")
|
34
|
+
twoscope.resource = @scope.resource
|
35
|
+
assert(twoscope.finddefine("two"), "Could not find 'two' definition")
|
36
|
+
title = "title"
|
37
|
+
|
38
|
+
# First try a qualified type
|
39
|
+
assert_equal("One::Two", newdef("two", title).evaluate(:scope => twoscope)[0].type,
|
40
|
+
"Defined type was not made fully qualified")
|
41
|
+
|
42
|
+
# Then try a type that does not need to be qualified
|
43
|
+
assert_equal("One", newdef("one", title).evaluate(:scope => twoscope)[0].type,
|
44
|
+
"Unqualified defined type was not handled correctly")
|
45
|
+
|
46
|
+
# Then an unqualified type from within the one namespace
|
47
|
+
assert_equal("Three", newdef("three", title).evaluate(:scope => twoscope)[0].type,
|
48
|
+
"Defined type was not made fully qualified")
|
49
|
+
|
50
|
+
# Then a builtin type
|
51
|
+
assert_equal("File", newdef("file", title).evaluate(:scope => twoscope)[0].type,
|
52
|
+
"Builtin type was not handled correctly")
|
53
|
+
|
54
|
+
# Now try a type that does not exist, which should throw an error.
|
55
|
+
assert_raise(Puppet::ParseError, "Did not fail on a missing type in a resource reference") do
|
56
|
+
newdef("nosuchtype", title).evaluate(:scope => twoscope)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -3,30 +3,30 @@
|
|
3
3
|
# Created by Luke A. Kanies on 2007-07-8.
|
4
4
|
# Copyright (c) 2007. All rights reserved.
|
5
5
|
|
6
|
-
|
6
|
+
require File.dirname(__FILE__) + '/../../lib/puppettest'
|
7
7
|
|
8
8
|
require 'puppettest'
|
9
9
|
require 'puppettest/parsertesting'
|
10
10
|
|
11
|
-
class
|
11
|
+
class TestASTResourceReference < Test::Unit::TestCase
|
12
12
|
include PuppetTest
|
13
13
|
include PuppetTest::ParserTesting
|
14
14
|
AST = Puppet::Parser::AST
|
15
15
|
|
16
16
|
def newref(type, title)
|
17
|
-
AST::
|
17
|
+
AST::ResourceReference.new(:type => type, :title => AST::String.new(:value => title))
|
18
18
|
end
|
19
19
|
|
20
20
|
def setup
|
21
21
|
super
|
22
|
-
@
|
23
|
-
@
|
22
|
+
@scope = mkscope
|
23
|
+
@parser = @scope.compile.parser
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_evaluate
|
27
|
-
@
|
28
|
-
@
|
29
|
-
[%w{
|
27
|
+
@parser.newdefine "one::two"
|
28
|
+
@parser.newdefine "one-two"
|
29
|
+
[%w{File /tmp/yay}, %w{One::Two three}, %w{One-two three}].each do |type, title|
|
30
30
|
ref = newref(type, title)
|
31
31
|
|
32
32
|
evaled = nil
|
@@ -39,29 +39,41 @@ class TestASTResourceRef < Test::Unit::TestCase
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
def test_finding_classes_for_reference
|
43
|
+
@parser.newclass "one"
|
44
|
+
ref = newref("Class", "one")
|
45
|
+
evaled = nil
|
46
|
+
assert_nothing_raised("Could not evaluate resource ref") do
|
47
|
+
evaled = ref.evaluate(:scope => @scope)
|
48
|
+
end
|
49
|
+
|
50
|
+
assert_equal("Class", evaled.type, "Did not set type to 'class'")
|
51
|
+
assert_equal("one", evaled.title, "Did not look up class corectly")
|
52
|
+
end
|
53
|
+
|
42
54
|
# Related to #706, make sure resource references correctly translate to qualified types.
|
43
55
|
def test_scoped_references
|
44
|
-
@
|
45
|
-
@
|
46
|
-
@
|
47
|
-
twoscope = @scope.newscope(:
|
56
|
+
@parser.newdefine "one"
|
57
|
+
@parser.newdefine "one::two"
|
58
|
+
@parser.newdefine "three"
|
59
|
+
twoscope = @scope.newscope(:namespace => "one")
|
48
60
|
assert(twoscope.finddefine("two"), "Could not find 'two' definition")
|
49
61
|
title = "title"
|
50
62
|
|
51
63
|
# First try a qualified type
|
52
|
-
assert_equal("
|
64
|
+
assert_equal("One::Two", newref("two", title).evaluate(:scope => twoscope).type,
|
53
65
|
"Defined type was not made fully qualified")
|
54
66
|
|
55
67
|
# Then try a type that does not need to be qualified
|
56
|
-
assert_equal("
|
68
|
+
assert_equal("One", newref("one", title).evaluate(:scope => twoscope).type,
|
57
69
|
"Unqualified defined type was not handled correctly")
|
58
70
|
|
59
71
|
# Then an unqualified type from within the one namespace
|
60
|
-
assert_equal("
|
72
|
+
assert_equal("Three", newref("three", title).evaluate(:scope => twoscope).type,
|
61
73
|
"Defined type was not made fully qualified")
|
62
74
|
|
63
75
|
# Then a builtin type
|
64
|
-
assert_equal("
|
76
|
+
assert_equal("File", newref("file", title).evaluate(:scope => twoscope).type,
|
65
77
|
"Builtin type was not handled correctly")
|
66
78
|
|
67
79
|
# Now try a type that does not exist, which should throw an error.
|
@@ -70,8 +82,8 @@ class TestASTResourceRef < Test::Unit::TestCase
|
|
70
82
|
end
|
71
83
|
|
72
84
|
# Now run the same tests, but with the classes
|
73
|
-
@
|
74
|
-
@
|
85
|
+
@parser.newclass "four"
|
86
|
+
@parser.newclass "one::five"
|
75
87
|
|
76
88
|
# First try an unqualified type
|
77
89
|
assert_equal("four", newref("class", "four").evaluate(:scope => twoscope).title,
|
@@ -91,5 +103,3 @@ class TestASTResourceRef < Test::Unit::TestCase
|
|
91
103
|
end
|
92
104
|
end
|
93
105
|
end
|
94
|
-
|
95
|
-
# $Id: resourceref.rb 2715 2007-07-19 19:23:56Z luke $
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# Created by Luke A. Kanies on 2006-12-22.
|
4
4
|
# Copyright (c) 2006. All rights reserved.
|
5
5
|
|
6
|
-
|
6
|
+
require File.dirname(__FILE__) + '/../../lib/puppettest'
|
7
7
|
|
8
8
|
require 'puppettest'
|
9
9
|
require 'puppettest/parsertesting'
|
@@ -59,4 +59,3 @@ class TestSelector < Test::Unit::TestCase
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
-
# $Id: selector.rb 2142 2007-02-01 00:58:11Z luke $
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# Created by Luke A. Kanies on 2007-0419.
|
4
4
|
# Copyright (c) 2006. All rights reserved.
|
5
5
|
|
6
|
-
|
6
|
+
require File.dirname(__FILE__) + '/../../lib/puppettest'
|
7
7
|
|
8
8
|
require 'puppettest'
|
9
9
|
require 'puppettest/parsertesting'
|
@@ -28,4 +28,3 @@ class TestVariable < Test::Unit::TestCase
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
# $Id: variable.rb 2393 2007-04-19 18:34:03Z luke $
|
@@ -0,0 +1,569 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../lib/puppettest'
|
4
|
+
|
5
|
+
require 'mocha'
|
6
|
+
require 'puppettest'
|
7
|
+
require 'puppettest/parsertesting'
|
8
|
+
require 'puppet/parser/compile'
|
9
|
+
|
10
|
+
# Test our compile object.
|
11
|
+
class TestCompile < Test::Unit::TestCase
|
12
|
+
include PuppetTest
|
13
|
+
include PuppetTest::ParserTesting
|
14
|
+
|
15
|
+
Compile = Puppet::Parser::Compile
|
16
|
+
Scope = Puppet::Parser::Scope
|
17
|
+
Node = Puppet::Network::Handler.handler(:node)
|
18
|
+
SimpleNode = Puppet::Node
|
19
|
+
|
20
|
+
def mknode(name = "foo")
|
21
|
+
@node = SimpleNode.new(name)
|
22
|
+
end
|
23
|
+
|
24
|
+
def mkparser
|
25
|
+
# This should mock an interpreter
|
26
|
+
@parser = stub 'parser', :version => "1.0", :nodes => {}
|
27
|
+
end
|
28
|
+
|
29
|
+
def mkcompile(options = {})
|
30
|
+
if node = options[:node]
|
31
|
+
options.delete(:node)
|
32
|
+
else
|
33
|
+
node = mknode
|
34
|
+
end
|
35
|
+
@compile = Compile.new(node, mkparser, options)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_initialize
|
39
|
+
compile = nil
|
40
|
+
node = stub 'node', :name => "foo"
|
41
|
+
parser = stub 'parser', :version => "1.0", :nodes => {}
|
42
|
+
assert_nothing_raised("Could not init compile with all required options") do
|
43
|
+
compile = Compile.new(node, parser)
|
44
|
+
end
|
45
|
+
|
46
|
+
assert_equal(node, compile.node, "Did not set node correctly")
|
47
|
+
assert_equal(parser, compile.parser, "Did not set parser correctly")
|
48
|
+
|
49
|
+
# We're not testing here whether we call initvars, because it's too difficult to
|
50
|
+
# mock.
|
51
|
+
|
52
|
+
# Now try it with some options
|
53
|
+
assert_nothing_raised("Could not init compile with extra options") do
|
54
|
+
compile = Compile.new(node, parser)
|
55
|
+
end
|
56
|
+
|
57
|
+
assert_equal(false, compile.ast_nodes?, "Did not set ast_nodes? correctly")
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_initvars
|
61
|
+
compile = mkcompile
|
62
|
+
[:class_scopes, :resource_table, :exported_resources, :resource_overrides].each do |table|
|
63
|
+
assert_instance_of(Hash, compile.send(:instance_variable_get, "@#{table}"), "Did not set %s table correctly" % table)
|
64
|
+
end
|
65
|
+
assert_instance_of(Scope, compile.topscope, "Did not create a topscope")
|
66
|
+
graph = compile.instance_variable_get("@scope_graph")
|
67
|
+
assert_instance_of(GRATR::Digraph, graph, "Did not create scope graph")
|
68
|
+
assert(graph.vertex?(compile.topscope), "Did not add top scope as a vertex in the graph")
|
69
|
+
end
|
70
|
+
|
71
|
+
# Make sure we store and can retrieve references to classes and their scopes.
|
72
|
+
def test_class_set_and_class_scope
|
73
|
+
klass = mock 'ast_class'
|
74
|
+
klass.expects(:classname).returns("myname")
|
75
|
+
|
76
|
+
compile = mkcompile
|
77
|
+
compile.catalog.expects(:tag).with("myname")
|
78
|
+
|
79
|
+
assert_nothing_raised("Could not set class") do
|
80
|
+
compile.class_set "myname", "myscope"
|
81
|
+
end
|
82
|
+
# First try to retrieve it by name.
|
83
|
+
assert_equal("myscope", compile.class_scope("myname"), "Could not retrieve class scope by name")
|
84
|
+
|
85
|
+
# Then by object
|
86
|
+
assert_equal("myscope", compile.class_scope(klass), "Could not retrieve class scope by object")
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_classlist
|
90
|
+
compile = mkcompile
|
91
|
+
|
92
|
+
compile.class_set "", "empty"
|
93
|
+
compile.class_set "one", "yep"
|
94
|
+
compile.class_set "two", "nope"
|
95
|
+
|
96
|
+
# Make sure our class list is correct
|
97
|
+
assert_equal(%w{one two}.sort, compile.classlist.sort, "Did not get correct class list")
|
98
|
+
end
|
99
|
+
|
100
|
+
# Make sure collections get added to our internal array
|
101
|
+
def test_add_collection
|
102
|
+
compile = mkcompile
|
103
|
+
assert_nothing_raised("Could not add collection") do
|
104
|
+
compile.add_collection "nope"
|
105
|
+
end
|
106
|
+
assert_equal(%w{nope}, compile.instance_variable_get("@collections"), "Did not add collection")
|
107
|
+
end
|
108
|
+
|
109
|
+
# Make sure we create a graph of scopes.
|
110
|
+
def test_newscope
|
111
|
+
compile = mkcompile
|
112
|
+
graph = compile.instance_variable_get("@scope_graph")
|
113
|
+
assert_instance_of(Scope, compile.topscope, "Did not create top scope")
|
114
|
+
assert_instance_of(GRATR::Digraph, graph, "Did not create graph")
|
115
|
+
|
116
|
+
assert(graph.vertex?(compile.topscope), "The top scope is not a vertex in the graph")
|
117
|
+
|
118
|
+
# Now that we've got the top scope, create a new, subscope
|
119
|
+
subscope = nil
|
120
|
+
assert_nothing_raised("Could not create subscope") do
|
121
|
+
subscope = compile.newscope(compile.topscope)
|
122
|
+
end
|
123
|
+
assert_instance_of(Scope, subscope, "Did not create subscope")
|
124
|
+
assert(graph.edge?(compile.topscope, subscope), "An edge between top scope and subscope was not added")
|
125
|
+
|
126
|
+
# Make sure a scope can find its parent.
|
127
|
+
assert(compile.parent(subscope), "Could not look up parent scope on compile")
|
128
|
+
assert_equal(compile.topscope.object_id, compile.parent(subscope).object_id, "Did not get correct parent scope from compile")
|
129
|
+
assert_equal(compile.topscope.object_id, subscope.parent.object_id, "Scope did not correctly retrieve its parent scope")
|
130
|
+
|
131
|
+
# Now create another, this time specifying options
|
132
|
+
another = nil
|
133
|
+
assert_nothing_raised("Could not create subscope") do
|
134
|
+
another = compile.newscope(subscope, :level => 5)
|
135
|
+
end
|
136
|
+
assert_equal(5, another.level, "did not set scope option correctly")
|
137
|
+
assert_instance_of(Scope, another, "Did not create second subscope")
|
138
|
+
assert(graph.edge?(subscope, another), "An edge between parent scope and second subscope was not added")
|
139
|
+
|
140
|
+
# Make sure it can find its parent.
|
141
|
+
assert(compile.parent(another), "Could not look up parent scope of second subscope on compile")
|
142
|
+
assert_equal(subscope.object_id, compile.parent(another).object_id, "Did not get correct parent scope of second subscope from compile")
|
143
|
+
assert_equal(subscope.object_id, another.parent.object_id, "Second subscope did not correctly retrieve its parent scope")
|
144
|
+
|
145
|
+
# And make sure both scopes show up in the right order in the search path
|
146
|
+
assert_equal([another.object_id, subscope.object_id, compile.topscope.object_id], another.scope_path.collect { |p| p.object_id },
|
147
|
+
"Did not get correct scope path")
|
148
|
+
end
|
149
|
+
|
150
|
+
# The heart of the action.
|
151
|
+
def test_compile
|
152
|
+
compile = mkcompile
|
153
|
+
[:set_node_parameters, :evaluate_main, :evaluate_ast_node, :evaluate_node_classes, :evaluate_generators, :fail_on_unevaluated, :finish].each do |method|
|
154
|
+
compile.expects(method)
|
155
|
+
end
|
156
|
+
assert_instance_of(Puppet::Node::Catalog, compile.compile, "Did not return the catalog")
|
157
|
+
end
|
158
|
+
|
159
|
+
# Test setting the node's parameters into the top scope.
|
160
|
+
def test_set_node_parameters
|
161
|
+
compile = mkcompile
|
162
|
+
@node.parameters = {"a" => "b", "c" => "d"}
|
163
|
+
scope = compile.topscope
|
164
|
+
@node.parameters.each do |param, value|
|
165
|
+
scope.expects(:setvar).with(param, value)
|
166
|
+
end
|
167
|
+
|
168
|
+
assert_nothing_raised("Could not call 'set_node_parameters'") do
|
169
|
+
compile.send(:set_node_parameters)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
# Test that we can evaluate the main class, which is the one named "" in namespace
|
174
|
+
# "".
|
175
|
+
def test_evaluate_main
|
176
|
+
compile = mkcompile
|
177
|
+
main_class = mock 'main_class'
|
178
|
+
compile.topscope.expects(:source=).with(main_class)
|
179
|
+
@parser.expects(:findclass).with("", "").returns(main_class)
|
180
|
+
|
181
|
+
main_resource = mock 'main resource'
|
182
|
+
Puppet::Parser::Resource.expects(:new).with { |args| args[:title] == :main }.returns(main_resource)
|
183
|
+
|
184
|
+
main_resource.expects(:evaluate)
|
185
|
+
|
186
|
+
assert_nothing_raised("Could not call evaluate_main") do
|
187
|
+
compile.send(:evaluate_main)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
def test_evaluate_node_classes
|
192
|
+
compile = mkcompile
|
193
|
+
@node.classes = %w{one two three four}
|
194
|
+
compile.expects(:evaluate_classes).with(%w{one two three four}, compile.topscope)
|
195
|
+
assert_nothing_raised("could not call evaluate_node_classes") do
|
196
|
+
compile.send(:evaluate_node_classes)
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
def test_evaluate_collections
|
201
|
+
compile = mkcompile
|
202
|
+
|
203
|
+
colls = []
|
204
|
+
|
205
|
+
# Make sure we return false when there's nothing there.
|
206
|
+
assert(! compile.send(:evaluate_collections), "Returned true when there were no collections")
|
207
|
+
|
208
|
+
# And when the collections fail to evaluate.
|
209
|
+
colls << mock("coll1-false")
|
210
|
+
colls << mock("coll2-false")
|
211
|
+
colls.each { |c| c.expects(:evaluate).returns(false) }
|
212
|
+
|
213
|
+
compile.instance_variable_set("@collections", colls)
|
214
|
+
assert(! compile.send(:evaluate_collections), "Returned true when collections both evaluated nothing")
|
215
|
+
|
216
|
+
# Now have one of the colls evaluate
|
217
|
+
colls.clear
|
218
|
+
colls << mock("coll1-one-true")
|
219
|
+
colls << mock("coll2-one-true")
|
220
|
+
colls[0].expects(:evaluate).returns(true)
|
221
|
+
colls[1].expects(:evaluate).returns(false)
|
222
|
+
assert(compile.send(:evaluate_collections), "Did not return true when one collection evaluated true")
|
223
|
+
|
224
|
+
# And have them both eval true
|
225
|
+
colls.clear
|
226
|
+
colls << mock("coll1-both-true")
|
227
|
+
colls << mock("coll2-both-true")
|
228
|
+
colls[0].expects(:evaluate).returns(true)
|
229
|
+
colls[1].expects(:evaluate).returns(true)
|
230
|
+
assert(compile.send(:evaluate_collections), "Did not return true when both collections evaluated true")
|
231
|
+
end
|
232
|
+
|
233
|
+
def test_unevaluated_resources
|
234
|
+
compile = mkcompile
|
235
|
+
resources = {}
|
236
|
+
compile.instance_variable_set("@resource_table", resources)
|
237
|
+
|
238
|
+
# First test it when the table is empty
|
239
|
+
assert_nil(compile.send(:unevaluated_resources), "Somehow found unevaluated resources in an empty table")
|
240
|
+
|
241
|
+
# Then add a builtin resources
|
242
|
+
resources["one"] = mock("builtin only")
|
243
|
+
resources["one"].expects(:builtin?).returns(true)
|
244
|
+
assert_nil(compile.send(:unevaluated_resources), "Considered a builtin resource unevaluated")
|
245
|
+
|
246
|
+
# And do both builtin and non-builtin but already evaluated
|
247
|
+
resources.clear
|
248
|
+
resources["one"] = mock("builtin (with eval)")
|
249
|
+
resources["one"].expects(:builtin?).returns(true)
|
250
|
+
resources["two"] = mock("evaled (with builtin)")
|
251
|
+
resources["two"].expects(:builtin?).returns(false)
|
252
|
+
resources["two"].expects(:evaluated?).returns(true)
|
253
|
+
assert_nil(compile.send(:unevaluated_resources), "Considered either a builtin or evaluated resource unevaluated")
|
254
|
+
|
255
|
+
# Now a single unevaluated resource.
|
256
|
+
resources.clear
|
257
|
+
resources["one"] = mock("unevaluated")
|
258
|
+
resources["one"].expects(:builtin?).returns(false)
|
259
|
+
resources["one"].expects(:evaluated?).returns(false)
|
260
|
+
assert_equal([resources["one"]], compile.send(:unevaluated_resources), "Did not find unevaluated resource")
|
261
|
+
|
262
|
+
# With two uneval'ed resources, and an eval'ed one thrown in
|
263
|
+
resources.clear
|
264
|
+
resources["one"] = mock("unevaluated one")
|
265
|
+
resources["one"].expects(:builtin?).returns(false)
|
266
|
+
resources["one"].expects(:evaluated?).returns(false)
|
267
|
+
resources["two"] = mock("unevaluated two")
|
268
|
+
resources["two"].expects(:builtin?).returns(false)
|
269
|
+
resources["two"].expects(:evaluated?).returns(false)
|
270
|
+
resources["three"] = mock("evaluated")
|
271
|
+
resources["three"].expects(:builtin?).returns(false)
|
272
|
+
resources["three"].expects(:evaluated?).returns(true)
|
273
|
+
|
274
|
+
result = compile.send(:unevaluated_resources)
|
275
|
+
%w{one two}.each do |name|
|
276
|
+
assert(result.include?(resources[name]), "Did not find %s in the unevaluated list" % name)
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
def test_evaluate_definitions
|
281
|
+
# First try the case where there's nothing to return
|
282
|
+
compile = mkcompile
|
283
|
+
compile.expects(:unevaluated_resources).returns(nil)
|
284
|
+
|
285
|
+
assert_nothing_raised("Could not test for unevaluated resources") do
|
286
|
+
assert(! compile.send(:evaluate_definitions), "evaluate_definitions returned true when no resources were evaluated")
|
287
|
+
end
|
288
|
+
|
289
|
+
# Now try it with resources left to evaluate
|
290
|
+
resources = []
|
291
|
+
res1 = mock("resource1")
|
292
|
+
res1.expects(:evaluate)
|
293
|
+
res2 = mock("resource2")
|
294
|
+
res2.expects(:evaluate)
|
295
|
+
resources << res1 << res2
|
296
|
+
compile = mkcompile
|
297
|
+
compile.expects(:unevaluated_resources).returns(resources)
|
298
|
+
|
299
|
+
assert_nothing_raised("Could not test for unevaluated resources") do
|
300
|
+
assert(compile.send(:evaluate_definitions), "evaluate_definitions returned false when resources were evaluated")
|
301
|
+
end
|
302
|
+
end
|
303
|
+
|
304
|
+
def test_evaluate_generators
|
305
|
+
# First try the case where we have nothing to do
|
306
|
+
compile = mkcompile
|
307
|
+
compile.expects(:evaluate_definitions).returns(false)
|
308
|
+
compile.expects(:evaluate_collections).returns(false)
|
309
|
+
|
310
|
+
assert_nothing_raised("Could not call :eval_iterate") do
|
311
|
+
compile.send(:evaluate_generators)
|
312
|
+
end
|
313
|
+
|
314
|
+
# FIXME I could not get this test to work, but the code is short
|
315
|
+
# enough that I'm ok with it.
|
316
|
+
# It's important that collections are evaluated before definitions,
|
317
|
+
# so make sure that's the case by verifying that collections get tested
|
318
|
+
# twice but definitions only once.
|
319
|
+
#compile = mkcompile
|
320
|
+
#compile.expects(:evaluate_collections).returns(true).returns(false)
|
321
|
+
#compile.expects(:evaluate_definitions).returns(false)
|
322
|
+
#compile.send(:eval_iterate)
|
323
|
+
end
|
324
|
+
|
325
|
+
def test_store
|
326
|
+
compile = mkcompile
|
327
|
+
Puppet.features.expects(:rails?).returns(true)
|
328
|
+
Puppet::Rails.expects(:connect)
|
329
|
+
|
330
|
+
node = mock 'node'
|
331
|
+
resource_table = mock 'resources'
|
332
|
+
resource_table.expects(:values).returns(:resources)
|
333
|
+
compile.instance_variable_set("@node", node)
|
334
|
+
compile.instance_variable_set("@resource_table", resource_table)
|
335
|
+
compile.expects(:store_to_active_record).with(node, :resources)
|
336
|
+
compile.send(:store)
|
337
|
+
end
|
338
|
+
|
339
|
+
def test_store_to_active_record
|
340
|
+
compile = mkcompile
|
341
|
+
node = mock 'node'
|
342
|
+
node.expects(:name).returns("myname")
|
343
|
+
Puppet::Rails::Host.stubs(:transaction).yields
|
344
|
+
Puppet::Rails::Host.expects(:store).with(node, :resources)
|
345
|
+
compile.send(:store_to_active_record, node, :resources)
|
346
|
+
end
|
347
|
+
|
348
|
+
# Make sure that 'finish' gets called on all of our resources.
|
349
|
+
def test_finish
|
350
|
+
compile = mkcompile
|
351
|
+
table = compile.instance_variable_get("@resource_table")
|
352
|
+
|
353
|
+
# Add a resource that does respond to :finish
|
354
|
+
yep = mock("finisher")
|
355
|
+
yep.expects(:respond_to?).with(:finish).returns(true)
|
356
|
+
yep.expects(:finish)
|
357
|
+
table["yep"] = yep
|
358
|
+
|
359
|
+
# And one that does not
|
360
|
+
dnf = mock("dnf")
|
361
|
+
dnf.expects(:respond_to?).with(:finish).returns(false)
|
362
|
+
table["dnf"] = dnf
|
363
|
+
|
364
|
+
compile.send(:finish)
|
365
|
+
end
|
366
|
+
|
367
|
+
def test_verify_uniqueness
|
368
|
+
compile = mkcompile
|
369
|
+
|
370
|
+
resources = compile.instance_variable_get("@resource_table")
|
371
|
+
resource = mock("noconflict")
|
372
|
+
resource.expects(:ref).returns("File[yay]")
|
373
|
+
assert_nothing_raised("Raised an exception when there should have been no conflict") do
|
374
|
+
compile.send(:verify_uniqueness, resource)
|
375
|
+
end
|
376
|
+
|
377
|
+
# Now try the case where our type is isomorphic
|
378
|
+
resources["thing"] = true
|
379
|
+
|
380
|
+
isoconflict = mock("isoconflict")
|
381
|
+
isoconflict.expects(:ref).returns("thing")
|
382
|
+
isoconflict.expects(:type).returns("testtype")
|
383
|
+
faketype = mock("faketype")
|
384
|
+
faketype.expects(:isomorphic?).returns(false)
|
385
|
+
faketype.expects(:name).returns("whatever")
|
386
|
+
Puppet::Type.expects(:type).with("testtype").returns(faketype)
|
387
|
+
assert_nothing_raised("Raised an exception when was a conflict in non-isomorphic types") do
|
388
|
+
compile.send(:verify_uniqueness, isoconflict)
|
389
|
+
end
|
390
|
+
|
391
|
+
# Now test for when we actually have an exception
|
392
|
+
initial = mock("initial")
|
393
|
+
resources["thing"] = initial
|
394
|
+
initial.expects(:file).returns(false)
|
395
|
+
|
396
|
+
conflict = mock("conflict")
|
397
|
+
conflict.expects(:ref).returns("thing").times(2)
|
398
|
+
conflict.expects(:type).returns("conflict")
|
399
|
+
conflict.expects(:file).returns(false)
|
400
|
+
conflict.expects(:line).returns(false)
|
401
|
+
|
402
|
+
faketype = mock("faketype")
|
403
|
+
faketype.expects(:isomorphic?).returns(true)
|
404
|
+
Puppet::Type.expects(:type).with("conflict").returns(faketype)
|
405
|
+
assert_raise(Puppet::ParseError, "Did not fail when two isomorphic resources conflicted") do
|
406
|
+
compile.send(:verify_uniqueness, conflict)
|
407
|
+
end
|
408
|
+
end
|
409
|
+
|
410
|
+
def test_store_resource
|
411
|
+
# Run once when there's no conflict
|
412
|
+
compile = mkcompile
|
413
|
+
table = compile.instance_variable_get("@resource_table")
|
414
|
+
resource = mock("resource")
|
415
|
+
resource.expects(:ref).returns("yay")
|
416
|
+
compile.expects(:verify_uniqueness).with(resource)
|
417
|
+
scope = stub("scope", :resource => mock('resource'))
|
418
|
+
|
419
|
+
compile.catalog.expects(:add_edge!).with(scope.resource, resource)
|
420
|
+
|
421
|
+
assert_nothing_raised("Could not store resource") do
|
422
|
+
compile.store_resource(scope, resource)
|
423
|
+
end
|
424
|
+
assert_equal(resource, table["yay"], "Did not store resource in table")
|
425
|
+
|
426
|
+
# Now for conflicts
|
427
|
+
compile = mkcompile
|
428
|
+
table = compile.instance_variable_get("@resource_table")
|
429
|
+
resource = mock("resource")
|
430
|
+
compile.expects(:verify_uniqueness).with(resource).raises(ArgumentError)
|
431
|
+
|
432
|
+
assert_raise(ArgumentError, "Did not raise uniqueness exception") do
|
433
|
+
compile.store_resource(scope, resource)
|
434
|
+
end
|
435
|
+
assert(table.empty?, "Conflicting resource was stored in table")
|
436
|
+
end
|
437
|
+
|
438
|
+
def test_fail_on_unevaluated
|
439
|
+
compile = mkcompile
|
440
|
+
compile.expects(:fail_on_unevaluated_overrides)
|
441
|
+
compile.expects(:fail_on_unevaluated_resource_collections)
|
442
|
+
compile.send :fail_on_unevaluated
|
443
|
+
end
|
444
|
+
|
445
|
+
def test_store_override
|
446
|
+
# First test the case when the resource is not present.
|
447
|
+
compile = mkcompile
|
448
|
+
overrides = compile.instance_variable_get("@resource_overrides")
|
449
|
+
override = Object.new
|
450
|
+
override.expects(:ref).returns(:myref).times(2)
|
451
|
+
override.expects(:override=).with(true)
|
452
|
+
|
453
|
+
assert_nothing_raised("Could not call store_override") do
|
454
|
+
compile.store_override(override)
|
455
|
+
end
|
456
|
+
assert_instance_of(Array, overrides[:myref], "Overrides table is not a hash of arrays")
|
457
|
+
assert_equal(override, overrides[:myref][0], "Did not store override in appropriately named array")
|
458
|
+
|
459
|
+
# And when the resource already exists.
|
460
|
+
resource = mock 'resource'
|
461
|
+
resources = compile.instance_variable_get("@resource_table")
|
462
|
+
resources[:resref] = resource
|
463
|
+
|
464
|
+
override = mock 'override'
|
465
|
+
resource.expects(:merge).with(override)
|
466
|
+
override.expects(:override=).with(true)
|
467
|
+
override.expects(:ref).returns(:resref)
|
468
|
+
assert_nothing_raised("Could not call store_override when the resource already exists.") do
|
469
|
+
compile.store_override(override)
|
470
|
+
end
|
471
|
+
end
|
472
|
+
|
473
|
+
def test_resource_overrides
|
474
|
+
compile = mkcompile
|
475
|
+
overrides = compile.instance_variable_get("@resource_overrides")
|
476
|
+
overrides[:test] = :yay
|
477
|
+
resource = mock 'resource'
|
478
|
+
resource.expects(:ref).returns(:test)
|
479
|
+
|
480
|
+
assert_equal(:yay, compile.resource_overrides(resource), "Did not return overrides from table")
|
481
|
+
end
|
482
|
+
|
483
|
+
def test_fail_on_unevaluated_resource_collections
|
484
|
+
compile = mkcompile
|
485
|
+
collections = compile.instance_variable_get("@collections")
|
486
|
+
|
487
|
+
# Make sure we're fine when the list is empty
|
488
|
+
assert_nothing_raised("Failed when no collections were present") do
|
489
|
+
compile.send :fail_on_unevaluated_resource_collections
|
490
|
+
end
|
491
|
+
|
492
|
+
# And that we're fine when we've got collections but with no resources
|
493
|
+
collections << mock('coll')
|
494
|
+
collections[0].expects(:resources).returns(nil)
|
495
|
+
assert_nothing_raised("Failed when no resource collections were present") do
|
496
|
+
compile.send :fail_on_unevaluated_resource_collections
|
497
|
+
end
|
498
|
+
|
499
|
+
# But that we do fail when we've got resource collections left.
|
500
|
+
collections.clear
|
501
|
+
|
502
|
+
# return both an array and a string, because that's tested internally
|
503
|
+
collections << mock('coll returns one')
|
504
|
+
collections[0].expects(:resources).returns(:something)
|
505
|
+
|
506
|
+
collections << mock('coll returns many')
|
507
|
+
collections[1].expects(:resources).returns([:one, :two])
|
508
|
+
|
509
|
+
assert_raise(Puppet::ParseError, "Did not fail on unevaluated resource collections") do
|
510
|
+
compile.send :fail_on_unevaluated_resource_collections
|
511
|
+
end
|
512
|
+
end
|
513
|
+
|
514
|
+
def test_fail_on_unevaluated_overrides
|
515
|
+
compile = mkcompile
|
516
|
+
overrides = compile.instance_variable_get("@resource_overrides")
|
517
|
+
|
518
|
+
# Make sure we're fine when the list is empty
|
519
|
+
assert_nothing_raised("Failed when no collections were present") do
|
520
|
+
compile.send :fail_on_unevaluated_overrides
|
521
|
+
end
|
522
|
+
|
523
|
+
# But that we fail if there are any overrides left in the table.
|
524
|
+
overrides[:yay] = []
|
525
|
+
overrides[:foo] = []
|
526
|
+
overrides[:bar] = [mock("override")]
|
527
|
+
overrides[:bar][0].expects(:ref).returns("yay")
|
528
|
+
assert_raise(Puppet::ParseError, "Failed to fail when overrides remain") do
|
529
|
+
compile.send :fail_on_unevaluated_overrides
|
530
|
+
end
|
531
|
+
end
|
532
|
+
|
533
|
+
def test_find_resource
|
534
|
+
compile = mkcompile
|
535
|
+
resources = compile.instance_variable_get("@resource_table")
|
536
|
+
|
537
|
+
assert_nothing_raised("Could not call findresource when the resource table was empty") do
|
538
|
+
assert_nil(compile.findresource("yay", "foo"), "Returned a non-existent resource")
|
539
|
+
assert_nil(compile.findresource("yay[foo]"), "Returned a non-existent resource")
|
540
|
+
end
|
541
|
+
|
542
|
+
resources["Foo[bar]"] = :yay
|
543
|
+
assert_nothing_raised("Could not call findresource when the resource table was not empty") do
|
544
|
+
assert_equal(:yay, compile.findresource("foo", "bar"), "Returned a non-existent resource")
|
545
|
+
assert_equal(:yay, compile.findresource("Foo[bar]"), "Returned a non-existent resource")
|
546
|
+
end
|
547
|
+
end
|
548
|
+
|
549
|
+
# #620 - Nodes and classes should conflict, else classes don't get evaluated
|
550
|
+
def test_nodes_and_classes_name_conflict
|
551
|
+
# Test node then class
|
552
|
+
compile = mkcompile
|
553
|
+
node = stub :nodescope? => true
|
554
|
+
klass = stub :nodescope? => false
|
555
|
+
compile.class_set("one", node)
|
556
|
+
assert_raise(Puppet::ParseError, "Did not fail when replacing node with class") do
|
557
|
+
compile.class_set("one", klass)
|
558
|
+
end
|
559
|
+
|
560
|
+
# and class then node
|
561
|
+
compile = mkcompile
|
562
|
+
node = stub :nodescope? => true
|
563
|
+
klass = stub :nodescope? => false
|
564
|
+
compile.class_set("two", klass)
|
565
|
+
assert_raise(Puppet::ParseError, "Did not fail when replacing node with class") do
|
566
|
+
compile.class_set("two", node)
|
567
|
+
end
|
568
|
+
end
|
569
|
+
end
|