puppet 3.1.1 → 3.2.0.rc1
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/CONTRIBUTING.md +2 -2
- data/Gemfile +32 -19
- data/README_DEVELOPER.md +332 -14
- data/Rakefile +9 -5
- data/ext/build_defaults.yaml +2 -3
- data/ext/debian/changelog.erb +6 -0
- data/ext/debian/control +6 -6
- data/ext/envpuppet +4 -4
- data/ext/project_data.yaml +1 -0
- data/ext/puppet-nm-dispatcher +13 -0
- data/ext/redhat/puppet.spec.erb +17 -0
- data/ext/suse/client.init +1 -1
- data/ext/systemd/puppetagent.service +2 -2
- data/ext/systemd/puppetmaster.service +2 -2
- data/lib/hiera/scope.rb +29 -11
- data/lib/hiera_puppet.rb +1 -3
- data/lib/puppet/agent.rb +3 -3
- data/lib/puppet/application.rb +2 -2
- data/lib/puppet/application/agent.rb +27 -12
- data/lib/puppet/application/apply.rb +11 -1
- data/lib/puppet/application/describe.rb +1 -1
- data/lib/puppet/application/doc.rb +13 -9
- data/lib/puppet/application/filebucket.rb +0 -1
- data/lib/puppet/application/kick.rb +1 -0
- data/lib/puppet/application/master.rb +16 -8
- data/lib/puppet/daemon.rb +19 -64
- data/lib/puppet/defaults.rb +61 -5
- data/lib/puppet/error.rb +15 -4
- data/lib/puppet/external/nagios/grammar.ry +1 -1
- data/lib/puppet/external/nagios/makefile +1 -1
- data/lib/puppet/external/nagios/parser.rb +185 -618
- data/lib/puppet/external/pson/pure/parser.rb +47 -1
- data/lib/puppet/face/certificate.rb +3 -3
- data/lib/puppet/face/module.rb +1 -1
- data/lib/puppet/face/module/changes.rb +3 -1
- data/lib/puppet/face/module/uninstall.rb +1 -1
- data/lib/puppet/face/node/clean.rb +5 -5
- data/lib/puppet/feature/base.rb +3 -1
- data/lib/puppet/feature/libuser.rb +8 -0
- data/lib/puppet/file_serving/fileset.rb +9 -1
- data/lib/puppet/forge.rb +28 -5
- data/lib/puppet/forge/errors.rb +34 -0
- data/lib/puppet/forge/repository.rb +1 -1
- data/lib/puppet/indirector.rb +4 -1
- data/lib/puppet/indirector/catalog/compiler.rb +37 -30
- data/lib/puppet/indirector/facts/inventory_active_record.rb +1 -0
- data/lib/puppet/indirector/indirection.rb +28 -15
- data/lib/puppet/indirector/rest.rb +18 -10
- data/lib/puppet/interface.rb +11 -4
- data/lib/puppet/interface/action.rb +1 -3
- data/lib/puppet/interface/action_builder.rb +0 -3
- data/lib/puppet/interface/action_manager.rb +0 -3
- data/lib/puppet/interface/face_collection.rb +0 -2
- data/lib/puppet/interface/option.rb +0 -2
- data/lib/puppet/interface/option_builder.rb +0 -2
- data/lib/puppet/interface/option_manager.rb +0 -2
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/module_tool.rb +1 -0
- data/lib/puppet/module_tool/applications/application.rb +0 -3
- data/lib/puppet/module_tool/applications/builder.rb +8 -20
- data/lib/puppet/module_tool/applications/checksummer.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -0
- data/lib/puppet/module_tool/applications/unpacker.rb +3 -11
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/errors/installer.rb +18 -1
- data/lib/puppet/module_tool/modulefile.rb +2 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +1 -1
- data/lib/puppet/module_tool/tar.rb +17 -0
- data/lib/puppet/module_tool/tar/gnu.rb +9 -0
- data/lib/puppet/module_tool/tar/mini.rb +39 -0
- data/lib/puppet/module_tool/tar/solaris.rb +5 -0
- data/lib/puppet/network/http.rb +1 -0
- data/lib/puppet/network/http/connection.rb +9 -23
- data/lib/puppet/network/http/handler.rb +38 -7
- data/lib/puppet/network/http/rack/rest.rb +14 -3
- data/lib/puppet/network/http/webrick.rb +3 -1
- data/lib/puppet/network/http/webrick/rest.rb +11 -2
- data/lib/puppet/node/environment.rb +3 -1
- data/lib/puppet/parameter.rb +32 -29
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/path.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parameter/value_collection.rb +7 -3
- data/lib/puppet/parser/ast.rb +3 -1
- data/lib/puppet/parser/ast/arithmetic_operator.rb +56 -12
- data/lib/puppet/parser/ast/astarray.rb +1 -1
- data/lib/puppet/parser/ast/block_expression.rb +41 -0
- data/lib/puppet/parser/ast/function.rb +13 -2
- data/lib/puppet/parser/ast/lambda.rb +107 -0
- data/lib/puppet/parser/ast/leaf.rb +1 -2
- data/lib/puppet/parser/ast/method_call.rb +77 -0
- data/lib/puppet/parser/ast/vardef.rb +7 -0
- data/lib/puppet/parser/compiler.rb +27 -16
- data/lib/puppet/parser/e_parser_adapter.rb +120 -0
- data/lib/puppet/parser/files.rb +7 -6
- data/lib/puppet/parser/functions.rb +10 -8
- data/lib/puppet/parser/functions/collect.rb +43 -0
- data/lib/puppet/parser/functions/each.rb +96 -0
- data/lib/puppet/parser/functions/foreach.rb +96 -0
- data/lib/puppet/parser/functions/fqdn_rand.rb +2 -2
- data/lib/puppet/parser/functions/hiera.rb +20 -2
- data/lib/puppet/parser/functions/hiera_array.rb +21 -2
- data/lib/puppet/parser/functions/hiera_hash.rb +23 -2
- data/lib/puppet/parser/functions/hiera_include.rb +33 -2
- data/lib/puppet/parser/functions/inline_template.rb +4 -4
- data/lib/puppet/parser/functions/reduce.rb +74 -0
- data/lib/puppet/parser/functions/reject.rb +46 -0
- data/lib/puppet/parser/functions/select.rb +46 -0
- data/lib/puppet/parser/functions/slice.rb +96 -0
- data/lib/puppet/parser/functions/template.rb +2 -2
- data/lib/puppet/parser/grammar.ra +7 -4
- data/lib/puppet/parser/lexer.rb +10 -0
- data/lib/puppet/parser/methods.rb +69 -0
- data/lib/puppet/parser/parser.rb +855 -808
- data/lib/puppet/parser/parser_factory.rb +62 -0
- data/lib/puppet/parser/parser_support.rb +8 -2
- data/lib/puppet/parser/scope.rb +153 -47
- data/lib/puppet/parser/templatewrapper.rb +28 -21
- data/lib/puppet/parser/type_loader.rb +3 -1
- data/lib/puppet/pops.rb +40 -0
- data/lib/puppet/pops/adaptable.rb +190 -0
- data/lib/puppet/pops/adapters.rb +65 -0
- data/lib/puppet/pops/containment.rb +37 -0
- data/lib/puppet/pops/issues.rb +258 -0
- data/lib/puppet/pops/label_provider.rb +71 -0
- data/lib/puppet/pops/model/ast_transformer.rb +636 -0
- data/lib/puppet/pops/model/ast_tree_dumper.rb +378 -0
- data/lib/puppet/pops/model/factory.rb +804 -0
- data/lib/puppet/pops/model/model.rb +567 -0
- data/lib/puppet/pops/model/model_label_provider.rb +75 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +352 -0
- data/lib/puppet/pops/model/tree_dumper.rb +59 -0
- data/lib/puppet/pops/parser/egrammar.ra +723 -0
- data/lib/puppet/pops/parser/eparser.rb +2300 -0
- data/lib/puppet/pops/parser/grammar.ra +746 -0
- data/lib/puppet/pops/parser/lexer.rb +842 -0
- data/lib/puppet/pops/parser/makefile +13 -0
- data/lib/puppet/pops/parser/parser_support.rb +203 -0
- data/lib/puppet/pops/patterns.rb +35 -0
- data/lib/puppet/pops/utils.rb +104 -0
- data/lib/puppet/pops/validation.rb +297 -0
- data/lib/puppet/pops/validation/checker3_1.rb +551 -0
- data/lib/puppet/pops/validation/validator_factory_3_1.rb +41 -0
- data/lib/puppet/pops/visitable.rb +6 -0
- data/lib/puppet/pops/visitor.rb +50 -0
- data/lib/puppet/property.rb +37 -28
- data/lib/puppet/property/ensure.rb +2 -2
- data/lib/puppet/property/ordered_list.rb +1 -1
- data/lib/puppet/provider.rb +26 -30
- data/lib/puppet/provider/aixobject.rb +45 -44
- data/lib/puppet/provider/augeas/augeas.rb +0 -1
- data/lib/puppet/provider/confiner.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +107 -67
- data/lib/puppet/provider/group/groupadd.rb +59 -3
- data/lib/puppet/provider/interface/cisco.rb +4 -4
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +22 -6
- data/lib/puppet/provider/nameservice/pw.rb +1 -1
- data/lib/puppet/provider/package/aix.rb +28 -4
- data/lib/puppet/provider/package/gem.rb +0 -2
- data/lib/puppet/provider/package/macports.rb +1 -1
- data/lib/puppet/provider/package/nim.rb +249 -4
- data/lib/puppet/provider/package/opkg.rb +77 -0
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/rpm.rb +30 -16
- data/lib/puppet/provider/package/yum.rb +3 -3
- data/lib/puppet/provider/parsedfile.rb +80 -3
- data/lib/puppet/provider/selmodule/semodule.rb +2 -2
- data/lib/puppet/provider/service/debian.rb +0 -4
- data/lib/puppet/provider/service/freebsd.rb +2 -2
- data/lib/puppet/provider/service/gentoo.rb +0 -9
- data/lib/puppet/provider/service/init.rb +27 -2
- data/lib/puppet/provider/service/launchd.rb +1 -1
- data/lib/puppet/provider/service/openwrt.rb +36 -0
- data/lib/puppet/provider/service/redhat.rb +0 -9
- data/lib/puppet/provider/service/src.rb +38 -4
- data/lib/puppet/provider/service/systemd.rb +2 -2
- data/lib/puppet/provider/service/upstart.rb +1 -8
- data/lib/puppet/provider/user/aix.rb +4 -10
- data/lib/puppet/provider/user/pw.rb +6 -10
- data/lib/puppet/provider/user/useradd.rb +129 -31
- data/lib/puppet/provider/vlan/cisco.rb +4 -4
- data/lib/puppet/reference/function.rb +2 -2
- data/lib/puppet/reference/indirection.rb +46 -5
- data/lib/puppet/reference/metaparameter.rb +2 -2
- data/lib/puppet/reports.rb +5 -5
- data/lib/puppet/reports/rrdgraph.rb +4 -4
- data/lib/puppet/reports/tagmail.rb +1 -1
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/type.rb +13 -11
- data/lib/puppet/scheduler.rb +16 -0
- data/lib/puppet/scheduler/job.rb +53 -0
- data/lib/puppet/scheduler/scheduler.rb +45 -0
- data/lib/puppet/scheduler/splay_job.rb +32 -0
- data/lib/puppet/scheduler/timer.rb +13 -0
- data/lib/puppet/settings/base_setting.rb +1 -1
- data/lib/puppet/simple_graph.rb +4 -4
- data/lib/puppet/ssl/base.rb +12 -2
- data/lib/puppet/ssl/certificate.rb +4 -1
- data/lib/puppet/ssl/certificate_request.rb +4 -1
- data/lib/puppet/ssl/certificate_revocation_list.rb +4 -1
- data/lib/puppet/ssl/configuration.rb +32 -0
- data/lib/puppet/ssl/host.rb +18 -21
- data/lib/puppet/ssl/key.rb +4 -1
- data/lib/puppet/ssl/validator.rb +116 -0
- data/lib/puppet/transaction.rb +1 -1
- data/lib/puppet/transaction/event.rb +3 -10
- data/lib/puppet/transaction/event_manager.rb +8 -1
- data/lib/puppet/transaction/report.rb +17 -16
- data/lib/puppet/type.rb +77 -69
- data/lib/puppet/type/cron.rb +20 -8
- data/lib/puppet/type/exec.rb +9 -3
- data/lib/puppet/type/file.rb +95 -21
- data/lib/puppet/type/file/content.rb +1 -1
- data/lib/puppet/type/file/mode.rb +7 -1
- data/lib/puppet/type/file/source.rb +2 -2
- data/lib/puppet/type/group.rb +11 -0
- data/lib/puppet/type/scheduled_task.rb +5 -1
- data/lib/puppet/type/service.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +2 -2
- data/lib/puppet/type/user.rb +24 -6
- data/lib/puppet/util.rb +12 -2
- data/lib/puppet/util/classgen.rb +4 -4
- data/lib/puppet/util/colors.rb +55 -0
- data/lib/puppet/util/command_line/trollop.rb +4 -4
- data/lib/puppet/util/errors.rb +39 -3
- data/lib/puppet/util/fileparsing.rb +5 -0
- data/lib/puppet/util/filetype.rb +11 -9
- data/lib/puppet/util/instrumentation/instrumentable.rb +2 -2
- data/lib/puppet/util/libuser.conf +15 -0
- data/lib/puppet/util/libuser.rb +12 -0
- data/lib/puppet/util/monkey_patches.rb +48 -0
- data/lib/puppet/util/network_device.rb +1 -1
- data/lib/puppet/util/network_device/base.rb +2 -2
- data/lib/puppet/util/network_device/cisco/device.rb +29 -19
- data/lib/puppet/util/network_device/config.rb +5 -2
- data/lib/puppet/util/network_device/ipcalc.rb +1 -1
- data/lib/puppet/util/network_device/transport/ssh.rb +4 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +4 -2
- data/lib/puppet/util/plugins.rb +4 -4
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/profiler.rb +28 -0
- data/lib/puppet/util/profiler/logging.rb +47 -0
- data/lib/puppet/util/profiler/none.rb +8 -0
- data/lib/puppet/util/profiler/object_counts.rb +17 -0
- data/lib/puppet/util/profiler/wall_clock.rb +34 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/rdoc/parser.rb +5 -5
- data/lib/puppet/util/ssl.rb +38 -0
- data/lib/puppet/util/subclass_loader.rb +1 -5
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/process.rb +3 -0
- data/lib/puppet/util/windows/root_certs.rb +86 -0
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +19 -0
- data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +18 -0
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +15 -0
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +4 -0
- data/spec/fixtures/integration/provider/cron/crontab/modify_entry +13 -0
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +15 -0
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +6 -0
- data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +12 -0
- data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +14 -0
- data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +16 -0
- data/spec/fixtures/unit/pops/parser/lexer/append.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +14 -0
- data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +65 -0
- data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +15 -0
- data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +17 -0
- data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection.pp +10 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +20 -0
- data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +23 -0
- data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +17 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/hash.pp +33 -0
- data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +12 -0
- data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +15 -0
- data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +10 -0
- data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +7 -0
- data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +13 -0
- data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +13 -0
- data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +49 -0
- data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +38 -0
- data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +19 -0
- data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +22 -0
- data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/tag.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +35 -0
- data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +14 -0
- data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +4 -4
- data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +3 -0
- data/spec/fixtures/unit/provider/cron/parsed/managed +6 -0
- data/spec/fixtures/unit/provider/cron/parsed/simple +9 -0
- data/spec/fixtures/unit/provider/parsedfile/simple.txt +4 -0
- data/spec/fixtures/unit/provider/service/systemd/list_units +18 -0
- data/spec/integration/parser/collector_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +252 -227
- data/spec/integration/parser/parser_spec.rb +171 -53
- data/spec/integration/parser/scope_spec.rb +1 -1
- data/spec/integration/provider/cron/crontab_spec.rb +187 -0
- data/spec/integration/provider/service/systemd_spec.rb +20 -0
- data/spec/integration/type/file_spec.rb +21 -21
- data/spec/integration/type/package_spec.rb +1 -1
- data/spec/lib/puppet_spec/database.rb +2 -5
- data/spec/spec_helper.rb +6 -1
- data/spec/unit/application/apply_spec.rb +16 -1
- data/spec/unit/application/describe_spec.rb +1 -1
- data/spec/unit/application/doc_spec.rb +55 -32
- data/spec/unit/application/kick_spec.rb +8 -6
- data/spec/unit/application/master_spec.rb +4 -4
- data/spec/unit/daemon_spec.rb +1 -1
- data/spec/unit/forge/errors_spec.rb +40 -0
- data/spec/unit/forge/repository_spec.rb +11 -1
- data/spec/unit/forge_spec.rb +13 -3
- data/spec/unit/hiera/backend/puppet_backend_spec.rb +1 -0
- data/spec/unit/hiera/scope_spec.rb +48 -25
- data/spec/unit/indirector/catalog/active_record_spec.rb +6 -3
- data/spec/unit/indirector/catalog/compiler_spec.rb +3 -28
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +1 -1
- data/spec/unit/indirector/facts/inventory_active_record_spec.rb +154 -150
- data/spec/unit/indirector/indirection_spec.rb +5 -0
- data/spec/unit/indirector/resource/active_record_spec.rb +5 -22
- data/spec/unit/indirector_spec.rb +7 -1
- data/spec/unit/interface/action_builder_spec.rb +1 -1
- data/spec/unit/interface/action_manager_spec.rb +0 -2
- data/spec/unit/interface/action_spec.rb +1 -1
- data/spec/unit/interface/documentation_spec.rb +0 -2
- data/spec/unit/interface/face_collection_spec.rb +1 -1
- data/spec/unit/interface/option_builder_spec.rb +1 -1
- data/spec/unit/interface/option_spec.rb +0 -1
- data/spec/unit/module_spec.rb +17 -19
- data/spec/unit/module_tool/application_spec.rb +1 -3
- data/spec/unit/module_tool/applications/builder_spec.rb +38 -0
- data/spec/unit/module_tool/applications/checksummer_spec.rb +134 -0
- data/spec/unit/module_tool/applications/installer_spec.rb +71 -91
- data/spec/unit/module_tool/applications/searcher_spec.rb +1 -3
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +18 -26
- data/spec/unit/module_tool/applications/unpacker_spec.rb +19 -52
- data/spec/unit/module_tool/tar/gnu_spec.rb +19 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +59 -0
- data/spec/unit/module_tool/tar/solaris_spec.rb +19 -0
- data/spec/unit/network/http/connection_spec.rb +17 -2
- data/spec/unit/network/http/handler_spec.rb +195 -167
- data/spec/unit/network/http/rack/rest_spec.rb +26 -4
- data/spec/unit/network/http/webrick/rest_spec.rb +28 -1
- data/spec/unit/network/http/webrick_spec.rb +12 -3
- data/spec/unit/node/environment_spec.rb +421 -404
- data/spec/unit/parser/ast/arithmetic_operator_spec.rb +98 -2
- data/spec/unit/parser/collector_spec.rb +4 -4
- data/spec/unit/parser/compiler_spec.rb +13 -13
- data/spec/unit/parser/eparser_adapter_spec.rb +407 -0
- data/spec/unit/parser/functions/extlookup_spec.rb +20 -17
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +5 -0
- data/spec/unit/parser/functions/hiera_include_spec.rb +0 -2
- data/spec/unit/parser/functions/hiera_spec.rb +0 -2
- data/spec/unit/parser/functions_spec.rb +27 -15
- data/spec/unit/parser/methods/collect_spec.rb +110 -0
- data/spec/unit/parser/methods/each_spec.rb +91 -0
- data/spec/unit/parser/methods/foreach_spec.rb +91 -0
- data/spec/unit/parser/methods/reduce_spec.rb +67 -0
- data/spec/unit/parser/methods/reject_spec.rb +73 -0
- data/spec/unit/parser/methods/select_spec.rb +79 -0
- data/spec/unit/parser/methods/shared.rb +61 -0
- data/spec/unit/parser/methods/slice_spec.rb +97 -0
- data/spec/unit/parser/parser_spec.rb +2 -2
- data/spec/unit/parser/scope_spec.rb +39 -16
- data/spec/unit/parser/templatewrapper_spec.rb +6 -5
- data/spec/unit/parser/type_loader_spec.rb +191 -165
- data/spec/unit/pops/adaptable_spec.rb +143 -0
- data/spec/unit/pops/containment_spec.rb +25 -0
- data/spec/unit/pops/factory_rspec_helper.rb +77 -0
- data/spec/unit/pops/factory_spec.rb +329 -0
- data/spec/unit/pops/issues_spec.rb +26 -0
- data/spec/unit/pops/label_provider_spec.rb +42 -0
- data/spec/unit/pops/model/ast_transformer_spec.rb +65 -0
- data/spec/unit/pops/model/model_spec.rb +37 -0
- data/spec/unit/pops/parser/lexer_spec.rb +884 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +248 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +93 -0
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +159 -0
- data/spec/unit/pops/parser/parse_containers_spec.rb +175 -0
- data/spec/unit/pops/parser/parse_resource_spec.rb +228 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +11 -0
- data/spec/unit/pops/parser/parser_spec.rb +15 -0
- data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +16 -0
- data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +243 -0
- data/spec/unit/pops/transformer/transform_calls_spec.rb +80 -0
- data/spec/unit/pops/transformer/transform_conditionals_spec.rb +132 -0
- data/spec/unit/pops/transformer/transform_containers_spec.rb +182 -0
- data/spec/unit/pops/transformer/transform_resource_spec.rb +185 -0
- data/spec/unit/pops/transformer/transformer_rspec_helper.rb +27 -0
- data/spec/unit/pops/visitor_spec.rb +94 -0
- data/spec/unit/property_spec.rb +11 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +3 -0
- data/spec/unit/provider/cron/crontab_spec.rb +97 -7
- data/spec/unit/provider/cron/parsed_spec.rb +325 -0
- data/spec/unit/provider/exec/posix_spec.rb +1 -1
- data/spec/unit/provider/group/groupadd_spec.rb +33 -3
- data/spec/unit/provider/group/pw_spec.rb +5 -5
- data/spec/unit/provider/nameservice_spec.rb +304 -0
- data/spec/unit/provider/package/aix_spec.rb +53 -11
- data/spec/unit/provider/package/aptrpm_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +6 -11
- data/spec/unit/provider/package/nim_spec.rb +216 -7
- data/spec/unit/provider/package/opkg_spec.rb +180 -0
- data/spec/unit/provider/package/rpm_spec.rb +149 -3
- data/spec/unit/provider/package/yum_spec.rb +6 -5
- data/spec/unit/provider/parsedfile_spec.rb +122 -28
- data/spec/unit/provider/service/freebsd_spec.rb +18 -0
- data/spec/unit/provider/service/init_spec.rb +108 -87
- data/spec/unit/provider/service/launchd_spec.rb +2 -2
- data/spec/unit/provider/service/openwrt_spec.rb +109 -0
- data/spec/unit/provider/service/src_spec.rb +117 -41
- data/spec/unit/provider/service/systemd_spec.rb +125 -17
- data/spec/unit/provider/service/upstart_spec.rb +1 -1
- data/spec/unit/provider/user/aix_spec.rb +42 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +1 -0
- data/spec/unit/provider/user/pw_spec.rb +24 -12
- data/spec/unit/provider/user/user_role_add_spec.rb +1 -1
- data/spec/unit/provider/user/useradd_spec.rb +179 -15
- data/spec/unit/resource/type_spec.rb +3 -3
- data/spec/unit/scheduler/job_spec.rb +79 -0
- data/spec/unit/scheduler/scheduler_spec.rb +129 -0
- data/spec/unit/scheduler/splay_job_spec.rb +35 -0
- data/spec/unit/ssl/base_spec.rb +3 -9
- data/spec/unit/ssl/certificate_authority_spec.rb +1 -0
- data/spec/unit/ssl/certificate_request_spec.rb +3 -1
- data/spec/unit/ssl/certificate_spec.rb +3 -1
- data/spec/unit/ssl/configuration_spec.rb +74 -0
- data/spec/unit/ssl/host_spec.rb +28 -7
- data/spec/unit/ssl/validator_spec.rb +311 -0
- data/spec/unit/transaction/event_manager_spec.rb +49 -0
- data/spec/unit/transaction/event_spec.rb +20 -5
- data/spec/unit/transaction/report_spec.rb +8 -0
- data/spec/unit/type/cron_spec.rb +9 -0
- data/spec/unit/type/exec_spec.rb +11 -0
- data/spec/unit/type/file/content_spec.rb +20 -20
- data/spec/unit/type/file/mode_spec.rb +6 -0
- data/spec/unit/type/file/source_spec.rb +9 -7
- data/spec/unit/type/file_spec.rb +22 -3
- data/spec/unit/type/service_spec.rb +34 -21
- data/spec/unit/type_spec.rb +46 -1
- data/spec/unit/util/backups_spec.rb +2 -2
- data/spec/unit/util/execution_spec.rb +4 -1
- data/spec/unit/util/filetype_spec.rb +6 -0
- data/spec/unit/util/monkey_patches_spec.rb +18 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +37 -0
- data/spec/unit/util/network_device/config_spec.rb +14 -0
- data/spec/unit/util/network_device_spec.rb +3 -3
- data/spec/unit/util/profiler/logging_spec.rb +81 -0
- data/spec/unit/util/profiler/none_spec.rb +12 -0
- data/spec/unit/util/profiler/object_counts_spec.rb +14 -0
- data/spec/unit/util/profiler/wall_clock_spec.rb +13 -0
- data/spec/unit/util/pson_spec.rb +5 -0
- data/spec/unit/util/ssl_spec.rb +51 -0
- data/spec/unit/util/windows/root_certs_spec.rb +15 -0
- data/spec/unit/util_spec.rb +28 -0
- metadata +2593 -2307
- data/spec/unit/module_tool/applications/application_spec.rb +0 -19
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# A provider of labels for model object, producing a human name for the model object.
|
|
2
|
+
# As an example, if object is an ArithmeticExpression with operator +, `#a_an(o)` produces "a '+' Expression",
|
|
3
|
+
# #the(o) produces "the + Expression", and #label produces "+ Expression".
|
|
4
|
+
#
|
|
5
|
+
class Puppet::Pops::Model::ModelLabelProvider < Puppet::Pops::LabelProvider
|
|
6
|
+
def initialize
|
|
7
|
+
@@label_visitor ||= Puppet::Pops::Visitor.new(self,"label",0,0)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Produces a label for the given objects type/operator without article.
|
|
11
|
+
def label o
|
|
12
|
+
@@label_visitor.visit(o)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def label_Factory o ; label(o.current) end
|
|
16
|
+
def label_Array o ; "Array Object" end
|
|
17
|
+
def label_LiteralNumber o ; "Literal Number" end
|
|
18
|
+
def label_ArithmeticExpression o ; "'#{o_operator}' expression" end
|
|
19
|
+
def label_AccessExpression o ; "'[]' expression" end
|
|
20
|
+
def label_MatchExpression o ; "'#{o.operator}' expression" end
|
|
21
|
+
def label_CollectExpression o ; label(o.query) end
|
|
22
|
+
def label_ExportedQuery o ; "Exported Query" end
|
|
23
|
+
def label_VirtualQuery o ; "Virtual Query" end
|
|
24
|
+
def label_QueryExpression o ; "Collect Query" end
|
|
25
|
+
def label_ComparisonExpression o ; "'#{o.operator}' expression" end
|
|
26
|
+
def label_AndExpression o ; "'and' expression" end
|
|
27
|
+
def label_OrExpression o ; "'or' expression" end
|
|
28
|
+
def label_InExpression o ; "'in' expression" end
|
|
29
|
+
def label_ImportExpression o ; "'import' expression" end
|
|
30
|
+
def label_InstanceReferences o ; "Resource Reference" end
|
|
31
|
+
def label_AssignmentExpression o ; "'#{o.operator}' expression" end
|
|
32
|
+
def label_AttributeOperation o ; "'#{o.operator}' expression" end
|
|
33
|
+
def label_LiteralList o ; "Array Expression" end
|
|
34
|
+
def label_LiteralHash o ; "Hash Expression" end
|
|
35
|
+
def label_KeyedEntry o ; "Hash Entry" end
|
|
36
|
+
def label_LiteralBoolean o ; "Boolean" end
|
|
37
|
+
def label_LiteralString o ; "String" end
|
|
38
|
+
def label_LiteralText o ; "Text in Interpolated String" end
|
|
39
|
+
def label_LambdaExpression o ; "Lambda" end
|
|
40
|
+
def label_LiteralDefault o ; "'default' expression" end
|
|
41
|
+
def label_LiteralUndef o ; "'undef' expression" end
|
|
42
|
+
def label_LiteralRegularExpression o ; "Regular Expression" end
|
|
43
|
+
def label_Nop o ; "Nop Expression" end
|
|
44
|
+
def label_NamedAccessExpression o ; "'.' expression" end
|
|
45
|
+
def label_NilClass o ; "Nil Object" end
|
|
46
|
+
def label_NotExpression o ; "'not' expression" end
|
|
47
|
+
def label_VariableExpression o ; "Variable" end
|
|
48
|
+
def label_TextExpression o ; "Expression in Interpolated String" end
|
|
49
|
+
def label_UnaryMinusExpression o ; "Unary Minus" end
|
|
50
|
+
def label_BlockExpression o ; "Block Expression" end
|
|
51
|
+
def label_ConcatenatedString o ; "Double Quoted String" end
|
|
52
|
+
def label_HostClassDefinition o ; "Host Class Definition" end
|
|
53
|
+
def label_NodeDefinition o ; "Node Definition" end
|
|
54
|
+
def label_ResourceTypeDefinition o ; "'define' expression" end
|
|
55
|
+
def label_ResourceOverrideExpression o ; "Resource Override" end
|
|
56
|
+
def label_Parameter o ; "Parameter Definition" end
|
|
57
|
+
def label_ParenthesizedExpression o ; "Parenthesized Expression" end
|
|
58
|
+
def label_IfExpression o ; "'if' statement" end
|
|
59
|
+
def label_UnlessExpression o ; "'unless' Statement" end
|
|
60
|
+
def label_CallNamedFunctionExpression o ; "Function Call" end
|
|
61
|
+
def label_CallMethodExpression o ; "Method call" end
|
|
62
|
+
def label_CaseExpression o ; "'case' statement" end
|
|
63
|
+
def label_CaseOption o ; "Case Option" end
|
|
64
|
+
def label_RelationshipExpression o ; "'#{o.operator}' expression" end
|
|
65
|
+
def label_ResourceBody o ; "Resource Instance Definition" end
|
|
66
|
+
def label_ResourceDefaultsExpression o ; "Resource Defaults Expression" end
|
|
67
|
+
def label_ResourceExpression o ; "Resource Statement" end
|
|
68
|
+
def label_SelectorExpression o ; "Selector Expression" end
|
|
69
|
+
def label_SelectorEntry o ; "Selector Option" end
|
|
70
|
+
def label_String o ; "Ruby String" end
|
|
71
|
+
def label_Object o ; "Ruby Object" end
|
|
72
|
+
def label_QualifiedName o ; "Name" end
|
|
73
|
+
def label_QualifiedReference o ; "Type Name" end
|
|
74
|
+
|
|
75
|
+
end
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
# Dumps a Pops::Model in reverse polish notation; i.e. LISP style
|
|
2
|
+
# The intention is to use this for debugging output
|
|
3
|
+
# TODO: BAD NAME - A DUMP is a Ruby Serialization
|
|
4
|
+
#
|
|
5
|
+
class Puppet::Pops::Model::ModelTreeDumper < Puppet::Pops::Model::TreeDumper
|
|
6
|
+
def dump_Array o
|
|
7
|
+
o.collect {|e| do_dump(e) }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def dump_LiteralNumber o
|
|
11
|
+
case o.radix
|
|
12
|
+
when 10
|
|
13
|
+
o.value.to_s
|
|
14
|
+
when 8
|
|
15
|
+
"0%o" % o.value
|
|
16
|
+
when 16
|
|
17
|
+
"0x%X" % o.value
|
|
18
|
+
else
|
|
19
|
+
"bad radix:" + o.value.to_s
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def dump_LiteralValue o
|
|
24
|
+
o.value.to_s
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def dump_Factory o
|
|
28
|
+
do_dump(o.current)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def dump_ArithmeticExpression o
|
|
32
|
+
[o.operator.to_s, do_dump(o.left_expr), do_dump(o.right_expr)]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# x[y] prints as (slice x y)
|
|
36
|
+
def dump_AccessExpression o
|
|
37
|
+
if o.keys.size <= 1
|
|
38
|
+
["slice", do_dump(o.left_expr), do_dump(o.keys[0])]
|
|
39
|
+
else
|
|
40
|
+
["slice", do_dump(o.left_expr), do_dump(o.keys)]
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def dump_MatchesExpression o
|
|
45
|
+
[o.operator.to_s, do_dump(o.left_expr), do_dump(o.right_expr)]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def dump_CollectExpression o
|
|
49
|
+
result = ["collect", do_dump(o.type_expr), :indent, :break, do_dump(o.query), :indent]
|
|
50
|
+
o.operations do |ao|
|
|
51
|
+
result << :break << do_dump(ao)
|
|
52
|
+
end
|
|
53
|
+
result += [:dedent, :dedent ]
|
|
54
|
+
result
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def dump_ExportedQuery o
|
|
58
|
+
result = ["<<| |>>"]
|
|
59
|
+
result += dump_QueryExpression(o) unless is_nop?(o.expr)
|
|
60
|
+
result
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def dump_VirtualQuery o
|
|
64
|
+
result = ["<| |>"]
|
|
65
|
+
result += dump_QueryExpression(o) unless is_nop?(o.expr)
|
|
66
|
+
result
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def dump_QueryExpression o
|
|
70
|
+
[do_dump(o.expr)]
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def dump_ComparisonExpression o
|
|
74
|
+
[o.operator.to_s, do_dump(o.left_expr), do_dump(o.right_expr)]
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def dump_AndExpression o
|
|
78
|
+
["&&", do_dump(o.left_expr), do_dump(o.right_expr)]
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def dump_OrExpression o
|
|
82
|
+
["||", do_dump(o.left_expr), do_dump(o.right_expr)]
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def dump_InExpression o
|
|
86
|
+
["in", do_dump(o.left_expr), do_dump(o.right_expr)]
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def dump_ImportExpression o
|
|
90
|
+
["import"] + o.files.collect {|f| do_dump(f) }
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def dump_InstanceReferences o
|
|
94
|
+
["instances", do_dump(o.type_name)] + o.names.collect {|n| do_dump(n) }
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def dump_AssignmentExpression o
|
|
98
|
+
[o.operator.to_s, do_dump(o.left_expr), do_dump(o.right_expr)]
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Produces (name => expr) or (name +> expr)
|
|
102
|
+
def dump_AttributeOperation o
|
|
103
|
+
[o.attribute_name, o.operator, do_dump(o.value_expr)]
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def dump_LiteralList o
|
|
107
|
+
["[]"] + o.values.collect {|x| do_dump(x)}
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def dump_LiteralHash o
|
|
111
|
+
["{}"] + o.entries.collect {|x| do_dump(x)}
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def dump_KeyedEntry o
|
|
115
|
+
[do_dump(o.key), do_dump(o.value)]
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def dump_MatchExpression o
|
|
119
|
+
[o.operator.to_s, do_dump(o.left_expr), do_dump(o.right_expr)]
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def dump_LiteralString o
|
|
123
|
+
"'#{o.value}'"
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def dump_LiteralText o
|
|
127
|
+
o.value
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def dump_LambdaExpression o
|
|
131
|
+
result = ["lambda"]
|
|
132
|
+
result << ["parameters"] + o.parameters.collect {|p| do_dump(p) } if o.parameters.size() > 0
|
|
133
|
+
if o.body
|
|
134
|
+
result << do_dump(o.body)
|
|
135
|
+
else
|
|
136
|
+
result << []
|
|
137
|
+
end
|
|
138
|
+
result
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def dump_LiteralDefault o
|
|
142
|
+
":default"
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def dump_LiteralUndef o
|
|
146
|
+
":undef"
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def dump_LiteralRegularExpression o
|
|
150
|
+
"/#{o.value.source}/"
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def dump_Nop o
|
|
154
|
+
":nop"
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def dump_NamedAccessExpression o
|
|
158
|
+
[".", do_dump(o.left_expr), do_dump(o.right_expr)]
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def dump_NilClass o
|
|
162
|
+
"()"
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def dump_NotExpression o
|
|
166
|
+
['!', dump(o.expr)]
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
def dump_VariableExpression o
|
|
170
|
+
"$#{dump(o.expr)}"
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# Interpolation (to string) shown as (str expr)
|
|
174
|
+
def dump_TextExpression o
|
|
175
|
+
["str", do_dump(o.expr)]
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def dump_UnaryMinusExpression o
|
|
179
|
+
['-', do_dump(o.expr)]
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def dump_BlockExpression o
|
|
183
|
+
["block"] + o.statements.collect {|x| do_dump(x) }
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# Interpolated strings are shown as (cat seg0 seg1 ... segN)
|
|
187
|
+
def dump_ConcatenatedString o
|
|
188
|
+
["cat"] + o.segments.collect {|x| do_dump(x)}
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def dump_HostClassDefinition o
|
|
192
|
+
result = ["class", o.name]
|
|
193
|
+
result << ["inherits", o.parent_class] if o.parent_class
|
|
194
|
+
result << ["parameters"] + o.parameters.collect {|p| do_dump(p) } if o.parameters.size() > 0
|
|
195
|
+
if o.body
|
|
196
|
+
result << do_dump(o.body)
|
|
197
|
+
else
|
|
198
|
+
result << []
|
|
199
|
+
end
|
|
200
|
+
result
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
def dump_NodeDefinition o
|
|
204
|
+
result = ["node"]
|
|
205
|
+
result << ["matches"] + o.host_matches.collect {|m| do_dump(m) }
|
|
206
|
+
result << ["parent", do_dump(o.parent)] if o.parent
|
|
207
|
+
if o.body
|
|
208
|
+
result << do_dump(o.body)
|
|
209
|
+
else
|
|
210
|
+
result << []
|
|
211
|
+
end
|
|
212
|
+
result
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def dump_ResourceTypeDefinition o
|
|
216
|
+
result = ["define", o.name]
|
|
217
|
+
result << ["parameters"] + o.parameters.collect {|p| do_dump(p) } if o.parameters.size() > 0
|
|
218
|
+
if o.body
|
|
219
|
+
result << do_dump(o.body)
|
|
220
|
+
else
|
|
221
|
+
result << []
|
|
222
|
+
end
|
|
223
|
+
result
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def dump_ResourceOverrideExpression o
|
|
227
|
+
result = ["override", do_dump(o.resources), :indent]
|
|
228
|
+
o.operations.each do |p|
|
|
229
|
+
result << :break << do_dump(p)
|
|
230
|
+
end
|
|
231
|
+
result << :dedent
|
|
232
|
+
result
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
# Produces parameters as name, or (= name value)
|
|
236
|
+
def dump_Parameter o
|
|
237
|
+
if o.value
|
|
238
|
+
["=", o.name, do_dump(o.value)]
|
|
239
|
+
else
|
|
240
|
+
o.name
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
def dump_ParenthesizedExpression o
|
|
245
|
+
do_dump(o.expr)
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
def dump_IfExpression o
|
|
249
|
+
result = ["if", do_dump(o.test), :indent, :break,
|
|
250
|
+
["then", :indent, do_dump(o.then_expr), :dedent]]
|
|
251
|
+
result +=
|
|
252
|
+
[:break,
|
|
253
|
+
["else", :indent, do_dump(o.else_expr), :dedent],
|
|
254
|
+
:dedent] unless is_nop? o.else_expr
|
|
255
|
+
result
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
def dump_UnlessExpression o
|
|
259
|
+
result = ["unless", do_dump(o.test), :indent, :break,
|
|
260
|
+
["then", :indent, do_dump(o.then_expr), :dedent]]
|
|
261
|
+
result +=
|
|
262
|
+
[:break,
|
|
263
|
+
["else", :indent, do_dump(o.else_expr), :dedent],
|
|
264
|
+
:dedent] unless is_nop? o.else_expr
|
|
265
|
+
result
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
# Produces (invoke name args...) when not required to produce an rvalue, and
|
|
269
|
+
# (call name args ... ) otherwise.
|
|
270
|
+
#
|
|
271
|
+
def dump_CallNamedFunctionExpression o
|
|
272
|
+
result = [o.rval_required ? "call" : "invoke", do_dump(o.functor_expr)]
|
|
273
|
+
o.arguments.collect {|a| result << do_dump(a) }
|
|
274
|
+
result
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
# def dump_CallNamedFunctionExpression o
|
|
278
|
+
# result = [o.rval_required ? "call" : "invoke", do_dump(o.functor_expr)]
|
|
279
|
+
# o.arguments.collect {|a| result << do_dump(a) }
|
|
280
|
+
# result
|
|
281
|
+
# end
|
|
282
|
+
|
|
283
|
+
def dump_CallMethodExpression o
|
|
284
|
+
result = [o.rval_required ? "call-method" : "invoke-method", do_dump(o.functor_expr)]
|
|
285
|
+
o.arguments.collect {|a| result << do_dump(a) }
|
|
286
|
+
result << do_dump(o.lambda) if o.lambda
|
|
287
|
+
result
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
def dump_CaseExpression o
|
|
291
|
+
result = ["case", do_dump(o.test), :indent]
|
|
292
|
+
o.options.each do |s|
|
|
293
|
+
result << :break << do_dump(s)
|
|
294
|
+
end
|
|
295
|
+
result << :dedent
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
def dump_CaseOption o
|
|
299
|
+
result = ["when"]
|
|
300
|
+
result << o.values.collect {|x| do_dump(x) }
|
|
301
|
+
result << ["then", do_dump(o.then_expr) ]
|
|
302
|
+
result
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
def dump_RelationshipExpression o
|
|
306
|
+
[o.operator.to_s, do_dump(o.left_expr), do_dump(o.right_expr)]
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
def dump_ResourceBody o
|
|
310
|
+
result = [do_dump(o.title), :indent]
|
|
311
|
+
o.operations.each do |p|
|
|
312
|
+
result << :break << do_dump(p)
|
|
313
|
+
end
|
|
314
|
+
result << :dedent
|
|
315
|
+
result
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
def dump_ResourceDefaultsExpression o
|
|
319
|
+
result = ["resource-defaults", do_dump(o.type_ref), :indent]
|
|
320
|
+
o.operations.each do |p|
|
|
321
|
+
result << :break << do_dump(p)
|
|
322
|
+
end
|
|
323
|
+
result << :dedent
|
|
324
|
+
result
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
def dump_ResourceExpression o
|
|
328
|
+
form = o.form == :regular ? '' : o.form.to_s + "-"
|
|
329
|
+
result = [form+"resource", do_dump(o.type_name), :indent]
|
|
330
|
+
o.bodies.each do |b|
|
|
331
|
+
result << :break << do_dump(b)
|
|
332
|
+
end
|
|
333
|
+
result << :dedent
|
|
334
|
+
result
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
def dump_SelectorExpression o
|
|
338
|
+
["?", do_dump(o.left_expr)] + o.selectors.collect {|x| do_dump(x) }
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
def dump_SelectorEntry o
|
|
342
|
+
[do_dump(o.matching_expr), "=>", do_dump(o.value_expr)]
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
def dump_Object o
|
|
346
|
+
[o.class.to_s, o.to_s]
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
def is_nop? o
|
|
350
|
+
o.nil? || o.is_a?(Puppet::Pops::Model::Nop)
|
|
351
|
+
end
|
|
352
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Base class for formatted textual dump of a "model"
|
|
2
|
+
#
|
|
3
|
+
class Puppet::Pops::Model::TreeDumper
|
|
4
|
+
attr_accessor :indent_count
|
|
5
|
+
def initialize initial_indentation = 0
|
|
6
|
+
@@dump_visitor ||= Puppet::Pops::Visitor.new(nil,"dump",0,0)
|
|
7
|
+
@indent_count = initial_indentation
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def dump(o)
|
|
11
|
+
format(do_dump(o))
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def do_dump(o)
|
|
15
|
+
@@dump_visitor.visit_this(self, o)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def indent
|
|
19
|
+
" " * indent_count
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def format(x)
|
|
23
|
+
result = ""
|
|
24
|
+
parts = format_r(x)
|
|
25
|
+
parts.each_index do |i|
|
|
26
|
+
if i > 0
|
|
27
|
+
# separate with space unless previous ends with whitepsace or (
|
|
28
|
+
result << ' ' if parts[i] != ")" && parts[i-1] !~ /.*(?:\s+|\()$/ && parts[i] !~ /\s+/
|
|
29
|
+
end
|
|
30
|
+
result << parts[i]
|
|
31
|
+
end
|
|
32
|
+
result
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def format_r(x)
|
|
36
|
+
result = []
|
|
37
|
+
case x
|
|
38
|
+
when :break
|
|
39
|
+
result << "\n" + indent
|
|
40
|
+
when :indent
|
|
41
|
+
@indent_count += 1
|
|
42
|
+
when :dedent
|
|
43
|
+
@indent_count -= 1
|
|
44
|
+
when Array
|
|
45
|
+
result << '('
|
|
46
|
+
result += x.collect {|a| format_r(a) }.flatten
|
|
47
|
+
result << ')'
|
|
48
|
+
when Symbol
|
|
49
|
+
result << x.to_s # Allows Symbols in arrays e.g. ["text", =>, "text"]
|
|
50
|
+
else
|
|
51
|
+
result << x
|
|
52
|
+
end
|
|
53
|
+
result
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def is_nop? o
|
|
57
|
+
o.nil? || o.is_a?(Puppet::Pops::Model::Nop)
|
|
58
|
+
end
|
|
59
|
+
end
|