puppet 0.18.4 → 0.22.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +288 -0
- data/README +2 -2
- data/Rakefile +78 -5
- data/bin/puppet +28 -36
- data/bin/puppetca +81 -38
- data/bin/puppetd +65 -62
- data/bin/puppetdoc +409 -140
- data/bin/puppetmasterd +59 -47
- data/bin/puppetrun +38 -23
- data/conf/freebsd/puppetd +26 -0
- data/conf/freebsd/puppetmasterd +26 -0
- data/conf/gentoo/conf.d/puppet +5 -0
- data/conf/gentoo/conf.d/puppetmaster +12 -0
- data/conf/gentoo/init.d/puppet +38 -0
- data/conf/gentoo/init.d/puppetmaster +50 -0
- data/conf/gentoo/puppet/fileserver.conf +12 -0
- data/conf/gentoo/puppet/puppetca.conf +29 -0
- data/conf/gentoo/puppet/puppetd.conf +29 -0
- data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
- data/conf/redhat/client.init +10 -5
- data/conf/redhat/client.sysconfig +1 -1
- data/conf/redhat/fileserver.conf +2 -2
- data/conf/redhat/logrotate +1 -1
- data/conf/redhat/no-lockdir.patch +13 -0
- data/conf/redhat/puppet.spec +65 -8
- data/conf/redhat/puppetd.conf +0 -4
- data/conf/redhat/server.init +3 -6
- data/conf/solaris/pkginfo +1 -1
- data/conf/solaris/smf/svc-puppetd +2 -2
- data/conf/suse/client.init +142 -0
- data/conf/suse/puppet.spec +221 -0
- data/conf/suse/server.init +162 -0
- data/examples/code/mac_automount.pp +16 -0
- data/examples/root/bin/sleeper +3 -5
- data/examples/root/etc/init.d/sleeper +8 -2
- data/examples/root/etc/puppet/fileserver.conf +12 -2
- data/examples/root/etc/puppet/namespaceauth.conf +20 -0
- data/examples/root/etc/puppet/puppetd.conf +4 -0
- data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
- data/examples/root/etc/puppet/tagmail.conf +1 -0
- data/ext/emacs/puppet-mode.el +46 -1
- data/ext/logcheck/puppet +15 -0
- data/ext/module_puppet +15 -23
- data/ext/vim/puppet.vim +4 -2
- data/install.rb +2 -1
- data/lib/puppet.rb +76 -207
- data/lib/puppet/configuration.rb +331 -0
- data/lib/puppet/daemon.rb +63 -246
- data/lib/puppet/dsl.rb +371 -0
- data/lib/puppet/element.rb +8 -26
- data/lib/puppet/error.rb +54 -0
- data/lib/puppet/event.rb +8 -243
- data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
- data/lib/puppet/external/event-loop.rb +1 -0
- data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
- data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
- data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
- data/lib/puppet/external/gratr.rb +33 -0
- data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
- data/lib/puppet/external/gratr/base.rb +34 -0
- data/lib/puppet/external/gratr/biconnected.rb +116 -0
- data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
- data/lib/puppet/external/gratr/common.rb +73 -0
- data/lib/puppet/external/gratr/comparability.rb +92 -0
- data/lib/puppet/external/gratr/digraph.rb +116 -0
- data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
- data/lib/puppet/external/gratr/dot.rb +90 -0
- data/lib/puppet/external/gratr/edge.rb +145 -0
- data/lib/puppet/external/gratr/graph.rb +303 -0
- data/lib/puppet/external/gratr/graph_api.rb +83 -0
- data/lib/puppet/external/gratr/import.rb +44 -0
- data/lib/puppet/external/gratr/labels.rb +90 -0
- data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
- data/lib/puppet/external/gratr/rdot.rb +327 -0
- data/lib/puppet/external/gratr/search.rb +409 -0
- data/lib/puppet/external/gratr/strong_components.rb +127 -0
- data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
- data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
- data/lib/puppet/feature/base.rb +20 -0
- data/lib/puppet/feature/rails.rb +52 -0
- data/lib/puppet/metatype/attributes.rb +719 -0
- data/lib/puppet/metatype/closure.rb +111 -0
- data/lib/puppet/metatype/container.rb +94 -0
- data/lib/puppet/metatype/evaluation.rb +118 -0
- data/lib/puppet/metatype/instances.rb +261 -0
- data/lib/puppet/metatype/manager.rb +169 -0
- data/lib/puppet/metatype/metaparams.rb +409 -0
- data/lib/puppet/metatype/providers.rb +260 -0
- data/lib/puppet/metatype/relationships.rb +116 -0
- data/lib/puppet/metatype/schedules.rb +39 -0
- data/lib/puppet/metatype/tags.rb +39 -0
- data/lib/puppet/modules.rb +113 -0
- data/lib/puppet/network/authconfig.rb +168 -0
- data/lib/puppet/network/authorization.rb +84 -0
- data/lib/puppet/network/authstore.rb +293 -0
- data/lib/puppet/network/client.rb +187 -0
- data/lib/puppet/network/client/ca.rb +56 -0
- data/lib/puppet/network/client/dipper.rb +81 -0
- data/lib/puppet/network/client/file.rb +7 -0
- data/lib/puppet/network/client/logger.rb +6 -0
- data/lib/puppet/network/client/master.rb +644 -0
- data/lib/puppet/{client → network/client}/proxy.rb +3 -3
- data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
- data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
- data/lib/puppet/network/client/runner.rb +13 -0
- data/lib/puppet/network/client/status.rb +5 -0
- data/lib/puppet/network/client_request.rb +32 -0
- data/lib/puppet/network/handler.rb +33 -0
- data/lib/puppet/{server → network/handler}/ca.rb +5 -6
- data/lib/puppet/network/handler/filebucket.rb +180 -0
- data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
- data/lib/puppet/{server → network/handler}/logger.rb +3 -5
- data/lib/puppet/{server → network/handler}/master.rb +42 -8
- data/lib/puppet/network/handler/report.rb +158 -0
- data/lib/puppet/network/handler/resource.rb +190 -0
- data/lib/puppet/{server → network/handler}/runner.rb +17 -18
- data/lib/puppet/network/handler/status.rb +13 -0
- data/lib/puppet/network/rights.rb +74 -0
- data/lib/puppet/network/server.rb +5 -0
- data/lib/puppet/network/server/mongrel.rb +138 -0
- data/lib/puppet/network/server/webrick.rb +153 -0
- data/lib/puppet/network/xmlrpc/client.rb +129 -0
- data/lib/puppet/network/xmlrpc/processor.rb +91 -0
- data/lib/puppet/network/xmlrpc/server.rb +20 -0
- data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
- data/lib/puppet/parameter.rb +390 -346
- data/lib/puppet/parser/ast.rb +116 -147
- data/lib/puppet/parser/ast/astarray.rb +17 -33
- data/lib/puppet/parser/ast/branch.rb +2 -0
- data/lib/puppet/parser/ast/caseopt.rb +7 -12
- data/lib/puppet/parser/ast/casestatement.rb +23 -32
- data/lib/puppet/parser/ast/collection.rb +19 -80
- data/lib/puppet/parser/ast/collexpr.rb +81 -0
- data/lib/puppet/parser/ast/component.rb +160 -89
- data/lib/puppet/parser/ast/else.rb +30 -0
- data/lib/puppet/parser/ast/function.rb +9 -2
- data/lib/puppet/parser/ast/hostclass.rb +47 -131
- data/lib/puppet/parser/ast/ifstatement.rb +43 -0
- data/lib/puppet/parser/ast/leaf.rb +10 -21
- data/lib/puppet/parser/ast/node.rb +32 -79
- data/lib/puppet/parser/ast/resourcedef.rb +222 -0
- data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
- data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
- data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
- data/lib/puppet/parser/ast/resourceref.rb +44 -0
- data/lib/puppet/parser/ast/selector.rb +16 -8
- data/lib/puppet/parser/ast/tag.rb +3 -1
- data/lib/puppet/parser/ast/vardef.rb +8 -12
- data/lib/puppet/parser/collector.rb +181 -0
- data/lib/puppet/parser/functions.rb +191 -36
- data/lib/puppet/parser/interpreter.rb +802 -380
- data/lib/puppet/parser/lexer.rb +86 -19
- data/lib/puppet/parser/parser.rb +1123 -960
- data/lib/puppet/parser/resource.rb +353 -0
- data/lib/puppet/parser/resource/param.rb +57 -0
- data/lib/puppet/parser/resource/reference.rb +71 -0
- data/lib/puppet/parser/scope.rb +573 -1000
- data/lib/puppet/parser/templatewrapper.rb +54 -0
- data/lib/puppet/pgraph.rb +208 -0
- data/lib/puppet/propertychange.rb +143 -0
- data/lib/puppet/provider.rb +302 -0
- data/lib/puppet/provider/cron/crontab.rb +187 -0
- data/lib/puppet/provider/group/groupadd.rb +29 -0
- data/lib/puppet/provider/group/netinfo.rb +12 -0
- data/lib/puppet/provider/group/pw.rb +31 -0
- data/lib/puppet/provider/host/netinfo.rb +18 -0
- data/lib/puppet/provider/host/parsed.rb +73 -0
- data/lib/puppet/provider/mount.rb +57 -0
- data/lib/puppet/provider/mount/netinfo.rb +38 -0
- data/lib/puppet/provider/mount/parsed.rb +37 -0
- data/lib/puppet/provider/nameservice.rb +344 -0
- data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
- data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
- data/lib/puppet/provider/nameservice/pw.rb +22 -0
- data/lib/puppet/provider/package/apple.rb +53 -0
- data/lib/puppet/provider/package/apt.rb +119 -0
- data/lib/puppet/provider/package/aptitude.rb +30 -0
- data/lib/puppet/provider/package/aptrpm.rb +79 -0
- data/lib/puppet/provider/package/blastwave.rb +114 -0
- data/lib/puppet/provider/package/darwinport.rb +88 -0
- data/lib/puppet/provider/package/dpkg.rb +109 -0
- data/lib/puppet/provider/package/freebsd.rb +43 -0
- data/lib/puppet/provider/package/gem.rb +104 -0
- data/lib/puppet/provider/package/openbsd.rb +93 -0
- data/lib/puppet/provider/package/pkgdmg.rb +119 -0
- data/lib/puppet/provider/package/portage.rb +112 -0
- data/lib/puppet/provider/package/ports.rb +94 -0
- data/lib/puppet/provider/package/rpm.rb +125 -0
- data/lib/puppet/provider/package/rug.rb +53 -0
- data/lib/puppet/provider/package/sun.rb +168 -0
- data/lib/puppet/provider/package/sunfreeware.rb +9 -0
- data/lib/puppet/provider/package/up2date.rb +45 -0
- data/lib/puppet/provider/package/yum.rb +54 -0
- data/lib/puppet/provider/parsedfile.rb +342 -0
- data/lib/puppet/provider/port/parsed.rb +174 -0
- data/lib/puppet/provider/service/base.rb +136 -0
- data/lib/puppet/provider/service/debian.rb +32 -0
- data/lib/puppet/provider/service/gentoo.rb +49 -0
- data/lib/puppet/{type → provider}/service/init.rb +42 -40
- data/lib/puppet/provider/service/redhat.rb +59 -0
- data/lib/puppet/{type → provider}/service/smf.rb +24 -13
- data/lib/puppet/provider/sshkey/parsed.rb +36 -0
- data/lib/puppet/provider/user/netinfo.rb +106 -0
- data/lib/puppet/provider/user/pw.rb +41 -0
- data/lib/puppet/provider/user/useradd.rb +67 -0
- data/lib/puppet/provider/zone/solaris.rb +208 -0
- data/lib/puppet/rails.rb +102 -66
- data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
- data/lib/puppet/rails/database/schema.rb +89 -0
- data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
- data/lib/puppet/rails/external/tagging/init.rb +5 -0
- data/lib/puppet/rails/external/tagging/tag.rb +50 -0
- data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
- data/lib/puppet/rails/fact_name.rb +7 -0
- data/lib/puppet/rails/fact_value.rb +5 -0
- data/lib/puppet/rails/host.rb +95 -46
- data/lib/puppet/rails/param_name.rb +28 -0
- data/lib/puppet/rails/param_value.rb +5 -0
- data/lib/puppet/rails/puppet_class.rb +9 -0
- data/lib/puppet/rails/resource.rb +95 -0
- data/lib/puppet/rails/source_file.rb +5 -0
- data/lib/puppet/relationship.rb +63 -0
- data/lib/puppet/reports/log.rb +14 -0
- data/lib/puppet/reports/rrdgraph.rb +114 -10
- data/lib/puppet/reports/store.rb +64 -0
- data/lib/puppet/reports/tagmail.rb +144 -71
- data/lib/puppet/sslcertificates.rb +38 -5
- data/lib/puppet/sslcertificates/ca.rb +142 -37
- data/lib/puppet/sslcertificates/certificate.rb +3 -3
- data/lib/puppet/sslcertificates/inventory.rb +53 -0
- data/lib/puppet/sslcertificates/support.rb +128 -0
- data/lib/puppet/transaction.rb +568 -189
- data/lib/puppet/transaction/report.rb +14 -3
- data/lib/puppet/transportable.rb +18 -10
- data/lib/puppet/type.rb +279 -2299
- data/lib/puppet/type/component.rb +63 -63
- data/lib/puppet/type/cron.rb +294 -710
- data/lib/puppet/type/exec.rb +185 -129
- data/lib/puppet/type/group.rb +38 -89
- data/lib/puppet/type/host.rb +110 -0
- data/lib/puppet/type/mount.rb +189 -0
- data/lib/puppet/type/notify.rb +47 -0
- data/lib/puppet/type/package.rb +129 -257
- data/lib/puppet/type/parsedtype.rb +172 -297
- data/lib/puppet/type/pfile.rb +540 -319
- data/lib/puppet/type/pfile/checksum.rb +103 -76
- data/lib/puppet/type/pfile/content.rb +16 -10
- data/lib/puppet/type/pfile/ensure.rb +52 -34
- data/lib/puppet/type/pfile/group.rb +25 -18
- data/lib/puppet/type/pfile/mode.rb +7 -4
- data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
- data/lib/puppet/type/pfile/source.rb +119 -124
- data/lib/puppet/type/pfile/target.rb +29 -45
- data/lib/puppet/type/pfile/type.rb +2 -2
- data/lib/puppet/type/pfilebucket.rb +18 -14
- data/lib/puppet/type/port.rb +121 -0
- data/lib/puppet/type/property.rb +530 -0
- data/lib/puppet/type/resources.rb +150 -0
- data/lib/puppet/type/schedule.rb +38 -22
- data/lib/puppet/type/service.rb +70 -326
- data/lib/puppet/type/sshkey.rb +76 -0
- data/lib/puppet/type/tidy.rb +197 -97
- data/lib/puppet/type/user.rb +107 -183
- data/lib/puppet/type/yumrepo.rb +53 -34
- data/lib/puppet/type/zone.rb +55 -208
- data/lib/puppet/util.rb +239 -201
- data/lib/puppet/util/autoload.rb +107 -0
- data/lib/puppet/util/classgen.rb +208 -0
- data/lib/puppet/{config.rb → util/config.rb} +102 -54
- data/lib/puppet/util/docs.rb +104 -0
- data/lib/puppet/util/errors.rb +55 -0
- data/lib/puppet/util/execution.rb +22 -0
- data/lib/puppet/util/feature.rb +76 -0
- data/lib/puppet/util/fileparsing.rb +380 -0
- data/lib/puppet/util/filetype.rb +300 -0
- data/lib/puppet/util/graph.rb +39 -0
- data/lib/puppet/util/inifile.rb +209 -0
- data/lib/puppet/util/loadedfile.rb +71 -0
- data/lib/puppet/util/log.rb +549 -0
- data/lib/puppet/util/logging.rb +20 -0
- data/lib/puppet/util/metaid.rb +22 -0
- data/lib/puppet/util/methodhelper.rb +37 -0
- data/lib/puppet/util/metric.rb +160 -0
- data/lib/puppet/util/package.rb +31 -0
- data/lib/puppet/util/pidlock.rb +68 -0
- data/lib/puppet/util/plist.rb +24 -0
- data/lib/puppet/util/plist/generator.rb +226 -0
- data/lib/puppet/util/plist/parser.rb +227 -0
- data/lib/puppet/util/posix.rb +87 -0
- data/lib/puppet/util/provider_features.rb +170 -0
- data/lib/puppet/util/rails/collection_merger.rb +42 -0
- data/lib/puppet/util/storage.rb +103 -0
- data/lib/puppet/util/subclass_loader.rb +83 -0
- data/lib/puppet/util/suidmanager.rb +86 -0
- data/lib/puppet/util/variables.rb +39 -0
- data/lib/puppet/util/warnings.rb +15 -0
- data/test/Rakefile +97 -0
- data/test/certmgr/ca.rb +81 -0
- data/test/certmgr/certmgr.rb +77 -50
- data/test/certmgr/inventory.rb +79 -0
- data/test/certmgr/support.rb +81 -0
- data/test/executables/filebucket.rb +49 -0
- data/test/executables/puppetbin.rb +28 -12
- data/test/executables/puppetca.rb +75 -54
- data/test/executables/puppetd.rb +10 -13
- data/test/executables/puppetmasterd.rb +12 -17
- data/test/executables/puppetmodule.rb +18 -17
- data/test/language/ast.rb +242 -798
- data/test/language/ast/casestatement.rb +104 -0
- data/test/language/ast/component.rb +133 -0
- data/test/language/ast/hostclass.rb +162 -0
- data/test/language/ast/selector.rb +62 -0
- data/test/language/ast/variable.rb +31 -0
- data/test/language/collector.rb +369 -0
- data/test/language/functions.rb +305 -18
- data/test/language/interpreter.rb +894 -125
- data/test/language/lexer.rb +98 -12
- data/test/language/node.rb +37 -53
- data/test/language/parser.rb +455 -148
- data/test/language/resource.rb +535 -0
- data/test/language/scope.rb +451 -561
- data/test/language/snippets.rb +101 -111
- data/test/language/transportable.rb +6 -8
- data/test/lib/mocha.rb +19 -0
- data/test/lib/mocha/any_instance_method.rb +35 -0
- data/test/lib/mocha/auto_verify.rb +113 -0
- data/test/lib/mocha/central.rb +35 -0
- data/test/lib/mocha/class_method.rb +62 -0
- data/test/lib/mocha/expectation.rb +295 -0
- data/test/lib/mocha/expectation_error.rb +6 -0
- data/test/lib/mocha/infinite_range.rb +27 -0
- data/test/lib/mocha/inspect.rb +37 -0
- data/test/lib/mocha/instance_method.rb +8 -0
- data/test/lib/mocha/metaclass.rb +7 -0
- data/test/lib/mocha/mock.rb +20 -0
- data/test/lib/mocha/mock_methods.rb +122 -0
- data/test/lib/mocha/object.rb +100 -0
- data/test/lib/mocha/pretty_parameters.rb +28 -0
- data/test/lib/mocha/setup_and_teardown.rb +23 -0
- data/test/lib/mocha/standalone.rb +30 -0
- data/test/lib/mocha/test_case_adapter.rb +49 -0
- data/test/lib/mocha_standalone.rb +2 -0
- data/test/lib/puppettest.rb +294 -0
- data/test/lib/puppettest/certificates.rb +61 -0
- data/test/lib/puppettest/exetest.rb +123 -0
- data/test/lib/puppettest/fakes.rb +194 -0
- data/test/lib/puppettest/fileparsing.rb +33 -0
- data/test/lib/puppettest/filetesting.rb +231 -0
- data/test/lib/puppettest/graph.rb +41 -0
- data/test/lib/puppettest/parsertesting.rb +392 -0
- data/test/lib/puppettest/railstesting.rb +56 -0
- data/test/lib/puppettest/reporttesting.rb +19 -0
- data/test/lib/puppettest/resourcetesting.rb +73 -0
- data/test/lib/puppettest/servertest.rb +72 -0
- data/test/lib/puppettest/support.rb +8 -0
- data/test/lib/puppettest/support/assertions.rb +101 -0
- data/test/lib/puppettest/support/helpers.rb +23 -0
- data/test/lib/puppettest/support/resources.rb +37 -0
- data/test/lib/puppettest/support/utils.rb +160 -0
- data/test/lib/puppettest/testcase.rb +48 -0
- data/test/lib/rake/puppet_test_loader.rb +17 -0
- data/test/lib/rake/puppet_testtask.rb +17 -0
- data/test/lib/spec.rb +8 -0
- data/test/lib/spec/callback.rb +11 -0
- data/test/lib/spec/callback/callback_container.rb +60 -0
- data/test/lib/spec/callback/extensions/module.rb +24 -0
- data/test/lib/spec/callback/extensions/object.rb +37 -0
- data/test/lib/spec/deprecated.rb +3 -0
- data/test/lib/spec/expectations.rb +59 -0
- data/test/lib/spec/expectations/differs/default.rb +62 -0
- data/test/lib/spec/expectations/errors.rb +6 -0
- data/test/lib/spec/expectations/extensions.rb +3 -0
- data/test/lib/spec/expectations/extensions/object.rb +109 -0
- data/test/lib/spec/expectations/extensions/proc.rb +57 -0
- data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/test/lib/spec/expectations/handler.rb +47 -0
- data/test/lib/spec/expectations/should.rb +5 -0
- data/test/lib/spec/expectations/should/base.rb +64 -0
- data/test/lib/spec/expectations/should/change.rb +69 -0
- data/test/lib/spec/expectations/should/have.rb +128 -0
- data/test/lib/spec/expectations/should/not.rb +74 -0
- data/test/lib/spec/expectations/should/should.rb +81 -0
- data/test/lib/spec/expectations/sugar.rb +47 -0
- data/test/lib/spec/matchers.rb +160 -0
- data/test/lib/spec/matchers/be.rb +161 -0
- data/test/lib/spec/matchers/be_close.rb +37 -0
- data/test/lib/spec/matchers/change.rb +120 -0
- data/test/lib/spec/matchers/eql.rb +43 -0
- data/test/lib/spec/matchers/equal.rb +43 -0
- data/test/lib/spec/matchers/has.rb +44 -0
- data/test/lib/spec/matchers/have.rb +140 -0
- data/test/lib/spec/matchers/include.rb +50 -0
- data/test/lib/spec/matchers/match.rb +41 -0
- data/test/lib/spec/matchers/raise_error.rb +100 -0
- data/test/lib/spec/matchers/respond_to.rb +35 -0
- data/test/lib/spec/matchers/satisfy.rb +47 -0
- data/test/lib/spec/matchers/throw_symbol.rb +75 -0
- data/test/lib/spec/mocks.rb +232 -0
- data/test/lib/spec/mocks/argument_expectation.rb +132 -0
- data/test/lib/spec/mocks/error_generator.rb +85 -0
- data/test/lib/spec/mocks/errors.rb +10 -0
- data/test/lib/spec/mocks/extensions/object.rb +3 -0
- data/test/lib/spec/mocks/message_expectation.rb +231 -0
- data/test/lib/spec/mocks/methods.rb +40 -0
- data/test/lib/spec/mocks/mock.rb +26 -0
- data/test/lib/spec/mocks/mock_handler.rb +166 -0
- data/test/lib/spec/mocks/order_group.rb +29 -0
- data/test/lib/spec/rake/spectask.rb +173 -0
- data/test/lib/spec/rake/verify_rcov.rb +47 -0
- data/test/lib/spec/runner.rb +132 -0
- data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
- data/test/lib/spec/runner/command_line.rb +34 -0
- data/test/lib/spec/runner/context.rb +154 -0
- data/test/lib/spec/runner/context_eval.rb +142 -0
- data/test/lib/spec/runner/context_runner.rb +55 -0
- data/test/lib/spec/runner/drb_command_line.rb +21 -0
- data/test/lib/spec/runner/execution_context.rb +17 -0
- data/test/lib/spec/runner/extensions/kernel.rb +17 -0
- data/test/lib/spec/runner/extensions/object.rb +32 -0
- data/test/lib/spec/runner/formatter.rb +5 -0
- data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
- data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
- data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
- data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
- data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
- data/test/lib/spec/runner/heckle_runner.rb +71 -0
- data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
- data/test/lib/spec/runner/option_parser.rb +224 -0
- data/test/lib/spec/runner/reporter.rb +105 -0
- data/test/lib/spec/runner/spec_matcher.rb +25 -0
- data/test/lib/spec/runner/spec_parser.rb +41 -0
- data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
- data/test/lib/spec/runner/specification.rb +114 -0
- data/test/lib/spec/translator.rb +87 -0
- data/test/lib/spec/version.rb +30 -0
- data/test/lib/stubba.rb +2 -0
- data/test/network/authconfig.rb +72 -0
- data/test/network/authorization.rb +138 -0
- data/test/network/authstore.rb +450 -0
- data/test/network/client/ca.rb +38 -0
- data/test/{client → network/client}/client.rb +107 -24
- data/test/network/client/dipper.rb +35 -0
- data/test/network/client/master.rb +627 -0
- data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
- data/test/network/client_request.rb +39 -0
- data/test/network/daemon.rb +71 -0
- data/test/{server → network/handler}/bucket.rb +103 -27
- data/test/{server → network/handler}/ca.rb +14 -19
- data/test/{server → network/handler}/fileserver.rb +443 -68
- data/test/network/handler/handler.rb +64 -0
- data/test/{server → network/handler}/logger.rb +26 -26
- data/test/network/handler/master.rb +352 -0
- data/test/network/handler/report.rb +185 -0
- data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
- data/test/{server → network/handler}/runner.rb +17 -16
- data/test/network/rights.rb +38 -0
- data/test/network/server/webrick.rb +140 -0
- data/test/network/xmlrpc/client.rb +68 -0
- data/test/network/xmlrpc/processor.rb +80 -0
- data/test/network/xmlrpc/server.rb +28 -0
- data/test/network/xmlrpc/webrick_servlet.rb +26 -0
- data/test/other/dsl.rb +218 -0
- data/test/other/events.rb +22 -15
- data/test/other/overrides.rb +9 -14
- data/test/other/pgraph.rb +289 -0
- data/test/other/propertychange.rb +142 -0
- data/test/other/provider.rb +162 -0
- data/test/other/puppet.rb +63 -10
- data/test/other/relationship.rb +74 -0
- data/test/other/relationships.rb +199 -123
- data/test/other/report.rb +152 -23
- data/test/other/transactions.rb +824 -78
- data/test/puppet/conffiles.rb +16 -11
- data/test/puppet/defaults.rb +7 -10
- data/test/puppet/{error.rb → errortest.rb} +5 -8
- data/test/puppet/modules.rb +58 -0
- data/test/puppet/tc_suidmanager.rb +107 -0
- data/test/rails/host.rb +177 -0
- data/test/rails/rails.rb +27 -0
- data/test/rails/railsparameter.rb +62 -0
- data/test/rails/railsresource.rb +100 -0
- data/test/ral/manager/attributes.rb +296 -0
- data/test/ral/manager/manager.rb +55 -0
- data/test/ral/manager/provider.rb +54 -0
- data/test/ral/manager/type.rb +837 -0
- data/test/ral/providers/cron/crontab.rb +346 -0
- data/test/ral/providers/group.rb +252 -0
- data/test/ral/providers/host/netinfo.rb +58 -0
- data/test/ral/providers/host/parsed.rb +226 -0
- data/test/ral/providers/mount/netinfo.rb +80 -0
- data/test/ral/providers/mount/parsed.rb +223 -0
- data/test/ral/providers/nameservice.rb +33 -0
- data/test/ral/providers/package.rb +253 -0
- data/test/ral/providers/package/apt.rb +89 -0
- data/test/ral/providers/package/aptitude.rb +69 -0
- data/test/ral/providers/package/aptrpm.rb +89 -0
- data/test/ral/providers/package/dpkg.rb +64 -0
- data/test/ral/providers/parsedfile.rb +668 -0
- data/test/ral/providers/parsedport.rb +233 -0
- data/test/ral/providers/provider.rb +423 -0
- data/test/{types → ral/providers}/service.rb +20 -121
- data/test/ral/providers/service/base.rb +75 -0
- data/test/ral/providers/sshkey/parsed.rb +111 -0
- data/test/ral/providers/user.rb +567 -0
- data/test/ral/providers/user/useradd.rb +250 -0
- data/test/ral/types/basic.rb +90 -0
- data/test/ral/types/component.rb +113 -0
- data/test/ral/types/cron.rb +480 -0
- data/test/{types → ral/types}/exec.rb +278 -82
- data/test/ral/types/file.rb +1799 -0
- data/test/ral/types/file/target.rb +363 -0
- data/test/{types → ral/types}/filebucket.rb +15 -17
- data/test/{types → ral/types}/fileignoresource.rb +9 -15
- data/test/ral/types/filesources.rb +1046 -0
- data/test/ral/types/group.rb +169 -0
- data/test/ral/types/host.rb +155 -0
- data/test/ral/types/mount.rb +312 -0
- data/test/ral/types/package.rb +85 -0
- data/test/ral/types/parameter.rb +172 -0
- data/test/ral/types/port.rb +148 -0
- data/test/ral/types/property.rb +343 -0
- data/test/ral/types/resources.rb +221 -0
- data/test/{types → ral/types}/schedule.rb +34 -12
- data/test/ral/types/service.rb +37 -0
- data/test/{types → ral/types}/sshkey.rb +75 -65
- data/test/ral/types/tidy.rb +240 -0
- data/test/ral/types/user.rb +493 -0
- data/test/{types → ral/types}/yumrepo.rb +7 -11
- data/test/{types → ral/types}/zone.rb +45 -45
- data/test/tagging/tagging.rb +17 -26
- data/test/util/autoload.rb +130 -0
- data/test/util/classgen.rb +227 -0
- data/test/{other → util}/config.rb +373 -113
- data/test/util/execution.rb +34 -0
- data/test/util/features.rb +94 -0
- data/test/util/fileparsing.rb +677 -0
- data/test/{other → util}/filetype.rb +9 -12
- data/test/util/graph.rb +108 -0
- data/test/{other → util}/inifile.rb +24 -11
- data/test/util/loadedfile.rb +106 -0
- data/test/{other → util}/log.rb +96 -50
- data/test/{other → util}/metrics.rb +7 -17
- data/test/util/package.rb +27 -0
- data/test/util/pidlock.rb +126 -0
- data/test/util/posixtest.rb +173 -0
- data/test/util/storage.rb +123 -0
- data/test/util/subclass_loader.rb +100 -0
- data/test/util/utiltest.rb +368 -0
- metadata +449 -169
- data/examples/code/classing +0 -35
- data/examples/code/failers/badclassnoparam +0 -10
- data/examples/code/failers/badclassparam +0 -10
- data/examples/code/failers/badcompnoparam +0 -9
- data/examples/code/failers/badcompparam +0 -9
- data/examples/code/failers/badtypeparam +0 -3
- data/examples/code/failers/noobjectrvalue +0 -1
- data/examples/code/snippets/aliastest.pp +0 -16
- data/examples/code/snippets/argumentdefaults +0 -14
- data/examples/code/snippets/casestatement.pp +0 -58
- data/examples/code/snippets/classheirarchy.pp +0 -15
- data/examples/code/snippets/classincludes.pp +0 -17
- data/examples/code/snippets/classpathtest +0 -11
- data/examples/code/snippets/componentmetaparams.pp +0 -11
- data/examples/code/snippets/deepclassheirarchy.pp +0 -23
- data/examples/code/snippets/defineoverrides.pp +0 -17
- data/examples/code/snippets/dirchmod +0 -19
- data/examples/code/snippets/emptyclass.pp +0 -9
- data/examples/code/snippets/emptyexec.pp +0 -3
- data/examples/code/snippets/failmissingexecpath.pp +0 -13
- data/examples/code/snippets/falsevalues.pp +0 -3
- data/examples/code/snippets/filecreate +0 -11
- data/examples/code/snippets/implicititeration +0 -15
- data/examples/code/snippets/multipleinstances +0 -7
- data/examples/code/snippets/namevartest +0 -9
- data/examples/code/snippets/scopetest +0 -13
- data/examples/code/snippets/selectorvalues.pp +0 -42
- data/examples/code/snippets/simpledefaults +0 -5
- data/examples/code/snippets/simpleselector +0 -38
- data/examples/code/snippets/singleary.pp +0 -19
- data/examples/code/snippets/singlequote.pp +0 -11
- data/examples/code/snippets/singleselector.pp +0 -22
- data/examples/code/snippets/tag.pp +0 -9
- data/examples/code/snippets/tagged.pp +0 -35
- data/lib/puppet/client.rb +0 -177
- data/lib/puppet/client/ca.rb +0 -21
- data/lib/puppet/client/dipper.rb +0 -76
- data/lib/puppet/client/file.rb +0 -20
- data/lib/puppet/client/log.rb +0 -17
- data/lib/puppet/client/master.rb +0 -531
- data/lib/puppet/client/runner.rb +0 -17
- data/lib/puppet/client/status.rb +0 -7
- data/lib/puppet/event-loop.rb +0 -1
- data/lib/puppet/filetype.rb +0 -308
- data/lib/puppet/inifile.rb +0 -201
- data/lib/puppet/log.rb +0 -524
- data/lib/puppet/metric.rb +0 -132
- data/lib/puppet/networkclient.rb +0 -175
- data/lib/puppet/parsedfile.rb +0 -58
- data/lib/puppet/parser/ast/classdef.rb +0 -79
- data/lib/puppet/parser/ast/compdef.rb +0 -75
- data/lib/puppet/parser/ast/nodedef.rb +0 -73
- data/lib/puppet/parser/ast/objectdef.rb +0 -284
- data/lib/puppet/parser/ast/objectref.rb +0 -77
- data/lib/puppet/rails/database.rb +0 -40
- data/lib/puppet/rails/rails_object.rb +0 -42
- data/lib/puppet/rails/rails_parameter.rb +0 -5
- data/lib/puppet/server.rb +0 -196
- data/lib/puppet/server/authconfig.rb +0 -177
- data/lib/puppet/server/authstore.rb +0 -226
- data/lib/puppet/server/filebucket.rb +0 -155
- data/lib/puppet/server/pelement.rb +0 -188
- data/lib/puppet/server/report.rb +0 -184
- data/lib/puppet/server/rights.rb +0 -78
- data/lib/puppet/server/servlet.rb +0 -274
- data/lib/puppet/statechange.rb +0 -129
- data/lib/puppet/storage.rb +0 -98
- data/lib/puppet/type/nameservice.rb +0 -264
- data/lib/puppet/type/nameservice/netinfo.rb +0 -232
- data/lib/puppet/type/nameservice/objectadd.rb +0 -146
- data/lib/puppet/type/nameservice/posix.rb +0 -12
- data/lib/puppet/type/nameservice/pw.rb +0 -107
- data/lib/puppet/type/package/apple.rb +0 -41
- data/lib/puppet/type/package/apt.rb +0 -107
- data/lib/puppet/type/package/blastwave.rb +0 -136
- data/lib/puppet/type/package/darwinport.rb +0 -97
- data/lib/puppet/type/package/dpkg.rb +0 -113
- data/lib/puppet/type/package/freebsd.rb +0 -19
- data/lib/puppet/type/package/gem.rb +0 -119
- data/lib/puppet/type/package/openbsd.rb +0 -112
- data/lib/puppet/type/package/ports.rb +0 -103
- data/lib/puppet/type/package/rpm.rb +0 -121
- data/lib/puppet/type/package/sun.rb +0 -174
- data/lib/puppet/type/package/sunfreeware.rb +0 -7
- data/lib/puppet/type/package/yum.rb +0 -52
- data/lib/puppet/type/parsedtype/host.rb +0 -144
- data/lib/puppet/type/parsedtype/mount.rb +0 -271
- data/lib/puppet/type/parsedtype/port.rb +0 -261
- data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
- data/lib/puppet/type/service/base.rb +0 -12
- data/lib/puppet/type/service/debian.rb +0 -46
- data/lib/puppet/type/service/redhat.rb +0 -38
- data/lib/puppet/type/state.rb +0 -393
- data/lib/puppet/type/symlink.rb +0 -186
- data/test/client/master.rb +0 -207
- data/test/language/rails.rb +0 -105
- data/test/other/parsedfile.rb +0 -58
- data/test/other/storage.rb +0 -100
- data/test/puppet/utiltest.rb +0 -299
- data/test/puppettest.rb +0 -1170
- data/test/server/authconfig.rb +0 -56
- data/test/server/authstore.rb +0 -218
- data/test/server/master.rb +0 -201
- data/test/server/report.rb +0 -93
- data/test/server/rights.rb +0 -41
- data/test/server/server.rb +0 -152
- data/test/test +0 -61
- data/test/types/basic.rb +0 -117
- data/test/types/component.rb +0 -298
- data/test/types/cron.rb +0 -718
- data/test/types/file.rb +0 -1314
- data/test/types/filesources.rb +0 -590
- data/test/types/group.rb +0 -323
- data/test/types/host.rb +0 -186
- data/test/types/mount.rb +0 -294
- data/test/types/package.rb +0 -538
- data/test/types/parameter.rb +0 -107
- data/test/types/port.rb +0 -201
- data/test/types/query.rb +0 -101
- data/test/types/state.rb +0 -92
- data/test/types/symlink.rb +0 -120
- data/test/types/tidy.rb +0 -102
- data/test/types/type.rb +0 -469
- data/test/types/user.rb +0 -563
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
|
|
4
|
+
|
|
5
|
+
require 'puppet'
|
|
6
|
+
require 'puppettest'
|
|
7
|
+
|
|
8
|
+
class TestPuppetUtilExecution < Test::Unit::TestCase
|
|
9
|
+
include PuppetTest
|
|
10
|
+
|
|
11
|
+
def test_withenv
|
|
12
|
+
ENV["testing"] = "yay"
|
|
13
|
+
|
|
14
|
+
assert_nothing_raised do
|
|
15
|
+
Puppet::Util::Execution.withenv :testing => "foo" do
|
|
16
|
+
$ran = ENV["testing"]
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
assert_equal("yay", ENV["testing"])
|
|
21
|
+
assert_equal("foo", $ran)
|
|
22
|
+
|
|
23
|
+
ENV["rah"] = "yay"
|
|
24
|
+
assert_raise(ArgumentError) do
|
|
25
|
+
Puppet::Util::Execution.withenv :testing => "foo" do
|
|
26
|
+
raise ArgumentError, "yay"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
assert_equal("yay", ENV["rah"])
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# $Id: execution.rb 1793 2006-10-16 22:01:40Z luke $
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
#
|
|
3
|
+
# Created by Luke Kanies on 2006-11-07.
|
|
4
|
+
# Copyright (c) 2006. All rights reserved.
|
|
5
|
+
|
|
6
|
+
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
|
|
7
|
+
|
|
8
|
+
require 'puppettest'
|
|
9
|
+
require 'puppet/util/feature'
|
|
10
|
+
|
|
11
|
+
class TestFeatures < Test::Unit::TestCase
|
|
12
|
+
include PuppetTest
|
|
13
|
+
|
|
14
|
+
def setup
|
|
15
|
+
super
|
|
16
|
+
libdir = tempfile()
|
|
17
|
+
@features = Puppet::Util::Feature.new(libdir)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_new
|
|
21
|
+
assert_nothing_raised do
|
|
22
|
+
@features.add(:failer) do
|
|
23
|
+
raise ArgumentError, "nopes"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
assert(@features.respond_to?(:failer?), "Feature method did not get added")
|
|
28
|
+
assert_nothing_raised("failure propagated outside of feature") do
|
|
29
|
+
assert(! @features.failer?, "failure was considered true")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Now make one that succeeds
|
|
33
|
+
$succeeds = nil
|
|
34
|
+
assert_nothing_raised("Failed to add normal feature") do
|
|
35
|
+
@features.add(:succeeds) do
|
|
36
|
+
$succeeds = true
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
assert($succeeds, "Block was not called on initialization")
|
|
40
|
+
|
|
41
|
+
assert(@features.respond_to?(:succeeds?), "Did not add succeeding feature")
|
|
42
|
+
assert_nothing_raised("Failed to call succeeds") { assert(@features.succeeds?, "Feature was not true") }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_libs
|
|
46
|
+
assert_nothing_raised do
|
|
47
|
+
@features.add(:puppet, :libs => %w{puppet})
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
assert(@features.puppet?)
|
|
51
|
+
|
|
52
|
+
assert_nothing_raised do
|
|
53
|
+
@features.add(:missing, :libs => %w{puppet no/such/library/okay})
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
assert(! @features.missing?, "Missing lib was considered true")
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_dynamic_loading
|
|
60
|
+
# Make sure it defaults to false
|
|
61
|
+
assert_nothing_raised("Undefined features throw an exception") do
|
|
62
|
+
assert(! @features.nosuchfeature?, "missing feature returned true")
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
$features = @features
|
|
66
|
+
cleanup { $features = nil }
|
|
67
|
+
# Now create a feature and make sure it loads.
|
|
68
|
+
Dir.mkdir(@features.path)
|
|
69
|
+
nope = File.join(@features.path, "nope.rb")
|
|
70
|
+
File.open(nope, "w") { |f|
|
|
71
|
+
f.puts "$features.add(:nope, :libs => %w{nosuchlib})"
|
|
72
|
+
}
|
|
73
|
+
assert_nothing_raised("Failed to autoload features") do
|
|
74
|
+
assert(! @features.nope?, "'nope' returned true")
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# First make sure "yep?" returns false
|
|
78
|
+
assert_nothing_raised("Missing feature threw an exception") do
|
|
79
|
+
assert(! @features.yep?, "'yep' returned true before definition")
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
yep = File.join(@features.path, "yep.rb")
|
|
83
|
+
File.open(yep, "w") { |f|
|
|
84
|
+
f.puts "$features.add(:yep, :libs => %w{puppet})"
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
# Now make sure the value is not cached or anything.
|
|
88
|
+
assert_nothing_raised("Failed to autoload features") do
|
|
89
|
+
assert(@features.yep?, "'yep' returned false")
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# $Id: features.rb 2181 2007-02-08 05:11:49Z luke $
|
|
@@ -0,0 +1,677 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
|
|
4
|
+
|
|
5
|
+
require 'puppettest'
|
|
6
|
+
require 'puppettest/fileparsing'
|
|
7
|
+
require 'puppet'
|
|
8
|
+
require 'puppet/util/fileparsing'
|
|
9
|
+
|
|
10
|
+
class TestUtilFileParsing < Test::Unit::TestCase
|
|
11
|
+
include PuppetTest
|
|
12
|
+
include PuppetTest::FileParsing
|
|
13
|
+
|
|
14
|
+
class FParser
|
|
15
|
+
include Puppet::Util::FileParsing
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def setup
|
|
19
|
+
super
|
|
20
|
+
@parser = FParser.new
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_lines
|
|
24
|
+
assert_equal("\n", @parser.line_separator,
|
|
25
|
+
"Default separator was incorrect")
|
|
26
|
+
|
|
27
|
+
{"\n" => ["one two\nthree four", "one two\nthree four\n"],
|
|
28
|
+
"\t" => ["one two\tthree four", "one two\tthree four\t"],
|
|
29
|
+
}.each do |sep, tests|
|
|
30
|
+
assert_nothing_raised do
|
|
31
|
+
@parser.line_separator = sep
|
|
32
|
+
end
|
|
33
|
+
assert_equal(sep, @parser.line_separator,
|
|
34
|
+
"Did not set separator")
|
|
35
|
+
|
|
36
|
+
tests.each do |test|
|
|
37
|
+
assert_equal(["one two", "three four"], @parser.lines(test),
|
|
38
|
+
"Incorrectly parsed %s" % test.inspect)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Make sure parse calls the appropriate methods or errors out
|
|
44
|
+
def test_parse
|
|
45
|
+
@parser.meta_def(:parse_line) do |line|
|
|
46
|
+
line.split(/\s+/)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
text = "one line\ntwo line"
|
|
50
|
+
should = [%w{one line}, %w{two line}]
|
|
51
|
+
ret = nil
|
|
52
|
+
assert_nothing_raised do
|
|
53
|
+
ret = @parser.parse(text)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
assert_equal(should, ret)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Make sure we correctly handle different kinds of text lines.
|
|
60
|
+
def test_text_line
|
|
61
|
+
comment = "# this is a comment"
|
|
62
|
+
|
|
63
|
+
# Make sure it fails if no regex is passed
|
|
64
|
+
assert_raise(ArgumentError) do
|
|
65
|
+
@parser.text_line :comment
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# define a text matching comment record
|
|
69
|
+
assert_nothing_raised do
|
|
70
|
+
@parser.text_line :comment, :match => /^#/
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Make sure it matches
|
|
74
|
+
assert_nothing_raised do
|
|
75
|
+
assert_equal({:record_type => :comment, :line => comment},
|
|
76
|
+
@parser.parse_line(comment))
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# But not something else
|
|
80
|
+
assert_nothing_raised do
|
|
81
|
+
assert_nil(@parser.parse_line("some other text"))
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Now define another type and make sure we get the right one back
|
|
85
|
+
assert_nothing_raised do
|
|
86
|
+
@parser.text_line :blank, :match => /^\s*$/
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# The comment should still match
|
|
90
|
+
assert_nothing_raised do
|
|
91
|
+
assert_equal({:record_type => :comment, :line => comment},
|
|
92
|
+
@parser.parse_line(comment))
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# As should our new line type
|
|
96
|
+
assert_nothing_raised do
|
|
97
|
+
assert_equal({:record_type => :blank, :line => ""},
|
|
98
|
+
@parser.parse_line(""))
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_parse_line
|
|
104
|
+
Puppet[:trace] = false
|
|
105
|
+
|
|
106
|
+
comment = "# this is a comment"
|
|
107
|
+
|
|
108
|
+
# Make sure it fails if we don't have any record types defined
|
|
109
|
+
assert_raise(Puppet::DevError) do
|
|
110
|
+
@parser.parse_line(comment)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# Now define a text matching comment record
|
|
114
|
+
assert_nothing_raised do
|
|
115
|
+
@parser.text_line :comment, :match => /^#/
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# And make sure we can't define another one with the same name
|
|
119
|
+
assert_raise(ArgumentError) do
|
|
120
|
+
@parser.text_line :comment, :match => /^"/
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
result = nil
|
|
124
|
+
assert_nothing_raised("Did not parse text line") do
|
|
125
|
+
result = @parser.parse_line comment
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
assert_equal({:record_type => :comment, :line => comment}, result)
|
|
129
|
+
|
|
130
|
+
# Make sure we just return nil on unmatched lines.
|
|
131
|
+
assert_nothing_raised("Did not parse text line") do
|
|
132
|
+
result = @parser.parse_line "No match for this"
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
assert_nil(result, "Somehow matched an empty line")
|
|
136
|
+
|
|
137
|
+
# Now define another type of comment, and make sure both types get
|
|
138
|
+
# correctly returned as comments
|
|
139
|
+
assert_nothing_raised do
|
|
140
|
+
@parser.text_line :comment2, :match => /^"/
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
assert_nothing_raised("Did not parse old comment") do
|
|
144
|
+
assert_equal({:record_type => :comment, :line => comment},
|
|
145
|
+
@parser.parse_line(comment))
|
|
146
|
+
end
|
|
147
|
+
comment = '" another type of comment'
|
|
148
|
+
assert_nothing_raised("Did not parse new comment") do
|
|
149
|
+
assert_equal({:record_type => :comment2, :line => comment},
|
|
150
|
+
@parser.parse_line(comment))
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
# Now define two overlapping record types and make sure we keep the
|
|
154
|
+
# correct order. We do first match, not longest match.
|
|
155
|
+
assert_nothing_raised do
|
|
156
|
+
@parser.text_line :one, :match => /^y/
|
|
157
|
+
@parser.text_line :two, :match => /^yay/
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
assert_nothing_raised do
|
|
161
|
+
assert_equal({:record_type => :one, :line => "yayness"},
|
|
162
|
+
@parser.parse_line("yayness"))
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def test_record_line
|
|
168
|
+
tabrecord = "tab separated content"
|
|
169
|
+
spacerecord = "space separated content"
|
|
170
|
+
|
|
171
|
+
# Make sure we always require an appropriate set of options
|
|
172
|
+
[{:separator => "\t"}, {}, {:fields => %w{record_type}}].each do |opts|
|
|
173
|
+
assert_raise(ArgumentError, "Accepted %s" % opts.inspect) do
|
|
174
|
+
@parser.record_line :record, opts
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# Verify that our default separator is tabs
|
|
179
|
+
tabs = nil
|
|
180
|
+
assert_nothing_raised do
|
|
181
|
+
tabs = @parser.record_line :tabs, :fields => [:name, :first, :second]
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# Make sure out tab line gets matched
|
|
185
|
+
tabshould = {:record_type => :tabs, :name => "tab", :first => "separated",
|
|
186
|
+
:second => "content"}
|
|
187
|
+
assert_nothing_raised do
|
|
188
|
+
assert_equal(tabshould, @parser.handle_record_line(tabrecord, tabs))
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
# Now add our space-separated record type
|
|
192
|
+
spaces = nil
|
|
193
|
+
assert_nothing_raised do
|
|
194
|
+
spaces = @parser.record_line :spaces, :fields => [:name, :first, :second]
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# Now make sure both lines parse correctly
|
|
198
|
+
spaceshould = {:record_type => :spaces, :name => "space",
|
|
199
|
+
:first => "separated", :second => "content"}
|
|
200
|
+
|
|
201
|
+
assert_nothing_raised do
|
|
202
|
+
assert_equal(tabshould, @parser.handle_record_line(tabrecord, tabs))
|
|
203
|
+
assert_equal(spaceshould, @parser.handle_record_line(spacerecord, spaces))
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
def test_to_line
|
|
208
|
+
@parser.text_line :comment, :match => /^#/
|
|
209
|
+
@parser.text_line :blank, :match => /^\s*$/
|
|
210
|
+
@parser.record_line :record, :fields => %w{name one two}, :joiner => "\t"
|
|
211
|
+
|
|
212
|
+
johnny = {:record_type => :record, :name => "johnny", :one => "home",
|
|
213
|
+
:two => "yay"}
|
|
214
|
+
bill = {:record_type => :record, :name => "bill", :one => "work",
|
|
215
|
+
:two => "boo"}
|
|
216
|
+
|
|
217
|
+
records = {
|
|
218
|
+
:comment => {:record_type => :comment, :line => "# This is a file"},
|
|
219
|
+
:blank => {:record_type => :blank, :line => ""},
|
|
220
|
+
:johnny => johnny,
|
|
221
|
+
:bill => bill
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
lines = {
|
|
225
|
+
:comment => "# This is a file",
|
|
226
|
+
:blank => "",
|
|
227
|
+
:johnny => "johnny home yay",
|
|
228
|
+
:bill => "bill work boo"
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
records.each do |name, details|
|
|
232
|
+
result = nil
|
|
233
|
+
assert_nothing_raised do
|
|
234
|
+
result = @parser.to_line(details)
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
assert_equal(lines[name], result)
|
|
238
|
+
end
|
|
239
|
+
order = [:comment, :blank, :johnny, :bill]
|
|
240
|
+
|
|
241
|
+
file = order.collect { |name| lines[name] }.join("\n")
|
|
242
|
+
|
|
243
|
+
ordered_records = order.collect { |name| records[name] }
|
|
244
|
+
|
|
245
|
+
# Make sure we default to a trailing separator
|
|
246
|
+
assert_equal(true, @parser.trailing_separator,
|
|
247
|
+
"Did not default to a trailing separtor")
|
|
248
|
+
|
|
249
|
+
# Start without a trailing separator
|
|
250
|
+
@parser.trailing_separator = false
|
|
251
|
+
assert_nothing_raised do
|
|
252
|
+
assert_equal(file, @parser.to_file(ordered_records))
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
# Now with a trailing separator
|
|
256
|
+
file += "\n"
|
|
257
|
+
@parser.trailing_separator = true
|
|
258
|
+
assert_nothing_raised do
|
|
259
|
+
assert_equal(file, @parser.to_file(ordered_records))
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
# Now try it with a different separator, so we're not just catching
|
|
263
|
+
# defaults
|
|
264
|
+
file.gsub!("\n", "\t")
|
|
265
|
+
@parser.line_separator = "\t"
|
|
266
|
+
assert_nothing_raised do
|
|
267
|
+
assert_equal(file, @parser.to_file(ordered_records))
|
|
268
|
+
end
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
# Make sure fields that are marked absent get replaced with the appropriate
|
|
272
|
+
# string.
|
|
273
|
+
def test_absent_fields
|
|
274
|
+
record = nil
|
|
275
|
+
assert_nothing_raised do
|
|
276
|
+
record = @parser.record_line :record, :fields => %w{one two three},
|
|
277
|
+
:optional => %w{two three}
|
|
278
|
+
end
|
|
279
|
+
assert_equal("", record.absent, "Did not set a default absent string")
|
|
280
|
+
|
|
281
|
+
result = nil
|
|
282
|
+
assert_nothing_raised do
|
|
283
|
+
result = @parser.to_line(:record_type => :record,
|
|
284
|
+
:one => "a", :two => :absent, :three => "b")
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
assert_equal("a b", result, "Absent was not correctly replaced")
|
|
288
|
+
|
|
289
|
+
# Now try using a different replacement character
|
|
290
|
+
record.absent = "*" # Because cron is a pain in my ass
|
|
291
|
+
assert_nothing_raised do
|
|
292
|
+
result = @parser.to_line(:record_type => :record,
|
|
293
|
+
:one => "a", :two => :absent, :three => "b")
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
assert_equal("a * b", result, "Absent was not correctly replaced")
|
|
297
|
+
|
|
298
|
+
# Make sure we deal correctly with the string 'absent'
|
|
299
|
+
assert_nothing_raised do
|
|
300
|
+
result = @parser.to_line(:record_type => :record,
|
|
301
|
+
:one => "a", :two => "b", :three => 'absent')
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
assert_equal("a b absent", result, "Replaced string 'absent'")
|
|
305
|
+
|
|
306
|
+
# And, of course, make sure we can swap things around.
|
|
307
|
+
assert_nothing_raised do
|
|
308
|
+
result = @parser.to_line(:record_type => :record,
|
|
309
|
+
:one => "a", :two => "b", :three => :absent)
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
assert_equal("a b *", result, "Absent was not correctly replaced")
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
# Make sure we can specify a different join character than split character
|
|
316
|
+
def test_split_join_record_line
|
|
317
|
+
check = proc do |start, record, final|
|
|
318
|
+
# Check parsing first
|
|
319
|
+
result = @parser.parse_line(start)
|
|
320
|
+
[:one, :two].each do |param|
|
|
321
|
+
assert_equal(record[param], result[param],
|
|
322
|
+
"Did not correctly parse %s" % start.inspect)
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
# And generating
|
|
326
|
+
assert_equal(final, @parser.to_line(result),
|
|
327
|
+
"Did not correctly generate %s from %s" %
|
|
328
|
+
[final.inspect, record.inspect])
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
# First try it with symmetric characters
|
|
332
|
+
@parser.record_line :symmetric, :fields => %w{one two},
|
|
333
|
+
:separator => " "
|
|
334
|
+
|
|
335
|
+
check.call "a b", {:one => "a", :two => "b"}, "a b"
|
|
336
|
+
@parser.clear_records
|
|
337
|
+
|
|
338
|
+
# Now assymetric but both strings
|
|
339
|
+
@parser.record_line :asymmetric, :fields => %w{one two},
|
|
340
|
+
:separator => "\t", :joiner => " "
|
|
341
|
+
|
|
342
|
+
check.call "a\tb", {:one => "a", :two => "b"}, "a b"
|
|
343
|
+
@parser.clear_records
|
|
344
|
+
|
|
345
|
+
# And assymmetric with a regex
|
|
346
|
+
@parser.record_line :asymmetric2, :fields => %w{one two},
|
|
347
|
+
:separator => /\s+/, :joiner => " "
|
|
348
|
+
|
|
349
|
+
check.call "a\tb", {:one => "a", :two => "b"}, "a b"
|
|
350
|
+
check.call "a b", {:one => "a", :two => "b"}, "a b"
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
# Make sure we correctly regenerate files.
|
|
354
|
+
def test_to_file
|
|
355
|
+
@parser.text_line :comment, :match => /^#/
|
|
356
|
+
@parser.text_line :blank, :match => /^\s*$/
|
|
357
|
+
@parser.record_line :record, :fields => %w{name one two}
|
|
358
|
+
|
|
359
|
+
text = "# This is a comment
|
|
360
|
+
|
|
361
|
+
johnny one two
|
|
362
|
+
billy three four\n"
|
|
363
|
+
|
|
364
|
+
# Just parse and generate, to make sure it's isomorphic.
|
|
365
|
+
assert_nothing_raised do
|
|
366
|
+
assert_equal(text, @parser.to_file(@parser.parse(text)),
|
|
367
|
+
"parsing was not isomorphic")
|
|
368
|
+
end
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
def test_valid_attrs
|
|
372
|
+
@parser.record_line :record, :fields => %w{one two three}
|
|
373
|
+
|
|
374
|
+
assert(@parser.valid_attr?(:record, :one),
|
|
375
|
+
"one was considered invalid")
|
|
376
|
+
|
|
377
|
+
assert(@parser.valid_attr?(:record, :ensure),
|
|
378
|
+
"ensure was considered invalid")
|
|
379
|
+
|
|
380
|
+
assert(! @parser.valid_attr?(:record, :four),
|
|
381
|
+
"four was considered valid")
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
def test_record_blocks
|
|
385
|
+
options = nil
|
|
386
|
+
assert_nothing_raised do
|
|
387
|
+
# Just do a simple test
|
|
388
|
+
options = @parser.record_line :record,
|
|
389
|
+
:fields => %w{name alias info} do |line|
|
|
390
|
+
line = line.dup
|
|
391
|
+
ret = {}
|
|
392
|
+
if line.sub!(/(\w+)\s*/, '')
|
|
393
|
+
ret[:name] = $1
|
|
394
|
+
else
|
|
395
|
+
return nil
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
if line.sub!(/(#.+)/, '')
|
|
399
|
+
desc = $1.sub(/^#\s*/, '')
|
|
400
|
+
ret[:description] = desc unless desc == ""
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
if line != ""
|
|
404
|
+
ret[:alias] = line.split(/\s+/)
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
return ret
|
|
408
|
+
end
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
values = {
|
|
412
|
+
:name => "tcpmux",
|
|
413
|
+
:description => "TCP port service multiplexer",
|
|
414
|
+
:alias => ["sink"]
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
{
|
|
418
|
+
|
|
419
|
+
"tcpmux " => [:name],
|
|
420
|
+
"tcpmux" => [:name],
|
|
421
|
+
"tcpmux sink" => [:name, :port, :protocols, :alias],
|
|
422
|
+
"tcpmux # TCP port service multiplexer" =>
|
|
423
|
+
[:name, :description, :port, :protocols],
|
|
424
|
+
"tcpmux sink # TCP port service multiplexer" =>
|
|
425
|
+
[:name, :description, :port, :alias, :protocols],
|
|
426
|
+
"tcpmux sink null # TCP port service multiplexer" =>
|
|
427
|
+
[:name, :description, :port, :alias, :protocols],
|
|
428
|
+
}.each do |line, should|
|
|
429
|
+
result = nil
|
|
430
|
+
assert_nothing_raised do
|
|
431
|
+
result = @parser.handle_record_line(line, options)
|
|
432
|
+
end
|
|
433
|
+
assert(result, "Did not get a result back for '%s'" % line)
|
|
434
|
+
should.each do |field|
|
|
435
|
+
if field == :alias and line =~ /null/
|
|
436
|
+
assert_equal(%w{sink null}, result[field],
|
|
437
|
+
"Field %s was not right in '%s'" % [field, line])
|
|
438
|
+
else
|
|
439
|
+
assert_equal(values[field], result[field],
|
|
440
|
+
"Field %s was not right in '%s'" % [field, line])
|
|
441
|
+
end
|
|
442
|
+
end
|
|
443
|
+
end
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
end
|
|
447
|
+
|
|
448
|
+
# Make sure we correctly handle optional fields. We'll skip this
|
|
449
|
+
# functionality until we really know we need it.
|
|
450
|
+
def test_optional_fields
|
|
451
|
+
assert_nothing_raised do
|
|
452
|
+
@parser.record_line :record,
|
|
453
|
+
:fields => %w{one two three four},
|
|
454
|
+
:optional => %w{three four},
|
|
455
|
+
:absent => "*",
|
|
456
|
+
:separator => " " # A single space
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
["a b c d", "a b * d", "a b * *", "a b c *"].each do |line|
|
|
460
|
+
record = nil
|
|
461
|
+
assert_nothing_raised do
|
|
462
|
+
record = @parser.parse_line(line)
|
|
463
|
+
end
|
|
464
|
+
|
|
465
|
+
# Now regenerate the line
|
|
466
|
+
newline = nil
|
|
467
|
+
assert_nothing_raised do
|
|
468
|
+
newline = @parser.to_line(record)
|
|
469
|
+
end
|
|
470
|
+
|
|
471
|
+
# And make sure they're equal
|
|
472
|
+
assert_equal(line, newline)
|
|
473
|
+
end
|
|
474
|
+
|
|
475
|
+
# Now make sure it pukes if we don't provide the required fields
|
|
476
|
+
assert_raise(ArgumentError) do
|
|
477
|
+
@parser.to_line(:record_type => :record, :one => "yay")
|
|
478
|
+
end
|
|
479
|
+
end
|
|
480
|
+
|
|
481
|
+
def test_record_rts
|
|
482
|
+
# Start with the default
|
|
483
|
+
assert_nothing_raised do
|
|
484
|
+
@parser.record_line :record,
|
|
485
|
+
:fields => %w{one two three four},
|
|
486
|
+
:optional => %w{three four}
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
assert_equal("a b ",
|
|
490
|
+
@parser.to_line(:record_type => :record, :one => "a", :two => "b")
|
|
491
|
+
)
|
|
492
|
+
|
|
493
|
+
# Now say yes to removing
|
|
494
|
+
@parser.clear_records
|
|
495
|
+
assert_nothing_raised do
|
|
496
|
+
@parser.record_line :record,
|
|
497
|
+
:fields => %w{one two three four},
|
|
498
|
+
:optional => %w{three four},
|
|
499
|
+
:rts => true
|
|
500
|
+
end
|
|
501
|
+
|
|
502
|
+
assert_equal("a b",
|
|
503
|
+
@parser.to_line(:record_type => :record, :one => "a", :two => "b")
|
|
504
|
+
)
|
|
505
|
+
|
|
506
|
+
# Lastly, try a regex
|
|
507
|
+
@parser.clear_records
|
|
508
|
+
assert_nothing_raised do
|
|
509
|
+
@parser.record_line :record,
|
|
510
|
+
:fields => %w{one two three four},
|
|
511
|
+
:optional => %w{three four},
|
|
512
|
+
:absent => "*",
|
|
513
|
+
:rts => /[ *]+$/
|
|
514
|
+
end
|
|
515
|
+
|
|
516
|
+
assert_equal("a b",
|
|
517
|
+
@parser.to_line(:record_type => :record, :one => "a", :two => "b")
|
|
518
|
+
)
|
|
519
|
+
end
|
|
520
|
+
|
|
521
|
+
# Make sure the last field can contain the separator, as crontabs do, and
|
|
522
|
+
# that we roll them all up by default.
|
|
523
|
+
def test_field_rollups
|
|
524
|
+
@parser.record_line :yes, :fields => %w{name one two}
|
|
525
|
+
|
|
526
|
+
result = nil
|
|
527
|
+
assert_nothing_raised do
|
|
528
|
+
result = @parser.send(:parse_line, "Name One Two Three")
|
|
529
|
+
end
|
|
530
|
+
assert_equal("Two Three", result[:two],
|
|
531
|
+
"Did not roll up last fields by default")
|
|
532
|
+
|
|
533
|
+
@parser = FParser.new
|
|
534
|
+
assert_nothing_raised("Could not create record that rolls up fields") do
|
|
535
|
+
@parser.record_line :no, :fields => %w{name one two}, :rollup => false
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
result = nil
|
|
539
|
+
assert_nothing_raised do
|
|
540
|
+
result = @parser.send(:parse_line, "Name One Two Three")
|
|
541
|
+
end
|
|
542
|
+
assert_equal("Two", result[:two],
|
|
543
|
+
"Rolled up last fields when rollup => false")
|
|
544
|
+
end
|
|
545
|
+
|
|
546
|
+
def test_text_blocks
|
|
547
|
+
record = nil
|
|
548
|
+
assert_nothing_raised do
|
|
549
|
+
record = @parser.text_line :name, :match => %r{^#} do |line|
|
|
550
|
+
{:line => line.upcase}
|
|
551
|
+
end
|
|
552
|
+
end
|
|
553
|
+
|
|
554
|
+
assert(record.respond_to?(:process),
|
|
555
|
+
"Block was not used with text line")
|
|
556
|
+
|
|
557
|
+
assert_equal("YAYNESS", record.process("yayness")[:line],
|
|
558
|
+
"Did not call process method")
|
|
559
|
+
end
|
|
560
|
+
|
|
561
|
+
def test_hooks
|
|
562
|
+
record = nil
|
|
563
|
+
# First try it with a normal record
|
|
564
|
+
assert_nothing_raised("Could not set hooks") do
|
|
565
|
+
record = @parser.record_line :yay, :fields => %w{one two},
|
|
566
|
+
:post_parse => proc { |hash| hash[:posted] = true },
|
|
567
|
+
:pre_gen => proc { |hash| hash[:one] = hash[:one].upcase },
|
|
568
|
+
:to_line => proc { |hash| "# Line\n" + join(hash) }
|
|
569
|
+
end
|
|
570
|
+
|
|
571
|
+
assert(record.respond_to?(:post_parse), "did not create method for post-hook")
|
|
572
|
+
assert(record.respond_to?(:pre_gen), "did not create method for pre-hook")
|
|
573
|
+
|
|
574
|
+
result = nil
|
|
575
|
+
assert_nothing_raised("Could not process line with hooks") do
|
|
576
|
+
result = @parser.parse_line("one two")
|
|
577
|
+
end
|
|
578
|
+
|
|
579
|
+
assert(result[:posted], "Did not run post-hook")
|
|
580
|
+
old_result = result
|
|
581
|
+
|
|
582
|
+
# Now make sure our pre-gen hook is called
|
|
583
|
+
assert_nothing_raised("Could not generate line with hooks") do
|
|
584
|
+
result = @parser.to_line(result)
|
|
585
|
+
end
|
|
586
|
+
assert_equal("# Line\nONE two", result, "did not call pre-gen hook")
|
|
587
|
+
assert_equal("one", old_result[:one], "passed original hash to pre hook")
|
|
588
|
+
end
|
|
589
|
+
end
|
|
590
|
+
|
|
591
|
+
class TestUtilFileRecord < Test::Unit::TestCase
|
|
592
|
+
include PuppetTest
|
|
593
|
+
include PuppetTest::FileParsing
|
|
594
|
+
|
|
595
|
+
Record = Puppet::Util::FileParsing::FileRecord
|
|
596
|
+
def test_new_filerecord
|
|
597
|
+
[ [:fake, {}],
|
|
598
|
+
[nil, ]
|
|
599
|
+
].each do |args|
|
|
600
|
+
assert_raise(ArgumentError, "Did not fail on %s" % args.inspect) do
|
|
601
|
+
Record.new(*args)
|
|
602
|
+
end
|
|
603
|
+
end
|
|
604
|
+
|
|
605
|
+
# Make sure the fields get turned into symbols
|
|
606
|
+
record = nil
|
|
607
|
+
assert_nothing_raised do
|
|
608
|
+
record = Record.new(:record, :fields => %w{one two})
|
|
609
|
+
end
|
|
610
|
+
assert_equal([:one, :two], record.fields,
|
|
611
|
+
"Did not symbolize fields")
|
|
612
|
+
|
|
613
|
+
# Make sure we fail on invalid fields
|
|
614
|
+
[:record_type, :target, :on_disk].each do |field|
|
|
615
|
+
assert_raise(ArgumentError, "Did not fail on invalid field %s" % field) {
|
|
616
|
+
Record.new(:record, :fields => [field])
|
|
617
|
+
}
|
|
618
|
+
end
|
|
619
|
+
end
|
|
620
|
+
|
|
621
|
+
def test_defaults
|
|
622
|
+
record = Record.new(:text, :match => %r{^#})
|
|
623
|
+
[:absent, :separator, :joiner, :optional].each do |field|
|
|
624
|
+
assert_nil(record.send(field), "%s was not nil" % field)
|
|
625
|
+
end
|
|
626
|
+
|
|
627
|
+
record = Record.new(:record, :fields => %w{fields})
|
|
628
|
+
{:absent => "", :separator => /\s+/, :joiner => " ",
|
|
629
|
+
:optional => []}.each do |field, default|
|
|
630
|
+
assert_equal(default, record.send(field), "%s was not default" % field)
|
|
631
|
+
end
|
|
632
|
+
end
|
|
633
|
+
|
|
634
|
+
def test_block
|
|
635
|
+
record = nil
|
|
636
|
+
assert_nothing_raised("Could not pass a block when creating record") do
|
|
637
|
+
record = Record.new(:record, :fields => %w{one}) do |line|
|
|
638
|
+
return line.upcase
|
|
639
|
+
end
|
|
640
|
+
end
|
|
641
|
+
|
|
642
|
+
line = "This is a line"
|
|
643
|
+
|
|
644
|
+
assert(record.respond_to?(:process),
|
|
645
|
+
"Record did not define :process method")
|
|
646
|
+
|
|
647
|
+
assert_equal(line.upcase, record.process(line),
|
|
648
|
+
"Record did not process line correctly")
|
|
649
|
+
end
|
|
650
|
+
|
|
651
|
+
# Make sure we can declare that we want the block to be instance-eval'ed instead of
|
|
652
|
+
# defining the 'process' method.
|
|
653
|
+
def test_instance_block
|
|
654
|
+
record = nil
|
|
655
|
+
assert_nothing_raised("Could not pass a block when creating record") do
|
|
656
|
+
record = Record.new(:record, :block_eval => :instance, :fields => %w{one}) do
|
|
657
|
+
def process(line)
|
|
658
|
+
line.upcase
|
|
659
|
+
end
|
|
660
|
+
|
|
661
|
+
def to_line(details)
|
|
662
|
+
details.upcase
|
|
663
|
+
end
|
|
664
|
+
end
|
|
665
|
+
end
|
|
666
|
+
|
|
667
|
+
assert(record.respond_to?(:process), "Block was not instance-eval'ed and process was not defined")
|
|
668
|
+
assert(record.respond_to?(:to_line), "Block was not instance-eval'ed and to_line was not defined")
|
|
669
|
+
|
|
670
|
+
line = "some text"
|
|
671
|
+
assert_equal(line.upcase, record.process(line), "Instance-eval'ed record did not call :process correctly")
|
|
672
|
+
assert_equal(line.upcase, record.to_line(line), "Instance-eval'ed record did not call :to_line correctly")
|
|
673
|
+
end
|
|
674
|
+
end
|
|
675
|
+
|
|
676
|
+
# $Id: fileparsing.rb 2407 2007-04-23 18:01:36Z luke $
|
|
677
|
+
|