puppet 3.1.1 → 3.2.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/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,175 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'puppet/pops'
|
4
|
+
|
5
|
+
# relative to this spec file (./) does not work as this file is loaded by rspec
|
6
|
+
require File.join(File.dirname(__FILE__), '/parser_rspec_helper')
|
7
|
+
|
8
|
+
describe "egrammar parsing containers" do
|
9
|
+
include ParserRspecHelper
|
10
|
+
|
11
|
+
context "When parsing file scope" do
|
12
|
+
it "$a = 10 $b = 20" do
|
13
|
+
dump(parse("$a = 10 $b = 20")).should == "(block (= $a 10) (= $b 20))"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "$a = 10" do
|
17
|
+
dump(parse("$a = 10")).should == "(= $a 10)"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "When parsing class" do
|
22
|
+
it "class foo {}" do
|
23
|
+
dump(parse("class foo {}")).should == "(class foo ())"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "class foo::bar {}" do
|
27
|
+
dump(parse("class foo::bar {}")).should == "(class foo::bar ())"
|
28
|
+
end
|
29
|
+
|
30
|
+
it "class foo inherits bar {}" do
|
31
|
+
dump(parse("class foo inherits bar {}")).should == "(class foo (inherits bar) ())"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "class foo($a) {}" do
|
35
|
+
dump(parse("class foo($a) {}")).should == "(class foo (parameters a) ())"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "class foo($a, $b) {}" do
|
39
|
+
dump(parse("class foo($a, $b) {}")).should == "(class foo (parameters a b) ())"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "class foo($a, $b=10) {}" do
|
43
|
+
dump(parse("class foo($a, $b=10) {}")).should == "(class foo (parameters a (= b 10)) ())"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "class foo($a, $b) inherits belgo::bar {}" do
|
47
|
+
dump(parse("class foo($a, $b) inherits belgo::bar{}")).should == "(class foo (inherits belgo::bar) (parameters a b) ())"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "class foo {$a = 10 $b = 20}" do
|
51
|
+
dump(parse("class foo {$a = 10 $b = 20}")).should == "(class foo (block (= $a 10) (= $b 20)))"
|
52
|
+
end
|
53
|
+
|
54
|
+
context "it should handle '3x weirdness'" do
|
55
|
+
it "class class {} # a class named 'class'" do
|
56
|
+
# Not as much weird as confusing that it is possible to name a class 'class'. Can have
|
57
|
+
# a very confusing effect when resolving relative names, getting the global hardwired "Class"
|
58
|
+
# instead of some foo::class etc.
|
59
|
+
# This is allowed in 3.x.
|
60
|
+
dump(parse("class class {}")).should == "(class class ())"
|
61
|
+
end
|
62
|
+
|
63
|
+
it "class default {} # a class named 'default'" do
|
64
|
+
# The weirdness here is that a class can inherit 'default' but not declare a class called default.
|
65
|
+
# (It will work with relative names i.e. foo::default though). The whole idea with keywords as
|
66
|
+
# names is flawed to begin with - it generally just a very bad idea.
|
67
|
+
expect { dump(parse("class default {}")).should == "(class default ())" }.to raise_error(Puppet::ParseError)
|
68
|
+
end
|
69
|
+
|
70
|
+
it "class foo::default {} # a nested name 'default'" do
|
71
|
+
dump(parse("class foo::default {}")).should == "(class foo::default ())"
|
72
|
+
end
|
73
|
+
|
74
|
+
it "class class inherits default {} # inherits default", :broken => true do
|
75
|
+
dump(parse("class class inherits default {}")).should == "(class class (inherits default) ())"
|
76
|
+
end
|
77
|
+
|
78
|
+
it "class class inherits default {} # inherits default" do
|
79
|
+
# TODO: See previous test marked as :broken=>true, it is actually this test (result) that is wacky,
|
80
|
+
# this because a class is named at parse time (since class evaluation is lazy, the model must have the
|
81
|
+
# full class name for nested classes - only, it gets this wrong when a class is named "class" - or at least
|
82
|
+
# I think it is wrong.)
|
83
|
+
#
|
84
|
+
dump(parse("class class inherits default {}")).should == "(class class::class (inherits default) ())"
|
85
|
+
end
|
86
|
+
|
87
|
+
it "class foo inherits class" do
|
88
|
+
dump(parse("class foo inherits class {}")).should == "(class foo (inherits class) ())"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
context "When the parser parses define" do
|
94
|
+
it "define foo {}" do
|
95
|
+
dump(parse("define foo {}")).should == "(define foo ())"
|
96
|
+
end
|
97
|
+
|
98
|
+
it "define foo::bar {}" do
|
99
|
+
dump(parse("define foo::bar {}")).should == "(define foo::bar ())"
|
100
|
+
end
|
101
|
+
|
102
|
+
it "define foo($a) {}" do
|
103
|
+
dump(parse("define foo($a) {}")).should == "(define foo (parameters a) ())"
|
104
|
+
end
|
105
|
+
|
106
|
+
it "define foo($a, $b) {}" do
|
107
|
+
dump(parse("define foo($a, $b) {}")).should == "(define foo (parameters a b) ())"
|
108
|
+
end
|
109
|
+
|
110
|
+
it "define foo($a, $b=10) {}" do
|
111
|
+
dump(parse("define foo($a, $b=10) {}")).should == "(define foo (parameters a (= b 10)) ())"
|
112
|
+
end
|
113
|
+
|
114
|
+
it "define foo {$a = 10 $b = 20}" do
|
115
|
+
dump(parse("define foo {$a = 10 $b = 20}")).should == "(define foo (block (= $a 10) (= $b 20)))"
|
116
|
+
end
|
117
|
+
|
118
|
+
context "it should handle '3x weirdness'" do
|
119
|
+
it "define class {} # a define named 'class'" do
|
120
|
+
# This is weird because Class already exists, and instantiating this define will probably not
|
121
|
+
# work
|
122
|
+
dump(parse("define class {}")).should == "(define class ())"
|
123
|
+
end
|
124
|
+
|
125
|
+
it "define default {} # a define named 'default'" do
|
126
|
+
# Check unwanted ability to define 'default'.
|
127
|
+
# The expression below is not allowed (which is good).
|
128
|
+
#
|
129
|
+
expect { dump(parse("define default {}")).should == "(define default ())"}.to raise_error(Puppet::ParseError)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
context "When parsing node" do
|
135
|
+
it "node foo {}" do
|
136
|
+
dump(parse("node foo {}")).should == "(node (matches foo) ())"
|
137
|
+
end
|
138
|
+
|
139
|
+
it "node foo, x::bar, default {}" do
|
140
|
+
dump(parse("node foo, x::bar, default {}")).should == "(node (matches foo x::bar :default) ())"
|
141
|
+
end
|
142
|
+
|
143
|
+
it "node 'foo' {}" do
|
144
|
+
dump(parse("node 'foo' {}")).should == "(node (matches 'foo') ())"
|
145
|
+
end
|
146
|
+
|
147
|
+
it "node foo inherits x::bar {}" do
|
148
|
+
dump(parse("node foo inherits x::bar {}")).should == "(node (matches foo) (parent x::bar) ())"
|
149
|
+
end
|
150
|
+
|
151
|
+
it "node foo inherits 'bar' {}" do
|
152
|
+
dump(parse("node foo inherits 'bar' {}")).should == "(node (matches foo) (parent 'bar') ())"
|
153
|
+
end
|
154
|
+
|
155
|
+
it "node foo inherits default {}" do
|
156
|
+
dump(parse("node foo inherits default {}")).should == "(node (matches foo) (parent :default) ())"
|
157
|
+
end
|
158
|
+
|
159
|
+
it "node /web.*/ {}" do
|
160
|
+
dump(parse("node /web.*/ {}")).should == "(node (matches /web.*/) ())"
|
161
|
+
end
|
162
|
+
|
163
|
+
it "node /web.*/, /do\.wop.*/, and.so.on {}" do
|
164
|
+
dump(parse("node /web.*/, /do\.wop.*/, 'and.so.on' {}")).should == "(node (matches /web.*/ /do\.wop.*/ 'and.so.on') ())"
|
165
|
+
end
|
166
|
+
|
167
|
+
it "node wat inherits /apache.*/ {}" do
|
168
|
+
expect { parse("node wat inherits /apache.*/ {}")}.to raise_error(Puppet::ParseError)
|
169
|
+
end
|
170
|
+
|
171
|
+
it "node foo inherits bar {$a = 10 $b = 20}" do
|
172
|
+
dump(parse("node foo inherits bar {$a = 10 $b = 20}")).should == "(node (matches foo) (parent bar) (block (= $a 10) (= $b 20)))"
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
@@ -0,0 +1,228 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'puppet/pops'
|
4
|
+
|
5
|
+
# relative to this spec file (./) does not work as this file is loaded by rspec
|
6
|
+
require File.join(File.dirname(__FILE__), '/parser_rspec_helper')
|
7
|
+
|
8
|
+
describe "egrammar parsing resource declarations" do
|
9
|
+
include ParserRspecHelper
|
10
|
+
|
11
|
+
context "When parsing regular resource" do
|
12
|
+
it "file { 'title': }" do
|
13
|
+
dump(parse("file { 'title': }")).should == [
|
14
|
+
"(resource file",
|
15
|
+
" ('title'))"
|
16
|
+
].join("\n")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "file { 'title': path => '/somewhere', mode => 0777}" do
|
20
|
+
dump(parse("file { 'title': path => '/somewhere', mode => 0777}")).should == [
|
21
|
+
"(resource file",
|
22
|
+
" ('title'",
|
23
|
+
" (path => '/somewhere')",
|
24
|
+
" (mode => 0777)))"
|
25
|
+
].join("\n")
|
26
|
+
end
|
27
|
+
|
28
|
+
it "file { 'title': path => '/somewhere', }" do
|
29
|
+
dump(parse("file { 'title': path => '/somewhere', }")).should == [
|
30
|
+
"(resource file",
|
31
|
+
" ('title'",
|
32
|
+
" (path => '/somewhere')))"
|
33
|
+
].join("\n")
|
34
|
+
end
|
35
|
+
|
36
|
+
it "file { 'title': , }" do
|
37
|
+
dump(parse("file { 'title': , }")).should == [
|
38
|
+
"(resource file",
|
39
|
+
" ('title'))"
|
40
|
+
].join("\n")
|
41
|
+
end
|
42
|
+
|
43
|
+
it "file { 'title': ; }" do
|
44
|
+
dump(parse("file { 'title': ; }")).should == [
|
45
|
+
"(resource file",
|
46
|
+
" ('title'))"
|
47
|
+
].join("\n")
|
48
|
+
end
|
49
|
+
|
50
|
+
it "file { 'title': ; 'other_title': }" do
|
51
|
+
dump(parse("file { 'title': ; 'other_title': }")).should == [
|
52
|
+
"(resource file",
|
53
|
+
" ('title')",
|
54
|
+
" ('other_title'))"
|
55
|
+
].join("\n")
|
56
|
+
end
|
57
|
+
|
58
|
+
it "file { 'title1': path => 'x'; 'title2': path => 'y'}" do
|
59
|
+
dump(parse("file { 'title1': path => 'x'; 'title2': path => 'y'}")).should == [
|
60
|
+
"(resource file",
|
61
|
+
" ('title1'",
|
62
|
+
" (path => 'x'))",
|
63
|
+
" ('title2'",
|
64
|
+
" (path => 'y')))",
|
65
|
+
].join("\n")
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "When parsing resource defaults" do
|
70
|
+
it "File { }" do
|
71
|
+
dump(parse("File { }")).should == "(resource-defaults file)"
|
72
|
+
end
|
73
|
+
|
74
|
+
it "File { mode => 0777 }" do
|
75
|
+
dump(parse("File { mode => 0777}")).should == [
|
76
|
+
"(resource-defaults file",
|
77
|
+
" (mode => 0777))"
|
78
|
+
].join("\n")
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context "When parsing resource override" do
|
83
|
+
it "File['x'] { }" do
|
84
|
+
dump(parse("File['x'] { }")).should == "(override (slice file 'x'))"
|
85
|
+
end
|
86
|
+
|
87
|
+
it "File['x'] { x => 1 }" do
|
88
|
+
dump(parse("File['x'] { x => 1}")).should == "(override (slice file 'x')\n (x => 1))"
|
89
|
+
end
|
90
|
+
|
91
|
+
it "File['x', 'y'] { x => 1 }" do
|
92
|
+
dump(parse("File['x', 'y'] { x => 1}")).should == "(override (slice file ('x' 'y'))\n (x => 1))"
|
93
|
+
end
|
94
|
+
|
95
|
+
it "File['x'] { x => 1, y => 2 }" do
|
96
|
+
dump(parse("File['x'] { x => 1, y=> 2}")).should == "(override (slice file 'x')\n (x => 1)\n (y => 2))"
|
97
|
+
end
|
98
|
+
|
99
|
+
it "File['x'] { x +> 1 }" do
|
100
|
+
dump(parse("File['x'] { x +> 1}")).should == "(override (slice file 'x')\n (x +> 1))"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
context "When parsing virtual and exported resources" do
|
105
|
+
it "@@file { 'title': }" do
|
106
|
+
dump(parse("@@file { 'title': }")).should == "(exported-resource file\n ('title'))"
|
107
|
+
end
|
108
|
+
|
109
|
+
it "@file { 'title': }" do
|
110
|
+
dump(parse("@file { 'title': }")).should == "(virtual-resource file\n ('title'))"
|
111
|
+
end
|
112
|
+
|
113
|
+
it "@file { mode => 0777 }" do
|
114
|
+
# Defaults are not virtualizeable
|
115
|
+
expect {
|
116
|
+
dump(parse("@file { mode => 0777 }")).should == ""
|
117
|
+
}.to raise_error(Puppet::ParseError, /Defaults are not virtualizable/)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context "When parsing class resource" do
|
122
|
+
it "class { 'cname': }" do
|
123
|
+
dump(parse("class { 'cname': }")).should == [
|
124
|
+
"(resource class",
|
125
|
+
" ('cname'))"
|
126
|
+
].join("\n")
|
127
|
+
end
|
128
|
+
|
129
|
+
it "class { 'cname': x => 1, y => 2}" do
|
130
|
+
dump(parse("class { 'cname': x => 1, y => 2}")).should == [
|
131
|
+
"(resource class",
|
132
|
+
" ('cname'",
|
133
|
+
" (x => 1)",
|
134
|
+
" (y => 2)))"
|
135
|
+
].join("\n")
|
136
|
+
end
|
137
|
+
|
138
|
+
it "class { 'cname1': x => 1; 'cname2': y => 2}" do
|
139
|
+
dump(parse("class { 'cname1': x => 1; 'cname2': y => 2}")).should == [
|
140
|
+
"(resource class",
|
141
|
+
" ('cname1'",
|
142
|
+
" (x => 1))",
|
143
|
+
" ('cname2'",
|
144
|
+
" (y => 2)))",
|
145
|
+
].join("\n")
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
context "reported issues in 3.x" do
|
150
|
+
it "should not screw up on brackets in title of resource #19632" do
|
151
|
+
dump(parse('notify { "thisisa[bug]": }')).should == [
|
152
|
+
"(resource notify",
|
153
|
+
" ('thisisa[bug]'))",
|
154
|
+
].join("\n")
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
context "When parsing Relationships" do
|
159
|
+
it "File[a] -> File[b]" do
|
160
|
+
dump(parse("File[a] -> File[b]")).should == "(-> (slice file a) (slice file b))"
|
161
|
+
end
|
162
|
+
|
163
|
+
it "File[a] <- File[b]" do
|
164
|
+
dump(parse("File[a] <- File[b]")).should == "(<- (slice file a) (slice file b))"
|
165
|
+
end
|
166
|
+
|
167
|
+
it "File[a] ~> File[b]" do
|
168
|
+
dump(parse("File[a] ~> File[b]")).should == "(~> (slice file a) (slice file b))"
|
169
|
+
end
|
170
|
+
|
171
|
+
it "File[a] <~ File[b]" do
|
172
|
+
dump(parse("File[a] <~ File[b]")).should == "(<~ (slice file a) (slice file b))"
|
173
|
+
end
|
174
|
+
|
175
|
+
it "Should chain relationships" do
|
176
|
+
dump(parse("a -> b -> c")).should ==
|
177
|
+
"(-> (-> a b) c)"
|
178
|
+
end
|
179
|
+
|
180
|
+
it "Should chain relationships" do
|
181
|
+
dump(parse("File[a] -> File[b] ~> File[c] <- File[d] <~ File[e]")).should ==
|
182
|
+
"(<~ (<- (~> (-> (slice file a) (slice file b)) (slice file c)) (slice file d)) (slice file e))"
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should create relationships between collects" do
|
186
|
+
dump(parse("File <| mode == 0644 |> -> File <| mode == 0755 |>")).should ==
|
187
|
+
"(-> (collect file\n (<| |> (== mode 0644))) (collect file\n (<| |> (== mode 0755))))"
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
context "When parsing collection" do
|
192
|
+
context "of virtual resources" do
|
193
|
+
it "File <| |>" do
|
194
|
+
dump(parse("File <| |>")).should == "(collect file\n (<| |>))"
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
context "of exported resources" do
|
199
|
+
it "File <<| |>>" do
|
200
|
+
dump(parse("File <<| |>>")).should == "(collect file\n (<<| |>>))"
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
context "queries are parsed with correct precedence" do
|
205
|
+
it "File <| tag == 'foo' |>" do
|
206
|
+
dump(parse("File <| tag == 'foo' |>")).should == "(collect file\n (<| |> (== tag 'foo')))"
|
207
|
+
end
|
208
|
+
|
209
|
+
it "File <| tag == 'foo' and mode != 0777 |>" do
|
210
|
+
dump(parse("File <| tag == 'foo' and mode != 0777 |>")).should == "(collect file\n (<| |> (&& (== tag 'foo') (!= mode 0777))))"
|
211
|
+
end
|
212
|
+
|
213
|
+
it "File <| tag == 'foo' or mode != 0777 |>" do
|
214
|
+
dump(parse("File <| tag == 'foo' or mode != 0777 |>")).should == "(collect file\n (<| |> (|| (== tag 'foo') (!= mode 0777))))"
|
215
|
+
end
|
216
|
+
|
217
|
+
it "File <| tag == 'foo' or tag == 'bar' and mode != 0777 |>" do
|
218
|
+
dump(parse("File <| tag == 'foo' or tag == 'bar' and mode != 0777 |>")).should ==
|
219
|
+
"(collect file\n (<| |> (|| (== tag 'foo') (&& (== tag 'bar') (!= mode 0777)))))"
|
220
|
+
end
|
221
|
+
|
222
|
+
it "File <| (tag == 'foo' or tag == 'bar') and mode != 0777 |>" do
|
223
|
+
dump(parse("File <| (tag == 'foo' or tag == 'bar') and mode != 0777 |>")).should ==
|
224
|
+
"(collect file\n (<| |> (&& (|| (== tag 'foo') (== tag 'bar')) (!= mode 0777))))"
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'puppet/pops'
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), '/../factory_rspec_helper')
|
4
|
+
|
5
|
+
module ParserRspecHelper
|
6
|
+
include FactoryRspecHelper
|
7
|
+
def parse(code)
|
8
|
+
parser = Puppet::Pops::Parser::Parser.new()
|
9
|
+
parser.parse_string(code)
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet/pops'
|
3
|
+
|
4
|
+
describe Puppet::Pops::Parser::Parser do
|
5
|
+
it "should instantiate a parser" do
|
6
|
+
parser = Puppet::Pops::Parser::Parser.new()
|
7
|
+
parser.class.should == Puppet::Pops::Parser::Parser
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should parse a code string and return a model" do
|
11
|
+
parser = Puppet::Pops::Parser::Parser.new()
|
12
|
+
model = parser.parse_string("$a = 10").current
|
13
|
+
model.class.should == Model::AssignmentExpression
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'puppet/pops'
|
4
|
+
|
5
|
+
# relative to this spec file (./) does not work as this file is loaded by rspec
|
6
|
+
require File.join(File.dirname(__FILE__), '/parser_rspec_helper')
|
7
|
+
|
8
|
+
describe "RGen working with hashes" do
|
9
|
+
it "should be possible to create an empty hash after having required the files above" do
|
10
|
+
# If this fails, it means the rgen addition to Array is not monkey patched as it
|
11
|
+
# should (it will return an array instead of fail in a method_missing), and thus
|
12
|
+
# screw up Hash's check if it can do "to_hash' or not.
|
13
|
+
#
|
14
|
+
Hash[[]]
|
15
|
+
end
|
16
|
+
end
|