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,9 @@
|
|
1
|
+
# use /bin/sh to run commands, no matter what /etc/passwd says
|
2
|
+
SHELL=/bin/sh
|
3
|
+
# mail any output to `paul', no matter whose crontab this is
|
4
|
+
MAILTO=paul
|
5
|
+
#
|
6
|
+
# run five minutes after midnight, every day
|
7
|
+
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
|
8
|
+
# run at 2:15pm on the first of every month -- output mailed to paul
|
9
|
+
15 14 1 * * $HOME/bin/monthly
|
@@ -0,0 +1,18 @@
|
|
1
|
+
UNIT LOAD ACTIVE SUB DESCRIPTION
|
2
|
+
auditd.service loaded active running Security Auditing Service
|
3
|
+
crond.service loaded active running Command Scheduler
|
4
|
+
dbus.service loaded active running D-Bus System Message Bus
|
5
|
+
display-manager.service error inactive dead display-manager.service
|
6
|
+
ebtables.service loaded inactive dead SYSV: Ethernet Bridge filtering tables
|
7
|
+
fedora-readonly.service loaded active exited Configure read-only root support
|
8
|
+
initrd-switch-root.service loaded inactive dead Switch Root
|
9
|
+
ip6tables.service error inactive dead ip6tables.service
|
10
|
+
puppet.service loaded inactive dead SYSV: Enables periodic system configuration checks through puppet.
|
11
|
+
sshd.service loaded failed failed OpenSSH server daemon
|
12
|
+
|
13
|
+
LOAD = Reflects whether the unit definition was properly loaded.
|
14
|
+
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
|
15
|
+
SUB = The low-level unit activation state, values depend on unit type.
|
16
|
+
|
17
|
+
155 loaded units listed.
|
18
|
+
To show all installed unit files use 'systemctl list-unit-files'.
|
@@ -64,7 +64,7 @@ describe Puppet::Parser::Collector do
|
|
64
64
|
expect_the_message_to_be(["the message", "different message"], <<-MANIFEST)
|
65
65
|
@notify { "testing": message => "different message", withpath => true }
|
66
66
|
@notify { "other": message => "the message" }
|
67
|
-
@notify { "yet another": message => "the message", withpath => true }
|
67
|
+
@notify { "yet another": message => "the message", withpath => true }
|
68
68
|
|
69
69
|
Notify <| (title == "testing" or message == "the message") and withpath == true |>
|
70
70
|
MANIFEST
|
@@ -1,7 +1,8 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
require 'spec_helper'
|
3
|
+
require 'puppet/parser/parser_factory'
|
3
4
|
|
4
|
-
describe Puppet::Parser::Compiler do
|
5
|
+
describe "Puppet::Parser::Compiler" do
|
5
6
|
before :each do
|
6
7
|
@node = Puppet::Node.new "testnode"
|
7
8
|
|
@@ -13,297 +14,321 @@ describe Puppet::Parser::Compiler do
|
|
13
14
|
Puppet.settings.clear
|
14
15
|
end
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
# shared because tests are invoked both for classic and future parser
|
18
|
+
#
|
19
|
+
shared_examples_for "the compiler" do
|
20
|
+
it "should be able to determine the configuration version from a local version control repository" do
|
21
|
+
pending("Bug #14071 about semantics of Puppet::Util::Execute on Windows", :if => Puppet.features.microsoft_windows?) do
|
22
|
+
# This should always work, because we should always be
|
23
|
+
# in the puppet repo when we run this.
|
24
|
+
version = %x{git rev-parse HEAD}.chomp
|
21
25
|
|
22
|
-
|
26
|
+
Puppet.settings[:config_version] = 'git rev-parse HEAD'
|
23
27
|
|
24
|
-
|
25
|
-
|
28
|
+
@parser = Puppet::Parser::ParserFactory.parser "development"
|
29
|
+
@compiler = Puppet::Parser::Compiler.new(@node)
|
26
30
|
|
27
|
-
|
31
|
+
@compiler.catalog.version.should == version
|
32
|
+
end
|
28
33
|
end
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should not create duplicate resources when a class is referenced both directly and indirectly by the node classifier (4792)" do
|
32
|
-
Puppet[:code] = <<-PP
|
33
|
-
class foo
|
34
|
-
{
|
35
|
-
notify { foo_notify: }
|
36
|
-
include bar
|
37
|
-
}
|
38
|
-
class bar
|
39
|
-
{
|
40
|
-
notify { bar_notify: }
|
41
|
-
}
|
42
|
-
PP
|
43
|
-
|
44
|
-
@node.stubs(:classes).returns(['foo', 'bar'])
|
45
|
-
|
46
|
-
catalog = Puppet::Parser::Compiler.compile(@node)
|
47
|
-
|
48
|
-
catalog.resource("Notify[foo_notify]").should_not be_nil
|
49
|
-
catalog.resource("Notify[bar_notify]").should_not be_nil
|
50
|
-
end
|
51
34
|
|
52
|
-
|
53
|
-
it "should favor local scope, even if there's an included class in topscope" do
|
35
|
+
it "should not create duplicate resources when a class is referenced both directly and indirectly by the node classifier (4792)" do
|
54
36
|
Puppet[:code] = <<-PP
|
55
|
-
class
|
56
|
-
|
57
|
-
}
|
58
|
-
|
37
|
+
class foo
|
38
|
+
{
|
39
|
+
notify { foo_notify: }
|
40
|
+
include bar
|
59
41
|
}
|
60
|
-
class
|
42
|
+
class bar
|
43
|
+
{
|
44
|
+
notify { bar_notify: }
|
61
45
|
}
|
62
|
-
include baz
|
63
|
-
include experiment
|
64
|
-
include experiment::baz
|
65
46
|
PP
|
66
47
|
|
67
|
-
|
48
|
+
@node.stubs(:classes).returns(['foo', 'bar'])
|
68
49
|
|
69
|
-
|
50
|
+
catalog = Puppet::Parser::Compiler.compile(@node)
|
70
51
|
|
71
|
-
|
52
|
+
catalog.resource("Notify[foo_notify]").should_not be_nil
|
53
|
+
catalog.resource("Notify[bar_notify]").should_not be_nil
|
72
54
|
end
|
73
55
|
|
74
|
-
|
75
|
-
|
76
|
-
|
56
|
+
describe "when resolving class references" do
|
57
|
+
it "should favor local scope, even if there's an included class in topscope" do
|
58
|
+
Puppet[:code] = <<-PP
|
59
|
+
class experiment {
|
60
|
+
class baz {
|
61
|
+
}
|
62
|
+
notify {"x" : require => Class[Baz] }
|
63
|
+
}
|
77
64
|
class baz {
|
78
65
|
}
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
include experiment
|
84
|
-
include experiment::baz
|
85
|
-
PP
|
66
|
+
include baz
|
67
|
+
include experiment
|
68
|
+
include experiment::baz
|
69
|
+
PP
|
86
70
|
|
87
|
-
|
71
|
+
catalog = Puppet::Parser::Compiler.compile(Puppet::Node.new("mynode"))
|
88
72
|
|
89
|
-
|
73
|
+
notify_resource = catalog.resource( "Notify[x]" )
|
90
74
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
Puppet[:code] = <<-MANIFEST
|
99
|
-
class { 'foo::test': }
|
100
|
-
class foo::test {
|
101
|
-
#{include}
|
102
|
-
}
|
103
|
-
class bar::baz {
|
104
|
-
notify { 'good!': }
|
105
|
-
}
|
106
|
-
class foo::bar::baz {
|
107
|
-
notify { 'bad!': }
|
75
|
+
notify_resource[:require].title.should == "Experiment::Baz"
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should favor local scope, even if there's an unincluded class in topscope" do
|
79
|
+
Puppet[:code] = <<-PP
|
80
|
+
class experiment {
|
81
|
+
class baz {
|
108
82
|
}
|
109
|
-
|
83
|
+
notify {"x" : require => Class[Baz] }
|
84
|
+
}
|
85
|
+
class baz {
|
86
|
+
}
|
87
|
+
include experiment
|
88
|
+
include experiment::baz
|
89
|
+
PP
|
110
90
|
|
111
|
-
|
91
|
+
catalog = Puppet::Parser::Compiler.compile(Puppet::Node.new("mynode"))
|
112
92
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
93
|
+
notify_resource = catalog.resource( "Notify[x]" )
|
94
|
+
|
95
|
+
notify_resource[:require].title.should == "Experiment::Baz"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
describe "(ticket #13349) when explicitly specifying top scope" do
|
99
|
+
["class {'::bar::baz':}", "include ::bar::baz"].each do |include|
|
100
|
+
describe "with #{include}" do
|
101
|
+
it "should find the top level class" do
|
102
|
+
Puppet[:code] = <<-MANIFEST
|
103
|
+
class { 'foo::test': }
|
104
|
+
class foo::test {
|
105
|
+
#{include}
|
106
|
+
}
|
107
|
+
class bar::baz {
|
108
|
+
notify { 'good!': }
|
109
|
+
}
|
110
|
+
class foo::bar::baz {
|
111
|
+
notify { 'bad!': }
|
112
|
+
}
|
113
|
+
MANIFEST
|
114
|
+
|
115
|
+
catalog = Puppet::Parser::Compiler.compile(Puppet::Node.new("mynode"))
|
116
|
+
|
117
|
+
catalog.resource("Class[Bar::Baz]").should_not be_nil
|
118
|
+
catalog.resource("Notify[good!]").should_not be_nil
|
119
|
+
catalog.resource("Class[Foo::Bar::Baz]").should be_nil
|
120
|
+
catalog.resource("Notify[bad!]").should be_nil
|
121
|
+
end
|
117
122
|
end
|
118
123
|
end
|
119
124
|
end
|
120
|
-
end
|
121
125
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
126
|
+
it "should recompute the version after input files are re-parsed" do
|
127
|
+
Puppet[:code] = 'class foo { }'
|
128
|
+
Time.stubs(:now).returns(1)
|
129
|
+
node = Puppet::Node.new('mynode')
|
130
|
+
Puppet::Parser::Compiler.compile(node).version.should == 1
|
131
|
+
Time.stubs(:now).returns(2)
|
132
|
+
Puppet::Parser::Compiler.compile(node).version.should == 1 # no change because files didn't change
|
133
|
+
Puppet::Resource::TypeCollection.any_instance.stubs(:stale?).returns(true).then.returns(false) # pretend change
|
134
|
+
Puppet::Parser::Compiler.compile(node).version.should == 2
|
135
|
+
end
|
132
136
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
137
|
+
['class', 'define', 'node'].each do |thing|
|
138
|
+
it "should not allow #{thing} inside evaluated conditional constructs" do
|
139
|
+
Puppet[:code] = <<-PP
|
140
|
+
if true {
|
141
|
+
#{thing} foo {
|
142
|
+
}
|
143
|
+
notify { decoy: }
|
138
144
|
}
|
139
|
-
|
140
|
-
}
|
141
|
-
PP
|
145
|
+
PP
|
142
146
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
147
|
+
begin
|
148
|
+
Puppet::Parser::Compiler.compile(Puppet::Node.new("mynode"))
|
149
|
+
raise "compilation should have raised Puppet::Error"
|
150
|
+
rescue Puppet::Error => e
|
151
|
+
e.message.should =~ /at line 2/
|
152
|
+
end
|
148
153
|
end
|
149
154
|
end
|
150
|
-
end
|
151
155
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
+
it "should not allow classes inside unevaluated conditional constructs" do
|
157
|
+
Puppet[:code] = <<-PP
|
158
|
+
if false {
|
159
|
+
class foo {
|
160
|
+
}
|
156
161
|
}
|
157
|
-
|
158
|
-
PP
|
159
|
-
|
160
|
-
lambda { Puppet::Parser::Compiler.compile(Puppet::Node.new("mynode")) }.should raise_error(Puppet::Error)
|
161
|
-
end
|
162
|
+
PP
|
162
163
|
|
163
|
-
|
164
|
-
def extract_name(ref)
|
165
|
-
ref.sub(/File\[(\w+)\]/, '\1')
|
164
|
+
lambda { Puppet::Parser::Compiler.compile(Puppet::Node.new("mynode")) }.should raise_error(Puppet::Error)
|
166
165
|
end
|
167
166
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
mode => 0644,
|
173
|
-
}
|
174
|
-
file { [d,e]:
|
175
|
-
mode => 0755,
|
176
|
-
}
|
177
|
-
MANIFEST
|
178
|
-
end
|
179
|
-
let(:expected_relationships) { [] }
|
180
|
-
let(:expected_subscriptions) { [] }
|
167
|
+
describe "when defining relationships" do
|
168
|
+
def extract_name(ref)
|
169
|
+
ref.sub(/File\[(\w+)\]/, '\1')
|
170
|
+
end
|
181
171
|
|
182
|
-
|
183
|
-
|
184
|
-
|
172
|
+
let(:node) { Puppet::Node.new('mynode') }
|
173
|
+
let(:code) do
|
174
|
+
<<-MANIFEST
|
175
|
+
file { [a,b,c]:
|
176
|
+
mode => 0644,
|
177
|
+
}
|
178
|
+
file { [d,e]:
|
179
|
+
mode => 0755,
|
180
|
+
}
|
181
|
+
MANIFEST
|
182
|
+
end
|
183
|
+
let(:expected_relationships) { [] }
|
184
|
+
let(:expected_subscriptions) { [] }
|
185
185
|
|
186
|
-
|
187
|
-
|
186
|
+
before :each do
|
187
|
+
Puppet[:code] = code
|
188
|
+
end
|
188
189
|
|
189
|
-
|
190
|
+
after :each do
|
191
|
+
catalog = Puppet::Parser::Compiler.compile(node)
|
190
192
|
|
191
|
-
|
192
|
-
resources.map do |res|
|
193
|
-
dependents = Array(res[relation])
|
194
|
-
dependents.map { |ref| [res.title, extract_name(ref)] }
|
195
|
-
end.inject(&:concat)
|
196
|
-
end
|
193
|
+
resources = catalog.resources.select { |res| res.type == 'File' }
|
197
194
|
|
198
|
-
|
199
|
-
|
200
|
-
|
195
|
+
actual_relationships, actual_subscriptions = [:before, :notify].map do |relation|
|
196
|
+
resources.map do |res|
|
197
|
+
dependents = Array(res[relation])
|
198
|
+
dependents.map { |ref| [res.title, extract_name(ref)] }
|
199
|
+
end.inject(&:concat)
|
200
|
+
end
|
201
201
|
|
202
|
-
|
203
|
-
|
202
|
+
actual_relationships.should =~ expected_relationships
|
203
|
+
actual_subscriptions.should =~ expected_subscriptions
|
204
|
+
end
|
204
205
|
|
205
|
-
|
206
|
-
|
206
|
+
it "should create a relationship" do
|
207
|
+
code << "File[a] -> File[b]"
|
207
208
|
|
208
|
-
|
209
|
-
|
209
|
+
expected_relationships << ['a','b']
|
210
|
+
end
|
210
211
|
|
211
|
-
|
212
|
-
|
212
|
+
it "should create a subscription" do
|
213
|
+
code << "File[a] ~> File[b]"
|
213
214
|
|
214
|
-
|
215
|
-
|
215
|
+
expected_subscriptions << ['a', 'b']
|
216
|
+
end
|
216
217
|
|
217
|
-
|
218
|
-
[
|
219
|
-
['b', 'c'],
|
220
|
-
['a', 'd'],
|
221
|
-
['b', 'd'],
|
222
|
-
]
|
223
|
-
end
|
218
|
+
it "should create relationships using title arrays" do
|
219
|
+
code << "File[a,b] -> File[c,d]"
|
224
220
|
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
['a', 'e'],
|
233
|
-
['b', 'e'],
|
234
|
-
['c', 'e'],
|
235
|
-
]
|
236
|
-
end
|
221
|
+
expected_relationships.concat [
|
222
|
+
['a', 'c'],
|
223
|
+
['b', 'c'],
|
224
|
+
['a', 'd'],
|
225
|
+
['b', 'd'],
|
226
|
+
]
|
227
|
+
end
|
237
228
|
|
238
|
-
|
239
|
-
|
229
|
+
it "should create relationships using collection expressions" do
|
230
|
+
code << "File <| mode == 0644 |> -> File <| mode == 0755 |>"
|
231
|
+
|
232
|
+
expected_relationships.concat [
|
233
|
+
['a', 'd'],
|
234
|
+
['b', 'd'],
|
235
|
+
['c', 'd'],
|
236
|
+
['a', 'e'],
|
237
|
+
['b', 'e'],
|
238
|
+
['c', 'e'],
|
239
|
+
]
|
240
|
+
end
|
240
241
|
|
241
|
-
|
242
|
-
|
242
|
+
it "should create relationships using resource names" do
|
243
|
+
code << "'File[a]' -> 'File[b]'"
|
243
244
|
|
244
|
-
|
245
|
-
|
246
|
-
$var = File[a]
|
247
|
-
$var -> File[b]
|
248
|
-
MANIFEST
|
245
|
+
expected_relationships << ['a', 'b']
|
246
|
+
end
|
249
247
|
|
250
|
-
|
251
|
-
|
248
|
+
it "should create relationships using variables" do
|
249
|
+
code << <<-MANIFEST
|
250
|
+
$var = File[a]
|
251
|
+
$var -> File[b]
|
252
|
+
MANIFEST
|
252
253
|
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
10: {
|
267
|
-
file { t1: }
|
254
|
+
expected_relationships << ['a', 'b']
|
255
|
+
end
|
256
|
+
|
257
|
+
it "should create relationships using case statements" do
|
258
|
+
code << <<-MANIFEST
|
259
|
+
$var = 10
|
260
|
+
case $var {
|
261
|
+
10: {
|
262
|
+
file { s1: }
|
263
|
+
}
|
264
|
+
12: {
|
265
|
+
file { s2: }
|
266
|
+
}
|
268
267
|
}
|
269
|
-
|
270
|
-
|
268
|
+
->
|
269
|
+
case $var + 2 {
|
270
|
+
10: {
|
271
|
+
file { t1: }
|
272
|
+
}
|
273
|
+
12: {
|
274
|
+
file { t2: }
|
275
|
+
}
|
271
276
|
}
|
272
|
-
|
273
|
-
MANIFEST
|
277
|
+
MANIFEST
|
274
278
|
|
275
|
-
|
276
|
-
|
279
|
+
expected_relationships << ['s1', 't2']
|
280
|
+
end
|
277
281
|
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
282
|
+
it "should create relationships using array members" do
|
283
|
+
code << <<-MANIFEST
|
284
|
+
$var = [ [ [ File[a], File[b] ] ] ]
|
285
|
+
$var[0][0][0] -> $var[0][0][1]
|
286
|
+
MANIFEST
|
283
287
|
|
284
|
-
|
285
|
-
|
288
|
+
expected_relationships << ['a', 'b']
|
289
|
+
end
|
286
290
|
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
291
|
+
it "should create relationships using hash members" do
|
292
|
+
code << <<-MANIFEST
|
293
|
+
$var = {'foo' => {'bar' => {'source' => File[a], 'target' => File[b]}}}
|
294
|
+
$var[foo][bar][source] -> $var[foo][bar][target]
|
295
|
+
MANIFEST
|
292
296
|
|
293
|
-
|
294
|
-
|
297
|
+
expected_relationships << ['a', 'b']
|
298
|
+
end
|
295
299
|
|
296
|
-
|
297
|
-
|
300
|
+
it "should create relationships using resource declarations" do
|
301
|
+
code << "file { l: } -> file { r: }"
|
298
302
|
|
299
|
-
|
303
|
+
expected_relationships << ['l', 'r']
|
304
|
+
end
|
305
|
+
|
306
|
+
it "should chain relationships" do
|
307
|
+
code << "File[a] -> File[b] ~> File[c] <- File[d] <~ File[e]"
|
308
|
+
|
309
|
+
expected_relationships << ['a', 'b'] << ['d', 'c']
|
310
|
+
expected_subscriptions << ['b', 'c'] << ['e', 'd']
|
311
|
+
end
|
300
312
|
end
|
313
|
+
end
|
301
314
|
|
302
|
-
|
303
|
-
|
315
|
+
describe 'using classic parser' do
|
316
|
+
before :each do
|
317
|
+
Puppet[:parser] = 'current'
|
318
|
+
end
|
319
|
+
it_behaves_like 'the compiler' do
|
320
|
+
end
|
321
|
+
end
|
304
322
|
|
305
|
-
|
306
|
-
|
323
|
+
describe 'using future parser' do
|
324
|
+
# have absolutely no clue to why this is needed - if not required here (even if required by used classes)
|
325
|
+
# the tests will fail with error that rgen/ecore/ruby_to_ecore cannot be found...
|
326
|
+
# TODO: Solve this mystery !
|
327
|
+
require 'rgen/metamodel_builder'
|
328
|
+
|
329
|
+
before :each do
|
330
|
+
Puppet[:parser] = 'future'
|
307
331
|
end
|
332
|
+
it_behaves_like 'the compiler'
|
308
333
|
end
|
309
334
|
end
|