puppet 3.6.2-x86-mingw32 → 3.7.0-x86-mingw32
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.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +2 -3
- data/Gemfile +14 -10
- data/README.md +1 -1
- data/ext/build_defaults.yaml +16 -1
- data/ext/debian/control +3 -2
- data/ext/debian/puppet-common.dirs +1 -0
- data/ext/debian/puppet-common.postinst +8 -8
- data/ext/debian/puppet-common.postrm +2 -1
- data/ext/project_data.yaml +16 -12
- data/ext/rack/example-passenger-vhost.conf +2 -2
- data/ext/redhat/puppet.spec.erb +6 -3
- data/ext/windows/service/daemon.rb +47 -41
- data/install.rb +1 -1
- data/lib/puppet.rb +34 -24
- data/lib/puppet/application.rb +34 -1
- data/lib/puppet/application/agent.rb +9 -8
- data/lib/puppet/application/apply.rb +14 -5
- data/lib/puppet/application/doc.rb +4 -11
- data/lib/puppet/application/master.rb +19 -17
- data/lib/puppet/application/queue.rb +1 -1
- data/lib/puppet/application/resource.rb +0 -1
- data/lib/puppet/configurer.rb +39 -2
- data/lib/puppet/configurer/downloader.rb +5 -10
- data/lib/puppet/configurer/downloader_factory.rb +34 -0
- data/lib/puppet/configurer/plugin_handler.rb +11 -17
- data/lib/puppet/defaults.rb +244 -119
- data/lib/puppet/environments.rb +8 -0
- data/lib/puppet/external/nagios/base.rb +1 -1
- data/lib/puppet/external/pson/pure/generator.rb +1 -8
- data/lib/puppet/face/ca.rb +7 -0
- data/lib/puppet/face/file/download.rb +5 -2
- data/lib/puppet/face/file/store.rb +1 -1
- data/lib/puppet/face/instrumentation_data.rb +2 -1
- data/lib/puppet/face/instrumentation_listener.rb +2 -1
- data/lib/puppet/face/instrumentation_probe.rb +2 -1
- data/lib/puppet/face/module/build.rb +2 -2
- data/lib/puppet/face/module/generate.rb +20 -12
- data/lib/puppet/face/module/install.rb +4 -3
- data/lib/puppet/face/module/uninstall.rb +7 -0
- data/lib/puppet/face/module/upgrade.rb +11 -3
- data/lib/puppet/face/node/clean.rb +1 -1
- data/lib/puppet/face/parser.rb +99 -7
- data/lib/puppet/feature/base.rb +18 -12
- data/lib/puppet/feature/cfacter.rb +14 -0
- data/lib/puppet/feature/pe_license.rb +4 -0
- data/lib/puppet/file_bucket/dipper.rb +19 -12
- data/lib/puppet/file_bucket/file.rb +73 -10
- data/lib/puppet/file_serving/configuration/parser.rb +3 -3
- data/lib/puppet/file_system.rb +1 -1
- data/lib/puppet/file_system/file19.rb +41 -0
- data/lib/puppet/file_system/file19windows.rb +0 -1
- data/lib/puppet/file_system/uniquefile.rb +190 -0
- data/lib/puppet/forge.rb +34 -7
- data/lib/puppet/forge/errors.rb +5 -6
- data/lib/puppet/forge/repository.rb +14 -2
- data/lib/puppet/functions.rb +19 -12
- data/lib/puppet/functions/assert_type.rb +27 -10
- data/lib/puppet/functions/each.rb +111 -0
- data/lib/puppet/functions/epp.rb +54 -0
- data/lib/puppet/functions/filter.rb +113 -0
- data/lib/puppet/functions/inline_epp.rb +88 -0
- data/lib/puppet/functions/map.rb +97 -0
- data/lib/puppet/functions/match.rb +102 -0
- data/lib/puppet/functions/reduce.rb +94 -0
- data/lib/puppet/functions/slice.rb +126 -0
- data/lib/puppet/functions/with.rb +23 -0
- data/lib/puppet/indirector/catalog/compiler.rb +4 -4
- data/lib/puppet/indirector/data_binding/hiera.rb +2 -45
- data/lib/puppet/indirector/facts/couch.rb +3 -1
- data/lib/puppet/indirector/facts/facter.rb +52 -65
- data/lib/puppet/indirector/file_bucket_file/file.rb +6 -3
- data/lib/puppet/indirector/hiera.rb +48 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/request.rb +9 -3
- data/lib/puppet/indirector/resource/ral.rb +1 -1
- data/lib/puppet/indirector/rest.rb +7 -3
- data/lib/puppet/loaders.rb +0 -1
- data/lib/puppet/module.rb +2 -1
- data/lib/puppet/module_tool.rb +2 -0
- data/lib/puppet/module_tool/applications/application.rb +4 -5
- data/lib/puppet/module_tool/applications/builder.rb +64 -5
- data/lib/puppet/module_tool/applications/uninstaller.rb +3 -2
- data/lib/puppet/module_tool/applications/unpacker.rb +14 -0
- data/lib/puppet/module_tool/applications/upgrader.rb +23 -13
- data/lib/puppet/module_tool/dependency.rb +12 -0
- data/lib/puppet/module_tool/errors/shared.rb +1 -1
- data/lib/puppet/module_tool/errors/upgrader.rb +20 -0
- data/lib/puppet/module_tool/installed_modules.rb +6 -1
- data/lib/puppet/module_tool/metadata.rb +53 -3
- data/lib/puppet/module_tool/modulefile.rb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +7 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +1 -17
- data/lib/puppet/module_tool/tar/mini.rb +20 -2
- data/lib/puppet/network/http.rb +5 -0
- data/lib/puppet/network/http/api/v1.rb +2 -2
- data/lib/puppet/network/http/api/v2/environments.rb +15 -1
- data/lib/puppet/network/http/connection.rb +54 -68
- data/lib/puppet/network/http/factory.rb +44 -0
- data/lib/puppet/network/http/handler.rb +12 -6
- data/lib/puppet/network/http/nocache_pool.rb +21 -0
- data/lib/puppet/network/http/pool.rb +120 -0
- data/lib/puppet/network/http/rack/rest.rb +3 -1
- data/lib/puppet/network/http/session.rb +17 -0
- data/lib/puppet/network/http/site.rb +39 -0
- data/lib/puppet/network/http/webrick/rest.rb +3 -1
- data/lib/puppet/network/http_pool.rb +3 -4
- data/lib/puppet/node.rb +19 -6
- data/lib/puppet/node/environment.rb +34 -8
- data/lib/puppet/parser/ast/collection.rb +4 -0
- data/lib/puppet/parser/ast/collexpr.rb +1 -1
- data/lib/puppet/parser/ast/node.rb +5 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +49 -6
- data/lib/puppet/parser/compiler.rb +66 -38
- data/lib/puppet/parser/e4_parser_adapter.rb +2 -2
- data/lib/puppet/parser/files.rb +76 -33
- data/lib/puppet/parser/functions.rb +1 -7
- data/lib/puppet/parser/functions/assert_type.rb +31 -0
- data/lib/puppet/parser/functions/contain.rb +15 -5
- data/lib/puppet/parser/functions/create_resources.rb +5 -1
- data/lib/puppet/parser/functions/digest.rb +5 -0
- data/lib/puppet/parser/functions/each.rb +46 -107
- data/lib/puppet/parser/functions/epp.rb +13 -9
- data/lib/puppet/parser/functions/file.rb +20 -12
- data/lib/puppet/parser/functions/filter.rb +32 -88
- data/lib/puppet/parser/functions/include.rb +12 -24
- data/lib/puppet/parser/functions/inline_epp.rb +9 -12
- data/lib/puppet/parser/functions/lookup.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +30 -83
- data/lib/puppet/parser/functions/match.rb +28 -0
- data/lib/puppet/parser/functions/reduce.rb +69 -98
- data/lib/puppet/parser/functions/require.rb +13 -5
- data/lib/puppet/parser/functions/search.rb +6 -1
- data/lib/puppet/parser/functions/slice.rb +35 -103
- data/lib/puppet/parser/functions/template.rb +12 -5
- data/lib/puppet/parser/functions/with.rb +21 -0
- data/lib/puppet/parser/lexer.rb +1 -1
- data/lib/puppet/parser/parser_factory.rb +21 -33
- data/lib/puppet/parser/resource.rb +2 -3
- data/lib/puppet/parser/scope.rb +85 -15
- data/lib/puppet/pops.rb +9 -11
- data/lib/puppet/pops/adapters.rb +2 -1
- data/lib/puppet/pops/binder/bindings_checker.rb +4 -4
- data/lib/puppet/pops/binder/bindings_factory.rb +6 -6
- data/lib/puppet/pops/binder/bindings_label_provider.rb +1 -1
- data/lib/puppet/pops/binder/bindings_loader.rb +2 -2
- data/lib/puppet/pops/binder/bindings_model.rb +58 -191
- data/lib/puppet/pops/binder/bindings_model_dumper.rb +1 -1
- data/lib/puppet/pops/binder/bindings_model_meta.rb +215 -0
- data/lib/puppet/pops/binder/injector.rb +9 -9
- data/lib/puppet/pops/binder/key_factory.rb +2 -2
- data/lib/puppet/pops/binder/lookup.rb +14 -6
- data/lib/puppet/pops/binder/producers.rb +9 -12
- data/lib/puppet/pops/evaluator/access_operator.rb +35 -29
- data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +175 -0
- data/lib/puppet/pops/evaluator/callable_signature.rb +1 -2
- data/lib/puppet/pops/evaluator/closure.rb +151 -35
- data/lib/puppet/pops/evaluator/compare_operator.rb +26 -22
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +16 -15
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +277 -229
- data/lib/puppet/pops/evaluator/relationship_operator.rb +3 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +86 -53
- data/lib/puppet/pops/functions/dispatch.rb +9 -4
- data/lib/puppet/pops/functions/dispatcher.rb +2 -169
- data/lib/puppet/pops/issue_reporter.rb +14 -6
- data/lib/puppet/pops/issues.rb +96 -21
- data/lib/puppet/pops/loader/base_loader.rb +3 -3
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +2 -21
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -1
- data/lib/puppet/pops/loader/static_loader.rb +12 -2
- data/lib/puppet/pops/model/ast_transformer.rb +4 -24
- data/lib/puppet/pops/model/factory.rb +72 -10
- data/lib/puppet/pops/model/model.rb +82 -574
- data/lib/puppet/pops/model/model_label_provider.rb +4 -2
- data/lib/puppet/pops/model/model_meta.rb +576 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +27 -5
- data/lib/puppet/pops/parser/egrammar.ra +209 -221
- data/lib/puppet/pops/parser/eparser.rb +1459 -1431
- data/lib/puppet/pops/parser/evaluating_parser.rb +15 -75
- data/lib/puppet/pops/parser/lexer2.rb +14 -10
- data/lib/puppet/pops/parser/lexer_support.rb +6 -0
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/parser_support.rb +31 -49
- data/lib/puppet/pops/patterns.rb +10 -10
- data/lib/puppet/pops/semantic_error.rb +1 -1
- data/lib/puppet/pops/types/class_loader.rb +24 -13
- data/lib/puppet/pops/types/type_calculator.rb +188 -87
- data/lib/puppet/pops/types/type_factory.rb +79 -53
- data/lib/puppet/pops/types/type_parser.rb +22 -16
- data/lib/puppet/pops/types/types.rb +283 -392
- data/lib/puppet/pops/types/types_meta.rb +223 -0
- data/lib/puppet/pops/utils.rb +16 -14
- data/lib/puppet/pops/validation/checker4_0.rb +264 -18
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +0 -1
- data/lib/puppet/pops/visitor.rb +0 -103
- data/lib/puppet/provider/exec.rb +10 -1
- data/lib/puppet/provider/file/windows.rb +3 -4
- data/lib/puppet/provider/group/windows_adsi.rb +10 -10
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -4
- data/lib/puppet/provider/package/apt.rb +5 -1
- data/lib/puppet/provider/package/gem.rb +7 -3
- data/lib/puppet/provider/package/openbsd.rb +84 -7
- data/lib/puppet/provider/package/pacman.rb +29 -4
- data/lib/puppet/provider/package/rpm.rb +5 -7
- data/lib/puppet/provider/package/sun.rb +5 -1
- data/lib/puppet/provider/package/windows.rb +6 -1
- data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
- data/lib/puppet/provider/package/windows/msi_package.rb +1 -1
- data/lib/puppet/provider/package/windows/package.rb +13 -1
- data/lib/puppet/provider/package/yum.rb +7 -3
- data/lib/puppet/provider/package/zypper.rb +5 -1
- data/lib/puppet/provider/parsedfile.rb +17 -1
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +6 -12
- data/lib/puppet/provider/service/freebsd.rb +12 -12
- data/lib/puppet/provider/service/init.rb +5 -0
- data/lib/puppet/provider/service/launchd.rb +0 -3
- data/lib/puppet/provider/service/openbsd.rb +8 -7
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +2 -2
- data/lib/puppet/provider/sshkey/parsed.rb +5 -0
- data/lib/puppet/provider/user/user_role_add.rb +5 -4
- data/lib/puppet/provider/user/windows_adsi.rb +8 -8
- data/lib/puppet/provider/zone/solaris.rb +1 -1
- data/lib/puppet/reference/metaparameter.rb +8 -6
- data/lib/puppet/reports/store.rb +4 -9
- data/lib/puppet/resource.rb +75 -11
- data/lib/puppet/resource/catalog.rb +9 -7
- data/lib/puppet/resource/type.rb +27 -0
- data/lib/puppet/settings.rb +61 -41
- data/lib/puppet/settings/base_setting.rb +9 -3
- data/lib/puppet/settings/environment_conf.rb +32 -4
- data/lib/puppet/settings/file_setting.rb +9 -1
- data/lib/puppet/settings/priority_setting.rb +5 -5
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/certificate_authority.rb +15 -6
- data/lib/puppet/ssl/certificate_authority/autosign_command.rb +2 -1
- data/lib/puppet/ssl/host.rb +3 -2
- data/lib/puppet/ssl/inventory.rb +11 -6
- data/lib/puppet/ssl/validator/default_validator.rb +1 -0
- data/lib/puppet/ssl/validator/no_validator.rb +3 -0
- data/lib/puppet/transaction.rb +29 -0
- data/lib/puppet/transaction/resource_harness.rb +16 -3
- data/lib/puppet/type.rb +71 -49
- data/lib/puppet/type/exec.rb +36 -8
- data/lib/puppet/type/file.rb +56 -16
- data/lib/puppet/type/file/content.rb +3 -3
- data/lib/puppet/type/file/mode.rb +12 -3
- data/lib/puppet/type/file/source.rb +4 -1
- data/lib/puppet/type/group.rb +1 -1
- data/lib/puppet/type/mount.rb +1 -3
- data/lib/puppet/type/resources.rb +59 -35
- data/lib/puppet/type/ssh_authorized_key.rb +54 -16
- data/lib/puppet/type/sshkey.rb +1 -1
- data/lib/puppet/type/user.rb +17 -11
- data/lib/puppet/type/yumrepo.rb +59 -8
- data/lib/puppet/type/zone.rb +3 -6
- data/lib/puppet/util.rb +64 -55
- data/lib/puppet/util/autoload.rb +2 -2
- data/lib/puppet/util/colors.rb +61 -19
- data/lib/puppet/util/command_line.rb +21 -4
- data/lib/puppet/util/execution.rb +41 -29
- data/lib/puppet/util/feature.rb +15 -4
- data/lib/puppet/util/filetype.rb +6 -2
- data/lib/puppet/util/http_proxy.rb +29 -2
- data/lib/puppet/util/lockfile.rb +1 -1
- data/lib/puppet/util/log/destinations.rb +7 -3
- data/lib/puppet/util/logging.rb +44 -14
- data/lib/puppet/util/pidlock.rb +11 -5
- data/lib/puppet/util/posix.rb +21 -31
- data/lib/puppet/util/profiler.rb +17 -9
- data/lib/puppet/util/profiler/aggregate.rb +85 -0
- data/lib/puppet/util/profiler/around_profiler.rb +67 -0
- data/lib/puppet/util/profiler/logging.rb +12 -11
- data/lib/puppet/util/profiler/wall_clock.rb +7 -6
- data/lib/puppet/util/rdoc.rb +8 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +1 -8
- data/lib/puppet/util/windows.rb +14 -3
- data/lib/puppet/util/windows/access_control_list.rb +4 -4
- data/lib/puppet/util/{adsi.rb → windows/adsi.rb} +99 -37
- data/lib/puppet/util/windows/api_types.rb +255 -0
- data/lib/puppet/util/windows/com.rb +224 -0
- data/lib/puppet/util/windows/error.rb +72 -5
- data/lib/puppet/util/windows/file.rb +254 -132
- data/lib/puppet/util/windows/process.rb +293 -177
- data/lib/puppet/util/windows/registry.rb +12 -2
- data/lib/puppet/util/windows/root_certs.rb +16 -9
- data/lib/puppet/util/windows/security.rb +501 -232
- data/lib/puppet/util/windows/sid.rb +80 -36
- data/lib/puppet/util/windows/string.rb +2 -0
- data/lib/puppet/util/windows/taskscheduler.rb +1241 -0
- data/lib/puppet/util/windows/user.rb +241 -57
- data/lib/puppet/vendor.rb +3 -1
- data/lib/puppet/vendor/load_pathspec.rb +1 -0
- data/lib/puppet/vendor/load_rgen.rb +1 -0
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +2 -0
- data/lib/puppet/vendor/pathspec/LICENSE +201 -0
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +6 -0
- data/lib/puppet/vendor/pathspec/README.md +53 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +121 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +275 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +17 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +14 -0
- data/lib/puppet/vendor/require_vendored.rb +2 -0
- data/lib/puppet/vendor/rgen/CHANGELOG +197 -0
- data/lib/puppet/vendor/rgen/MIT-LICENSE +20 -0
- data/lib/puppet/vendor/rgen/PUPPET_README.md +6 -0
- data/lib/puppet/vendor/rgen/README.rdoc +78 -0
- data/lib/puppet/vendor/rgen/Rakefile +41 -0
- data/lib/puppet/vendor/rgen/TODO +41 -0
- data/lib/puppet/vendor/rgen/anounce.txt +61 -0
- data/lib/puppet/vendor/rgen/design_rationale.txt +71 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/ea_support.rb +54 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/id_store.rb +32 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel.rb +562 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_ext.rb +45 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_generator.rb +43 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_to_uml13.rb +103 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_to_uml13_ea.rb +89 -0
- data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel.rb +559 -0
- data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel_ext.rb +26 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/metamodel_generator.rb +20 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +91 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/mmgen.rb +28 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/templates/annotations.tpl +37 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/templates/metamodel_generator.tpl +172 -0
- data/lib/puppet/vendor/rgen/lib/rgen/array_extensions.rb +45 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore.rb +218 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_builder_methods.rb +81 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_ext.rb +69 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_interface.rb +47 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_to_ruby.rb +167 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ruby_to_ecore.rb +91 -0
- data/lib/puppet/vendor/rgen/lib/rgen/environment.rb +129 -0
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/dump_file_cache.rb +63 -0
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/fragmented_model.rb +140 -0
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/model_fragment.rb +289 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_instantiator.rb +66 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_xml_instantiator.rb +66 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/default_xml_instantiator.rb +117 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/ecore_xml_instantiator.rb +169 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_instantiator.rb +126 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.rb +331 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.y +94 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/nodebased_xml_instantiator.rb +137 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/qualified_name_resolver.rb +97 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/reference_resolver.rb +128 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/resolution_helper.rb +47 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/xmi11_instantiator.rb +168 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder.rb +224 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_extensions.rb +556 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_runtime.rb +174 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/constant_order_helper.rb +89 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/data_types.rb +77 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/annotation.rb +30 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/feature.rb +168 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/mm_multiple.rb +23 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/module_extension.rb +42 -0
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder.rb +32 -0
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/builder_context.rb +334 -0
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/model_serializer.rb +225 -0
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/reference_resolver.rb +156 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/json_serializer.rb +121 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/opposite_reference_filter.rb +18 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/qualified_name_provider.rb +47 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi11_serializer.rb +116 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi20_serializer.rb +71 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xml_serializer.rb +98 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language.rb +297 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/directory_template_container.rb +83 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/output_handler.rb +87 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_container.rb +234 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_helper.rb +26 -0
- data/lib/puppet/vendor/rgen/lib/rgen/transformer.rb +475 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/auto_class_creator.rb +61 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/cached_glob.rb +67 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/file_cache_map.rb +124 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/file_change_detector.rb +84 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/method_delegation.rb +114 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator.rb +68 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator_base.rb +142 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_dumper.rb +29 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/name_helper.rb +42 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/pattern_matcher.rb +329 -0
- data/lib/puppet/vendor/rgen/lib/transformers/ecore_to_uml13.rb +79 -0
- data/lib/puppet/vendor/rgen/lib/transformers/uml13_to_ecore.rb +127 -0
- data/lib/puppet/vendor/rgen/test/array_extensions_test.rb +64 -0
- data/lib/puppet/vendor/rgen/test/ea_instantiator_test.rb +35 -0
- data/lib/puppet/vendor/rgen/test/ea_serializer_test.rb +23 -0
- data/lib/puppet/vendor/rgen/test/ecore_self_test.rb +54 -0
- data/lib/puppet/vendor/rgen/test/environment_test.rb +90 -0
- data/lib/puppet/vendor/rgen/test/json_test.rb +171 -0
- data/lib/puppet/vendor/rgen/test/metamodel_builder_test.rb +1482 -0
- data/lib/puppet/vendor/rgen/test/metamodel_from_ecore_test.rb +57 -0
- data/lib/puppet/vendor/rgen/test/metamodel_order_test.rb +131 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test.rb +98 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/TestModel.rb +70 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel.ecore +42 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +44 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/using_builtin_types.ecore +9 -0
- data/lib/puppet/vendor/rgen/test/method_delegation_test.rb +178 -0
- data/lib/puppet/vendor/rgen/test/model_builder/builder_context_test.rb +59 -0
- data/lib/puppet/vendor/rgen/test/model_builder/builder_test.rb +242 -0
- data/lib/puppet/vendor/rgen/test/model_builder/ecore_original.rb +163 -0
- data/lib/puppet/vendor/rgen/test/model_builder/ecore_original_regenerated.rb +163 -0
- data/lib/puppet/vendor/rgen/test/model_builder/reference_resolver_test.rb +156 -0
- data/lib/puppet/vendor/rgen/test/model_builder/serializer_test.rb +94 -0
- data/lib/puppet/vendor/rgen/test/model_builder/statemachine_metamodel.rb +42 -0
- data/lib/puppet/vendor/rgen/test/model_builder/test_model/statemachine1.rb +23 -0
- data/lib/puppet/vendor/rgen/test/model_builder_test.rb +6 -0
- data/lib/puppet/vendor/rgen/test/model_fragment_test.rb +30 -0
- data/lib/puppet/vendor/rgen/test/output_handler_test.rb +58 -0
- data/lib/puppet/vendor/rgen/test/qualified_name_provider_test.rb +48 -0
- data/lib/puppet/vendor/rgen/test/qualified_name_resolver_test.rb +102 -0
- data/lib/puppet/vendor/rgen/test/reference_resolver_test.rb +117 -0
- data/lib/puppet/vendor/rgen/test/rgen_test.rb +26 -0
- data/lib/puppet/vendor/rgen/test/template_language_test.rb +163 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result1.txt +29 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result2.txt +9 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result3.txt +4 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestDefaultIndent.out +1 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestTabIndent.out +1 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/a.tpl +12 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/b.tpl +5 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/code/array.tpl +11 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/author.tpl +7 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/chapter.tpl +5 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/local.tpl +8 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/test.tpl +8 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/evaluate_test/test.tpl +7 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/indent_string_test.tpl +12 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/c/cmod.tpl +1 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/chapter.tpl +3 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_backslash_r_test.tpl +5 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/no_indent.tpl +3 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/sub1/no_indent.tpl +3 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test.tpl +24 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test2.tpl +13 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test3.tpl +10 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/null_context_test.tpl +17 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/root.tpl +31 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1.tpl +9 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1/sub1.tpl +3 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/test.tpl +4 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/testout.txt +29 -0
- data/lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb +119 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.eap +0 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.xml +1029 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel_partial.xml +317 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ecore_model_checker.rb +101 -0
- data/lib/puppet/vendor/rgen/test/testmodel/manual_testmodel.xml +22 -0
- data/lib/puppet/vendor/rgen/test/testmodel/object_model_checker.rb +67 -0
- data/lib/puppet/vendor/rgen/test/transformer_test.rb +254 -0
- data/lib/puppet/vendor/rgen/test/util/file_cache_map_test.rb +99 -0
- data/lib/puppet/vendor/rgen/test/util/pattern_matcher_test.rb +97 -0
- data/lib/puppet/vendor/rgen/test/util_test.rb +5 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test.rb +160 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_ecore_model_checker.rb +94 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_ecore_instantiator.rb +53 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_metamodel.rb +49 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_to_ecore.rb +75 -0
- data/lib/puppet/vendor/safe_yaml/PUPPET_README.md +6 -0
- data/lib/puppet/vendor/semantic/PUPPET_README.md +6 -0
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/integration/node/environment/sitedir2/00_a.pp +2 -0
- data/spec/fixtures/integration/node/environment/sitedir2/02_folder/01_b.pp +6 -0
- data/spec/fixtures/integration/node/environment/sitedir2/03_c.pp +1 -0
- data/spec/fixtures/integration/node/environment/sitedir2/04_include.pp +2 -0
- data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +1 -1
- data/spec/fixtures/unit/indirector/hiera/global.yaml +10 -0
- data/spec/fixtures/unit/indirector/hiera/invalid.yaml +1 -0
- data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/init.pp +3 -0
- data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/wrongdefine.pp +3 -0
- data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/casestatement.pp +14 -14
- data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +3 -3
- data/spec/fixtures/unit/parser/lexer/classincludes.pp +3 -3
- data/spec/fixtures/unit/parser/lexer/classpathtest.pp +1 -1
- data/spec/fixtures/unit/parser/lexer/collection_override.pp +1 -1
- data/spec/fixtures/unit/parser/lexer/componentrequire.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +5 -5
- data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/filecreate.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/ifexpression.pp +1 -1
- data/spec/fixtures/unit/parser/lexer/implicititeration.pp +4 -4
- data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +3 -3
- data/spec/fixtures/unit/parser/lexer/multisubs.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/namevartest.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +14 -14
- data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +3 -3
- data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +3 -3
- data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +5 -5
- data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +4 -4
- data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +3 -3
- data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +1 -1
- data/spec/fixtures/unit/provider/package/gem/gem-list-single-package +4 -0
- data/spec/fixtures/unit/type/user/authorized_keys +1 -1
- data/spec/integration/agent/logging_spec.rb +4 -0
- data/spec/integration/application/doc_spec.rb +4 -3
- data/spec/integration/configurer_spec.rb +0 -14
- data/spec/integration/defaults_spec.rb +26 -0
- data/spec/integration/environments/default_manifest_spec.rb +274 -0
- data/spec/integration/faces/documentation_spec.rb +0 -4
- data/spec/integration/file_bucket/file_spec.rb +21 -0
- data/spec/integration/indirector/catalog/compiler_spec.rb +0 -2
- data/spec/integration/indirector/catalog/queue_spec.rb +0 -2
- data/spec/integration/indirector/facts/facter_spec.rb +1 -1
- data/spec/integration/indirector/file_content/file_server_spec.rb +2 -2
- data/spec/integration/node/environment_spec.rb +24 -8
- data/spec/integration/parser/catalog_spec.rb +10 -10
- data/spec/integration/parser/class_spec.rb +37 -0
- data/spec/integration/parser/collector_spec.rb +234 -75
- data/spec/integration/parser/compiler_spec.rb +385 -401
- data/spec/integration/parser/conditionals_spec.rb +117 -0
- data/spec/integration/parser/future_compiler_spec.rb +359 -8
- data/spec/integration/parser/node_spec.rb +185 -0
- data/spec/integration/parser/resource_expressions_spec.rb +286 -0
- data/spec/integration/parser/ruby_manifest_spec.rb +0 -4
- data/spec/integration/parser/scope_spec.rb +94 -151
- data/spec/integration/provider/cron/crontab_spec.rb +137 -148
- data/spec/integration/ssl/certificate_authority_spec.rb +26 -0
- data/spec/integration/ssl/certificate_request_spec.rb +0 -6
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -2
- data/spec/integration/ssl/host_spec.rb +0 -2
- data/spec/integration/transaction_spec.rb +16 -0
- data/spec/integration/type/file_spec.rb +14 -13
- data/spec/integration/type/nagios_spec.rb +6 -15
- data/spec/integration/type/sshkey_spec.rb +22 -0
- data/spec/integration/type/tidy_spec.rb +3 -0
- data/spec/integration/type/user_spec.rb +8 -3
- data/spec/integration/util/autoload_spec.rb +6 -6
- data/spec/integration/util/rdoc/parser_spec.rb +7 -0
- data/spec/integration/util/windows/process_spec.rb +12 -0
- data/spec/integration/util/windows/security_spec.rb +36 -35
- data/spec/integration/util/windows/user_spec.rb +75 -9
- data/spec/integration/util_spec.rb +2 -2
- data/spec/lib/matchers/resource.rb +1 -0
- data/spec/lib/puppet_spec/compiler.rb +15 -2
- data/spec/lib/puppet_spec/files.rb +10 -0
- data/spec/lib/puppet_spec/language.rb +74 -0
- data/spec/lib/puppet_spec/matchers.rb +59 -32
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +3 -0
- data/spec/shared_behaviours/hiera_indirections.rb +99 -0
- data/spec/shared_behaviours/iterative_functions.rb +69 -0
- data/spec/unit/application/apply_spec.rb +4 -2
- data/spec/unit/application/doc_spec.rb +17 -13
- data/spec/unit/application/master_spec.rb +35 -27
- data/spec/unit/application/resource_spec.rb +0 -5
- data/spec/unit/configurer/downloader_factory_spec.rb +96 -0
- data/spec/unit/configurer/downloader_spec.rb +3 -24
- data/spec/unit/configurer/plugin_handler_spec.rb +22 -22
- data/spec/unit/configurer_spec.rb +0 -4
- data/spec/unit/defaults_spec.rb +30 -0
- data/spec/unit/face/config_spec.rb +2 -1
- data/spec/unit/face/module/build_spec.rb +2 -2
- data/spec/unit/face/module/install_spec.rb +8 -8
- data/spec/unit/face/parser_spec.rb +71 -33
- data/spec/unit/file_bucket/file_spec.rb +2 -2
- data/spec/unit/file_system/uniquefile_spec.rb +184 -0
- data/spec/unit/forge/errors_spec.rb +4 -6
- data/spec/unit/forge/module_release_spec.rb +178 -89
- data/spec/unit/forge/repository_spec.rb +110 -2
- data/spec/unit/forge_spec.rb +39 -3
- data/spec/unit/functions/assert_type_spec.rb +22 -3
- data/spec/unit/{parser/methods → functions}/each_spec.rb +21 -1
- data/spec/unit/{parser/functions → functions}/epp_spec.rb +61 -9
- data/spec/unit/{parser/methods → functions}/filter_spec.rb +34 -38
- data/spec/unit/{parser/functions → functions}/inline_epp_spec.rb +18 -3
- data/spec/unit/functions/map_spec.rb +169 -0
- data/spec/unit/functions/match_spec.rb +57 -0
- data/spec/unit/{parser/methods → functions}/reduce_spec.rb +23 -5
- data/spec/unit/{parser/methods → functions}/slice_spec.rb +34 -21
- data/spec/unit/functions/with_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +7 -8
- data/spec/unit/indirector/catalog/compiler_spec.rb +0 -2
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +11 -0
- data/spec/unit/indirector/data_binding/hiera_spec.rb +1 -96
- data/spec/unit/indirector/facts/facter_spec.rb +69 -102
- data/spec/unit/indirector/hiera_spec.rb +17 -0
- data/spec/unit/indirector/request_spec.rb +2 -4
- data/spec/unit/indirector/resource/ral_spec.rb +5 -0
- data/spec/unit/indirector/resource_type/parser_spec.rb +17 -12
- data/spec/unit/indirector/rest_spec.rb +36 -6
- data/spec/unit/interface/face_collection_spec.rb +2 -2
- data/spec/unit/module_tool/applications/builder_spec.rb +364 -14
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +22 -0
- data/spec/unit/module_tool/applications/unpacker_spec.rb +40 -0
- data/spec/unit/module_tool/applications/upgrader_spec.rb +22 -0
- data/spec/unit/module_tool/installed_modules_spec.rb +49 -0
- data/spec/unit/module_tool/metadata_spec.rb +72 -4
- data/spec/unit/module_tool/tar/mini_spec.rb +2 -1
- data/spec/unit/network/authentication_spec.rb +4 -0
- data/spec/unit/network/http/api/v2/environments_spec.rb +24 -3
- data/spec/unit/network/http/connection_spec.rb +127 -92
- data/spec/unit/network/http/factory_spec.rb +82 -0
- data/spec/unit/network/http/handler_spec.rb +23 -13
- data/spec/unit/network/http/nocache_pool_spec.rb +43 -0
- data/spec/unit/network/http/pool_spec.rb +269 -0
- data/spec/unit/network/http/rack/rest_spec.rb +1 -1
- data/spec/unit/network/http/session_spec.rb +43 -0
- data/spec/unit/network/http/site_spec.rb +90 -0
- data/spec/unit/network/http/webrick_spec.rb +1 -1
- data/spec/unit/network/http_pool_spec.rb +9 -6
- data/spec/unit/network/http_spec.rb +10 -0
- data/spec/unit/node/environment_spec.rb +54 -0
- data/spec/unit/node_spec.rb +3 -5
- data/spec/unit/parser/compiler_spec.rb +9 -2
- data/spec/unit/parser/files_spec.rb +19 -0
- data/spec/unit/parser/functions/contain_spec.rb +51 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +8 -1
- data/spec/unit/parser/functions/digest_spec.rb +31 -0
- data/spec/unit/parser/functions/file_spec.rb +48 -5
- data/spec/unit/parser/functions/include_spec.rb +15 -1
- data/spec/unit/parser/functions/realize_spec.rb +43 -35
- data/spec/unit/parser/functions/require_spec.rb +19 -5
- data/spec/unit/parser/functions/search_spec.rb +5 -0
- data/spec/unit/parser/functions/shared.rb +82 -0
- data/spec/unit/parser/functions_spec.rb +1 -1
- data/spec/unit/parser/lexer_spec.rb +10 -1
- data/spec/unit/parser/type_loader_spec.rb +0 -1
- data/spec/unit/pops/benchmark_spec.rb +1 -1
- data/spec/unit/pops/binder/bindings_composer_spec.rb +24 -22
- data/spec/unit/pops/binder/injector_spec.rb +8 -6
- data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +7 -4
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +250 -30
- data/spec/unit/pops/evaluator/logical_ops_spec.rb +2 -2
- data/spec/unit/pops/evaluator/variables_spec.rb +0 -105
- data/spec/unit/pops/issues_spec.rb +170 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +17 -0
- data/spec/unit/pops/loaders/loader_paths_spec.rb +4 -15
- data/spec/unit/pops/loaders/loaders_spec.rb +31 -11
- data/spec/unit/pops/loaders/module_loaders_spec.rb +0 -29
- data/spec/unit/pops/loaders/static_loader_spec.rb +6 -0
- data/spec/unit/pops/parser/epp_parser_spec.rb +38 -9
- data/spec/unit/pops/parser/evaluating_parser_spec.rb +0 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +21 -4
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +5 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +6 -3
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +12 -5
- data/spec/unit/pops/parser/parse_containers_spec.rb +62 -7
- data/spec/unit/pops/parser/parse_resource_spec.rb +155 -73
- data/spec/unit/pops/parser/parser_spec.rb +16 -0
- data/spec/unit/pops/parser/parsing_typed_parameters_spec.rb +72 -0
- data/spec/unit/pops/transformer/transform_calls_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +254 -57
- data/spec/unit/pops/types/type_factory_spec.rb +8 -3
- data/spec/unit/pops/types/type_parser_spec.rb +26 -5
- data/spec/unit/pops/validator/validator_spec.rb +143 -27
- data/spec/unit/provider/exec/posix_spec.rb +22 -14
- data/spec/unit/provider/exec/shell_spec.rb +2 -2
- data/spec/unit/provider/file/windows_spec.rb +7 -7
- data/spec/unit/provider/group/windows_adsi_spec.rb +17 -17
- data/spec/unit/provider/package/gem_spec.rb +10 -0
- data/spec/unit/provider/package/openbsd_spec.rb +66 -9
- data/spec/unit/provider/package/pacman_spec.rb +90 -71
- data/spec/unit/provider/package/windows/package_spec.rb +21 -6
- data/spec/unit/provider/package/yum_spec.rb +1 -0
- data/spec/unit/provider/parsedfile_spec.rb +1 -1
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +9 -9
- data/spec/unit/provider/service/openbsd_spec.rb +26 -2
- data/spec/unit/provider/service/upstart_spec.rb +12 -1
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +6 -0
- data/spec/unit/provider/user/user_role_add_spec.rb +23 -1
- data/spec/unit/provider/user/windows_adsi_spec.rb +17 -17
- data/spec/unit/reports/store_spec.rb +0 -16
- data/spec/unit/resource/catalog_spec.rb +0 -5
- data/spec/unit/resource_spec.rb +2 -2
- data/spec/unit/settings/autosign_setting_spec.rb +2 -2
- data/spec/unit/settings/environment_conf_spec.rb +77 -10
- data/spec/unit/settings/file_setting_spec.rb +5 -4
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +41 -3
- data/spec/unit/ssl/certificate_authority_spec.rb +25 -2
- data/spec/unit/ssl/inventory_spec.rb +13 -0
- data/spec/unit/ssl/validator_spec.rb +0 -1
- data/spec/unit/transaction/resource_harness_spec.rb +64 -0
- data/spec/unit/transaction_spec.rb +98 -47
- data/spec/unit/type/cron_spec.rb +3 -3
- data/spec/unit/type/exec_spec.rb +9 -0
- data/spec/unit/type/file/content_spec.rb +54 -71
- data/spec/unit/type/file/mode_spec.rb +26 -1
- data/spec/unit/type/file/source_spec.rb +26 -4
- data/spec/unit/type/file_spec.rb +3 -3
- data/spec/unit/type/nagios_spec.rb +12 -3
- data/spec/unit/type/resources_spec.rb +64 -30
- data/spec/unit/type/user_spec.rb +1 -1
- data/spec/unit/type/yumrepo_spec.rb +136 -0
- data/spec/unit/type/zone_spec.rb +44 -1
- data/spec/unit/type_spec.rb +20 -0
- data/spec/unit/util/colors_spec.rb +14 -8
- data/spec/unit/util/command_line_spec.rb +11 -7
- data/spec/unit/util/execution_spec.rb +35 -42
- data/spec/unit/util/feature_spec.rb +12 -0
- data/spec/unit/util/http_proxy_spec.rb +43 -1
- data/spec/unit/util/log/destinations_spec.rb +45 -1
- data/spec/unit/util/logging_spec.rb +38 -0
- data/spec/unit/util/pidlock_spec.rb +37 -1
- data/spec/unit/util/profiler/aggregate_spec.rb +59 -0
- data/spec/unit/util/profiler/around_profiler_spec.rb +61 -0
- data/spec/unit/util/profiler/logging_spec.rb +18 -29
- data/spec/unit/util/profiler/wall_clock_spec.rb +1 -1
- data/spec/unit/util/profiler_spec.rb +55 -0
- data/spec/unit/util/queue_spec.rb +0 -1
- data/spec/unit/util/rdoc/parser_spec.rb +14 -6
- data/spec/unit/util/tagging_spec.rb +1 -1
- data/spec/unit/util/windows/access_control_entry_spec.rb +1 -1
- data/spec/unit/util/{adsi_spec.rb → windows/adsi_spec.rb} +111 -108
- data/spec/unit/util/windows/api_types_spec.rb +28 -0
- data/spec/unit/util/windows/registry_spec.rb +7 -6
- data/spec/unit/util/windows/sid_spec.rb +3 -6
- data/spec/unit/util/windows/string_spec.rb +4 -0
- data/spec/unit/util/zaml_spec.rb +5 -1
- data/tasks/benchmark.rake +40 -5
- data/tasks/parser.rake +16 -2
- data/tasks/yard.rake +1 -1
- metadata +308 -150
- data/lib/puppet/file_system/tempfile.rb +0 -20
- data/lib/puppet/parser/e_parser_adapter.rb +0 -119
- data/lib/puppet/parser/functions/collect.rb +0 -15
- data/lib/puppet/parser/functions/select.rb +0 -15
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +0 -109
- data/lib/puppet/pops/parser/lexer.rb +0 -753
- data/lib/puppet/pops/parser/makefile +0 -6
- data/lib/puppet/pops/validation/checker3_1.rb +0 -558
- data/lib/puppet/pops/validation/validator_factory_3_1.rb +0 -31
- data/lib/puppet/util/profiler/none.rb +0 -8
- data/spec/unit/face/certificate_request_spec.rb +0 -7
- data/spec/unit/face/certificate_revocation_list_spec.rb +0 -7
- data/spec/unit/face/key_spec.rb +0 -7
- data/spec/unit/face/report_spec.rb +0 -7
- data/spec/unit/face/resource_spec.rb +0 -7
- data/spec/unit/face/resource_type_spec.rb +0 -7
- data/spec/unit/file_system/tempfile_spec.rb +0 -48
- data/spec/unit/parser/eparser_adapter_spec.rb +0 -407
- data/spec/unit/parser/methods/map_spec.rb +0 -184
- data/spec/unit/parser/methods/shared.rb +0 -45
- data/spec/unit/pops/parser/lexer_spec.rb +0 -840
- data/spec/unit/pops/transformer/transform_resource_spec.rb +0 -185
- data/spec/unit/util/profiler/none_spec.rb +0 -12
@@ -0,0 +1,223 @@
|
|
1
|
+
require 'rgen/metamodel_builder'
|
2
|
+
|
3
|
+
# The Types model is a model of Puppet Language types.
|
4
|
+
#
|
5
|
+
# The exact relationship between types is not visible in this model wrt. the PDataType which is an abstraction
|
6
|
+
# of Scalar, Array[Data], and Hash[Scalar, Data] nested to any depth. This means it is not possible to
|
7
|
+
# infer the type by simply looking at the inheritance hierarchy. The {Puppet::Pops::Types::TypeCalculator} should
|
8
|
+
# be used to answer questions about types. The {Puppet::Pops::Types::TypeFactory} should be used to create an instance
|
9
|
+
# of a type whenever one is needed.
|
10
|
+
#
|
11
|
+
# The implementation of the Types model contains methods that are required for the type objects to behave as
|
12
|
+
# expected when comparing them and using them as keys in hashes. (No other logic is, or should be included directly in
|
13
|
+
# the model's classes).
|
14
|
+
#
|
15
|
+
# @api public
|
16
|
+
#
|
17
|
+
module Puppet::Pops::Types
|
18
|
+
extend RGen::MetamodelBuilder::ModuleExtension
|
19
|
+
|
20
|
+
class TypeModelObject < RGen::MetamodelBuilder::MMBase
|
21
|
+
abstract
|
22
|
+
end
|
23
|
+
|
24
|
+
# Base type for all types except {Puppet::Pops::Types::PType PType}, the type of types.
|
25
|
+
# @api public
|
26
|
+
#
|
27
|
+
class PAnyType < TypeModelObject
|
28
|
+
end
|
29
|
+
|
30
|
+
# The type of types.
|
31
|
+
# @api public
|
32
|
+
#
|
33
|
+
class PType < PAnyType
|
34
|
+
contains_one_uni 'type', PAnyType
|
35
|
+
end
|
36
|
+
|
37
|
+
# @api public
|
38
|
+
#
|
39
|
+
class PNilType < PAnyType
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
# A type private to the type system that describes "ignored type" - i.e. "I am what you are"
|
44
|
+
# @api private
|
45
|
+
#
|
46
|
+
class PUnitType < PAnyType
|
47
|
+
end
|
48
|
+
|
49
|
+
# @api public
|
50
|
+
#
|
51
|
+
class PDefaultType < PAnyType
|
52
|
+
end
|
53
|
+
|
54
|
+
# A flexible data type, being assignable to its subtypes as well as PArrayType and PHashType with element type assignable to PDataType.
|
55
|
+
#
|
56
|
+
# @api public
|
57
|
+
#
|
58
|
+
class PDataType < PAnyType
|
59
|
+
end
|
60
|
+
|
61
|
+
# A flexible type describing an any? of other types
|
62
|
+
# @api public
|
63
|
+
#
|
64
|
+
class PVariantType < PAnyType
|
65
|
+
contains_many_uni 'types', PAnyType, :lowerBound => 1
|
66
|
+
end
|
67
|
+
|
68
|
+
# Type that is PDataType compatible, but is not a PCollectionType.
|
69
|
+
# @api public
|
70
|
+
#
|
71
|
+
class PScalarType < PAnyType
|
72
|
+
end
|
73
|
+
|
74
|
+
# A string type describing the set of strings having one of the given values
|
75
|
+
# @api public
|
76
|
+
#
|
77
|
+
class PEnumType < PScalarType
|
78
|
+
has_many_attr 'values', String, :lowerBound => 1
|
79
|
+
end
|
80
|
+
|
81
|
+
# @api public
|
82
|
+
#
|
83
|
+
class PNumericType < PScalarType
|
84
|
+
end
|
85
|
+
|
86
|
+
# @api public
|
87
|
+
#
|
88
|
+
class PIntegerType < PNumericType
|
89
|
+
has_attr 'from', Integer, :lowerBound => 0
|
90
|
+
has_attr 'to', Integer, :lowerBound => 0
|
91
|
+
end
|
92
|
+
|
93
|
+
# @api public
|
94
|
+
#
|
95
|
+
class PFloatType < PNumericType
|
96
|
+
has_attr 'from', Float, :lowerBound => 0
|
97
|
+
has_attr 'to', Float, :lowerBound => 0
|
98
|
+
end
|
99
|
+
|
100
|
+
# @api public
|
101
|
+
#
|
102
|
+
class PStringType < PScalarType
|
103
|
+
has_many_attr 'values', String, :lowerBound => 0, :upperBound => -1, :unique => true
|
104
|
+
contains_one_uni 'size_type', PIntegerType
|
105
|
+
end
|
106
|
+
|
107
|
+
# @api public
|
108
|
+
#
|
109
|
+
class PRegexpType < PScalarType
|
110
|
+
has_attr 'pattern', String, :lowerBound => 1
|
111
|
+
has_attr 'regexp', Object, :derived => true
|
112
|
+
end
|
113
|
+
|
114
|
+
# Represents a subtype of String that narrows the string to those matching the patterns
|
115
|
+
# If specified without a pattern it is basically the same as the String type.
|
116
|
+
#
|
117
|
+
# @api public
|
118
|
+
#
|
119
|
+
class PPatternType < PScalarType
|
120
|
+
contains_many_uni 'patterns', PRegexpType
|
121
|
+
end
|
122
|
+
|
123
|
+
# @api public
|
124
|
+
#
|
125
|
+
class PBooleanType < PScalarType
|
126
|
+
end
|
127
|
+
|
128
|
+
# @api public
|
129
|
+
#
|
130
|
+
class PCollectionType < PAnyType
|
131
|
+
contains_one_uni 'element_type', PAnyType
|
132
|
+
contains_one_uni 'size_type', PIntegerType
|
133
|
+
end
|
134
|
+
|
135
|
+
# @api public
|
136
|
+
#
|
137
|
+
class PStructElement < TypeModelObject
|
138
|
+
has_attr 'name', String, :lowerBound => 1
|
139
|
+
contains_one_uni 'type', PAnyType
|
140
|
+
end
|
141
|
+
|
142
|
+
# @api public
|
143
|
+
#
|
144
|
+
class PStructType < PAnyType
|
145
|
+
contains_many_uni 'elements', PStructElement, :lowerBound => 1
|
146
|
+
has_attr 'hashed_elements', Object, :derived => true
|
147
|
+
end
|
148
|
+
|
149
|
+
# @api public
|
150
|
+
#
|
151
|
+
class PTupleType < PAnyType
|
152
|
+
contains_many_uni 'types', PAnyType, :lowerBound => 1
|
153
|
+
# If set, describes min and max required of the given types - if max > size of
|
154
|
+
# types, the last type entry repeats
|
155
|
+
#
|
156
|
+
contains_one_uni 'size_type', PIntegerType, :lowerBound => 0
|
157
|
+
end
|
158
|
+
|
159
|
+
# @api public
|
160
|
+
#
|
161
|
+
class PCallableType < PAnyType
|
162
|
+
# Types of parameters as a Tuple with required/optional count, or an Integer with min (required), max count
|
163
|
+
contains_one_uni 'param_types', PAnyType, :lowerBound => 1
|
164
|
+
|
165
|
+
# Although being an abstract type reference, only Callable, or all Callables wrapped in
|
166
|
+
# Optional or Variant are supported
|
167
|
+
# If not set, the meaning is that block is not supported.
|
168
|
+
#
|
169
|
+
contains_one_uni 'block_type', PAnyType, :lowerBound => 0
|
170
|
+
end
|
171
|
+
|
172
|
+
# @api public
|
173
|
+
#
|
174
|
+
class PArrayType < PCollectionType
|
175
|
+
end
|
176
|
+
|
177
|
+
# @api public
|
178
|
+
#
|
179
|
+
class PHashType < PCollectionType
|
180
|
+
contains_one_uni 'key_type', PAnyType
|
181
|
+
end
|
182
|
+
|
183
|
+
RuntimeEnum = RGen::MetamodelBuilder::DataTypes::Enum.new(
|
184
|
+
:name => 'RuntimeEnum',
|
185
|
+
:literals => [:'ruby', ])
|
186
|
+
|
187
|
+
# @api public
|
188
|
+
#
|
189
|
+
class PRuntimeType < PAnyType
|
190
|
+
has_attr 'runtime', RuntimeEnum, :lowerBound => 1
|
191
|
+
has_attr 'runtime_type_name', String
|
192
|
+
end
|
193
|
+
|
194
|
+
# Abstract representation of a type that can be placed in a Catalog.
|
195
|
+
# @api public
|
196
|
+
#
|
197
|
+
class PCatalogEntryType < PAnyType
|
198
|
+
end
|
199
|
+
|
200
|
+
# Represents a (host-) class in the Puppet Language.
|
201
|
+
# @api public
|
202
|
+
#
|
203
|
+
class PHostClassType < PCatalogEntryType
|
204
|
+
has_attr 'class_name', String
|
205
|
+
end
|
206
|
+
|
207
|
+
# Represents a Resource Type in the Puppet Language
|
208
|
+
# @api public
|
209
|
+
#
|
210
|
+
class PResourceType < PCatalogEntryType
|
211
|
+
has_attr 'type_name', String
|
212
|
+
has_attr 'title', String
|
213
|
+
end
|
214
|
+
|
215
|
+
# Represents a type that accept PNilType instead of the type parameter
|
216
|
+
# required_type - is a short hand for Variant[T, Undef]
|
217
|
+
# @api public
|
218
|
+
#
|
219
|
+
class POptionalType < PAnyType
|
220
|
+
contains_one_uni 'optional_type', PAnyType
|
221
|
+
end
|
222
|
+
|
223
|
+
end
|
data/lib/puppet/pops/utils.rb
CHANGED
@@ -7,8 +7,8 @@ module Puppet::Pops::Utils
|
|
7
7
|
# and check if value is nil.
|
8
8
|
def self.is_numeric?(o)
|
9
9
|
case o
|
10
|
-
when Numeric
|
11
|
-
|
10
|
+
when Numeric
|
11
|
+
true
|
12
12
|
else
|
13
13
|
!!Puppet::Pops::Patterns::NUMERIC.match(relativize_name(o.to_s))
|
14
14
|
end
|
@@ -17,6 +17,7 @@ module Puppet::Pops::Utils
|
|
17
17
|
# To Numeric with radix, or nil if not a number.
|
18
18
|
# If the value is already Numeric it is returned verbatim with a radix of 10.
|
19
19
|
# @param o [String, Number] a string containing a number in octal, hex, integer (decimal) or floating point form
|
20
|
+
# with optional sign +/-
|
20
21
|
# @return [Array<Number, Integer>, nil] array with converted number and radix, or nil if not possible to convert
|
21
22
|
# @api public
|
22
23
|
#
|
@@ -27,23 +28,23 @@ module Puppet::Pops::Utils
|
|
27
28
|
match = Puppet::Pops::Patterns::NUMERIC.match(relativize_name(o))
|
28
29
|
if !match
|
29
30
|
nil
|
30
|
-
elsif match[
|
31
|
+
elsif match[5].to_s.length > 0
|
31
32
|
# Use default radix (default is decimal == 10) for floats
|
32
|
-
[Float(match[
|
33
|
+
match[1] == '-' ? [-Float(match[2]), 10] : [Float(match[2]), 10]
|
33
34
|
else
|
34
35
|
# Set radix (default is decimal == 10)
|
35
36
|
radix = 10
|
36
|
-
if match[
|
37
|
+
if match[3].to_s.length > 0
|
37
38
|
radix = 16
|
38
|
-
elsif match[
|
39
|
+
elsif match[4].to_s.length > 1 && match[4][0,1] == '0'
|
39
40
|
radix = 8
|
40
41
|
end
|
41
42
|
# Ruby 1.8.7 does not have a second argument to Kernel method that creates an
|
42
43
|
# integer from a string, it relies on the prefix 0x, 0X, 0 (and unsupported in puppet binary 'b')
|
43
|
-
# We have the correct string here, match[
|
44
|
-
[Integer(match[
|
44
|
+
# We have the correct string here, match[2] is safe to parse without passing on radix
|
45
|
+
match[1] == '-' ? [-Integer(match[2]), radix] : [Integer(match[2]), radix]
|
45
46
|
end
|
46
|
-
when Numeric
|
47
|
+
when Numeric
|
47
48
|
# Impossible to calculate radix, assume decimal
|
48
49
|
[o, 10]
|
49
50
|
else
|
@@ -55,7 +56,8 @@ module Puppet::Pops::Utils
|
|
55
56
|
end
|
56
57
|
|
57
58
|
# To Numeric (or already numeric)
|
58
|
-
# Returns nil if value is not numeric, else an Integer or Float
|
59
|
+
# Returns nil if value is not numeric, else an Integer or Float. A String may have an optional sign.
|
60
|
+
#
|
59
61
|
# A leading '::' is accepted (and ignored)
|
60
62
|
#
|
61
63
|
def self.to_n o
|
@@ -65,12 +67,12 @@ module Puppet::Pops::Utils
|
|
65
67
|
match = Puppet::Pops::Patterns::NUMERIC.match(relativize_name(o))
|
66
68
|
if !match
|
67
69
|
nil
|
68
|
-
elsif match[
|
69
|
-
Float(match[
|
70
|
+
elsif match[5].to_s.length > 0
|
71
|
+
match[1] == '-' ? -Float(match[2]) : Float(match[2])
|
70
72
|
else
|
71
|
-
Integer(match[
|
73
|
+
match[1] == '-' ? -Integer(match[2]) : Integer(match[2])
|
72
74
|
end
|
73
|
-
when Numeric
|
75
|
+
when Numeric
|
74
76
|
o
|
75
77
|
else
|
76
78
|
nil
|
@@ -25,6 +25,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
25
25
|
@@query_visitor ||= Puppet::Pops::Visitor.new(nil, "query", 0, 0)
|
26
26
|
@@top_visitor ||= Puppet::Pops::Visitor.new(nil, "top", 1, 1)
|
27
27
|
@@relation_visitor ||= Puppet::Pops::Visitor.new(nil, "relation", 0, 0)
|
28
|
+
@@idem_visitor ||= Puppet::Pops::Visitor.new(self, "idem", 0, 0)
|
28
29
|
|
29
30
|
@acceptor = diagnostics_producer
|
30
31
|
end
|
@@ -77,6 +78,25 @@ class Puppet::Pops::Validation::Checker4_0
|
|
77
78
|
@@assignment_visitor.visit_this_1(self, o, via_index)
|
78
79
|
end
|
79
80
|
|
81
|
+
# Checks if the expression has side effect ('idem' is latin for 'the same', here meaning that the evaluation state
|
82
|
+
# is known to be unchanged after the expression has been evaluated). The result is not 100% authoritative for
|
83
|
+
# negative answers since analysis of function behavior is not possible.
|
84
|
+
# @return [Boolean] true if expression is known to have no effect on evaluation state
|
85
|
+
#
|
86
|
+
def idem(o)
|
87
|
+
@@idem_visitor.visit_this_0(self, o)
|
88
|
+
end
|
89
|
+
|
90
|
+
# Returns the last expression in a block, or the expression, if that expression is idem
|
91
|
+
def ends_with_idem(o)
|
92
|
+
if o.is_a?(Puppet::Pops::Model::BlockExpression)
|
93
|
+
last = o.statements[-1]
|
94
|
+
idem(last) ? last : nil
|
95
|
+
else
|
96
|
+
idem(o) ? o : nil
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
80
100
|
#---ASSIGNMENT CHECKS
|
81
101
|
|
82
102
|
def assign_VariableExpression(o, via_index)
|
@@ -130,9 +150,15 @@ class Puppet::Pops::Validation::Checker4_0
|
|
130
150
|
end
|
131
151
|
|
132
152
|
def check_AssignmentExpression(o)
|
133
|
-
|
134
|
-
|
135
|
-
|
153
|
+
case o.operator
|
154
|
+
when :'='
|
155
|
+
assign(o.left_expr)
|
156
|
+
rvalue(o.right_expr)
|
157
|
+
when :'+=', :'-='
|
158
|
+
acceptor.accept(Issues::APPENDS_DELETES_NO_LONGER_SUPPORTED, o, {:operator => o.operator})
|
159
|
+
else
|
160
|
+
acceptor.accept(Issues::UNSUPPORTED_OPERATOR, o, {:operator => o.operator})
|
161
|
+
end
|
136
162
|
end
|
137
163
|
|
138
164
|
# Checks that operation with :+> is contained in a ResourceOverride or Collector.
|
@@ -154,11 +180,31 @@ class Puppet::Pops::Validation::Checker4_0
|
|
154
180
|
rvalue(o.value_expr)
|
155
181
|
end
|
156
182
|
|
183
|
+
def check_AttributesOperation(o)
|
184
|
+
# Append operator use is constrained
|
185
|
+
parent = o.eContainer
|
186
|
+
parent = parent.eContainer unless parent.nil?
|
187
|
+
unless parent.is_a?(Model::ResourceExpression)
|
188
|
+
acceptor.accept(Issues::UNSUPPORTED_OPERATOR_IN_CONTEXT, o, :operator=>'* =>')
|
189
|
+
end
|
190
|
+
|
191
|
+
rvalue(o.expr)
|
192
|
+
end
|
193
|
+
|
157
194
|
def check_BinaryExpression(o)
|
158
195
|
rvalue(o.left_expr)
|
159
196
|
rvalue(o.right_expr)
|
160
197
|
end
|
161
198
|
|
199
|
+
def check_BlockExpression(o)
|
200
|
+
o.statements[0..-2].each do |statement|
|
201
|
+
if idem(statement)
|
202
|
+
acceptor.accept(Issues::IDEM_EXPRESSION_NOT_LAST, statement)
|
203
|
+
break # only flag the first
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
162
208
|
def check_CallNamedFunctionExpression(o)
|
163
209
|
case o.functor_expr
|
164
210
|
when Puppet::Pops::Model::QualifiedName
|
@@ -172,6 +218,12 @@ class Puppet::Pops::Validation::Checker4_0
|
|
172
218
|
end
|
173
219
|
end
|
174
220
|
|
221
|
+
def check_EppExpression(o)
|
222
|
+
if o.eContainer.is_a?(Puppet::Pops::Model::LambdaExpression)
|
223
|
+
internal_check_no_capture(o.eContainer, o)
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
175
227
|
def check_MethodCallExpression(o)
|
176
228
|
unless o.functor_expr.is_a? Model::QualifiedName
|
177
229
|
acceptor.accept(Issues::ILLEGAL_EXPRESSION, o.functor_expr, :feature => 'function name', :container => o)
|
@@ -210,12 +262,84 @@ class Puppet::Pops::Validation::Checker4_0
|
|
210
262
|
end
|
211
263
|
end
|
212
264
|
|
265
|
+
RESERVED_TYPE_NAMES = {
|
266
|
+
'type' => true,
|
267
|
+
'any' => true,
|
268
|
+
'unit' => true,
|
269
|
+
'scalar' => true,
|
270
|
+
'boolean' => true,
|
271
|
+
'numeric' => true,
|
272
|
+
'integer' => true,
|
273
|
+
'float' => true,
|
274
|
+
'collection' => true,
|
275
|
+
'array' => true,
|
276
|
+
'hash' => true,
|
277
|
+
'tuple' => true,
|
278
|
+
'struct' => true,
|
279
|
+
'variant' => true,
|
280
|
+
'optional' => true,
|
281
|
+
'enum' => true,
|
282
|
+
'regexp' => true,
|
283
|
+
'pattern' => true,
|
284
|
+
'runtime' => true,
|
285
|
+
}
|
286
|
+
|
213
287
|
# for 'class', 'define', and function
|
214
288
|
def check_NamedDefinition(o)
|
215
289
|
top(o.eContainer, o)
|
216
290
|
if o.name !~ Puppet::Pops::Patterns::CLASSREF
|
217
291
|
acceptor.accept(Issues::ILLEGAL_DEFINITION_NAME, o, {:name=>o.name})
|
218
292
|
end
|
293
|
+
|
294
|
+
if RESERVED_TYPE_NAMES[o.name()]
|
295
|
+
acceptor.accept(Issues::RESERVED_TYPE_NAME, o, {:name => o.name})
|
296
|
+
end
|
297
|
+
|
298
|
+
if violator = ends_with_idem(o.body)
|
299
|
+
acceptor.accept(Issues::IDEM_NOT_ALLOWED_LAST, violator, {:container => o})
|
300
|
+
end
|
301
|
+
end
|
302
|
+
|
303
|
+
def check_HostClassDefinition(o)
|
304
|
+
check_NamedDefinition(o)
|
305
|
+
internal_check_no_capture(o)
|
306
|
+
internal_check_reserved_params(o)
|
307
|
+
end
|
308
|
+
|
309
|
+
def check_ResourceTypeDefinition(o)
|
310
|
+
check_NamedDefinition(o)
|
311
|
+
internal_check_no_capture(o)
|
312
|
+
internal_check_reserved_params(o)
|
313
|
+
end
|
314
|
+
|
315
|
+
def internal_check_capture_last(o)
|
316
|
+
accepted_index = o.parameters.size() -1
|
317
|
+
o.parameters.each_with_index do |p, index|
|
318
|
+
if p.captures_rest && index != accepted_index
|
319
|
+
acceptor.accept(Issues::CAPTURES_REST_NOT_LAST, p, {:param_name => p.name})
|
320
|
+
end
|
321
|
+
end
|
322
|
+
end
|
323
|
+
|
324
|
+
def internal_check_no_capture(o, container = o)
|
325
|
+
o.parameters.each do |p|
|
326
|
+
if p.captures_rest
|
327
|
+
acceptor.accept(Issues::CAPTURES_REST_NOT_SUPPORTED, p, {:container => container, :param_name => p.name})
|
328
|
+
end
|
329
|
+
end
|
330
|
+
end
|
331
|
+
|
332
|
+
RESERVED_PARAMETERS = {
|
333
|
+
'name' => true,
|
334
|
+
'title' => true,
|
335
|
+
}
|
336
|
+
|
337
|
+
def internal_check_reserved_params(o)
|
338
|
+
o.parameters.each do |p|
|
339
|
+
if RESERVED_PARAMETERS[p.name]
|
340
|
+
acceptor.accept(Issues::RESERVED_PARAMETER, p, {:container => o, :param_name => p.name})
|
341
|
+
end
|
342
|
+
end
|
219
343
|
end
|
220
344
|
|
221
345
|
def check_IfExpression(o)
|
@@ -229,9 +353,8 @@ class Puppet::Pops::Validation::Checker4_0
|
|
229
353
|
# acceptor.accept(Issues::ILLEGAL_EXPRESSION, o.key, :feature => 'hash key', :container => o.eContainer)
|
230
354
|
end
|
231
355
|
|
232
|
-
# A Lambda is a Definition, but it may appear in other scopes than top scope (Which check_Definition asserts).
|
233
|
-
#
|
234
356
|
def check_LambdaExpression(o)
|
357
|
+
internal_check_capture_last(o)
|
235
358
|
end
|
236
359
|
|
237
360
|
def check_LiteralList(o)
|
@@ -243,6 +366,12 @@ class Puppet::Pops::Validation::Checker4_0
|
|
243
366
|
hostname(o.host_matches, o)
|
244
367
|
hostname(o.parent, o, 'parent') unless o.parent.nil?
|
245
368
|
top(o.eContainer, o)
|
369
|
+
if violator = ends_with_idem(o.body)
|
370
|
+
acceptor.accept(Issues::IDEM_NOT_ALLOWED_LAST, violator, {:container => o})
|
371
|
+
end
|
372
|
+
unless o.parent.nil?
|
373
|
+
acceptor.accept(Issues::ILLEGAL_NODE_INHERITANCE, o.parent)
|
374
|
+
end
|
246
375
|
end
|
247
376
|
|
248
377
|
# No checking takes place - all expressions using a QualifiedName need to check. This because the
|
@@ -275,7 +404,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
275
404
|
def relation_RelationshipExpression(o); end
|
276
405
|
|
277
406
|
def check_Parameter(o)
|
278
|
-
if o.name =~ /^[0-9]+$/
|
407
|
+
if o.name =~ /^(?:0x)?[0-9]+$/
|
279
408
|
acceptor.accept(Issues::ILLEGAL_NUMERIC_PARAMETER, o, :name => o.name)
|
280
409
|
end
|
281
410
|
end
|
@@ -295,24 +424,41 @@ class Puppet::Pops::Validation::Checker4_0
|
|
295
424
|
end
|
296
425
|
|
297
426
|
def check_ResourceExpression(o)
|
298
|
-
#
|
299
|
-
|
300
|
-
|
427
|
+
# The expression for type name cannot be statically checked - this is instead done at runtime
|
428
|
+
# to enable better error message of the result of the expression rather than the static instruction.
|
429
|
+
# (This can be revised as there are static constructs that are illegal, but require updating many
|
430
|
+
# tests that expect the detailed reporting).
|
431
|
+
end
|
432
|
+
|
433
|
+
def check_ResourceBody(o)
|
434
|
+
seenUnfolding = false
|
435
|
+
o.operations.each do |ao|
|
436
|
+
if ao.is_a?(Puppet::Pops::Model::AttributesOperation)
|
437
|
+
if seenUnfolding
|
438
|
+
acceptor.accept(Issues::MULTIPLE_ATTRIBUTES_UNFOLD, ao)
|
439
|
+
else
|
440
|
+
seenUnfolding = true
|
441
|
+
end
|
442
|
+
end
|
301
443
|
end
|
444
|
+
end
|
302
445
|
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
acceptor.accept(Issues::RT_NO_STORECONFIGS_EXPORT, o)
|
446
|
+
def check_ResourceDefaultsExpression(o)
|
447
|
+
if o.form && o.form != :regular
|
448
|
+
acceptor.accept(Issues::NOT_VIRTUALIZEABLE, o)
|
307
449
|
end
|
308
450
|
end
|
309
451
|
|
310
|
-
def
|
452
|
+
def check_ResourceOverrideExpression(o)
|
311
453
|
if o.form && o.form != :regular
|
312
454
|
acceptor.accept(Issues::NOT_VIRTUALIZEABLE, o)
|
313
455
|
end
|
314
456
|
end
|
315
457
|
|
458
|
+
def check_ReservedWord(o)
|
459
|
+
acceptor.accept(Issues::RESERVED_WORD, o, :word => o.word)
|
460
|
+
end
|
461
|
+
|
316
462
|
def check_SelectorExpression(o)
|
317
463
|
rvalue(o.left_expr)
|
318
464
|
end
|
@@ -452,10 +598,6 @@ class Puppet::Pops::Validation::Checker4_0
|
|
452
598
|
#
|
453
599
|
def rvalue_Expression(o); end
|
454
600
|
|
455
|
-
def rvalue_ResourceDefaultsExpression(o); acceptor.accept(Issues::NOT_RVALUE, o) ; end
|
456
|
-
|
457
|
-
def rvalue_ResourceOverrideExpression(o); acceptor.accept(Issues::NOT_RVALUE, o) ; end
|
458
|
-
|
459
601
|
def rvalue_CollectExpression(o) ; acceptor.accept(Issues::NOT_RVALUE, o) ; end
|
460
602
|
|
461
603
|
def rvalue_Definition(o) ; acceptor.accept(Issues::NOT_RVALUE, o) ; end
|
@@ -497,6 +639,110 @@ class Puppet::Pops::Validation::Checker4_0
|
|
497
639
|
acceptor.accept(Issues::NOT_TOP_LEVEL, definition)
|
498
640
|
end
|
499
641
|
|
642
|
+
#--IDEM CHECK
|
643
|
+
def idem_Object(o)
|
644
|
+
false
|
645
|
+
end
|
646
|
+
|
647
|
+
def idem_Nop(o)
|
648
|
+
true
|
649
|
+
end
|
650
|
+
|
651
|
+
def idem_NilClass(o)
|
652
|
+
true
|
653
|
+
end
|
654
|
+
|
655
|
+
def idem_Literal(o)
|
656
|
+
true
|
657
|
+
end
|
658
|
+
|
659
|
+
def idem_LiteralList(o)
|
660
|
+
true
|
661
|
+
end
|
662
|
+
|
663
|
+
def idem_LiteralHash(o)
|
664
|
+
true
|
665
|
+
end
|
666
|
+
|
667
|
+
def idem_Factory(o)
|
668
|
+
idem(o.current)
|
669
|
+
end
|
670
|
+
|
671
|
+
def idem_AccessExpression(o)
|
672
|
+
true
|
673
|
+
end
|
674
|
+
|
675
|
+
def idem_BinaryExpression(o)
|
676
|
+
true
|
677
|
+
end
|
678
|
+
|
679
|
+
def idem_RelationshipExpression(o)
|
680
|
+
# Always side effect
|
681
|
+
false
|
682
|
+
end
|
683
|
+
|
684
|
+
def idem_AssignmentExpression(o)
|
685
|
+
# Always side effect
|
686
|
+
false
|
687
|
+
end
|
688
|
+
|
689
|
+
# Handles UnaryMinusExpression, NotExpression, VariableExpression
|
690
|
+
def idem_UnaryExpression(o)
|
691
|
+
true
|
692
|
+
end
|
693
|
+
|
694
|
+
# Allow (no-effect parentheses) to be used around a productive expression
|
695
|
+
def idem_ParenthesizedExpression(o)
|
696
|
+
idem(o.expr)
|
697
|
+
end
|
698
|
+
|
699
|
+
def idem_RenderExpression(o)
|
700
|
+
false
|
701
|
+
end
|
702
|
+
|
703
|
+
def idem_RenderStringExpression(o)
|
704
|
+
false
|
705
|
+
end
|
706
|
+
|
707
|
+
def idem_BlockExpression(o)
|
708
|
+
# productive if there is at least one productive expression
|
709
|
+
! o.statements.any? {|expr| !idem(expr) }
|
710
|
+
end
|
711
|
+
|
712
|
+
# Returns true even though there may be interpolated expressions that have side effect.
|
713
|
+
# Report as idem anyway, as it is very bad design to evaluate an interpolated string for its
|
714
|
+
# side effect only.
|
715
|
+
def idem_ConcatenatedString(o)
|
716
|
+
true
|
717
|
+
end
|
718
|
+
|
719
|
+
# Heredoc is just a string, but may contain interpolated string (which may have side effects).
|
720
|
+
# This is still bad design and should be reported as idem.
|
721
|
+
def idem_HeredocExpression(o)
|
722
|
+
true
|
723
|
+
end
|
724
|
+
|
725
|
+
# May technically have side effects inside the Selector, but this is bad design - treat as idem
|
726
|
+
def idem_SelectorExpression(o)
|
727
|
+
true
|
728
|
+
end
|
729
|
+
|
730
|
+
def idem_IfExpression(o)
|
731
|
+
[o.test, o.then_expr, o.else_expr].all? {|e| idem(e) }
|
732
|
+
end
|
733
|
+
|
734
|
+
# Case expression is idem, if test, and all options are idem
|
735
|
+
def idem_CaseExpression(o)
|
736
|
+
return false if !idem(o.test)
|
737
|
+
! o.options.any? {|opt| !idem(opt) }
|
738
|
+
end
|
739
|
+
|
740
|
+
# An option is idem if values and the then_expression are idem
|
741
|
+
def idem_CaseOption(o)
|
742
|
+
return false if o.values.any? { |value| !idem(value) }
|
743
|
+
idem(o.then_expr)
|
744
|
+
end
|
745
|
+
|
500
746
|
#--- NON POLYMORPH, NON CHECKING CODE
|
501
747
|
|
502
748
|
# Produces string part of something named, or nil if not a QualifiedName or QualifiedReference
|