puppet 2.6.18 → 2.7.1
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 +733 -187
- data/LICENSE +13 -13
- data/README.md +5 -9
- data/Rakefile +1 -1
- data/conf/auth.conf +8 -3
- data/conf/redhat/puppet.spec +21 -110
- data/conf/solaris/pkginfo +3 -4
- data/conf/suse/puppet.spec +1 -1
- data/ext/cert_inspector +140 -0
- data/ext/nagios/naggen +12 -5
- data/ext/puppet-test +11 -5
- data/ext/vim/README +1 -2
- data/ext/yaml_nodes.rb +11 -5
- data/install.rb +1 -54
- data/lib/puppet.rb +6 -10
- data/lib/puppet/application.rb +23 -32
- data/lib/puppet/application/agent.rb +228 -7
- data/lib/puppet/application/apply.rb +108 -36
- data/lib/puppet/application/catalog.rb +4 -0
- data/lib/puppet/application/cert.rb +128 -17
- data/lib/puppet/application/certificate.rb +18 -0
- data/lib/puppet/application/certificate_request.rb +4 -0
- data/lib/puppet/application/certificate_revocation_list.rb +4 -0
- data/lib/puppet/application/config.rb +4 -0
- data/lib/puppet/application/describe.rb +53 -0
- data/lib/puppet/application/device.rb +255 -0
- data/lib/puppet/application/doc.rb +92 -6
- data/lib/puppet/application/face_base.rb +246 -0
- data/lib/puppet/application/facts.rb +4 -0
- data/lib/puppet/application/file.rb +4 -0
- data/lib/puppet/application/filebucket.rb +102 -0
- data/lib/puppet/application/help.rb +4 -0
- data/lib/puppet/application/indirection_base.rb +4 -0
- data/lib/puppet/application/inspect.rb +21 -23
- data/lib/puppet/application/key.rb +4 -0
- data/lib/puppet/application/kick.rb +131 -4
- data/lib/puppet/application/man.rb +4 -0
- data/lib/puppet/application/master.rb +108 -40
- data/lib/puppet/application/node.rb +4 -0
- data/lib/puppet/application/parser.rb +5 -0
- data/lib/puppet/application/plugin.rb +3 -0
- data/lib/puppet/application/queue.rb +75 -13
- data/lib/puppet/application/report.rb +4 -0
- data/lib/puppet/application/resource.rb +115 -23
- data/lib/puppet/application/resource_type.rb +4 -0
- data/lib/puppet/application/secret_agent.rb +6 -0
- data/lib/puppet/application/status.rb +4 -0
- data/lib/puppet/configurer.rb +57 -61
- data/lib/puppet/configurer/fact_handler.rb +1 -6
- data/lib/puppet/daemon.rb +2 -2
- data/lib/puppet/defaults.rb +30 -88
- data/lib/puppet/dsl/resource_type_api.rb +19 -31
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/face.rb +12 -0
- data/lib/puppet/face/catalog.rb +130 -0
- data/lib/puppet/face/catalog/select.rb +49 -0
- data/lib/puppet/face/certificate.rb +115 -0
- data/lib/puppet/face/certificate_request.rb +55 -0
- data/lib/puppet/face/certificate_revocation_list.rb +60 -0
- data/lib/puppet/face/config.rb +45 -0
- data/lib/puppet/face/facts.rb +81 -0
- data/lib/puppet/face/file.rb +47 -0
- data/lib/puppet/face/file/download.rb +54 -0
- data/lib/puppet/face/file/store.rb +21 -0
- data/lib/puppet/face/help.rb +131 -0
- data/lib/puppet/face/help/action.erb +53 -0
- data/lib/puppet/face/help/face.erb +79 -0
- data/lib/puppet/face/help/global.erb +19 -0
- data/lib/puppet/face/help/man.erb +136 -0
- data/lib/puppet/face/key.rb +15 -0
- data/lib/puppet/face/man.rb +93 -0
- data/lib/puppet/face/node.rb +43 -0
- data/lib/puppet/face/parser.rb +42 -0
- data/lib/puppet/face/plugin.rb +55 -0
- data/lib/puppet/face/report.rb +56 -0
- data/lib/puppet/face/resource.rb +53 -0
- data/lib/puppet/face/resource_type.rb +81 -0
- data/lib/puppet/face/secret_agent.rb +54 -0
- data/lib/puppet/face/status.rb +52 -0
- data/lib/puppet/feature/ssh.rb +4 -0
- data/lib/puppet/file_bucket/dipper.rb +3 -3
- data/lib/puppet/file_bucket/file.rb +6 -5
- data/lib/puppet/file_bucket/file/indirection_hooks.rb +9 -0
- data/lib/puppet/file_serving/configuration.rb +1 -2
- data/lib/puppet/file_serving/content.rb +2 -1
- data/lib/puppet/file_serving/{terminus_selector.rb → indirection_hooks.rb} +3 -2
- data/lib/puppet/file_serving/metadata.rb +2 -1
- data/lib/puppet/file_serving/mount/modules.rb +5 -4
- data/lib/puppet/indirector.rb +16 -43
- data/lib/puppet/indirector/catalog/active_record.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +5 -15
- data/lib/puppet/indirector/catalog/static_compiler.rb +137 -0
- data/lib/puppet/indirector/certificate_request/ca.rb +8 -0
- data/lib/puppet/indirector/certificate_status.rb +4 -0
- data/lib/puppet/indirector/certificate_status/file.rb +82 -0
- data/lib/puppet/indirector/certificate_status/rest.rb +10 -0
- data/lib/puppet/indirector/couch.rb +5 -3
- data/lib/puppet/indirector/exec.rb +3 -3
- data/lib/puppet/indirector/face.rb +127 -0
- data/lib/puppet/indirector/facts/network_device.rb +25 -0
- data/lib/puppet/indirector/file.rb +79 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +0 -4
- data/lib/puppet/indirector/indirection.rb +1 -2
- data/lib/puppet/indirector/inventory/yaml.rb +81 -0
- data/lib/puppet/indirector/report/processor.rb +0 -2
- data/lib/puppet/indirector/request.rb +0 -4
- data/lib/puppet/indirector/resource/ral.rb +0 -4
- data/lib/puppet/indirector/resource_type/parser.rb +19 -3
- data/lib/puppet/indirector/rest.rb +11 -5
- data/lib/puppet/indirector/run/local.rb +0 -4
- data/lib/puppet/indirector/ssl_file.rb +1 -5
- data/lib/puppet/indirector/terminus.rb +3 -26
- data/lib/puppet/indirector/yaml.rb +0 -5
- data/lib/puppet/interface.rb +156 -0
- data/lib/puppet/interface/action.rb +284 -0
- data/lib/puppet/interface/action_builder.rb +74 -0
- data/lib/puppet/interface/action_manager.rb +70 -0
- data/lib/puppet/interface/documentation.rb +230 -0
- data/lib/puppet/interface/face_collection.rb +137 -0
- data/lib/puppet/interface/option.rb +108 -0
- data/lib/puppet/interface/option_builder.rb +54 -0
- data/lib/puppet/interface/option_manager.rb +67 -0
- data/lib/puppet/metatype/manager.rb +20 -7
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/network/client.rb +179 -0
- data/lib/puppet/network/client/ca.rb +56 -0
- data/lib/puppet/network/client/file.rb +6 -0
- data/lib/puppet/network/client/proxy.rb +27 -0
- data/lib/puppet/network/client/report.rb +26 -0
- data/lib/puppet/network/client/runner.rb +10 -0
- data/lib/puppet/network/client/status.rb +4 -0
- data/lib/puppet/network/format.rb +1 -1
- data/lib/puppet/network/formats.rb +63 -0
- data/lib/puppet/network/handler/ca.rb +106 -16
- data/lib/puppet/network/handler/filebucket.rb +2 -4
- data/lib/puppet/network/handler/fileserver.rb +3 -2
- data/lib/puppet/network/handler/master.rb +5 -3
- data/lib/puppet/network/handler/report.rb +0 -2
- data/lib/puppet/network/handler/runner.rb +0 -2
- data/lib/puppet/network/handler/status.rb +0 -2
- data/lib/puppet/network/http/api/v1.rb +11 -3
- data/lib/puppet/network/http/handler.rb +26 -35
- data/lib/puppet/network/http/rack/rest.rb +2 -7
- data/lib/puppet/network/http/webrick.rb +1 -2
- data/lib/puppet/network/http_pool.rb +8 -17
- data/lib/puppet/network/http_server/mongrel.rb +1 -0
- data/lib/puppet/network/http_server/webrick.rb +155 -0
- data/lib/puppet/network/rest_authconfig.rb +4 -3
- data/lib/puppet/network/rest_authorization.rb +2 -2
- data/lib/puppet/network/rights.rb +4 -9
- data/lib/puppet/network/server.rb +1 -1
- data/lib/puppet/network/xmlrpc/client.rb +211 -0
- data/lib/puppet/node.rb +2 -1
- data/lib/puppet/node/environment.rb +30 -3
- data/lib/puppet/node/facts.rb +15 -15
- data/lib/puppet/node/inventory.rb +7 -0
- data/lib/puppet/parser/ast.rb +6 -2
- data/lib/puppet/parser/ast/astarray.rb +12 -23
- data/lib/puppet/parser/ast/caseopt.rb +12 -24
- data/lib/puppet/parser/ast/definition.rb +17 -0
- data/lib/puppet/parser/ast/hostclass.rb +29 -0
- data/lib/puppet/parser/ast/leaf.rb +2 -2
- data/lib/puppet/parser/ast/node.rb +20 -0
- data/lib/puppet/parser/ast/resource.rb +42 -50
- data/lib/puppet/parser/ast/resource_instance.rb +9 -0
- data/lib/puppet/parser/ast/resource_override.rb +2 -3
- data/lib/puppet/parser/ast/resource_reference.rb +1 -1
- data/lib/puppet/parser/ast/top_level_construct.rb +4 -0
- data/lib/puppet/parser/ast/vardef.rb +1 -1
- data/lib/puppet/parser/compiler.rb +16 -17
- data/lib/puppet/parser/functions/create_resources.rb +47 -0
- data/lib/puppet/parser/functions/extlookup.rb +2 -7
- data/lib/puppet/parser/functions/fqdn_rand.rb +2 -2
- data/lib/puppet/parser/functions/sha1.rb +1 -1
- data/lib/puppet/parser/grammar.ra +67 -144
- data/lib/puppet/parser/lexer.rb +1 -1
- data/lib/puppet/parser/parser.rb +1190 -1262
- data/lib/puppet/parser/parser_support.rb +48 -73
- data/lib/puppet/parser/resource.rb +2 -19
- data/lib/puppet/parser/scope.rb +33 -103
- data/lib/puppet/parser/templatewrapper.rb +21 -22
- data/lib/puppet/parser/type_loader.rb +60 -35
- data/lib/puppet/provider/aixobject.rb +393 -0
- data/lib/puppet/provider/augeas/augeas.rb +37 -15
- data/lib/puppet/provider/cisco.rb +9 -0
- data/lib/puppet/provider/cron/crontab.rb +1 -7
- data/lib/puppet/provider/exec/posix.rb +3 -6
- data/lib/puppet/provider/exec/shell.rb +2 -11
- data/lib/puppet/provider/file/posix.rb +1 -1
- data/lib/puppet/provider/file/win32.rb +1 -1
- data/lib/puppet/provider/group/aix.rb +141 -0
- data/lib/puppet/provider/group/directoryservice.rb +0 -14
- data/lib/puppet/provider/host/parsed.rb +23 -55
- data/lib/puppet/provider/interface/base.rb +0 -0
- data/lib/puppet/provider/interface/cisco.rb +27 -0
- data/lib/puppet/provider/mcx/mcxcontent.rb +57 -96
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/naginator.rb +1 -9
- data/lib/puppet/provider/nameservice/directoryservice.rb +41 -26
- data/lib/puppet/provider/network_device.rb +68 -0
- data/lib/puppet/provider/package/appdmg.rb +13 -13
- data/lib/puppet/provider/package/aptitude.rb +0 -1
- data/lib/puppet/provider/package/pip.rb +109 -0
- data/lib/puppet/provider/package/pkgdmg.rb +24 -32
- data/lib/puppet/provider/package/pkgutil.rb +175 -0
- data/lib/puppet/provider/package/yum.rb +8 -1
- data/lib/puppet/provider/service/daemontools.rb +1 -1
- data/lib/puppet/provider/service/launchd.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/upstart.rb +73 -0
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +9 -10
- data/lib/puppet/provider/user/aix.rb +353 -0
- data/lib/puppet/provider/user/directoryservice.rb +0 -14
- data/lib/puppet/provider/user/user_role_add.rb +17 -32
- data/lib/puppet/provider/vlan/cisco.rb +28 -0
- data/lib/puppet/provider/zfs/solaris.rb +1 -1
- data/lib/puppet/provider/zone/solaris.rb +3 -0
- data/lib/puppet/provider/zpool/solaris.rb +7 -5
- data/lib/puppet/rails.rb +1 -1
- data/lib/puppet/rails/benchmark.rb +1 -1
- data/lib/puppet/rails/fact_name.rb +1 -0
- data/lib/puppet/rails/host.rb +0 -7
- data/lib/puppet/reference/configuration.rb +26 -101
- data/lib/puppet/reports/store.rb +3 -7
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/catalog.rb +86 -36
- data/lib/puppet/resource/type.rb +10 -15
- data/lib/puppet/resource/type_collection.rb +55 -63
- data/lib/puppet/simple_graph.rb +370 -269
- data/lib/puppet/ssl/base.rb +0 -8
- data/lib/puppet/ssl/certificate.rb +0 -6
- data/lib/puppet/ssl/certificate_authority.rb +24 -109
- data/lib/puppet/ssl/certificate_authority/interface.rb +19 -66
- data/lib/puppet/ssl/certificate_factory.rb +91 -112
- data/lib/puppet/ssl/certificate_request.rb +15 -98
- data/lib/puppet/ssl/certificate_revocation_list.rb +1 -1
- data/lib/puppet/ssl/host.rb +85 -51
- data/lib/puppet/ssl/inventory.rb +1 -1
- data/lib/puppet/sslcertificates.rb +146 -0
- data/lib/puppet/sslcertificates/ca.rb +375 -0
- data/lib/puppet/sslcertificates/certificate.rb +255 -0
- data/lib/puppet/sslcertificates/inventory.rb +38 -0
- data/lib/puppet/sslcertificates/support.rb +146 -0
- data/lib/puppet/status.rb +1 -1
- data/lib/puppet/transaction.rb +163 -94
- data/lib/puppet/transaction/event.rb +1 -1
- data/lib/puppet/transaction/event_manager.rb +19 -3
- data/lib/puppet/transaction/report.rb +9 -3
- data/lib/puppet/type.rb +107 -62
- data/lib/puppet/type/augeas.rb +10 -14
- data/lib/puppet/type/cron.rb +13 -14
- data/lib/puppet/type/exec.rb +0 -9
- data/lib/puppet/type/file.rb +20 -29
- data/lib/puppet/type/file/ctime.rb +1 -1
- data/lib/puppet/type/file/ensure.rb +1 -1
- data/lib/puppet/type/file/group.rb +1 -1
- data/lib/puppet/type/file/mode.rb +1 -1
- data/lib/puppet/type/file/mtime.rb +1 -1
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +3 -3
- data/lib/puppet/type/file/type.rb +1 -1
- data/lib/puppet/type/group.rb +36 -0
- data/lib/puppet/type/host.rb +18 -43
- data/lib/puppet/type/interface.rb +109 -0
- data/lib/puppet/type/k5login.rb +1 -4
- data/lib/puppet/type/macauthorization.rb +3 -3
- data/lib/puppet/type/mcx.rb +2 -21
- data/lib/puppet/type/router.rb +14 -0
- data/lib/puppet/type/schedule.rb +2 -0
- data/lib/puppet/type/service.rb +2 -0
- data/lib/puppet/type/sshkey.rb +6 -1
- data/lib/puppet/type/tidy.rb +12 -12
- data/lib/puppet/type/user.rb +36 -9
- data/lib/puppet/type/vlan.rb +26 -0
- data/lib/puppet/type/whit.rb +13 -1
- data/lib/puppet/type/zfs.rb +100 -8
- data/lib/puppet/type/zone.rb +45 -1
- data/lib/puppet/type/zpool.rb +1 -0
- data/lib/puppet/util.rb +63 -91
- data/lib/puppet/util/autoload.rb +16 -14
- data/lib/puppet/util/classgen.rb +13 -1
- data/lib/puppet/util/command_line.rb +109 -22
- data/lib/puppet/util/log.rb +1 -0
- data/lib/puppet/util/log/destinations.rb +16 -4
- data/lib/puppet/util/logging.rb +11 -0
- data/lib/puppet/util/monkey_patches.rb +7 -77
- data/lib/puppet/util/network_device.rb +17 -0
- data/lib/puppet/util/network_device/base.rb +27 -0
- data/lib/puppet/util/network_device/cisco.rb +4 -0
- data/lib/puppet/util/network_device/cisco/device.rb +256 -0
- data/lib/puppet/util/network_device/cisco/facts.rb +72 -0
- data/lib/puppet/util/network_device/cisco/interface.rb +82 -0
- data/lib/puppet/util/network_device/config.rb +93 -0
- data/lib/puppet/util/network_device/ipcalc.rb +68 -0
- data/lib/puppet/util/network_device/transport.rb +3 -0
- data/lib/puppet/util/network_device/transport/base.rb +26 -0
- data/lib/puppet/util/network_device/transport/ssh.rb +121 -0
- data/lib/puppet/util/network_device/transport/telnet.rb +42 -0
- data/lib/puppet/util/rdoc.rb +4 -10
- data/lib/puppet/util/rdoc/parser.rb +34 -23
- data/lib/puppet/util/reference.rb +7 -8
- data/lib/puppet/util/selinux.rb +2 -2
- data/lib/puppet/util/settings.rb +1 -6
- data/lib/puppet/util/settings/file_setting.rb +0 -1
- data/lib/puppet/util/suidmanager.rb +30 -79
- data/lib/puppet/util/zaml.rb +41 -40
- data/man/man5/puppet.conf.5 +291 -873
- data/man/man8/filebucket.8 +47 -71
- data/man/man8/pi.8 +44 -10
- data/man/man8/puppet-agent.8 +154 -0
- data/man/man8/puppet-apply.8 +75 -0
- data/man/man8/puppet-catalog.8 +286 -0
- data/man/man8/puppet-cert.8 +97 -0
- data/man/man8/puppet-certificate.8 +229 -0
- data/man/man8/puppet-certificate_request.8 +168 -0
- data/man/man8/puppet-certificate_revocation_list.8 +165 -0
- data/man/man8/puppet-config.8 +80 -0
- data/man/man8/puppet-describe.8 +51 -0
- data/man/man8/puppet-device.8 +86 -0
- data/man/man8/puppet-doc.8 +101 -0
- data/man/man8/puppet-facts.8 +217 -0
- data/man/man8/puppet-file.8 +225 -0
- data/man/man8/puppet-filebucket.8 +81 -0
- data/man/man8/puppet-help.8 +71 -0
- data/man/man8/puppet-inspect.8 +28 -0
- data/man/man8/puppet-key.8 +126 -0
- data/man/man8/puppet-kick.8 +95 -0
- data/man/man8/puppet-man.8 +74 -0
- data/man/man8/puppet-master.8 +74 -0
- data/man/man8/puppet-node.8 +171 -0
- data/man/man8/puppet-parser.8 +71 -0
- data/man/man8/puppet-plugin.8 +77 -0
- data/man/man8/puppet-queue.8 +55 -0
- data/man/man8/puppet-report.8 +187 -0
- data/man/man8/puppet-resource.8 +84 -0
- data/man/man8/puppet-resource_type.8 +214 -0
- data/man/man8/puppet-secret_agent.8 +74 -0
- data/man/man8/puppet-status.8 +150 -0
- data/man/man8/puppet.8 +2 -2
- data/man/man8/puppetca.8 +64 -136
- data/man/man8/puppetd.8 +99 -228
- data/man/man8/puppetdoc.8 +41 -48
- data/man/man8/puppetmasterd.8 +54 -32
- data/man/man8/puppetqd.8 +45 -10
- data/man/man8/puppetrun.8 +56 -134
- data/man/man8/ralsh.8 +48 -49
- data/spec/fixtures/faulty_face/puppet/face/syntax.rb +8 -0
- data/spec/fixtures/integration/provider/mailalias/aliases/test1 +28 -0
- data/spec/fixtures/unit/parser/lexer/aliastest.pp +16 -0
- data/spec/fixtures/unit/parser/lexer/append.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +14 -0
- data/spec/fixtures/unit/parser/lexer/arithmetic_expression.pp +8 -0
- data/spec/fixtures/unit/parser/lexer/arraytrailingcomma.pp +3 -0
- data/spec/fixtures/unit/parser/lexer/casestatement.pp +65 -0
- data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +15 -0
- data/spec/fixtures/unit/parser/lexer/classincludes.pp +17 -0
- data/spec/fixtures/unit/parser/lexer/classpathtest.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/collection.pp +10 -0
- data/spec/fixtures/unit/parser/lexer/collection_override.pp +8 -0
- data/spec/fixtures/unit/parser/lexer/collection_within_virtual_definitions.pp +20 -0
- data/spec/fixtures/unit/parser/lexer/componentmetaparams.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/componentrequire.pp +8 -0
- data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +23 -0
- data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +17 -0
- data/spec/fixtures/unit/parser/lexer/emptyclass.pp +9 -0
- data/spec/fixtures/unit/parser/lexer/emptyexec.pp +3 -0
- data/spec/fixtures/unit/parser/lexer/emptyifelse.pp +9 -0
- data/spec/fixtures/unit/parser/lexer/falsevalues.pp +3 -0
- data/spec/fixtures/unit/parser/lexer/filecreate.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/fqdefinition.pp +5 -0
- data/spec/fixtures/unit/parser/lexer/fqparents.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/funccomma.pp +5 -0
- data/spec/fixtures/unit/parser/lexer/hash.pp +33 -0
- data/spec/fixtures/unit/parser/lexer/ifexpression.pp +12 -0
- data/spec/fixtures/unit/parser/lexer/implicititeration.pp +15 -0
- data/spec/fixtures/unit/parser/lexer/multilinecomments.pp +10 -0
- data/spec/fixtures/unit/parser/lexer/multipleclass.pp +9 -0
- data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +7 -0
- data/spec/fixtures/unit/parser/lexer/multisubs.pp +13 -0
- data/spec/fixtures/unit/parser/lexer/namevartest.pp +9 -0
- data/spec/fixtures/unit/parser/lexer/scopetest.pp +13 -0
- data/spec/fixtures/unit/parser/lexer/selectorvalues.pp +49 -0
- data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +5 -0
- data/spec/fixtures/unit/parser/lexer/simpleselector.pp +38 -0
- data/spec/fixtures/unit/parser/lexer/singleary.pp +19 -0
- data/spec/fixtures/unit/parser/lexer/singlequote.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/singleselector.pp +22 -0
- data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +11 -0
- data/spec/fixtures/unit/parser/lexer/tag.pp +9 -0
- data/spec/fixtures/unit/parser/lexer/tagged.pp +35 -0
- data/spec/fixtures/unit/parser/lexer/virtualresources.pp +14 -0
- data/spec/fixtures/unit/provider/host/parsed/valid_hosts +19 -0
- data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +144 -0
- data/spec/fixtures/unit/provider/mount/parsed/aix.mount +7 -0
- data/spec/fixtures/unit/provider/mount/parsed/darwin.mount +6 -0
- data/spec/fixtures/unit/provider/mount/parsed/freebsd.fstab +8 -0
- data/spec/fixtures/unit/provider/mount/parsed/freebsd.mount +3 -0
- data/spec/fixtures/unit/provider/mount/parsed/hpux.mount +17 -0
- data/spec/fixtures/unit/provider/mount/parsed/linux.fstab +11 -0
- data/spec/fixtures/unit/provider/mount/parsed/linux.mount +5 -0
- data/spec/fixtures/unit/provider/mount/parsed/netbsd.fstab +9 -0
- data/spec/fixtures/unit/provider/mount/parsed/netbsd.mount +8 -0
- data/spec/fixtures/unit/provider/mount/parsed/openbsd.fstab +4 -0
- data/spec/fixtures/unit/provider/mount/parsed/openbsd.mount +4 -0
- data/spec/fixtures/unit/provider/mount/parsed/solaris.fstab +11 -0
- data/spec/fixtures/unit/provider/mount/parsed/solaris.mount +6 -0
- data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys +7 -0
- data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys1 +3 -0
- data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys2 +1 -0
- data/spec/fixtures/unit/reports/tagmail/tagmail_failers.conf +3 -0
- data/spec/fixtures/unit/reports/tagmail/tagmail_passers.conf +30 -0
- data/spec/fixtures/unit/util/rdoc/basic.pp +16 -0
- data/spec/integration/application/apply_spec.rb +2 -5
- data/spec/integration/application/doc_spec.rb +5 -6
- data/spec/integration/configurer_spec.rb +10 -6
- data/spec/integration/defaults_spec.rb +18 -52
- data/spec/integration/faces/documentation_spec.rb +55 -0
- data/spec/integration/file_serving/content_spec.rb +10 -3
- data/spec/integration/file_serving/fileset_spec.rb +2 -3
- data/spec/integration/file_serving/metadata_spec.rb +10 -3
- data/spec/integration/file_serving/terminus_helper_spec.rb +2 -3
- data/spec/integration/indirector/catalog/compiler_spec.rb +7 -12
- data/spec/integration/indirector/catalog/queue_spec.rb +3 -4
- data/spec/integration/indirector/direct_file_server_spec.rb +2 -2
- data/spec/integration/indirector/file_content/file_server_spec.rb +7 -7
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +2 -2
- data/spec/integration/indirector/node/ldap_spec.rb +3 -4
- data/spec/integration/network/client_spec.rb +18 -0
- data/spec/integration/network/formats_spec.rb +3 -4
- data/spec/integration/network/handler_spec.rb +3 -4
- data/spec/integration/network/server/mongrel_spec.rb +3 -4
- data/spec/integration/network/server/webrick_spec.rb +4 -4
- data/spec/integration/node/environment_spec.rb +2 -3
- data/spec/integration/node/facts_spec.rb +6 -6
- data/spec/integration/node_spec.rb +16 -16
- data/spec/integration/parser/collector_spec.rb +3 -4
- data/spec/integration/parser/compiler_spec.rb +43 -3
- data/spec/integration/parser/functions/require_spec.rb +2 -3
- data/spec/integration/parser/functions_spec.rb +3 -4
- data/spec/integration/parser/parser_spec.rb +7 -6
- data/spec/integration/parser/ruby_manifest_spec.rb +2 -3
- data/spec/integration/provider/mailalias/aliases_spec.rb +5 -19
- data/spec/integration/provider/mount_spec.rb +2 -2
- data/spec/integration/provider/package_spec.rb +3 -4
- data/spec/integration/provider/service/init_spec.rb +4 -6
- data/spec/integration/reference/providers_spec.rb +2 -3
- data/spec/integration/reports_spec.rb +2 -2
- data/spec/integration/resource/catalog_spec.rb +6 -7
- data/spec/integration/resource/type_collection_spec.rb +2 -3
- data/spec/integration/ssl/certificate_authority_spec.rb +7 -7
- data/spec/integration/ssl/certificate_request_spec.rb +7 -7
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +2 -2
- data/spec/integration/ssl/host_spec.rb +4 -4
- data/spec/integration/transaction/report_spec.rb +3 -3
- data/spec/integration/transaction_spec.rb +61 -6
- data/spec/integration/type/file_spec.rb +10 -8
- data/spec/integration/type/package_spec.rb +2 -3
- data/spec/integration/type/tidy_spec.rb +2 -3
- data/spec/integration/type_spec.rb +2 -14
- data/spec/integration/util/autoload_spec.rb +2 -3
- data/spec/integration/util/feature_spec.rb +2 -3
- data/spec/integration/util/file_locking_spec.rb +3 -4
- data/spec/integration/util/rdoc/parser_spec.rb +3 -4
- data/spec/integration/util/settings_spec.rb +2 -3
- data/spec/lib/matchers/json.rb +111 -0
- data/spec/lib/puppet/face/basetest.rb +46 -0
- data/spec/lib/puppet/face/huzzah.rb +7 -0
- data/spec/lib/puppet/face/version_matching.rb +12 -0
- data/spec/lib/puppet_spec/files.rb +38 -5
- data/spec/lib/puppet_spec/fixtures.rb +28 -0
- data/spec/lib/puppet_spec/matchers.rb +87 -0
- data/spec/lib/puppet_spec/verbose.rb +0 -0
- data/spec/monkey_patches/alias_should_to_must.rb +0 -0
- data/spec/monkey_patches/publicize_methods.rb +0 -0
- data/spec/shared_behaviours/all_parsedfile_providers.rb +21 -0
- data/spec/shared_behaviours/an_indirector_face.rb +6 -0
- data/spec/shared_behaviours/documentation_on_faces.rb +263 -0
- data/spec/shared_behaviours/file_server_terminus.rb +1 -1
- data/spec/shared_behaviours/file_serving.rb +61 -70
- data/spec/shared_behaviours/memory_terminus.rb +0 -0
- data/spec/shared_behaviours/path_parameters.rb +0 -0
- data/spec/shared_behaviours/things_that_declare_options.rb +150 -0
- data/spec/spec.opts +0 -2
- data/spec/spec_helper.rb +33 -75
- data/spec/unit/agent/locker_spec.rb +2 -3
- data/spec/unit/agent_spec.rb +2 -2
- data/spec/unit/application/agent_spec.rb +51 -76
- data/spec/unit/application/apply_spec.rb +86 -150
- data/spec/unit/application/cert_spec.rb +8 -30
- data/spec/unit/application/certificate_spec.rb +20 -0
- data/spec/unit/application/config_spec.rb +9 -0
- data/spec/unit/application/describe_spec.rb +2 -3
- data/spec/unit/application/device_spec.rb +342 -0
- data/spec/unit/application/doc_spec.rb +11 -18
- data/spec/unit/application/face_base_spec.rb +360 -0
- data/spec/unit/application/facts_spec.rb +27 -0
- data/spec/unit/application/filebucket_spec.rb +7 -18
- data/spec/unit/application/indirection_base_spec.rb +42 -0
- data/spec/unit/application/inspect_spec.rb +7 -13
- data/spec/unit/application/kick_spec.rb +15 -38
- data/spec/unit/application/master_spec.rb +25 -81
- data/spec/unit/application/queue_spec.rb +12 -22
- data/spec/unit/application/resource_spec.rb +19 -53
- data/spec/unit/application/secret_agent_spec.rb +32 -0
- data/spec/unit/application_spec.rb +65 -34
- data/spec/unit/configurer/downloader_spec.rb +2 -3
- data/spec/unit/configurer/fact_handler_spec.rb +39 -46
- data/spec/unit/configurer/plugin_handler_spec.rb +2 -3
- data/spec/unit/configurer_spec.rb +329 -411
- data/spec/unit/daemon_spec.rb +7 -14
- data/spec/unit/dsl/resource_api_spec.rb +2 -3
- data/spec/unit/dsl/resource_type_api_spec.rb +24 -37
- data/spec/unit/face/catalog_spec.rb +7 -0
- data/spec/unit/face/certificate_request_spec.rb +7 -0
- data/spec/unit/face/certificate_revocation_list_spec.rb +7 -0
- data/spec/unit/face/certificate_spec.rb +23 -0
- data/spec/unit/face/config_spec.rb +24 -0
- data/spec/unit/face/facts_spec.rb +23 -0
- data/spec/unit/face/file_spec.rb +12 -0
- data/spec/unit/face/help_spec.rb +129 -0
- data/spec/unit/face/key_spec.rb +7 -0
- data/spec/unit/face/node_spec.rb +7 -0
- data/spec/unit/face/plugin_spec.rb +10 -0
- data/spec/unit/face/report_spec.rb +7 -0
- data/spec/unit/face/resource_spec.rb +7 -0
- data/spec/unit/face/resource_type_spec.rb +7 -0
- data/spec/unit/face/secret_agent_spec.rb +25 -0
- data/spec/unit/face_spec.rb +1 -0
- data/spec/unit/file_bucket/dipper_spec.rb +7 -8
- data/spec/unit/file_bucket/file_spec.rb +7 -16
- data/spec/unit/file_collection/lookup_spec.rb +2 -3
- data/spec/unit/file_collection_spec.rb +2 -3
- data/spec/unit/file_serving/base_spec.rb +2 -3
- data/spec/unit/file_serving/configuration/parser_spec.rb +2 -3
- data/spec/unit/file_serving/configuration_spec.rb +31 -40
- data/spec/unit/file_serving/content_spec.rb +6 -3
- data/spec/unit/file_serving/fileset_spec.rb +2 -3
- data/spec/unit/file_serving/{terminus_selector_spec.rb → indirection_hooks_spec.rb} +14 -13
- data/spec/unit/file_serving/metadata_spec.rb +6 -3
- data/spec/unit/file_serving/mount/file_spec.rb +2 -3
- data/spec/unit/file_serving/mount/modules_spec.rb +2 -11
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -3
- data/spec/unit/file_serving/mount_spec.rb +2 -3
- data/spec/unit/file_serving/terminus_helper_spec.rb +2 -2
- data/spec/unit/indirector/active_record_spec.rb +5 -7
- data/spec/unit/indirector/catalog/active_record_spec.rb +2 -3
- data/spec/unit/indirector/catalog/compiler_spec.rb +30 -50
- data/spec/unit/indirector/catalog/queue_spec.rb +2 -3
- data/spec/unit/indirector/catalog/rest_spec.rb +2 -3
- data/spec/unit/indirector/catalog/yaml_spec.rb +2 -3
- data/spec/unit/indirector/certificate/ca_spec.rb +2 -2
- data/spec/unit/indirector/certificate/file_spec.rb +2 -2
- data/spec/unit/indirector/certificate/rest_spec.rb +2 -3
- data/spec/unit/indirector/certificate_request/ca_spec.rb +47 -2
- data/spec/unit/indirector/certificate_request/file_spec.rb +2 -2
- data/spec/unit/indirector/certificate_request/rest_spec.rb +2 -3
- data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +2 -2
- data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +2 -2
- data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +2 -3
- data/spec/unit/indirector/certificate_status/file_spec.rb +187 -0
- data/spec/unit/indirector/certificate_status/rest_spec.rb +14 -0
- data/spec/unit/indirector/code_spec.rb +6 -8
- data/spec/unit/indirector/direct_file_server_spec.rb +6 -7
- data/spec/unit/indirector/envelope_spec.rb +2 -3
- data/spec/unit/indirector/exec_spec.rb +12 -13
- data/spec/unit/indirector/face_spec.rb +68 -0
- data/spec/unit/indirector/facts/active_record_spec.rb +2 -3
- data/spec/unit/indirector/facts/couch_spec.rb +71 -66
- data/spec/unit/indirector/facts/facter_spec.rb +2 -2
- data/spec/unit/indirector/facts/inventory_active_record_spec.rb +20 -20
- data/spec/unit/indirector/facts/network_device_spec.rb +89 -0
- data/spec/unit/indirector/facts/rest_spec.rb +2 -3
- data/spec/unit/indirector/facts/yaml_spec.rb +2 -3
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +17 -18
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +2 -3
- data/spec/unit/indirector/file_content/file_server_spec.rb +2 -2
- data/spec/unit/indirector/file_content/file_spec.rb +2 -2
- data/spec/unit/indirector/file_content/rest_spec.rb +2 -3
- data/spec/unit/indirector/file_metadata/file_server_spec.rb +2 -2
- data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
- data/spec/unit/indirector/file_metadata/rest_spec.rb +2 -3
- data/spec/unit/indirector/file_server_spec.rb +8 -7
- data/spec/unit/indirector/file_spec.rb +179 -0
- data/spec/unit/indirector/indirection_spec.rb +3 -24
- data/spec/unit/indirector/inventory/yaml_spec.rb +220 -0
- data/spec/unit/indirector/key/ca_spec.rb +2 -2
- data/spec/unit/indirector/key/file_spec.rb +2 -2
- data/spec/unit/indirector/ldap_spec.rb +6 -8
- data/spec/unit/indirector/memory_spec.rb +5 -7
- data/spec/unit/indirector/node/active_record_spec.rb +2 -3
- data/spec/unit/indirector/node/exec_spec.rb +3 -4
- data/spec/unit/indirector/node/ldap_spec.rb +3 -4
- data/spec/unit/indirector/node/memory_spec.rb +2 -3
- data/spec/unit/indirector/node/plain_spec.rb +2 -3
- data/spec/unit/indirector/node/rest_spec.rb +2 -3
- data/spec/unit/indirector/node/yaml_spec.rb +2 -3
- data/spec/unit/indirector/plain_spec.rb +5 -7
- data/spec/unit/indirector/queue_spec.rb +11 -14
- data/spec/unit/indirector/report/processor_spec.rb +7 -9
- data/spec/unit/indirector/report/rest_spec.rb +2 -3
- data/spec/unit/indirector/report/yaml_spec.rb +3 -4
- data/spec/unit/indirector/request_spec.rb +3 -25
- data/spec/unit/indirector/resource/ral_spec.rb +3 -4
- data/spec/unit/indirector/resource/rest_spec.rb +2 -3
- data/spec/unit/indirector/resource_type/parser_spec.rb +87 -13
- data/spec/unit/indirector/resource_type/rest_spec.rb +2 -3
- data/spec/unit/indirector/rest_spec.rb +45 -16
- data/spec/unit/indirector/run/local_spec.rb +2 -3
- data/spec/unit/indirector/run/rest_spec.rb +2 -3
- data/spec/unit/indirector/ssl_file_spec.rb +9 -27
- data/spec/unit/indirector/status/rest_spec.rb +2 -3
- data/spec/unit/indirector/terminus_spec.rb +180 -187
- data/spec/unit/indirector/yaml_spec.rb +9 -23
- data/spec/unit/indirector_spec.rb +61 -79
- data/spec/unit/interface/action_builder_spec.rb +214 -0
- data/spec/unit/interface/action_manager_spec.rb +282 -0
- data/spec/unit/interface/action_spec.rb +545 -0
- data/spec/unit/interface/documentation_spec.rb +34 -0
- data/spec/unit/interface/face_collection_spec.rb +180 -0
- data/spec/unit/interface/option_builder_spec.rb +77 -0
- data/spec/unit/interface/option_spec.rb +100 -0
- data/spec/unit/interface_spec.rb +228 -0
- data/spec/unit/module_spec.rb +34 -10
- data/spec/unit/network/authconfig_spec.rb +3 -4
- data/spec/unit/network/authstore_spec.rb +3 -4
- data/spec/unit/network/client_spec.rb +45 -0
- data/spec/unit/network/format_handler_spec.rb +2 -3
- data/spec/unit/network/format_spec.rb +2 -3
- data/spec/unit/network/formats_spec.rb +107 -3
- data/spec/unit/network/handler/fileserver_spec.rb +3 -4
- data/spec/unit/network/http/api/v1_spec.rb +61 -27
- data/spec/unit/network/http/compression_spec.rb +2 -3
- data/spec/unit/network/http/handler_spec.rb +78 -109
- data/spec/unit/network/http/mongrel/rest_spec.rb +3 -4
- data/spec/unit/network/http/mongrel_spec.rb +6 -6
- data/spec/unit/network/http/rack/rest_spec.rb +2 -20
- data/spec/unit/network/http/rack/xmlrpc_spec.rb +2 -3
- data/spec/unit/network/http/rack_spec.rb +2 -3
- data/spec/unit/network/http/webrick/rest_spec.rb +3 -4
- data/spec/unit/network/http/webrick_spec.rb +4 -8
- data/spec/unit/network/http_pool_spec.rb +82 -95
- data/spec/unit/network/http_spec.rb +2 -2
- data/spec/unit/network/rest_authconfig_spec.rb +9 -42
- data/spec/unit/network/rights_spec.rb +6 -7
- data/spec/unit/network/server_spec.rb +2 -2
- data/spec/unit/network/xmlrpc/client_spec.rb +172 -0
- data/spec/unit/node/environment_spec.rb +63 -7
- data/spec/unit/node/facts_spec.rb +9 -13
- data/spec/unit/node_spec.rb +5 -13
- data/spec/unit/other/selinux_spec.rb +2 -3
- data/spec/unit/other/transbucket_spec.rb +2 -3
- data/spec/unit/other/transobject_spec.rb +2 -3
- data/spec/unit/parameter/path_spec.rb +2 -2
- data/spec/unit/parameter/value_collection_spec.rb +2 -3
- data/spec/unit/parameter/value_spec.rb +2 -3
- data/spec/unit/parameter_spec.rb +2 -3
- data/spec/unit/parser/ast/arithmetic_operator_spec.rb +2 -13
- data/spec/unit/parser/ast/astarray_spec.rb +18 -36
- data/spec/unit/parser/ast/asthash_spec.rb +4 -4
- data/spec/unit/parser/ast/boolean_operator_spec.rb +2 -3
- data/spec/unit/parser/ast/casestatement_spec.rb +17 -14
- data/spec/unit/parser/ast/collection_spec.rb +2 -3
- data/spec/unit/parser/ast/collexpr_spec.rb +2 -3
- data/spec/unit/parser/ast/comparison_operator_spec.rb +4 -5
- data/spec/unit/parser/ast/definition_spec.rb +21 -0
- data/spec/unit/parser/ast/function_spec.rb +3 -4
- data/spec/unit/parser/ast/hostclass_spec.rb +72 -0
- data/spec/unit/parser/ast/ifstatement_spec.rb +2 -3
- data/spec/unit/parser/ast/in_operator_spec.rb +2 -3
- data/spec/unit/parser/ast/leaf_spec.rb +23 -19
- data/spec/unit/parser/ast/match_operator_spec.rb +2 -3
- data/spec/unit/parser/ast/minus_spec.rb +2 -3
- data/spec/unit/parser/ast/node_spec.rb +30 -0
- data/spec/unit/parser/ast/nop_spec.rb +2 -3
- data/spec/unit/parser/ast/not_spec.rb +2 -3
- data/spec/unit/parser/ast/relationship_spec.rb +2 -3
- data/spec/unit/parser/ast/resource_defaults_spec.rb +2 -3
- data/spec/unit/parser/ast/resource_override_spec.rb +2 -3
- data/spec/unit/parser/ast/resource_reference_spec.rb +21 -8
- data/spec/unit/parser/ast/resource_spec.rb +24 -13
- data/spec/unit/parser/ast/selector_spec.rb +3 -4
- data/spec/unit/parser/ast/vardef_spec.rb +15 -9
- data/spec/unit/parser/ast_spec.rb +2 -3
- data/spec/unit/parser/collector_spec.rb +2 -3
- data/spec/unit/parser/compiler_spec.rb +62 -35
- data/spec/unit/parser/files_spec.rb +2 -3
- data/spec/unit/parser/functions/create_resources_spec.rb +137 -0
- data/spec/unit/parser/functions/defined_spec.rb +5 -3
- data/spec/unit/parser/functions/extlookup_spec.rb +10 -10
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -13
- data/spec/unit/parser/functions/generate_spec.rb +5 -3
- data/spec/unit/parser/functions/include_spec.rb +5 -3
- data/spec/unit/parser/functions/inline_template_spec.rb +6 -17
- data/spec/unit/parser/functions/realize_spec.rb +5 -3
- data/spec/unit/parser/functions/regsubst_spec.rb +5 -3
- data/spec/unit/parser/functions/require_spec.rb +5 -3
- data/spec/unit/parser/functions/shellquote_spec.rb +8 -6
- data/spec/unit/parser/functions/split_spec.rb +5 -3
- data/spec/unit/parser/functions/sprintf_spec.rb +5 -3
- data/spec/unit/parser/functions/tag_spec.rb +5 -3
- data/spec/unit/parser/functions/template_spec.rb +6 -21
- data/spec/unit/parser/functions/versioncmp_spec.rb +5 -3
- data/spec/unit/parser/functions_spec.rb +2 -3
- data/spec/unit/parser/lexer_spec.rb +3 -7
- data/spec/unit/parser/parser_spec.rb +71 -90
- data/spec/unit/parser/relationship_spec.rb +2 -3
- data/spec/unit/parser/resource_spec.rb +6 -65
- data/spec/unit/parser/scope_spec.rb +28 -179
- data/spec/unit/parser/templatewrapper_spec.rb +25 -43
- data/spec/unit/parser/type_loader_spec.rb +120 -78
- data/spec/unit/property/ensure_spec.rb +2 -3
- data/spec/unit/property/keyvalue_spec.rb +4 -8
- data/spec/unit/property/list_spec.rb +2 -3
- data/spec/unit/property/ordered_list_spec.rb +2 -3
- data/spec/unit/property_spec.rb +2 -3
- data/spec/unit/provider/augeas/augeas_spec.rb +80 -3
- data/spec/unit/provider/cisco_spec.rb +16 -0
- data/spec/unit/provider/confine/exists_spec.rb +2 -3
- data/spec/unit/provider/confine/false_spec.rb +2 -3
- data/spec/unit/provider/confine/feature_spec.rb +2 -3
- data/spec/unit/provider/confine/true_spec.rb +2 -3
- data/spec/unit/provider/confine/variable_spec.rb +2 -3
- data/spec/unit/provider/confine_collection_spec.rb +2 -3
- data/spec/unit/provider/confine_spec.rb +2 -3
- data/spec/unit/provider/confiner_spec.rb +2 -3
- data/spec/unit/provider/exec/posix_spec.rb +2 -2
- data/spec/unit/provider/exec/shell_spec.rb +2 -2
- data/spec/unit/provider/group/groupadd_spec.rb +2 -3
- data/spec/unit/provider/group/ldap_spec.rb +2 -2
- data/spec/unit/provider/host/parsed_spec.rb +197 -0
- data/spec/unit/provider/interface/cisco_spec.rb +58 -0
- data/spec/unit/provider/ldap_spec.rb +2 -2
- data/spec/unit/provider/macauthorization_spec.rb +2 -2
- data/spec/unit/provider/mcx/mcxcontent_spec.rb +2 -21
- data/spec/unit/provider/mount/parsed_spec.rb +61 -86
- data/spec/unit/provider/mount_spec.rb +2 -3
- data/spec/unit/provider/naginator_spec.rb +2 -3
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +2 -63
- data/spec/unit/provider/network_device_spec.rb +153 -0
- data/spec/unit/provider/package/aix_spec.rb +2 -3
- data/spec/unit/provider/package/apt_spec.rb +2 -3
- data/spec/unit/provider/package/dpkg_spec.rb +2 -3
- data/spec/unit/provider/package/freebsd_spec.rb +2 -3
- data/spec/unit/provider/package/gem_spec.rb +2 -3
- data/spec/unit/provider/package/hpux_spec.rb +2 -3
- data/spec/unit/provider/package/macports_spec.rb +2 -2
- data/spec/unit/provider/package/nim_spec.rb +2 -3
- data/spec/unit/provider/package/pip_spec.rb +180 -0
- data/spec/unit/provider/package/pkg_spec.rb +2 -3
- data/spec/unit/provider/package/pkgdmg_spec.rb +49 -56
- data/spec/unit/provider/package/pkgutil_spec.rb +182 -0
- data/spec/unit/provider/package/yum_spec.rb +66 -0
- data/spec/unit/provider/package/zypper_spec.rb +2 -3
- data/spec/unit/provider/parsedfile_spec.rb +2 -3
- data/spec/unit/provider/selboolean_spec.rb +2 -3
- data/spec/unit/provider/selmodule_spec.rb +2 -2
- data/spec/unit/provider/service/daemontools_spec.rb +2 -2
- data/spec/unit/provider/service/debian_spec.rb +2 -2
- data/spec/unit/provider/service/freebsd_spec.rb +2 -3
- data/spec/unit/provider/service/init_spec.rb +3 -3
- data/spec/unit/provider/service/launchd_spec.rb +2 -2
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/runit_spec.rb +2 -2
- data/spec/unit/provider/service/smf_spec.rb +137 -0
- data/spec/unit/provider/service/src_spec.rb +7 -7
- data/spec/unit/provider/service/upstart.rb +48 -0
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +28 -47
- data/spec/unit/provider/sshkey/parsed_spec.rb +2 -3
- data/spec/unit/provider/user/hpux_spec.rb +2 -3
- data/spec/unit/provider/user/ldap_spec.rb +2 -2
- data/spec/unit/provider/user/user_role_add_spec.rb +15 -53
- data/spec/unit/provider/user/useradd_spec.rb +2 -3
- data/spec/unit/provider/vlan/cisco_spec.rb +56 -0
- data/spec/unit/provider/zfs/solaris_spec.rb +4 -4
- data/spec/unit/provider/zone/solaris_spec.rb +2 -3
- data/spec/unit/provider/zpool/solaris_spec.rb +33 -4
- data/spec/unit/provider_spec.rb +2 -3
- data/spec/unit/puppet/provider/README.markdown +4 -0
- data/spec/unit/puppet/type/README.markdown +4 -0
- data/spec/unit/puppet_spec.rb +2 -2
- data/spec/unit/rails/host_spec.rb +2 -11
- data/spec/unit/rails/param_value_spec.rb +2 -3
- data/spec/unit/rails/resource_spec.rb +2 -3
- data/spec/unit/rails_spec.rb +2 -3
- data/spec/unit/relationship_spec.rb +2 -2
- data/spec/unit/reports/http_spec.rb +2 -3
- data/spec/unit/reports/rrdgraph_spec.rb +2 -3
- data/spec/unit/reports/store_spec.rb +2 -17
- data/spec/unit/reports/tagmail_spec.rb +4 -8
- data/spec/unit/reports_spec.rb +2 -3
- data/spec/unit/resource/catalog_spec.rb +15 -74
- data/spec/unit/resource/status_spec.rb +3 -4
- data/spec/unit/resource/type_collection_helper_spec.rb +2 -3
- data/spec/unit/resource/type_collection_spec.rb +69 -81
- data/spec/unit/resource/type_spec.rb +26 -44
- data/spec/unit/resource_spec.rb +3 -4
- data/spec/unit/run_spec.rb +2 -3
- data/spec/unit/simple_graph_spec.rb +434 -80
- data/spec/unit/ssl/base_spec.rb +3 -4
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +56 -96
- data/spec/unit/ssl/certificate_authority_spec.rb +71 -246
- data/spec/unit/ssl/certificate_factory_spec.rb +72 -93
- data/spec/unit/ssl/certificate_request_spec.rb +11 -76
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +4 -5
- data/spec/unit/ssl/certificate_spec.rb +2 -34
- data/spec/unit/ssl/host_spec.rb +202 -207
- data/spec/unit/ssl/inventory_spec.rb +4 -5
- data/spec/unit/ssl/key_spec.rb +2 -3
- data/spec/unit/sslcertificates/ca_spec.rb +110 -0
- data/spec/unit/status_spec.rb +8 -5
- data/spec/unit/transaction/event_manager_spec.rb +2 -3
- data/spec/unit/transaction/event_spec.rb +7 -8
- data/spec/unit/transaction/report_spec.rb +25 -14
- data/spec/unit/transaction/resource_harness_spec.rb +2 -4
- data/spec/unit/transaction_spec.rb +31 -28
- data/spec/unit/transportable_spec.rb +0 -0
- data/spec/unit/type/augeas_spec.rb +3 -4
- data/spec/unit/type/component_spec.rb +2 -3
- data/spec/unit/type/computer_spec.rb +2 -3
- data/spec/unit/type/cron_spec.rb +12 -3
- data/spec/unit/type/exec_spec.rb +2 -32
- data/spec/unit/type/file/checksum_spec.rb +2 -3
- data/spec/unit/type/file/content_spec.rb +2 -3
- data/spec/unit/type/file/ctime.rb +2 -3
- data/spec/unit/type/file/ensure_spec.rb +2 -3
- data/spec/unit/type/file/group_spec.rb +2 -3
- data/spec/unit/type/file/mtime.rb +2 -3
- data/spec/unit/type/file/owner_spec.rb +2 -3
- data/spec/unit/type/file/selinux_spec.rb +2 -3
- data/spec/unit/type/file/source_spec.rb +9 -10
- data/spec/unit/type/file/type.rb +2 -3
- data/spec/unit/type/file_spec.rb +15 -30
- data/spec/unit/type/filebucket_spec.rb +2 -3
- data/spec/unit/type/group_spec.rb +4 -5
- data/spec/unit/type/host_spec.rb +129 -0
- data/spec/unit/type/interface_spec.rb +98 -0
- data/spec/unit/type/macauthorization_spec.rb +2 -3
- data/spec/unit/type/maillist_spec.rb +2 -3
- data/spec/unit/type/mcx_spec.rb +2 -23
- data/spec/unit/type/mount_spec.rb +41 -18
- data/spec/unit/type/nagios_spec.rb +2 -3
- data/spec/unit/type/noop_metaparam_spec.rb +2 -3
- data/spec/unit/type/package_spec.rb +2 -3
- data/spec/unit/type/resources_spec.rb +3 -4
- data/spec/unit/type/schedule_spec.rb +19 -12
- data/spec/unit/type/selboolean_spec.rb +2 -3
- data/spec/unit/type/selmodule_spec.rb +2 -3
- data/spec/unit/type/service_spec.rb +6 -3
- data/spec/unit/type/ssh_authorized_key_spec.rb +2 -3
- data/spec/unit/type/sshkey_spec.rb +70 -0
- data/spec/unit/type/stage_spec.rb +2 -3
- data/spec/unit/type/tidy_spec.rb +4 -4
- data/spec/unit/type/user_spec.rb +2 -11
- data/spec/unit/type/vlan_spec.rb +45 -0
- data/spec/unit/type/whit_spec.rb +4 -5
- data/spec/unit/type/zfs_spec.rb +2 -3
- data/spec/unit/type/zone_spec.rb +22 -3
- data/spec/unit/type/zpool_spec.rb +2 -3
- data/spec/unit/type_spec.rb +2 -69
- data/spec/unit/util/autoload/file_cache_spec.rb +2 -3
- data/spec/unit/util/autoload_spec.rb +6 -7
- data/spec/unit/util/backups_spec.rb +2 -3
- data/spec/unit/util/cache_accumulator_spec.rb +2 -3
- data/spec/unit/util/cacher_spec.rb +3 -4
- data/spec/unit/util/checksums_spec.rb +2 -2
- data/spec/unit/util/command_line_spec.rb +11 -8
- data/spec/unit/util/constant_inflector_spec.rb +2 -2
- data/spec/unit/util/errors_spec.rb +2 -3
- data/spec/unit/util/execution_spec.rb +2 -3
- data/spec/unit/util/execution_stub_spec.rb +2 -3
- data/spec/unit/util/feature_spec.rb +2 -3
- data/spec/unit/util/file_locking_spec.rb +4 -5
- data/spec/unit/util/filetype_spec.rb +2 -3
- data/spec/unit/util/inline_docs_spec.rb +2 -3
- data/spec/unit/util/ldap/connection_spec.rb +2 -2
- data/spec/unit/util/ldap/generator_spec.rb +2 -2
- data/spec/unit/util/ldap/manager_spec.rb +2 -2
- data/spec/unit/util/loadedfile_spec.rb +2 -3
- data/spec/unit/util/log/destinations_spec.rb +2 -3
- data/spec/unit/util/log_spec.rb +6 -7
- data/spec/unit/util/logging_spec.rb +27 -3
- data/spec/unit/util/metric_spec.rb +2 -3
- data/spec/unit/util/monkey_patches_spec.rb +48 -10
- data/spec/unit/util/nagios_maker_spec.rb +2 -2
- data/spec/unit/util/network_device/cisco/device_spec.rb +408 -0
- data/spec/unit/util/network_device/cisco/facts_spec.rb +63 -0
- data/spec/unit/util/network_device/cisco/interface_spec.rb +89 -0
- data/spec/unit/util/network_device/config_spec.rb +102 -0
- data/spec/unit/util/network_device/ipcalc_spec.rb +63 -0
- data/spec/unit/util/network_device/transport/base_spec.rb +42 -0
- data/spec/unit/util/network_device/transport/ssh_spec.rb +219 -0
- data/spec/unit/util/network_device/transport/telnet_spec.rb +76 -0
- data/spec/unit/util/network_device_spec.rb +50 -0
- data/spec/unit/util/package_spec.rb +2 -3
- data/spec/unit/util/posix_spec.rb +2 -3
- data/spec/unit/util/pson_spec.rb +3 -4
- data/spec/unit/util/queue/stomp_spec.rb +4 -5
- data/spec/unit/util/queue_spec.rb +2 -3
- data/spec/unit/util/rdoc/parser_spec.rb +17 -12
- data/spec/unit/util/rdoc_spec.rb +19 -58
- data/spec/unit/util/reference_serializer_spec.rb +2 -3
- data/spec/unit/util/resource_template_spec.rb +2 -3
- data/spec/unit/util/run_mode_spec.rb +2 -3
- data/spec/unit/util/selinux_spec.rb +4 -5
- data/spec/unit/util/settings/file_setting_spec.rb +2 -7
- data/spec/unit/util/settings_spec.rb +2 -24
- data/spec/unit/util/storage_spec.rb +2 -3
- data/spec/unit/util/tagging_spec.rb +2 -2
- data/spec/unit/util/user_attr_spec.rb +2 -3
- data/spec/unit/util/warnings_spec.rb +2 -3
- data/spec/unit/util/zaml_spec.rb +23 -53
- data/spec/watchr.rb +146 -0
- data/tasks/rake/gem.rake +5 -4
- data/tasks/rake/git_workflow.rake +62 -51
- data/tasks/rake/manpages.rake +69 -0
- data/test/certmgr/certmgr.rb +308 -0
- data/test/certmgr/inventory.rb +69 -0
- data/test/certmgr/support.rb +105 -0
- data/test/data/providers/host/parsed/valid_hosts +19 -0
- data/test/language/ast.rb +1 -1
- data/test/language/ast/variable.rb +1 -1
- data/test/language/functions.rb +8 -9
- data/test/language/parser.rb +44 -52
- data/test/language/scope.rb +13 -24
- data/test/language/snippets.rb +11 -2
- data/test/language/transportable.rb +1 -1
- data/test/lib/puppettest.rb +2 -2
- data/test/lib/puppettest/exetest.rb +1 -1
- data/test/lib/puppettest/parsertesting.rb +5 -8
- data/test/lib/puppettest/servertest.rb +1 -0
- data/test/lib/puppettest/support/assertions.rb +6 -1
- data/test/lib/puppettest/support/utils.rb +0 -19
- data/test/network/authconfig.rb +1 -1
- data/test/network/authorization.rb +1 -1
- data/test/network/authstore.rb +1 -1
- data/test/network/client/ca.rb +69 -0
- data/test/network/client/dipper.rb +34 -0
- data/test/network/client_request.rb +1 -1
- data/test/network/handler/ca.rb +273 -0
- data/test/network/handler/fileserver.rb +1 -1
- data/test/network/handler/master.rb +13 -9
- data/test/network/handler/report.rb +1 -1
- data/test/network/handler/runner.rb +1 -1
- data/test/network/rights.rb +1 -1
- data/test/network/server/mongrel_test.rb +99 -0
- data/test/network/server/webrick.rb +128 -0
- data/test/network/xmlrpc/client.rb +45 -0
- data/test/network/xmlrpc/processor.rb +1 -1
- data/test/network/xmlrpc/server.rb +1 -1
- data/test/network/xmlrpc/webrick_servlet.rb +1 -1
- data/test/other/provider.rb +1 -1
- data/test/other/puppet.rb +1 -1
- data/test/other/relationships.rb +11 -18
- data/test/other/report.rb +1 -1
- data/test/other/transactions.rb +2 -35
- data/test/puppet/defaults.rb +1 -1
- data/test/puppet/errortest.rb +1 -1
- data/test/puppet/tc_suidmanager.rb +120 -0
- data/test/rails/rails.rb +2 -1
- data/test/rails/railsparameter.rb +2 -2
- data/test/ral/manager/attributes.rb +1 -1
- data/test/ral/manager/instances.rb +1 -1
- data/test/ral/manager/manager.rb +1 -1
- data/test/ral/manager/provider.rb +1 -1
- data/test/ral/manager/type.rb +1 -1
- data/test/ral/providers/cron/crontab.rb +1 -1
- data/test/ral/providers/group.rb +1 -1
- data/test/ral/providers/host/parsed.rb +1 -203
- data/test/ral/providers/mailalias/aliases.rb +1 -1
- data/test/ral/providers/nameservice.rb +1 -1
- data/test/ral/providers/package.rb +1 -1
- data/test/ral/providers/package/aptitude.rb +1 -1
- data/test/ral/providers/package/aptrpm.rb +1 -1
- data/test/ral/providers/parsedfile.rb +1 -1
- data/test/ral/providers/port/parsed.rb +1 -1
- data/test/ral/providers/provider.rb +1 -1
- data/test/ral/providers/service/base.rb +1 -1
- data/test/ral/providers/sshkey/parsed.rb +1 -1
- data/test/ral/providers/user.rb +1 -1
- data/test/ral/providers/user/useradd.rb +1 -1
- data/test/ral/type/cron.rb +1 -1
- data/test/ral/type/exec.rb +1 -42
- data/test/ral/type/file.rb +1 -1
- data/test/ral/type/file/target.rb +6 -19
- data/test/ral/type/fileignoresource.rb +1 -1
- data/test/ral/type/filesources.rb +61 -1
- data/test/ral/type/host.rb +1 -1
- data/test/ral/type/mailalias.rb +1 -1
- data/test/ral/type/port.rb +1 -1
- data/test/ral/type/resources.rb +1 -1
- data/test/ral/type/service.rb +1 -1
- data/test/ral/type/sshkey.rb +1 -1
- data/test/ral/type/user.rb +1 -1
- data/test/ral/type/yumrepo.rb +1 -1
- data/test/ral/type/zone.rb +1 -1
- data/test/test +2 -2
- data/test/util/classgen.rb +1 -1
- data/test/util/execution.rb +1 -1
- data/test/util/fileparsing.rb +1 -1
- data/test/util/inifile.rb +1 -1
- data/test/util/instance_loader.rb +1 -1
- data/test/util/log.rb +1 -1
- data/test/util/metrics.rb +1 -1
- data/test/util/package.rb +1 -1
- data/test/util/pidlock.rb +1 -1
- data/test/util/settings.rb +1 -1
- data/test/util/storage.rb +1 -1
- data/test/util/subclass_loader.rb +1 -1
- data/test/util/utiltest.rb +1 -1
- metadata +312 -48
- data/CHANGELOG.old +0 -1705
- data/CONTRIBUTING.md +0 -299
- data/COPYING +0 -340
- data/README.queueing +0 -126
- data/ext/upload_facts.rb +0 -120
- data/ext/vim/ftplugin/puppet.vim +0 -94
- data/ext/vim/indent/puppet.vim +0 -76
- data/lib/puppet/indirector/errors.rb +0 -5
- data/lib/puppet/indirector/facts/inventory_service.rb +0 -20
- data/lib/puppet/indirector/file_bucket_file/selector.rb +0 -53
- data/lib/puppet/indirector/file_content/selector.rb +0 -30
- data/lib/puppet/indirector/file_metadata/selector.rb +0 -30
- data/lib/puppet/indirector/resource/validator.rb +0 -8
- data/lib/puppet/util/command_line/filebucket +0 -97
- data/lib/puppet/util/command_line/pi +0 -48
- data/lib/puppet/util/command_line/puppet +0 -73
- data/lib/puppet/util/command_line/puppetca +0 -131
- data/lib/puppet/util/command_line/puppetd +0 -188
- data/lib/puppet/util/command_line/puppetdoc +0 -67
- data/lib/puppet/util/command_line/puppetmasterd +0 -70
- data/lib/puppet/util/command_line/puppetqd +0 -53
- data/lib/puppet/util/command_line/puppetrun +0 -125
- data/lib/puppet/util/command_line/ralsh +0 -89
- data/spec/integration/file_bucket/file_spec.rb +0 -44
- data/spec/integration/indirector/bucket_file/rest_spec.rb +0 -77
- data/spec/integration/indirector/certificate/rest_spec.rb +0 -69
- data/spec/integration/indirector/certificate_request/rest_spec.rb +0 -89
- data/spec/integration/indirector/certificate_revocation_list/rest_spec.rb +0 -85
- data/spec/integration/indirector/report/rest_spec.rb +0 -93
- data/spec/shared_behaviours/file_serving_model.rb +0 -73
- data/spec/unit/indirector/facts/inventory_service_spec.rb +0 -22
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +0 -29
- data/spec/unit/indirector/file_content/selector_spec.rb +0 -10
- data/spec/unit/indirector/file_metadata/selector_spec.rb +0 -11
- data/spec/unit/network/handler/ca_spec.rb +0 -87
- data/spec/unit/network/rest_authorization_spec.rb +0 -43
- data/spec/unit/provider/package/appdmg_spec.rb +0 -42
- data/spec/unit/type/k5login_spec.rb +0 -115
- data/spec/unit/util/suidmanager_spec.rb +0 -220
- data/spec/unit/util_spec.rb +0 -104
@@ -1,6 +1,5 @@
|
|
1
|
-
#!/usr/bin/env
|
2
|
-
|
3
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
1
|
+
#!/usr/bin/env rspec
|
2
|
+
require 'spec_helper'
|
4
3
|
|
5
4
|
require 'puppet/resource/type'
|
6
5
|
|
@@ -55,12 +54,24 @@ describe Puppet::Resource::Type do
|
|
55
54
|
double_convert.arguments.should == {"one" => nil, "two" => "foo"}
|
56
55
|
end
|
57
56
|
|
58
|
-
it "should include
|
59
|
-
@type.
|
60
|
-
|
57
|
+
it "should not include arguments if none are present" do
|
58
|
+
@type.to_pson["arguments"].should be_nil
|
59
|
+
end
|
60
|
+
|
61
|
+
[:line, :doc, :file, :parent].each do |attr|
|
62
|
+
it "should include #{attr} when set" do
|
63
|
+
@type.send(attr.to_s + "=", "value")
|
64
|
+
double_convert.send(attr).should == "value"
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should not include #{attr} when not set" do
|
68
|
+
@type.to_pson[attr.to_s].should be_nil
|
69
|
+
end
|
70
|
+
end
|
61
71
|
|
62
|
-
|
63
|
-
|
72
|
+
it "should not include docs if they are empty" do
|
73
|
+
@type.doc = ""
|
74
|
+
@type.to_pson["doc"].should be_nil
|
64
75
|
end
|
65
76
|
end
|
66
77
|
|
@@ -225,35 +236,6 @@ describe Puppet::Resource::Type do
|
|
225
236
|
end
|
226
237
|
end
|
227
238
|
|
228
|
-
describe "when creating a subscope" do
|
229
|
-
before do
|
230
|
-
@scope = stub 'scope', :newscope => nil
|
231
|
-
@resource = stub 'resource'
|
232
|
-
@type = Puppet::Resource::Type.new(:hostclass, "foo")
|
233
|
-
end
|
234
|
-
|
235
|
-
it "should return a new scope created with the provided scope as the parent" do
|
236
|
-
@scope.expects(:newscope).returns "foo"
|
237
|
-
@type.subscope(@scope, @resource).should == "foo"
|
238
|
-
end
|
239
|
-
|
240
|
-
it "should set the source as itself" do
|
241
|
-
@scope.expects(:newscope).with { |args| args[:source] == @type }
|
242
|
-
@type.subscope(@scope, @resource)
|
243
|
-
end
|
244
|
-
|
245
|
-
it "should set the scope's namespace to its namespace" do
|
246
|
-
@type.expects(:namespace).returns "yayness"
|
247
|
-
@scope.expects(:newscope).with { |args| args[:namespace] == "yayness" }
|
248
|
-
@type.subscope(@scope, @resource)
|
249
|
-
end
|
250
|
-
|
251
|
-
it "should set the scope's resource to the provided resource" do
|
252
|
-
@scope.expects(:newscope).with { |args| args[:resource] == @resource }
|
253
|
-
@type.subscope(@scope, @resource)
|
254
|
-
end
|
255
|
-
end
|
256
|
-
|
257
239
|
describe "when setting its parameters in the scope" do
|
258
240
|
before do
|
259
241
|
@scope = Puppet::Parser::Scope.new(:compiler => stub("compiler", :environment => Puppet::Node::Environment.new), :source => stub("source"))
|
@@ -263,7 +245,7 @@ describe Puppet::Resource::Type do
|
|
263
245
|
|
264
246
|
['module_name', 'name', 'title'].each do |variable|
|
265
247
|
it "should allow #{variable} to be evaluated as param default" do
|
266
|
-
@type.module_name = "bar"
|
248
|
+
@type.instance_eval { @module_name = "bar" }
|
267
249
|
var = Puppet::Parser::AST::Variable.new({'value' => variable})
|
268
250
|
@type.set_arguments :foo => var
|
269
251
|
@type.set_resource_parameters(@resource, @scope)
|
@@ -344,7 +326,7 @@ describe Puppet::Resource::Type do
|
|
344
326
|
end
|
345
327
|
|
346
328
|
it "should set its module name in the scope if available" do
|
347
|
-
@type.module_name = "mymod"
|
329
|
+
@type.instance_eval { @module_name = "mymod" }
|
348
330
|
|
349
331
|
@type.set_resource_parameters(@resource, @scope)
|
350
332
|
|
@@ -453,7 +435,7 @@ describe Puppet::Resource::Type do
|
|
453
435
|
|
454
436
|
it "should set all of its parameters in a subscope" do
|
455
437
|
subscope = stub 'subscope', :compiler => @compiler
|
456
|
-
@
|
438
|
+
@scope.expects(:newscope).with(:source => @type, :dynamic => true, :namespace => 'foo', :resource => @resource).returns subscope
|
457
439
|
@type.expects(:set_resource_parameters).with(@resource, subscope)
|
458
440
|
|
459
441
|
@type.evaluate_code(@resource)
|
@@ -481,8 +463,9 @@ describe Puppet::Resource::Type do
|
|
481
463
|
it "should evaluate the AST code if any is provided" do
|
482
464
|
code = stub 'code'
|
483
465
|
@type.stubs(:code).returns code
|
484
|
-
|
485
|
-
|
466
|
+
subscope = stub_everything("subscope", :compiler => @compiler)
|
467
|
+
@scope.stubs(:newscope).returns subscope
|
468
|
+
code.expects(:safeevaluate).with subscope
|
486
469
|
|
487
470
|
@type.evaluate_code(@resource)
|
488
471
|
end
|
@@ -553,8 +536,7 @@ describe Puppet::Resource::Type do
|
|
553
536
|
@compiler.add_resource @scope, @parent_resource
|
554
537
|
|
555
538
|
@type.resource_type_collection = @scope.known_resource_types
|
556
|
-
@type.resource_type_collection.
|
557
|
-
@type.resource_type_collection.stubs(:node).with("Parent").returns(@parent_type)
|
539
|
+
@type.resource_type_collection.add(@parent_type)
|
558
540
|
end
|
559
541
|
|
560
542
|
it "should evaluate the parent's resource" do
|
data/spec/unit/resource_spec.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
|
-
#!/usr/bin/env
|
2
|
-
|
3
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
1
|
+
#!/usr/bin/env rspec
|
2
|
+
require 'spec_helper'
|
4
3
|
require 'puppet/resource'
|
5
4
|
|
6
5
|
describe Puppet::Resource do
|
@@ -517,7 +516,7 @@ type: File
|
|
517
516
|
)
|
518
517
|
end
|
519
518
|
|
520
|
-
it "should align, sort and add trailing commas to attributes with ensure first" do
|
519
|
+
it "should align, sort and add trailing commas to attributes with ensure first", :'fails_on_ruby_1.9.2' => true do
|
521
520
|
@resource.to_manifest.should == <<-HEREDOC.gsub(/^\s{8}/, '').gsub(/\n$/, '')
|
522
521
|
one::two { '/my/file':
|
523
522
|
ensure => 'present',
|
data/spec/unit/run_spec.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
#!/usr/bin/env
|
1
|
+
#!/usr/bin/env rspec
|
2
2
|
#
|
3
3
|
# Created by Luke Kanies on 2007-11-1.
|
4
4
|
# Copyright (c) 2006. All rights reserved.
|
5
5
|
|
6
|
-
require
|
6
|
+
require 'spec_helper'
|
7
7
|
require 'puppet/simple_graph'
|
8
8
|
|
9
9
|
describe Puppet::SimpleGraph do
|
@@ -31,12 +31,6 @@ describe Puppet::SimpleGraph do
|
|
31
31
|
proc { @graph.to_dot_graph }.should_not raise_error
|
32
32
|
end
|
33
33
|
|
34
|
-
it "should always put its edges first when printing yaml" do
|
35
|
-
@graph = Puppet::SimpleGraph.new
|
36
|
-
@graph.add_edge(:one, :two)
|
37
|
-
@graph.to_yaml_properties[0].should == "@edges"
|
38
|
-
end
|
39
|
-
|
40
34
|
describe "when managing vertices" do
|
41
35
|
before do
|
42
36
|
@graph = Puppet::SimpleGraph.new
|
@@ -117,16 +111,31 @@ describe Puppet::SimpleGraph do
|
|
117
111
|
@graph.edge?(:one, :two).should be_true
|
118
112
|
end
|
119
113
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
end
|
114
|
+
describe "when retrieving edges between two nodes" do
|
115
|
+
it "should handle the case of nodes not in the graph" do
|
116
|
+
@graph.edges_between(:one, :two).should == []
|
117
|
+
end
|
125
118
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
119
|
+
it "should handle the case of nodes with no edges between them" do
|
120
|
+
@graph.add_vertex(:one)
|
121
|
+
@graph.add_vertex(:two)
|
122
|
+
@graph.edges_between(:one, :two).should == []
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should handle the case of nodes connected by a single edge" do
|
126
|
+
edge = Puppet::Relationship.new(:one, :two)
|
127
|
+
@graph.add_edge(edge)
|
128
|
+
@graph.edges_between(:one, :two).length.should == 1
|
129
|
+
@graph.edges_between(:one, :two)[0].should equal(edge)
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should handle the case of nodes connected by multiple edges" do
|
133
|
+
edge1 = Puppet::Relationship.new(:one, :two, :callback => :foo)
|
134
|
+
edge2 = Puppet::Relationship.new(:one, :two, :callback => :bar)
|
135
|
+
@graph.add_edge(edge1)
|
136
|
+
@graph.add_edge(edge2)
|
137
|
+
Set.new(@graph.edges_between(:one, :two)).should == Set.new([edge1, edge2])
|
138
|
+
end
|
130
139
|
end
|
131
140
|
|
132
141
|
it "should add the edge source as a vertex if it is not already" do
|
@@ -253,12 +262,12 @@ describe Puppet::SimpleGraph do
|
|
253
262
|
|
254
263
|
it "should retain labels on edges" do
|
255
264
|
@graph.add_edge(:one, :two, :callback => :awesome)
|
256
|
-
edge = @graph.reversal.
|
265
|
+
edge = @graph.reversal.edges_between(:two, :one)[0]
|
257
266
|
edge.label.should == {:callback => :awesome}
|
258
267
|
end
|
259
268
|
end
|
260
269
|
|
261
|
-
describe "when
|
270
|
+
describe "when reporting cycles in the graph" do
|
262
271
|
before do
|
263
272
|
@graph = Puppet::SimpleGraph.new
|
264
273
|
end
|
@@ -269,40 +278,127 @@ describe Puppet::SimpleGraph do
|
|
269
278
|
end
|
270
279
|
end
|
271
280
|
|
272
|
-
it "should sort the graph topologically" do
|
273
|
-
add_edges :a => :b, :b => :c
|
274
|
-
@graph.topsort.should == [:a, :b, :c]
|
275
|
-
end
|
276
|
-
|
277
281
|
it "should fail on two-vertex loops" do
|
278
282
|
add_edges :a => :b, :b => :a
|
279
|
-
proc { @graph.
|
283
|
+
proc { @graph.report_cycles_in_graph }.should raise_error(Puppet::Error)
|
280
284
|
end
|
281
285
|
|
282
286
|
it "should fail on multi-vertex loops" do
|
283
287
|
add_edges :a => :b, :b => :c, :c => :a
|
284
|
-
proc { @graph.
|
288
|
+
proc { @graph.report_cycles_in_graph }.should raise_error(Puppet::Error)
|
285
289
|
end
|
286
290
|
|
287
291
|
it "should fail when a larger tree contains a small cycle" do
|
288
292
|
add_edges :a => :b, :b => :a, :c => :a, :d => :c
|
289
|
-
proc { @graph.
|
293
|
+
proc { @graph.report_cycles_in_graph }.should raise_error(Puppet::Error)
|
290
294
|
end
|
291
295
|
|
292
296
|
it "should succeed on trees with no cycles" do
|
293
297
|
add_edges :a => :b, :b => :e, :c => :a, :d => :c
|
294
|
-
proc { @graph.
|
298
|
+
proc { @graph.report_cycles_in_graph }.should_not raise_error
|
295
299
|
end
|
296
300
|
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
@graph.
|
303
|
-
|
304
|
-
|
305
|
-
|
301
|
+
it "should produce the correct relationship text" do
|
302
|
+
add_edges :a => :b, :b => :a
|
303
|
+
# cycle detection starts from a or b randomly
|
304
|
+
# so we need to check for either ordering in the error message
|
305
|
+
want = %r{Found 1 dependency cycle:\n\((a => b => a|b => a => b)\)\nTry}
|
306
|
+
expect { @graph.report_cycles_in_graph }.to raise_error(Puppet::Error, want)
|
307
|
+
end
|
308
|
+
|
309
|
+
it "cycle discovery should be the minimum cycle for a simple graph" do
|
310
|
+
add_edges "a" => "b"
|
311
|
+
add_edges "b" => "a"
|
312
|
+
add_edges "b" => "c"
|
313
|
+
|
314
|
+
cycles = nil
|
315
|
+
expect { cycles = @graph.find_cycles_in_graph.sort }.should_not raise_error
|
316
|
+
cycles.should be == [["a", "b"]]
|
317
|
+
end
|
318
|
+
|
319
|
+
it "cycle discovery should handle two distinct cycles" do
|
320
|
+
add_edges "a" => "a1", "a1" => "a"
|
321
|
+
add_edges "b" => "b1", "b1" => "b"
|
322
|
+
|
323
|
+
cycles = nil
|
324
|
+
expect { cycles = @graph.find_cycles_in_graph.sort }.should_not raise_error
|
325
|
+
cycles.should be == [["a", "a1"], ["b", "b1"]]
|
326
|
+
end
|
327
|
+
|
328
|
+
it "cycle discovery should handle two cycles in a connected graph" do
|
329
|
+
add_edges "a" => "b", "b" => "c", "c" => "d"
|
330
|
+
add_edges "a" => "a1", "a1" => "a"
|
331
|
+
add_edges "c" => "c1", "c1" => "c2", "c2" => "c3", "c3" => "c"
|
332
|
+
|
333
|
+
cycles = nil
|
334
|
+
expect { cycles = @graph.find_cycles_in_graph.sort }.should_not raise_error
|
335
|
+
cycles.should be == [%w{a a1}, %w{c c1 c2 c3}]
|
336
|
+
end
|
337
|
+
|
338
|
+
it "cycle discovery should handle a complicated cycle" do
|
339
|
+
add_edges "a" => "b", "b" => "c"
|
340
|
+
add_edges "a" => "c"
|
341
|
+
add_edges "c" => "c1", "c1" => "a"
|
342
|
+
add_edges "c" => "c2", "c2" => "b"
|
343
|
+
|
344
|
+
cycles = nil
|
345
|
+
expect { cycles = @graph.find_cycles_in_graph.sort }.should_not raise_error
|
346
|
+
cycles.should be == [%w{a b c c1 c2}]
|
347
|
+
end
|
348
|
+
|
349
|
+
it "cycle discovery should not fail with large data sets" do
|
350
|
+
limit = 3000
|
351
|
+
(1..(limit - 1)).each do |n| add_edges n.to_s => (n+1).to_s end
|
352
|
+
|
353
|
+
cycles = nil
|
354
|
+
expect { cycles = @graph.find_cycles_in_graph.sort }.should_not raise_error
|
355
|
+
cycles.should be == []
|
356
|
+
end
|
357
|
+
|
358
|
+
it "path finding should work with a simple cycle" do
|
359
|
+
add_edges "a" => "b", "b" => "c", "c" => "a"
|
360
|
+
|
361
|
+
cycles = @graph.find_cycles_in_graph.sort
|
362
|
+
paths = @graph.paths_in_cycle(cycles.first, 100)
|
363
|
+
paths.should be == [%w{a b c a}]
|
364
|
+
end
|
365
|
+
|
366
|
+
it "path finding should work with two independent cycles" do
|
367
|
+
add_edges "a" => "b1"
|
368
|
+
add_edges "a" => "b2"
|
369
|
+
add_edges "b1" => "a", "b2" => "a"
|
370
|
+
|
371
|
+
cycles = @graph.find_cycles_in_graph.sort
|
372
|
+
cycles.length.should be == 1
|
373
|
+
|
374
|
+
paths = @graph.paths_in_cycle(cycles.first, 100)
|
375
|
+
paths.sort.should be == [%w{a b1 a}, %w{a b2 a}]
|
376
|
+
end
|
377
|
+
|
378
|
+
it "path finding should prefer shorter paths in cycles" do
|
379
|
+
add_edges "a" => "b", "b" => "c", "c" => "a"
|
380
|
+
add_edges "b" => "a"
|
381
|
+
|
382
|
+
cycles = @graph.find_cycles_in_graph.sort
|
383
|
+
cycles.length.should be == 1
|
384
|
+
|
385
|
+
paths = @graph.paths_in_cycle(cycles.first, 100)
|
386
|
+
paths.should be == [%w{a b a}, %w{a b c a}]
|
387
|
+
end
|
388
|
+
|
389
|
+
it "path finding should respect the max_path value" do
|
390
|
+
(1..20).each do |n| add_edges "a" => "b#{n}", "b#{n}" => "a" end
|
391
|
+
|
392
|
+
cycles = @graph.find_cycles_in_graph.sort
|
393
|
+
cycles.length.should be == 1
|
394
|
+
|
395
|
+
(1..20).each do |n|
|
396
|
+
paths = @graph.paths_in_cycle(cycles.first, n)
|
397
|
+
paths.length.should be == n
|
398
|
+
end
|
399
|
+
|
400
|
+
paths = @graph.paths_in_cycle(cycles.first, 21)
|
401
|
+
paths.length.should be == 20
|
306
402
|
end
|
307
403
|
end
|
308
404
|
|
@@ -345,7 +441,7 @@ describe Puppet::SimpleGraph do
|
|
345
441
|
end
|
346
442
|
end
|
347
443
|
|
348
|
-
describe "when matching edges" do
|
444
|
+
describe "when matching edges", :'fails_on_ruby_1.9.2' => true do
|
349
445
|
before do
|
350
446
|
@graph = Puppet::SimpleGraph.new
|
351
447
|
@event = Puppet::Transaction::Event.new(:name => :yay, :resource => "a")
|
@@ -409,7 +505,7 @@ describe Puppet::SimpleGraph do
|
|
409
505
|
|
410
506
|
require 'puppet/util/graph'
|
411
507
|
|
412
|
-
class Container
|
508
|
+
class Container < Puppet::Type::Component
|
413
509
|
include Puppet::Util::Graph
|
414
510
|
include Enumerable
|
415
511
|
attr_accessor :name
|
@@ -429,8 +525,13 @@ describe Puppet::SimpleGraph do
|
|
429
525
|
def to_s
|
430
526
|
@name
|
431
527
|
end
|
528
|
+
|
529
|
+
def ref
|
530
|
+
"Container[#{self}]"
|
531
|
+
end
|
432
532
|
end
|
433
533
|
|
534
|
+
require "puppet/resource/catalog"
|
434
535
|
describe "when splicing the graph" do
|
435
536
|
def container_graph
|
436
537
|
@one = Container.new("one", %w{a b})
|
@@ -439,17 +540,25 @@ describe Puppet::SimpleGraph do
|
|
439
540
|
@middle = Container.new("middle", ["e", "f", @two])
|
440
541
|
@top = Container.new("top", ["g", "h", @middle, @one, @three])
|
441
542
|
@empty = Container.new("empty", [])
|
442
|
-
|
543
|
+
|
443
544
|
@whit = Puppet::Type.type(:whit)
|
444
545
|
@stage = Puppet::Type.type(:stage).new(:name => "foo")
|
445
546
|
|
446
|
-
@contgraph = @top.to_graph
|
547
|
+
@contgraph = @top.to_graph(Puppet::Resource::Catalog.new)
|
447
548
|
|
448
549
|
# We have to add the container to the main graph, else it won't
|
449
550
|
# be spliced in the dependency graph.
|
450
551
|
@contgraph.add_vertex(@empty)
|
451
552
|
end
|
452
553
|
|
554
|
+
def containers
|
555
|
+
@contgraph.vertices.select { |x| !x.is_a? String }
|
556
|
+
end
|
557
|
+
|
558
|
+
def contents_of(x)
|
559
|
+
@contgraph.direct_dependents_of(x)
|
560
|
+
end
|
561
|
+
|
453
562
|
def dependency_graph
|
454
563
|
@depgraph = Puppet::SimpleGraph.new
|
455
564
|
@contgraph.vertices.each do |v|
|
@@ -458,13 +567,34 @@ describe Puppet::SimpleGraph do
|
|
458
567
|
|
459
568
|
# We have to specify a relationship to our empty container, else it
|
460
569
|
# never makes it into the dep graph in the first place.
|
461
|
-
{@one => @two, "f" => "c", "h" => @middle, "c" => @empty}
|
570
|
+
@explicit_dependencies = {@one => @two, "f" => "c", "h" => @middle, "c" => @empty}
|
571
|
+
@explicit_dependencies.each do |source, target|
|
462
572
|
@depgraph.add_edge(source, target, :callback => :refresh)
|
463
573
|
end
|
464
574
|
end
|
465
575
|
|
466
576
|
def splice
|
467
|
-
@
|
577
|
+
@contgraph.splice!(@depgraph)
|
578
|
+
end
|
579
|
+
|
580
|
+
def whit_called(name)
|
581
|
+
x = @depgraph.vertices.find { |v| v.is_a?(@whit) && v.name =~ /#{Regexp.escape(name)}/ }
|
582
|
+
x.should_not be_nil
|
583
|
+
def x.to_s
|
584
|
+
"Whit[#{name}]"
|
585
|
+
end
|
586
|
+
def x.inspect
|
587
|
+
to_s
|
588
|
+
end
|
589
|
+
x
|
590
|
+
end
|
591
|
+
|
592
|
+
def admissible_sentinal_of(x)
|
593
|
+
@depgraph.vertex?(x) ? x : whit_called("admissible_#{x.ref}")
|
594
|
+
end
|
595
|
+
|
596
|
+
def completed_sentinal_of(x)
|
597
|
+
@depgraph.vertex?(x) ? x : whit_called("completed_#{x.ref}")
|
468
598
|
end
|
469
599
|
|
470
600
|
before do
|
@@ -473,63 +603,87 @@ describe Puppet::SimpleGraph do
|
|
473
603
|
splice
|
474
604
|
end
|
475
605
|
|
476
|
-
# This is the real heart of splicing -- replacing all containers in
|
477
|
-
#
|
478
|
-
#
|
606
|
+
# This is the real heart of splicing -- replacing all containers X in our
|
607
|
+
# relationship graph with a pair of whits { admissible_X and completed_X }
|
608
|
+
# such that that
|
609
|
+
#
|
610
|
+
# 0) completed_X depends on admissible_X
|
611
|
+
# 1) contents of X each depend on admissible_X
|
612
|
+
# 2) completed_X depends on each on the contents of X
|
613
|
+
# 3) everything which depended on X depends on completed_X
|
614
|
+
# 4) admissible_X depends on everything X depended on
|
615
|
+
# 5) the containers and their edges must be removed
|
616
|
+
#
|
617
|
+
# Note that this requires attention to the possible case of containers
|
618
|
+
# which contain or depend on other containers.
|
619
|
+
#
|
620
|
+
# Point by point:
|
621
|
+
|
622
|
+
# 0) completed_X depends on admissible_X
|
623
|
+
#
|
624
|
+
it "every container's completed sentinal should depend on its admissible sentinal" do
|
625
|
+
containers.each { |container|
|
626
|
+
@depgraph.path_between(admissible_sentinal_of(container),completed_sentinal_of(container)).should be
|
627
|
+
}
|
628
|
+
end
|
629
|
+
|
630
|
+
# 1) contents of X each depend on admissible_X
|
631
|
+
#
|
632
|
+
it "all contained objects should depend on their container's admissible sentinal" do
|
633
|
+
containers.each { |container|
|
634
|
+
contents_of(container).each { |leaf|
|
635
|
+
@depgraph.should be_edge(admissible_sentinal_of(container),admissible_sentinal_of(leaf))
|
636
|
+
}
|
637
|
+
}
|
638
|
+
end
|
639
|
+
|
640
|
+
# 2) completed_X depends on each on the contents of X
|
641
|
+
#
|
642
|
+
it "completed sentinals should depend on their container's contents" do
|
643
|
+
containers.each { |container|
|
644
|
+
contents_of(container).each { |leaf|
|
645
|
+
@depgraph.should be_edge(completed_sentinal_of(leaf),completed_sentinal_of(container))
|
646
|
+
}
|
647
|
+
}
|
648
|
+
end
|
649
|
+
|
650
|
+
#
|
651
|
+
# 3) everything which depended on X depends on completed_X
|
652
|
+
|
653
|
+
#
|
654
|
+
# 4) admissible_X depends on everything X depended on
|
655
|
+
|
656
|
+
# 5) the containers and their edges must be removed
|
657
|
+
#
|
479
658
|
it "should remove all Container objects from the dependency graph" do
|
480
659
|
@depgraph.vertices.find_all { |v| v.is_a?(Container) }.should be_empty
|
481
660
|
end
|
482
661
|
|
483
|
-
# This is a bit hideous, but required to make stages work with relationships - they're
|
484
|
-
# the top of the graph.
|
485
662
|
it "should remove all Stage resources from the dependency graph" do
|
486
663
|
@depgraph.vertices.find_all { |v| v.is_a?(Puppet::Type.type(:stage)) }.should be_empty
|
487
664
|
end
|
488
665
|
|
489
|
-
it "should add container relationships to contained objects" do
|
490
|
-
@contgraph.leaves(@middle).each do |leaf|
|
491
|
-
@depgraph.should be_edge("h", leaf)
|
492
|
-
end
|
493
|
-
end
|
494
|
-
|
495
|
-
it "should explode container-to-container relationships, making edges between all respective contained objects" do
|
496
|
-
@one.each do |oobj|
|
497
|
-
@two.each do |tobj|
|
498
|
-
@depgraph.should be_edge(oobj, tobj)
|
499
|
-
end
|
500
|
-
end
|
501
|
-
end
|
502
|
-
|
503
|
-
it "should contain a whit-resource to mark the place held by the empty container" do
|
504
|
-
@depgraph.vertices.find_all { |v| v.is_a?(@whit) }.length.should == 1
|
505
|
-
end
|
506
|
-
|
507
|
-
it "should replace edges to empty containers with edges to their residual whit" do
|
508
|
-
emptys_whit = @depgraph.vertices.find_all { |v| v.is_a?(@whit) }.first
|
509
|
-
@depgraph.should be_edge("c", emptys_whit)
|
510
|
-
end
|
511
|
-
|
512
666
|
it "should no longer contain anything but the non-container objects" do
|
513
667
|
@depgraph.vertices.find_all { |v| ! v.is_a?(String) and ! v.is_a?(@whit)}.should be_empty
|
514
668
|
end
|
515
669
|
|
516
|
-
it "should
|
517
|
-
@
|
518
|
-
|
519
|
-
|
670
|
+
it "should retain labels on non-containment edges" do
|
671
|
+
@explicit_dependencies.each { |f,t|
|
672
|
+
@depgraph.edges_between(completed_sentinal_of(f),admissible_sentinal_of(t))[0].label.should == {:callback => :refresh}
|
673
|
+
}
|
520
674
|
end
|
521
675
|
|
522
676
|
it "should not add labels to edges that have none" do
|
523
677
|
@depgraph.add_edge(@two, @three)
|
524
678
|
splice
|
525
|
-
@depgraph.
|
679
|
+
@depgraph.path_between("c", "i").any? {|segment| segment.all? {|e| e.label == {} }}.should be
|
526
680
|
end
|
527
681
|
|
528
682
|
it "should copy labels over edges that have none" do
|
529
683
|
@depgraph.add_edge("c", @three, {:callback => :refresh})
|
530
684
|
splice
|
531
685
|
# And make sure the label got copied.
|
532
|
-
@depgraph.
|
686
|
+
@depgraph.path_between("c", "i").flatten.select {|e| e.label == {:callback => :refresh} }.should_not be_empty
|
533
687
|
end
|
534
688
|
|
535
689
|
it "should not replace a label with a nil label" do
|
@@ -537,7 +691,7 @@ describe Puppet::SimpleGraph do
|
|
537
691
|
@depgraph.add_edge(@middle, @three)
|
538
692
|
@depgraph.add_edge("c", @three, {:callback => :refresh})
|
539
693
|
splice
|
540
|
-
@depgraph.
|
694
|
+
@depgraph.path_between("c","i").flatten.select {|e| e.label == {:callback => :refresh} }.should_not be_empty
|
541
695
|
end
|
542
696
|
|
543
697
|
it "should copy labels to all created edges" do
|
@@ -546,9 +700,209 @@ describe Puppet::SimpleGraph do
|
|
546
700
|
splice
|
547
701
|
@three.each do |child|
|
548
702
|
edge = Puppet::Relationship.new("c", child)
|
549
|
-
@depgraph.
|
550
|
-
|
703
|
+
(path = @depgraph.path_between(edge.source, edge.target)).should be
|
704
|
+
path.should_not be_empty
|
705
|
+
path.flatten.select {|e| e.label == {:callback => :refresh} }.should_not be_empty
|
706
|
+
end
|
707
|
+
end
|
708
|
+
end
|
709
|
+
|
710
|
+
it "should serialize to YAML using the old format by default" do
|
711
|
+
Puppet::SimpleGraph.use_new_yaml_format.should == false
|
712
|
+
end
|
713
|
+
|
714
|
+
describe "(yaml tests)" do
|
715
|
+
def empty_graph(graph)
|
716
|
+
end
|
717
|
+
|
718
|
+
def one_vertex_graph(graph)
|
719
|
+
graph.add_vertex(:a)
|
720
|
+
end
|
721
|
+
|
722
|
+
def graph_without_edges(graph)
|
723
|
+
[:a, :b, :c].each { |x| graph.add_vertex(x) }
|
724
|
+
end
|
725
|
+
|
726
|
+
def one_edge_graph(graph)
|
727
|
+
graph.add_edge(:a, :b)
|
728
|
+
end
|
729
|
+
|
730
|
+
def many_edge_graph(graph)
|
731
|
+
graph.add_edge(:a, :b)
|
732
|
+
graph.add_edge(:a, :c)
|
733
|
+
graph.add_edge(:b, :d)
|
734
|
+
graph.add_edge(:c, :d)
|
735
|
+
end
|
736
|
+
|
737
|
+
def labeled_edge_graph(graph)
|
738
|
+
graph.add_edge(:a, :b, :callback => :foo, :event => :bar)
|
739
|
+
end
|
740
|
+
|
741
|
+
def overlapping_edge_graph(graph)
|
742
|
+
graph.add_edge(:a, :b, :callback => :foo, :event => :bar)
|
743
|
+
graph.add_edge(:a, :b, :callback => :biz, :event => :baz)
|
744
|
+
end
|
745
|
+
|
746
|
+
def self.all_test_graphs
|
747
|
+
[:empty_graph, :one_vertex_graph, :graph_without_edges, :one_edge_graph, :many_edge_graph, :labeled_edge_graph,
|
748
|
+
:overlapping_edge_graph]
|
749
|
+
end
|
750
|
+
|
751
|
+
def object_ids(enumerable)
|
752
|
+
# Return a sorted list of the object id's of the elements of an
|
753
|
+
# enumerable.
|
754
|
+
enumerable.collect { |x| x.object_id }.sort
|
755
|
+
end
|
756
|
+
|
757
|
+
def graph_to_yaml(graph, which_format)
|
758
|
+
previous_use_new_yaml_format = Puppet::SimpleGraph.use_new_yaml_format
|
759
|
+
Puppet::SimpleGraph.use_new_yaml_format = (which_format == :new)
|
760
|
+
ZAML.dump(graph)
|
761
|
+
ensure
|
762
|
+
Puppet::SimpleGraph.use_new_yaml_format = previous_use_new_yaml_format
|
763
|
+
end
|
764
|
+
|
765
|
+
# Test serialization of graph to YAML.
|
766
|
+
[:old, :new].each do |which_format|
|
767
|
+
all_test_graphs.each do |graph_to_test|
|
768
|
+
it "should be able to serialize #{graph_to_test} to YAML (#{which_format} format)" do
|
769
|
+
graph = Puppet::SimpleGraph.new
|
770
|
+
send(graph_to_test, graph)
|
771
|
+
yaml_form = graph_to_yaml(graph, which_format)
|
772
|
+
|
773
|
+
# Hack the YAML so that objects in the Puppet namespace get
|
774
|
+
# changed to YAML::DomainType objects. This lets us inspect
|
775
|
+
# the serialized objects easily without invoking any
|
776
|
+
# yaml_initialize hooks.
|
777
|
+
yaml_form.gsub!('!ruby/object:Puppet::', '!hack/object:Puppet::')
|
778
|
+
serialized_object = YAML.load(yaml_form)
|
779
|
+
|
780
|
+
# Check that the object contains instance variables @edges and
|
781
|
+
# @vertices only. @reversal is also permitted, but we don't
|
782
|
+
# check it, because it is going to be phased out.
|
783
|
+
serialized_object.type_id.should == 'object:Puppet::SimpleGraph'
|
784
|
+
serialized_object.value.keys.reject { |x| x == 'reversal' }.sort.should == ['edges', 'vertices']
|
785
|
+
|
786
|
+
# Check edges by forming a set of tuples (source, target,
|
787
|
+
# callback, event) based on the graph and the YAML and make sure
|
788
|
+
# they match.
|
789
|
+
edges = serialized_object.value['edges']
|
790
|
+
edges.should be_a(Array)
|
791
|
+
expected_edge_tuples = graph.edges.collect { |edge| [edge.source, edge.target, edge.callback, edge.event] }
|
792
|
+
actual_edge_tuples = edges.collect do |edge|
|
793
|
+
edge.type_id.should == 'object:Puppet::Relationship'
|
794
|
+
%w{source target}.each { |x| edge.value.keys.should include(x) }
|
795
|
+
edge.value.keys.each { |x| ['source', 'target', 'callback', 'event'].should include(x) }
|
796
|
+
%w{source target callback event}.collect { |x| edge.value[x] }
|
797
|
+
end
|
798
|
+
Set.new(actual_edge_tuples).should == Set.new(expected_edge_tuples)
|
799
|
+
actual_edge_tuples.length.should == expected_edge_tuples.length
|
800
|
+
|
801
|
+
# Check vertices one by one.
|
802
|
+
vertices = serialized_object.value['vertices']
|
803
|
+
if which_format == :old
|
804
|
+
vertices.should be_a(Hash)
|
805
|
+
Set.new(vertices.keys).should == Set.new(graph.vertices)
|
806
|
+
vertices.each do |key, value|
|
807
|
+
value.type_id.should == 'object:Puppet::SimpleGraph::VertexWrapper'
|
808
|
+
value.value.keys.sort.should == %w{adjacencies vertex}
|
809
|
+
value.value['vertex'].should equal(key)
|
810
|
+
adjacencies = value.value['adjacencies']
|
811
|
+
adjacencies.should be_a(Hash)
|
812
|
+
Set.new(adjacencies.keys).should == Set.new([:in, :out])
|
813
|
+
[:in, :out].each do |direction|
|
814
|
+
adjacencies[direction].should be_a(Hash)
|
815
|
+
expected_adjacent_vertices = Set.new(graph.adjacent(key, :direction => direction, :type => :vertices))
|
816
|
+
Set.new(adjacencies[direction].keys).should == expected_adjacent_vertices
|
817
|
+
adjacencies[direction].each do |adj_key, adj_value|
|
818
|
+
# Since we already checked edges, just check consistency
|
819
|
+
# with edges.
|
820
|
+
desired_source = direction == :in ? adj_key : key
|
821
|
+
desired_target = direction == :in ? key : adj_key
|
822
|
+
expected_edges = edges.select do |edge|
|
823
|
+
edge.value['source'] == desired_source && edge.value['target'] == desired_target
|
824
|
+
end
|
825
|
+
adj_value.should be_a(Set)
|
826
|
+
if object_ids(adj_value) != object_ids(expected_edges)
|
827
|
+
raise "For vertex #{key.inspect}, direction #{direction.inspect}: expected adjacencies #{expected_edges.inspect} but got #{adj_value.inspect}"
|
828
|
+
end
|
829
|
+
end
|
830
|
+
end
|
831
|
+
end
|
832
|
+
else
|
833
|
+
vertices.should be_a(Array)
|
834
|
+
Set.new(vertices).should == Set.new(graph.vertices)
|
835
|
+
vertices.length.should == graph.vertices.length
|
836
|
+
end
|
837
|
+
end
|
838
|
+
end
|
839
|
+
|
840
|
+
# Test deserialization of graph from YAML. This presumes the
|
841
|
+
# correctness of serialization to YAML, which has already been
|
842
|
+
# tested.
|
843
|
+
all_test_graphs.each do |graph_to_test|
|
844
|
+
it "should be able to deserialize #{graph_to_test} from YAML (#{which_format} format)" do
|
845
|
+
reference_graph = Puppet::SimpleGraph.new
|
846
|
+
send(graph_to_test, reference_graph)
|
847
|
+
yaml_form = graph_to_yaml(reference_graph, which_format)
|
848
|
+
recovered_graph = YAML.load(yaml_form)
|
849
|
+
|
850
|
+
# Test that the recovered vertices match the vertices in the
|
851
|
+
# reference graph.
|
852
|
+
expected_vertices = reference_graph.vertices.to_a
|
853
|
+
recovered_vertices = recovered_graph.vertices.to_a
|
854
|
+
Set.new(recovered_vertices).should == Set.new(expected_vertices)
|
855
|
+
recovered_vertices.length.should == expected_vertices.length
|
856
|
+
|
857
|
+
# Test that the recovered edges match the edges in the
|
858
|
+
# reference graph.
|
859
|
+
expected_edge_tuples = reference_graph.edges.collect do |edge|
|
860
|
+
[edge.source, edge.target, edge.callback, edge.event]
|
861
|
+
end
|
862
|
+
recovered_edge_tuples = recovered_graph.edges.collect do |edge|
|
863
|
+
[edge.source, edge.target, edge.callback, edge.event]
|
864
|
+
end
|
865
|
+
Set.new(recovered_edge_tuples).should == Set.new(expected_edge_tuples)
|
866
|
+
recovered_edge_tuples.length.should == expected_edge_tuples.length
|
867
|
+
|
868
|
+
# We ought to test that the recovered graph is self-consistent
|
869
|
+
# too. But we're not going to bother with that yet because
|
870
|
+
# the internal representation of the graph is about to change.
|
871
|
+
end
|
872
|
+
end
|
873
|
+
|
874
|
+
it "should be able to serialize a graph where the vertices contain backreferences to the graph (#{which_format} format)" do
|
875
|
+
reference_graph = Puppet::SimpleGraph.new
|
876
|
+
vertex = Object.new
|
877
|
+
vertex.instance_eval { @graph = reference_graph }
|
878
|
+
reference_graph.add_edge(vertex, :other_vertex)
|
879
|
+
yaml_form = graph_to_yaml(reference_graph, which_format)
|
880
|
+
recovered_graph = YAML.load(yaml_form)
|
881
|
+
|
882
|
+
recovered_graph.vertices.length.should == 2
|
883
|
+
recovered_vertex = recovered_graph.vertices.reject { |x| x.is_a?(Symbol) }[0]
|
884
|
+
recovered_vertex.instance_eval { @graph }.should equal(recovered_graph)
|
885
|
+
recovered_graph.edges.length.should == 1
|
886
|
+
recovered_edge = recovered_graph.edges[0]
|
887
|
+
recovered_edge.source.should equal(recovered_vertex)
|
888
|
+
recovered_edge.target.should == :other_vertex
|
889
|
+
end
|
890
|
+
end
|
891
|
+
|
892
|
+
it "should serialize properly when used as a base class" do
|
893
|
+
class Puppet::TestDerivedClass < Puppet::SimpleGraph
|
894
|
+
attr_accessor :foo
|
551
895
|
end
|
896
|
+
derived = Puppet::TestDerivedClass.new
|
897
|
+
derived.add_edge(:a, :b)
|
898
|
+
derived.foo = 1234
|
899
|
+
recovered_derived = YAML.load(YAML.dump(derived))
|
900
|
+
recovered_derived.class.should equal(Puppet::TestDerivedClass)
|
901
|
+
recovered_derived.edges.length.should == 1
|
902
|
+
recovered_derived.edges[0].source.should == :a
|
903
|
+
recovered_derived.edges[0].target.should == :b
|
904
|
+
recovered_derived.vertices.length.should == 2
|
905
|
+
recovered_derived.foo.should == 1234
|
552
906
|
end
|
553
907
|
end
|
554
908
|
end
|