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
@@ -45,11 +45,19 @@ class Puppet::Pops::Parser::EvaluatingParser
|
|
45
45
|
@acceptor = nil
|
46
46
|
end
|
47
47
|
|
48
|
+
# Create a closure that can be called in the given scope
|
49
|
+
def closure(model, scope)
|
50
|
+
Puppet::Pops::Evaluator::Closure.new(evaluator, model, scope)
|
51
|
+
end
|
52
|
+
|
48
53
|
def evaluate(scope, model)
|
49
54
|
return nil unless model
|
50
|
-
|
51
|
-
|
52
|
-
|
55
|
+
evaluator.evaluate(model, scope)
|
56
|
+
end
|
57
|
+
|
58
|
+
def evaluator
|
59
|
+
@@evaluator ||= Puppet::Pops::Evaluator::EvaluatorImpl.new()
|
60
|
+
@@evaluator
|
53
61
|
end
|
54
62
|
|
55
63
|
def validate(parse_result)
|
@@ -63,7 +71,7 @@ class Puppet::Pops::Parser::EvaluatingParser
|
|
63
71
|
end
|
64
72
|
|
65
73
|
def validator(acceptor)
|
66
|
-
Puppet::Pops::Validation::
|
74
|
+
Puppet::Pops::Validation::ValidatorFactory_4_0.new().validator(acceptor)
|
67
75
|
end
|
68
76
|
|
69
77
|
def assert_and_report(parse_result)
|
@@ -73,52 +81,8 @@ class Puppet::Pops::Parser::EvaluatingParser
|
|
73
81
|
end
|
74
82
|
validation_result = validate(parse_result)
|
75
83
|
|
76
|
-
|
77
|
-
|
78
|
-
max_deprecations = Puppet[:max_deprecations] + 1
|
79
|
-
|
80
|
-
# If there are warnings output them
|
81
|
-
warnings = validation_result.warnings
|
82
|
-
if warnings.size > 0
|
83
|
-
formatter = Puppet::Pops::Validation::DiagnosticFormatterPuppetStyle.new
|
84
|
-
emitted_w = 0
|
85
|
-
emitted_dw = 0
|
86
|
-
validation_result.warnings.each {|w|
|
87
|
-
if w.severity == :deprecation
|
88
|
-
# Do *not* call Puppet.deprecation_warning it is for internal deprecation, not
|
89
|
-
# deprecation of constructs in manifests! (It is not designed for that purpose even if
|
90
|
-
# used throughout the code base).
|
91
|
-
#
|
92
|
-
Puppet.warning(formatter.format(w)) if emitted_dw < max_deprecations
|
93
|
-
emitted_dw += 1
|
94
|
-
else
|
95
|
-
Puppet.warning(formatter.format(w)) if emitted_w < max_warnings
|
96
|
-
emitted_w += 1
|
97
|
-
end
|
98
|
-
break if emitted_w > max_warnings && emitted_dw > max_deprecations # but only then
|
99
|
-
}
|
100
|
-
end
|
101
|
-
|
102
|
-
# If there were errors, report the first found. Use a puppet style formatter.
|
103
|
-
errors = validation_result.errors
|
104
|
-
if errors.size > 0
|
105
|
-
formatter = Puppet::Pops::Validation::DiagnosticFormatterPuppetStyle.new
|
106
|
-
if errors.size == 1 || max_errors <= 1
|
107
|
-
# raise immediately
|
108
|
-
raise Puppet::ParseError.new(formatter.format(errors[0]))
|
109
|
-
end
|
110
|
-
emitted = 0
|
111
|
-
errors.each do |e|
|
112
|
-
Puppet.err(formatter.format(e))
|
113
|
-
emitted += 1
|
114
|
-
break if emitted >= max_errors
|
115
|
-
end
|
116
|
-
warnings_message = warnings.size > 0 ? ", and #{warnings.size} warnings" : ""
|
117
|
-
giving_up_message = "Found #{errors.size} errors#{warnings_message}. Giving up"
|
118
|
-
exception = Puppet::ParseError.new(giving_up_message)
|
119
|
-
exception.file = errors[0].file
|
120
|
-
raise exception
|
121
|
-
end
|
84
|
+
Puppet::Pops::IssueReporter.assert_and_report(validation_result,
|
85
|
+
:emit_warnings => true)
|
122
86
|
parse_result
|
123
87
|
end
|
124
88
|
|
@@ -168,31 +132,7 @@ class Puppet::Pops::Parser::EvaluatingParser
|
|
168
132
|
escaped << '"'
|
169
133
|
end
|
170
134
|
|
171
|
-
|
172
|
-
# will eventually have this behavior instead of using transformation to Puppet 3.x AST
|
173
|
-
class Transitional < Puppet::Pops::Parser::EvaluatingParser
|
174
|
-
|
175
|
-
def evaluator
|
176
|
-
@@evaluator ||= Puppet::Pops::Evaluator::EvaluatorImpl.new()
|
177
|
-
@@evaluator
|
178
|
-
end
|
179
|
-
|
180
|
-
def evaluate(scope, model)
|
181
|
-
return nil unless model
|
182
|
-
evaluator.evaluate(model, scope)
|
183
|
-
end
|
184
|
-
|
185
|
-
def validator(acceptor)
|
186
|
-
Puppet::Pops::Validation::ValidatorFactory_4_0.new().validator(acceptor)
|
187
|
-
end
|
188
|
-
|
189
|
-
# Create a closure that can be called in the given scope
|
190
|
-
def closure(model, scope)
|
191
|
-
Puppet::Pops::Evaluator::Closure.new(evaluator, model, scope)
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
class EvaluatingEppParser < Transitional
|
135
|
+
class EvaluatingEppParser < Puppet::Pops::Parser::EvaluatingParser
|
196
136
|
def initialize()
|
197
137
|
@parser = Puppet::Pops::Parser::EppParser.new()
|
198
138
|
end
|
@@ -128,6 +128,9 @@ class Puppet::Pops::Parser::Lexer2
|
|
128
128
|
"in" => [:IN, 'in', 2],
|
129
129
|
"unless" => [:UNLESS, 'unless', 6],
|
130
130
|
"function" => [:FUNCTION, 'function', 8],
|
131
|
+
"type" => [:TYPE, 'type', 4],
|
132
|
+
"attr" => [:ATTR, 'attr', 4],
|
133
|
+
"private" => [:PRIVATE, 'private', 7],
|
131
134
|
}
|
132
135
|
KEYWORDS.each {|k,v| v[1].freeze; v.freeze }
|
133
136
|
KEYWORDS.freeze
|
@@ -278,7 +281,8 @@ class Puppet::Pops::Parser::Lexer2
|
|
278
281
|
# This is the lexer's main loop
|
279
282
|
until queue.empty? && scn.eos? do
|
280
283
|
if token = queue.shift || lex_token
|
281
|
-
|
284
|
+
ctx[:after] = token[0]
|
285
|
+
yield token
|
282
286
|
end
|
283
287
|
end
|
284
288
|
|
@@ -325,7 +329,7 @@ class Puppet::Pops::Parser::Lexer2
|
|
325
329
|
emit(TOKEN_COMMA, before)
|
326
330
|
|
327
331
|
when '['
|
328
|
-
if
|
332
|
+
if (before == 0 || scn.string[before-1,1] =~ /[[:blank:]\r\n]+/)
|
329
333
|
emit(TOKEN_LISTSTART, before)
|
330
334
|
else
|
331
335
|
emit(TOKEN_LBRACK, before)
|
@@ -525,7 +529,7 @@ class Puppet::Pops::Parser::Lexer2
|
|
525
529
|
value = scn.scan(PATTERN_CLASSREF)
|
526
530
|
if value
|
527
531
|
after = scn.pos
|
528
|
-
emit_completed([:CLASSREF, value, after-before], before)
|
532
|
+
emit_completed([:CLASSREF, value.freeze, after-before], before)
|
529
533
|
else
|
530
534
|
# move to faulty position ('::<uc-letter>' was ok)
|
531
535
|
scn.pos = scn.pos + 3
|
@@ -535,7 +539,7 @@ class Puppet::Pops::Parser::Lexer2
|
|
535
539
|
# NAME or error
|
536
540
|
value = scn.scan(PATTERN_NAME)
|
537
541
|
if value
|
538
|
-
emit_completed([:NAME, value, scn.pos-before], before)
|
542
|
+
emit_completed([:NAME, value.freeze, scn.pos-before], before)
|
539
543
|
else
|
540
544
|
# move to faulty position ('::' was ok)
|
541
545
|
scn.pos = scn.pos + 2
|
@@ -548,7 +552,7 @@ class Puppet::Pops::Parser::Lexer2
|
|
548
552
|
|
549
553
|
when '$'
|
550
554
|
if value = scn.scan(PATTERN_DOLLAR_VAR)
|
551
|
-
emit_completed([:VARIABLE, value[1..-1], scn.pos - before], before)
|
555
|
+
emit_completed([:VARIABLE, value[1..-1].freeze, scn.pos - before], before)
|
552
556
|
else
|
553
557
|
# consume the $ and let higher layer complain about the error instead of getting a syntax error
|
554
558
|
emit(TOKEN_VARIABLE_EMPTY, before)
|
@@ -560,14 +564,14 @@ class Puppet::Pops::Parser::Lexer2
|
|
560
564
|
interpolate_dq
|
561
565
|
|
562
566
|
when "'"
|
563
|
-
emit_completed([:STRING, slurp_sqstring,
|
567
|
+
emit_completed([:STRING, slurp_sqstring.freeze, scn.pos - before], before)
|
564
568
|
|
565
569
|
when '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
|
566
570
|
value = scn.scan(PATTERN_NUMBER)
|
567
571
|
if value
|
568
572
|
length = scn.pos - before
|
569
573
|
assert_numeric(value, length)
|
570
|
-
emit_completed([:NUMBER, value, length], before)
|
574
|
+
emit_completed([:NUMBER, value.freeze, length], before)
|
571
575
|
else
|
572
576
|
# move to faulty position ([0-9] was ok)
|
573
577
|
scn.pos = scn.pos + 1
|
@@ -579,14 +583,14 @@ class Puppet::Pops::Parser::Lexer2
|
|
579
583
|
value = scn.scan(PATTERN_NAME)
|
580
584
|
# NAME or false start because followed by hyphen(s), underscore or word
|
581
585
|
if value && !scn.match?(/^-+\w/)
|
582
|
-
emit_completed(KEYWORDS[value] || [:NAME, value, scn.pos - before], before)
|
586
|
+
emit_completed(KEYWORDS[value] || [:NAME, value.freeze, scn.pos - before], before)
|
583
587
|
else
|
584
588
|
# Restart and check entire pattern (for ease of detecting non allowed trailing hyphen)
|
585
589
|
scn.pos = before
|
586
590
|
value = scn.scan(PATTERN_BARE_WORD)
|
587
591
|
# If the WORD continues with :: it must be a correct fully qualified name
|
588
592
|
if value && !(fully_qualified = scn.match?(/::/))
|
589
|
-
emit_completed([:WORD, value, scn.pos - before], before)
|
593
|
+
emit_completed([:WORD, value.freeze, scn.pos - before], before)
|
590
594
|
else
|
591
595
|
# move to faulty position ([a-z_] was ok)
|
592
596
|
scn.pos = scn.pos + 1
|
@@ -602,7 +606,7 @@ class Puppet::Pops::Parser::Lexer2
|
|
602
606
|
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
|
603
607
|
value = scn.scan(PATTERN_CLASSREF)
|
604
608
|
if value
|
605
|
-
emit_completed([:CLASSREF, value, scn.pos - before], before)
|
609
|
+
emit_completed([:CLASSREF, value.freeze, scn.pos - before], before)
|
606
610
|
else
|
607
611
|
# move to faulty position ([A-Z] was ok)
|
608
612
|
scn.pos = scn.pos + 1
|
@@ -99,6 +99,12 @@ module Puppet::Pops::Parser::LexerSupport
|
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
|
+
def to_s
|
103
|
+
# This format is very compact and is intended for debugging output from racc parsser in
|
104
|
+
# debug mode. If this is made more elaborate the output from a debug run becomes very hard to read.
|
105
|
+
#
|
106
|
+
"'#{self[:value]} #{@token_array[0]}'"
|
107
|
+
end
|
102
108
|
# TODO: Make this comparable for testing
|
103
109
|
# vs symbolic, vs array with symbol and non hash, array with symbol and hash)
|
104
110
|
#
|
@@ -61,7 +61,7 @@ class Puppet::Pops::Parser::Locator
|
|
61
61
|
def char_offset(byte_offset)
|
62
62
|
end
|
63
63
|
|
64
|
-
# Returns the length measured in number of characters from the given start and end reported
|
64
|
+
# Returns the length measured in number of characters from the given start and end reported offset
|
65
65
|
def char_length(offset, end_offset)
|
66
66
|
end
|
67
67
|
|
@@ -43,21 +43,15 @@ class Puppet::Pops::Parser::Parser
|
|
43
43
|
# before evaluation-time.
|
44
44
|
#
|
45
45
|
def classname(name)
|
46
|
-
[namespace, name].join(
|
46
|
+
[namespace, name].join('::').sub(/^::/, '')
|
47
47
|
end
|
48
48
|
|
49
|
-
# # Reinitializes variables (i.e. creates a new lexer instance
|
50
|
-
# #
|
51
|
-
# def clear
|
52
|
-
# initvars
|
53
|
-
# end
|
54
|
-
|
55
49
|
# Raises a Parse error.
|
56
50
|
def error(value, message, options = {})
|
57
51
|
except = Puppet::ParseError.new(message)
|
58
52
|
except.line = options[:line] || value[:line]
|
59
|
-
except.file = options[:file] || value[:file]
|
60
|
-
except.pos = options[:pos] || value[:pos]
|
53
|
+
except.file = options[:file] || value[:file]
|
54
|
+
except.pos = options[:pos] || value[:pos]
|
61
55
|
|
62
56
|
raise except
|
63
57
|
end
|
@@ -74,24 +68,12 @@ class Puppet::Pops::Parser::Parser
|
|
74
68
|
end
|
75
69
|
|
76
70
|
def initialize()
|
77
|
-
# Since the parser is not responsible for importing (removed), and does not perform linking,
|
78
|
-
# and there is no syntax that requires knowing if something referenced exists, it is safe
|
79
|
-
# to assume that no environment is needed when parsing. (All that comes later).
|
80
|
-
#
|
81
71
|
@lexer = Puppet::Pops::Parser::Lexer2.new
|
82
72
|
@namestack = []
|
83
73
|
@definitions = []
|
84
74
|
end
|
85
75
|
|
86
|
-
|
87
|
-
# # @return [void]
|
88
|
-
# #
|
89
|
-
# def initvars
|
90
|
-
# end
|
91
|
-
|
92
|
-
# This is a callback from the generated grammar (when an error occurs while parsing)
|
93
|
-
# TODO Picks up origin information from the lexer, probably needs this from the caller instead
|
94
|
-
# (for code strings, and when start line is not line 1 in a code string (or file), etc.)
|
76
|
+
# This is a callback from the generated parser (when an error occurs while parsing)
|
95
77
|
#
|
96
78
|
def on_error(token,value,stack)
|
97
79
|
if token == 0 # denotes end of file
|
@@ -99,8 +81,13 @@ class Puppet::Pops::Parser::Parser
|
|
99
81
|
else
|
100
82
|
value_at = "'#{value[:value]}'"
|
101
83
|
end
|
102
|
-
|
84
|
+
if @yydebug
|
85
|
+
error = "Syntax error at #{value_at}, token: #{token}"
|
86
|
+
else
|
87
|
+
error = "Syntax error at #{value_at}"
|
88
|
+
end
|
103
89
|
|
90
|
+
# Note, old parser had processing of "expected token here" - do not try to reinstate:
|
104
91
|
# The 'expected' is only of value at end of input, otherwise any parse error involving a
|
105
92
|
# start of a pair will be reported as expecting the close of the pair - e.g. "$x.each |$x {|", would
|
106
93
|
# report that "seeing the '{', the '}' is expected. That would be wrong.
|
@@ -111,9 +98,6 @@ class Puppet::Pops::Parser::Parser
|
|
111
98
|
# must be handled by the grammar. The lexer may have enqueued tokens far ahead - the lexer's opinion about this
|
112
99
|
# is not trustworthy.
|
113
100
|
#
|
114
|
-
# if token == 0 && brace = @lexer.expected
|
115
|
-
# error += "; expected '#{brace}'"
|
116
|
-
# end
|
117
101
|
|
118
102
|
except = Puppet::ParseError.new(error)
|
119
103
|
if token != 0
|
@@ -138,7 +122,6 @@ class Puppet::Pops::Parser::Parser
|
|
138
122
|
end
|
139
123
|
|
140
124
|
# Mark the factory wrapped model object with location information
|
141
|
-
# @todo the lexer produces :line for token, but no offset or length
|
142
125
|
# @return [Puppet::Pops::Model::Factory] the given factory
|
143
126
|
# @api private
|
144
127
|
#
|
@@ -146,15 +129,12 @@ class Puppet::Pops::Parser::Parser
|
|
146
129
|
factory.record_position(start_locateable, end_locateable)
|
147
130
|
end
|
148
131
|
|
149
|
-
|
150
|
-
factory.record_heredoc_position(start_locatable, end_locatable)
|
151
|
-
end
|
152
|
-
|
153
|
-
# Associate documentation with the factory wrapped model object.
|
132
|
+
# Mark the factory wrapped heredoc model object with location information
|
154
133
|
# @return [Puppet::Pops::Model::Factory] the given factory
|
155
134
|
# @api private
|
156
|
-
|
157
|
-
|
135
|
+
#
|
136
|
+
def heredoc_loc(factory, start_locateabke, end_locateable = nil)
|
137
|
+
factory.record_heredoc_position(start_locatable, end_locatable)
|
158
138
|
end
|
159
139
|
|
160
140
|
def aryfy(o)
|
@@ -191,35 +171,37 @@ class Puppet::Pops::Parser::Parser
|
|
191
171
|
Factory.transform_resource_wo_title(left, resource)
|
192
172
|
end
|
193
173
|
|
194
|
-
#
|
174
|
+
# Creates a program with the given body.
|
175
|
+
#
|
195
176
|
def create_program(body)
|
196
177
|
locator = @lexer.locator
|
197
178
|
Factory.PROGRAM(body, definitions, locator)
|
198
179
|
end
|
199
180
|
|
181
|
+
# Creates an empty program with a single No-op at the input's EOF offset with 0 length.
|
182
|
+
#
|
183
|
+
def create_empty_program()
|
184
|
+
locator = @lexer.locator
|
185
|
+
no_op = Factory.literal(nil)
|
186
|
+
# Create a synthetic NOOP token at EOF offset with 0 size. The lexer does not produce an EOF token that is
|
187
|
+
# visible to the grammar rules. Creating this token is mainly to reuse the positioning logic as it
|
188
|
+
# expects a token decorated with location information.
|
189
|
+
token_sym, token = @lexer.emit_completed([:NOOP,'',0], locator.string.bytesize)
|
190
|
+
loc(no_op, token)
|
191
|
+
# Program with a Noop
|
192
|
+
program = Factory.PROGRAM(no_op, [], locator)
|
193
|
+
program
|
194
|
+
end
|
195
|
+
|
200
196
|
# Performs the parsing and returns the resulting model.
|
201
197
|
# The lexer holds state, and this is setup with {#parse_string}, or {#parse_file}.
|
202
198
|
#
|
203
|
-
# TODO: Drop support for parsing a ruby file this way (should be done where it is decided
|
204
|
-
# which file to load/run (i.e. loaders), and initial file to run
|
205
|
-
# TODO: deal with options containing origin (i.e. parsing a string from externally known location).
|
206
|
-
# TODO: should return the model, not a Hostclass
|
207
|
-
#
|
208
199
|
# @api private
|
209
200
|
#
|
210
201
|
def _parse()
|
211
202
|
begin
|
212
203
|
@yydebug = false
|
213
204
|
main = yyparse(@lexer,:scan)
|
214
|
-
# #Commented out now because this hides problems in the racc grammar while developing
|
215
|
-
# # TODO include this when test coverage is good enough.
|
216
|
-
# rescue Puppet::ParseError => except
|
217
|
-
# except.line ||= @lexer.line
|
218
|
-
# except.file ||= @lexer.file
|
219
|
-
# except.pos ||= @lexer.pos
|
220
|
-
# raise except
|
221
|
-
# rescue => except
|
222
|
-
# raise Puppet::ParseError.new(except.message, @lexer.file, @lexer.line, @lexer.pos, except)
|
223
205
|
end
|
224
206
|
return main
|
225
207
|
ensure
|
data/lib/puppet/pops/patterns.rb
CHANGED
@@ -1,16 +1,18 @@
|
|
1
1
|
# The Patterns module contains common regular expression patters for the Puppet DSL language
|
2
2
|
module Puppet::Pops::Patterns
|
3
3
|
|
4
|
-
# NUMERIC matches hex, octal, decimal, and floating point and captures
|
5
|
-
# 0 = entire matched number, leading and trailing whitespace included
|
6
|
-
# 1 =
|
7
|
-
# 2 =
|
8
|
-
# 3 =
|
4
|
+
# NUMERIC matches hex, octal, decimal, and floating point and captures several parts
|
5
|
+
# 0 = entire matched number, leading and trailing whitespace and sign included
|
6
|
+
# 1 = sign, +, - or nothing
|
7
|
+
# 2 = entire numeric part
|
8
|
+
# 3 = hexadecimal number
|
9
|
+
# 4 = non hex integer portion, possibly with leading 0 (octal)
|
10
|
+
# 5 = floating point part, starts with ".", decimals and optional exponent
|
9
11
|
#
|
10
|
-
# Thus, a hex number has group
|
11
|
-
# and a floating point value has group
|
12
|
+
# Thus, a hex number has group 3 value, an octal value has group 4 (if it starts with 0), and no group 3
|
13
|
+
# and a floating point value has group 4 and group 5.
|
12
14
|
#
|
13
|
-
NUMERIC = %r{
|
15
|
+
NUMERIC = %r{\A[[:blank:]]*([-+]?)[[:blank:]]*((0[xX][0-9A-Fa-f]+)|(0?\d+)((?:\.\d+)?(?:[eE]-?\d+)?))[[:blank:]]*\z}
|
14
16
|
|
15
17
|
# ILLEGAL_P3_1_HOSTNAME matches if a hostname contains illegal characters.
|
16
18
|
# This check does not prevent pathological names like 'a....b', '.....', "---". etc.
|
@@ -21,13 +23,11 @@ module Puppet::Pops::Patterns
|
|
21
23
|
|
22
24
|
# CLASSREF_EXT matches a class reference the same way as the lexer - i.e. the external source form
|
23
25
|
# where each part must start with a capital letter A-Z.
|
24
|
-
# This name includes hyphen, which may be illegal in some cases.
|
25
26
|
#
|
26
27
|
CLASSREF_EXT = %r{\A((::){0,1}[A-Z][\w]*)+\z}
|
27
28
|
|
28
29
|
# CLASSREF matches a class reference the way it is represented internally in the
|
29
30
|
# model (i.e. in lower case).
|
30
|
-
# This name includes hyphen, which may be illegal in some cases.
|
31
31
|
#
|
32
32
|
CLASSREF = %r{\A((::){0,1}[a-z][\w]*)+\z}
|
33
33
|
|
@@ -7,7 +7,7 @@ class Puppet::Pops::SemanticError < RuntimeError
|
|
7
7
|
|
8
8
|
# @param issue [Puppet::Pops::Issues::Issue] the issue describing the severity and message
|
9
9
|
# @param semantic [Puppet::Pops::Model::Locatable, nil] the expression causing the failure, or nil if unknown
|
10
|
-
# @param options [Hash] an options hash with Symbol to
|
10
|
+
# @param options [Hash] an options hash with Symbol to value mapping - these are the arguments to the issue
|
11
11
|
#
|
12
12
|
def initialize(issue, semantic=nil, options = {})
|
13
13
|
@issue = issue
|
@@ -9,8 +9,8 @@ class Puppet::Pops::Types::ClassLoader
|
|
9
9
|
|
10
10
|
# Returns a Class given a fully qualified class name.
|
11
11
|
# Lookup of class is never relative to the calling namespace.
|
12
|
-
# @param name [String, Array<String>, Array<Symbol>, Puppet::Pops::Types::
|
13
|
-
# class name String (e.g. '::Foo::Bar', 'Foo::Bar'), a
|
12
|
+
# @param name [String, Array<String>, Array<Symbol>, Puppet::Pops::Types::PAnyType] A fully qualified
|
13
|
+
# class name String (e.g. '::Foo::Bar', 'Foo::Bar'), a PAnyType, or a fully qualified name in Array form where each part
|
14
14
|
# is either a String or a Symbol, e.g. `%w{Puppetx Puppetlabs SomeExtension}`.
|
15
15
|
# @return [Class, nil] the looked up class or nil if no such class is loaded
|
16
16
|
# @raise ArgumentError If the given argument has the wrong type
|
@@ -24,7 +24,7 @@ class Puppet::Pops::Types::ClassLoader
|
|
24
24
|
when Array
|
25
25
|
provide_from_name_path(name.join('::'), name)
|
26
26
|
|
27
|
-
when Puppet::Pops::Types::
|
27
|
+
when Puppet::Pops::Types::PAnyType, Puppet::Pops::Types::PType
|
28
28
|
provide_from_type(name)
|
29
29
|
|
30
30
|
else
|
@@ -36,27 +36,38 @@ class Puppet::Pops::Types::ClassLoader
|
|
36
36
|
|
37
37
|
def self.provide_from_type(type)
|
38
38
|
case type
|
39
|
-
when Puppet::Pops::Types::
|
40
|
-
|
39
|
+
when Puppet::Pops::Types::PRuntimeType
|
40
|
+
raise ArgumentError.new("Only Runtime type 'ruby' is supported, got #{type.runtime}") unless type.runtime == :ruby
|
41
|
+
provide_from_string(type.runtime_type_name)
|
41
42
|
|
42
43
|
when Puppet::Pops::Types::PBooleanType
|
43
44
|
# There is no other thing to load except this Enum meta type
|
44
45
|
RGen::MetamodelBuilder::MMBase::Boolean
|
45
46
|
|
46
47
|
when Puppet::Pops::Types::PType
|
47
|
-
# TODO: PType should
|
48
|
+
# TODO: PType should has a type argument (a PAnyType) so the Class' class could be returned
|
49
|
+
# (but this only matters in special circumstances when meta programming has been used).
|
48
50
|
Class
|
49
51
|
|
52
|
+
when Puppet::Pops::Type::POptionalType
|
53
|
+
# cannot make a distinction between optional and its type
|
54
|
+
provide_from_type(type.optional_type)
|
55
|
+
|
50
56
|
# Although not expected to be the first choice for getting a concrete class for these
|
51
57
|
# types, these are of value if the calling logic just has a reference to type.
|
52
58
|
#
|
53
|
-
when Puppet::Pops::Types::PArrayType
|
54
|
-
when Puppet::Pops::Types::
|
55
|
-
when Puppet::Pops::Types::
|
56
|
-
when Puppet::Pops::Types::
|
57
|
-
when Puppet::Pops::Types::
|
58
|
-
when Puppet::Pops::Types::
|
59
|
-
when Puppet::Pops::Types::
|
59
|
+
when Puppet::Pops::Types::PArrayType ; Array
|
60
|
+
when Puppet::Pops::Types::PTupleType ; Array
|
61
|
+
when Puppet::Pops::Types::PHashType ; Hash
|
62
|
+
when Puppet::Pops::Types::PStructType ; Hash
|
63
|
+
when Puppet::Pops::Types::PRegexpType ; Regexp
|
64
|
+
when Puppet::Pops::Types::PIntegerType ; Integer
|
65
|
+
when Puppet::Pops::Types::PStringType ; String
|
66
|
+
when Puppet::Pops::Types::PPatternType ; String
|
67
|
+
when Puppet::Pops::Types::PEnumType ; String
|
68
|
+
when Puppet::Pops::Types::PFloatType ; Float
|
69
|
+
when Puppet::Pops::Types::PNilType ; NilClass
|
70
|
+
when Puppet::Pops::Types::PCallableType ; Proc
|
60
71
|
else
|
61
72
|
nil
|
62
73
|
end
|