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
@@ -14,4 +14,20 @@ describe Puppet::Pops::Parser::Parser do
|
|
14
14
|
model.body.class.should == Puppet::Pops::Model::AssignmentExpression
|
15
15
|
end
|
16
16
|
|
17
|
+
it "should accept empty input and return a model" do
|
18
|
+
parser = Puppet::Pops::Parser::Parser.new()
|
19
|
+
model = parser.parse_string("").current
|
20
|
+
model.class.should == Puppet::Pops::Model::Program
|
21
|
+
model.body.class.should == Puppet::Pops::Model::Nop
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should accept empty input containing only comments and report location at end of input" do
|
25
|
+
parser = Puppet::Pops::Parser::Parser.new()
|
26
|
+
model = parser.parse_string("# comment\n").current
|
27
|
+
model.class.should == Puppet::Pops::Model::Program
|
28
|
+
model.body.class.should == Puppet::Pops::Model::Nop
|
29
|
+
adapter = Puppet::Pops::Adapters::SourcePosAdapter.adapt(model.body)
|
30
|
+
expect(adapter.offset).to eq(10)
|
31
|
+
expect(adapter.length).to eq(0)
|
32
|
+
end
|
17
33
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'puppet/pops'
|
4
|
+
require 'puppet/pops/evaluator/evaluator_impl'
|
5
|
+
require 'puppet_spec/pops'
|
6
|
+
require 'puppet_spec/scope'
|
7
|
+
require 'puppet/parser/e4_parser_adapter'
|
8
|
+
|
9
|
+
|
10
|
+
# relative to this spec file (./) does not work as this file is loaded by rspec
|
11
|
+
#require File.join(File.dirname(__FILE__), '/evaluator_rspec_helper')
|
12
|
+
|
13
|
+
describe 'Puppet::Pops::Evaluator::EvaluatorImpl' do
|
14
|
+
include PuppetSpec::Pops
|
15
|
+
include PuppetSpec::Scope
|
16
|
+
before(:each) do
|
17
|
+
|
18
|
+
# These must be set since the is 3x logic that triggers on these even if the tests are explicit
|
19
|
+
# about selection of parser and evaluator
|
20
|
+
#
|
21
|
+
Puppet[:parser] = 'future'
|
22
|
+
end
|
23
|
+
|
24
|
+
let(:parser) { Puppet::Pops::Parser::EvaluatingParser.new }
|
25
|
+
|
26
|
+
context "captures-rest parameter" do
|
27
|
+
it 'is allowed in lambda when placed last' do
|
28
|
+
source = <<-CODE
|
29
|
+
foo() |$a, *$b| { $a + $b[0] }
|
30
|
+
CODE
|
31
|
+
expect do
|
32
|
+
parser.parse_string(source, __FILE__)
|
33
|
+
end.to_not raise_error()
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'allows a type annotation' do
|
37
|
+
source = <<-CODE
|
38
|
+
foo() |$a, Integer *$b| { $a + $b[0] }
|
39
|
+
CODE
|
40
|
+
expect do
|
41
|
+
parser.parse_string(source, __FILE__)
|
42
|
+
end.to_not raise_error()
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'is not allowed in lambda except last' do
|
46
|
+
source = <<-CODE
|
47
|
+
foo() |*$a, $b| { $a + $b[0] }
|
48
|
+
CODE
|
49
|
+
expect do
|
50
|
+
parser.parse_string(source, __FILE__)
|
51
|
+
end.to raise_error(Puppet::ParseError, /Parameter \$a is not last, and has 'captures rest'/)
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'is not allowed in define' do
|
55
|
+
source = <<-CODE
|
56
|
+
define foo(*$a) { }
|
57
|
+
CODE
|
58
|
+
expect do
|
59
|
+
parser.parse_string(source, __FILE__)
|
60
|
+
end.to raise_error(Puppet::ParseError, /Parameter \$a has 'captures rest' - not supported in a 'define'/)
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'is not allowed in class' do
|
64
|
+
source = <<-CODE
|
65
|
+
class foo(*$a) { }
|
66
|
+
CODE
|
67
|
+
expect do
|
68
|
+
parser.parse_string(source, __FILE__)
|
69
|
+
end.to raise_error(Puppet::ParseError, /Parameter \$a has 'captures rest' - not supported in a Host Class Definition/)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -34,6 +34,7 @@ describe "transformation to Puppet AST for function calls" do
|
|
34
34
|
"realize bar" => '(invoke realize bar)',
|
35
35
|
"contain bar" => '(invoke contain bar)',
|
36
36
|
"include bar" => '(invoke include bar)',
|
37
|
+
"tag bar" => '(invoke tag bar)',
|
37
38
|
|
38
39
|
"info bar" => '(invoke info bar)',
|
39
40
|
"notice bar" => '(invoke notice bar)',
|
@@ -54,7 +55,6 @@ describe "transformation to Puppet AST for function calls" do
|
|
54
55
|
|
55
56
|
{
|
56
57
|
"foo bar" => '(block foo bar)',
|
57
|
-
"tag bar" => '(block tag bar)',
|
58
58
|
"tag" => 'tag',
|
59
59
|
}.each do |source, result|
|
60
60
|
it "should not transform #{source}, and instead produce #{result}" do
|
@@ -78,8 +78,13 @@ describe 'The type calculator' do
|
|
78
78
|
Puppet::Pops::Types::TypeFactory.struct(type_hash)
|
79
79
|
end
|
80
80
|
|
81
|
-
def
|
82
|
-
Puppet::Pops::Types::TypeFactory.
|
81
|
+
def object_t
|
82
|
+
Puppet::Pops::Types::TypeFactory.any()
|
83
|
+
end
|
84
|
+
|
85
|
+
def unit_t
|
86
|
+
# Cannot be created via factory, the type is private to the type system
|
87
|
+
Puppet::Pops::Types::PUnitType.new
|
83
88
|
end
|
84
89
|
|
85
90
|
def types
|
@@ -88,8 +93,9 @@ describe 'The type calculator' do
|
|
88
93
|
|
89
94
|
shared_context "types_setup" do
|
90
95
|
|
96
|
+
# Do not include the special type Unit in this list
|
91
97
|
def all_types
|
92
|
-
[ Puppet::Pops::Types::
|
98
|
+
[ Puppet::Pops::Types::PAnyType,
|
93
99
|
Puppet::Pops::Types::PNilType,
|
94
100
|
Puppet::Pops::Types::PDataType,
|
95
101
|
Puppet::Pops::Types::PScalarType,
|
@@ -102,7 +108,7 @@ describe 'The type calculator' do
|
|
102
108
|
Puppet::Pops::Types::PCollectionType,
|
103
109
|
Puppet::Pops::Types::PArrayType,
|
104
110
|
Puppet::Pops::Types::PHashType,
|
105
|
-
Puppet::Pops::Types::
|
111
|
+
Puppet::Pops::Types::PRuntimeType,
|
106
112
|
Puppet::Pops::Types::PHostClassType,
|
107
113
|
Puppet::Pops::Types::PResourceType,
|
108
114
|
Puppet::Pops::Types::PPatternType,
|
@@ -111,6 +117,9 @@ describe 'The type calculator' do
|
|
111
117
|
Puppet::Pops::Types::PStructType,
|
112
118
|
Puppet::Pops::Types::PTupleType,
|
113
119
|
Puppet::Pops::Types::PCallableType,
|
120
|
+
Puppet::Pops::Types::PType,
|
121
|
+
Puppet::Pops::Types::POptionalType,
|
122
|
+
Puppet::Pops::Types::PDefaultType,
|
114
123
|
]
|
115
124
|
end
|
116
125
|
|
@@ -215,17 +224,18 @@ describe 'The type calculator' do
|
|
215
224
|
calculator.infer(nil).class.should == Puppet::Pops::Types::PNilType
|
216
225
|
end
|
217
226
|
|
218
|
-
it ':undef translates to
|
219
|
-
calculator.infer(:undef).class.should == Puppet::Pops::Types::
|
227
|
+
it ':undef translates to PRuntimeType' do
|
228
|
+
calculator.infer(:undef).class.should == Puppet::Pops::Types::PRuntimeType
|
220
229
|
end
|
221
230
|
|
222
|
-
it 'an instance of class Foo translates to
|
231
|
+
it 'an instance of class Foo translates to PRuntimeType[ruby, Foo]' do
|
223
232
|
class Foo
|
224
233
|
end
|
225
234
|
|
226
235
|
t = calculator.infer(Foo.new)
|
227
|
-
t.class.should == Puppet::Pops::Types::
|
228
|
-
t.
|
236
|
+
t.class.should == Puppet::Pops::Types::PRuntimeType
|
237
|
+
t.runtime.should == :ruby
|
238
|
+
t.runtime_type_name.should == 'Foo'
|
229
239
|
end
|
230
240
|
|
231
241
|
context 'array' do
|
@@ -278,8 +288,8 @@ describe 'The type calculator' do
|
|
278
288
|
calculator.infer(['one', /two/]).element_type.class.should == Puppet::Pops::Types::PScalarType
|
279
289
|
end
|
280
290
|
|
281
|
-
it 'with string and symbol values translates to PArrayType[
|
282
|
-
calculator.infer(['one', :two]).element_type.class.should == Puppet::Pops::Types::
|
291
|
+
it 'with string and symbol values translates to PArrayType[PAnyType]' do
|
292
|
+
calculator.infer(['one', :two]).element_type.class.should == Puppet::Pops::Types::PAnyType
|
283
293
|
end
|
284
294
|
|
285
295
|
it 'with fixnum and nil values translates to PArrayType[PIntegerType]' do
|
@@ -328,17 +338,18 @@ describe 'The type calculator' do
|
|
328
338
|
calculator.infer({:first => 1, :second => 2}).class.should == Puppet::Pops::Types::PHashType
|
329
339
|
end
|
330
340
|
|
331
|
-
it 'with symbolic keys translates to PHashType[
|
341
|
+
it 'with symbolic keys translates to PHashType[PRuntimeType[ruby, Symbol], value]' do
|
332
342
|
k = calculator.infer({:first => 1, :second => 2}).key_type
|
333
|
-
k.class.should == Puppet::Pops::Types::
|
334
|
-
k.
|
343
|
+
k.class.should == Puppet::Pops::Types::PRuntimeType
|
344
|
+
k.runtime.should == :ruby
|
345
|
+
k.runtime_type_name.should == 'Symbol'
|
335
346
|
end
|
336
347
|
|
337
|
-
it 'with string keys translates to PHashType[PStringType,value]' do
|
348
|
+
it 'with string keys translates to PHashType[PStringType, value]' do
|
338
349
|
calculator.infer({'first' => 1, 'second' => 2}).key_type.class.should == Puppet::Pops::Types::PStringType
|
339
350
|
end
|
340
351
|
|
341
|
-
it 'with fixnum values translates to PHashType[key,PIntegerType]' do
|
352
|
+
it 'with fixnum values translates to PHashType[key, PIntegerType]' do
|
342
353
|
calculator.infer({:first => 1, :second => 2}).element_type.class.should == Puppet::Pops::Types::PIntegerType
|
343
354
|
end
|
344
355
|
end
|
@@ -457,14 +468,14 @@ describe 'The type calculator' do
|
|
457
468
|
expect(common_t.block_type).to be_nil
|
458
469
|
end
|
459
470
|
|
460
|
-
it 'compatible instances => the
|
471
|
+
it 'compatible instances => the most specific' do
|
461
472
|
t1 = callable_t(String)
|
462
473
|
scalar_t = Puppet::Pops::Types::PScalarType.new
|
463
474
|
t2 = callable_t(scalar_t)
|
464
475
|
common_t = calculator.common_type(t1, t2)
|
465
476
|
expect(common_t.class).to be(Puppet::Pops::Types::PCallableType)
|
466
477
|
expect(common_t.param_types.class).to be(Puppet::Pops::Types::PTupleType)
|
467
|
-
expect(common_t.param_types.types).to eql([
|
478
|
+
expect(common_t.param_types.types).to eql([string_t])
|
468
479
|
expect(common_t.block_type).to be_nil
|
469
480
|
end
|
470
481
|
|
@@ -491,15 +502,33 @@ describe 'The type calculator' do
|
|
491
502
|
context 'computes assignability' do
|
492
503
|
include_context "types_setup"
|
493
504
|
|
494
|
-
context
|
495
|
-
it 'all types are assignable to
|
496
|
-
t = Puppet::Pops::Types::
|
505
|
+
context 'for Unit, such that' do
|
506
|
+
it 'all types are assignable to Unit' do
|
507
|
+
t = Puppet::Pops::Types::PUnitType.new()
|
508
|
+
all_types.each { |t2| t2.new.should be_assignable_to(t) }
|
509
|
+
end
|
510
|
+
|
511
|
+
it 'Unit is assignable to all other types' do
|
512
|
+
t = Puppet::Pops::Types::PUnitType.new()
|
513
|
+
all_types.each { |t2| t.should be_assignable_to(t2.new) }
|
514
|
+
end
|
515
|
+
|
516
|
+
it 'Unit is assignable to Unit' do
|
517
|
+
t = Puppet::Pops::Types::PUnitType.new()
|
518
|
+
t2 = Puppet::Pops::Types::PUnitType.new()
|
519
|
+
t.should be_assignable_to(t2)
|
520
|
+
end
|
521
|
+
end
|
522
|
+
|
523
|
+
context "for Any, such that" do
|
524
|
+
it 'all types are assignable to Any' do
|
525
|
+
t = Puppet::Pops::Types::PAnyType.new()
|
497
526
|
all_types.each { |t2| t2.new.should be_assignable_to(t) }
|
498
527
|
end
|
499
528
|
|
500
|
-
it '
|
501
|
-
tested_types = all_types() - [Puppet::Pops::Types::
|
502
|
-
t = Puppet::Pops::Types::
|
529
|
+
it 'Any is not assignable to anything but Any' do
|
530
|
+
tested_types = all_types() - [Puppet::Pops::Types::PAnyType]
|
531
|
+
t = Puppet::Pops::Types::PAnyType.new()
|
503
532
|
tested_types.each { |t2| t.should_not be_assignable_to(t2.new) }
|
504
533
|
end
|
505
534
|
end
|
@@ -530,7 +559,7 @@ describe 'The type calculator' do
|
|
530
559
|
end
|
531
560
|
|
532
561
|
it 'Data is not assignable to any disjunct type' do
|
533
|
-
tested_types = all_types - [Puppet::Pops::Types::
|
562
|
+
tested_types = all_types - [Puppet::Pops::Types::PAnyType, Puppet::Pops::Types::PDataType] - scalar_types
|
534
563
|
t = Puppet::Pops::Types::PDataType.new()
|
535
564
|
tested_types.each {|t2| t.should_not be_assignable_to(t2.new) }
|
536
565
|
end
|
@@ -549,7 +578,7 @@ describe 'The type calculator' do
|
|
549
578
|
end
|
550
579
|
|
551
580
|
it 'Scalar is not assignable to any disjunct type' do
|
552
|
-
tested_types = all_types - [Puppet::Pops::Types::
|
581
|
+
tested_types = all_types - [Puppet::Pops::Types::PAnyType, Puppet::Pops::Types::PDataType] - scalar_types
|
553
582
|
t = Puppet::Pops::Types::PScalarType.new()
|
554
583
|
tested_types.each {|t2| t.should_not be_assignable_to(t2.new) }
|
555
584
|
end
|
@@ -569,7 +598,7 @@ describe 'The type calculator' do
|
|
569
598
|
|
570
599
|
it 'Numeric is not assignable to any disjunct type' do
|
571
600
|
tested_types = all_types - [
|
572
|
-
Puppet::Pops::Types::
|
601
|
+
Puppet::Pops::Types::PAnyType,
|
573
602
|
Puppet::Pops::Types::PDataType,
|
574
603
|
Puppet::Pops::Types::PScalarType,
|
575
604
|
] - numeric_types
|
@@ -591,7 +620,7 @@ describe 'The type calculator' do
|
|
591
620
|
end
|
592
621
|
|
593
622
|
it 'Collection is not assignable to any disjunct type' do
|
594
|
-
tested_types = all_types - [Puppet::Pops::Types::
|
623
|
+
tested_types = all_types - [Puppet::Pops::Types::PAnyType] - collection_types
|
595
624
|
t = Puppet::Pops::Types::PCollectionType.new()
|
596
625
|
tested_types.each {|t2| t.should_not be_assignable_to(t2.new) }
|
597
626
|
end
|
@@ -609,7 +638,7 @@ describe 'The type calculator' do
|
|
609
638
|
|
610
639
|
it 'Array is not assignable to any disjunct type' do
|
611
640
|
tested_types = all_types - [
|
612
|
-
Puppet::Pops::Types::
|
641
|
+
Puppet::Pops::Types::PAnyType,
|
613
642
|
Puppet::Pops::Types::PDataType] - collection_types
|
614
643
|
t = Puppet::Pops::Types::PArrayType.new()
|
615
644
|
tested_types.each {|t2| t.should_not be_assignable_to(t2.new) }
|
@@ -628,7 +657,7 @@ describe 'The type calculator' do
|
|
628
657
|
|
629
658
|
it 'Hash is not assignable to any disjunct type' do
|
630
659
|
tested_types = all_types - [
|
631
|
-
Puppet::Pops::Types::
|
660
|
+
Puppet::Pops::Types::PAnyType,
|
632
661
|
Puppet::Pops::Types::PDataType] - collection_types
|
633
662
|
t = Puppet::Pops::Types::PHashType.new()
|
634
663
|
tested_types.each {|t2| t.should_not be_assignable_to(t2.new) }
|
@@ -647,7 +676,7 @@ describe 'The type calculator' do
|
|
647
676
|
|
648
677
|
it 'Tuple is not assignable to any disjunct type' do
|
649
678
|
tested_types = all_types - [
|
650
|
-
Puppet::Pops::Types::
|
679
|
+
Puppet::Pops::Types::PAnyType,
|
651
680
|
Puppet::Pops::Types::PDataType] - collection_types
|
652
681
|
t = Puppet::Pops::Types::PTupleType.new()
|
653
682
|
tested_types.each {|t2| t.should_not be_assignable_to(t2.new) }
|
@@ -666,7 +695,7 @@ describe 'The type calculator' do
|
|
666
695
|
|
667
696
|
it 'Struct is not assignable to any disjunct type' do
|
668
697
|
tested_types = all_types - [
|
669
|
-
Puppet::Pops::Types::
|
698
|
+
Puppet::Pops::Types::PAnyType,
|
670
699
|
Puppet::Pops::Types::PDataType] - collection_types
|
671
700
|
t = Puppet::Pops::Types::PStructType.new()
|
672
701
|
tested_types.each {|t2| t.should_not be_assignable_to(t2.new) }
|
@@ -678,7 +707,7 @@ describe 'The type calculator' do
|
|
678
707
|
t = Puppet::Pops::Types::PCallableType.new()
|
679
708
|
tested_types = all_types - [
|
680
709
|
Puppet::Pops::Types::PCallableType,
|
681
|
-
Puppet::Pops::Types::
|
710
|
+
Puppet::Pops::Types::PAnyType]
|
682
711
|
tested_types.each {|t2| t.should_not be_assignable_to(t2.new) }
|
683
712
|
end
|
684
713
|
end
|
@@ -793,9 +822,50 @@ describe 'The type calculator' do
|
|
793
822
|
calculator.assignable?(pattern, enum).should == true
|
794
823
|
end
|
795
824
|
|
825
|
+
it 'pattern should accept a variant where all variants are acceptable' do
|
826
|
+
pattern = pattern_t(/^\w+$/)
|
827
|
+
calculator.assignable?(pattern, variant_t(string_t('a'), string_t('b'))).should == true
|
828
|
+
end
|
829
|
+
|
830
|
+
end
|
831
|
+
|
832
|
+
context 'when dealing with enums' do
|
833
|
+
it 'should accept a string with matching content' do
|
834
|
+
calculator.assignable?(enum_t('a', 'b'), string_t('a')).should == true
|
835
|
+
calculator.assignable?(enum_t('a', 'b'), string_t('b')).should == true
|
836
|
+
calculator.assignable?(enum_t('a', 'b'), string_t('c')).should == false
|
837
|
+
end
|
838
|
+
|
839
|
+
it 'should accept an enum with matching enum' do
|
840
|
+
calculator.assignable?(enum_t('a', 'b'), enum_t('a', 'b')).should == true
|
841
|
+
calculator.assignable?(enum_t('a', 'b'), enum_t('a')).should == true
|
842
|
+
calculator.assignable?(enum_t('a', 'b'), enum_t('c')).should == false
|
843
|
+
end
|
844
|
+
|
845
|
+
it 'enum should accept a variant where all variants are acceptable' do
|
846
|
+
enum = enum_t('a', 'b')
|
847
|
+
calculator.assignable?(enum, variant_t(string_t('a'), string_t('b'))).should == true
|
848
|
+
end
|
796
849
|
end
|
797
850
|
|
798
851
|
context 'when dealing with tuples' do
|
852
|
+
it 'matches empty tuples' do
|
853
|
+
tuple1 = tuple_t()
|
854
|
+
tuple2 = tuple_t()
|
855
|
+
|
856
|
+
calculator.assignable?(tuple1, tuple2).should == true
|
857
|
+
calculator.assignable?(tuple2, tuple1).should == true
|
858
|
+
end
|
859
|
+
|
860
|
+
it 'accepts an empty tuple as assignable to a tuple with a min size of 0' do
|
861
|
+
tuple1 = tuple_t(Object)
|
862
|
+
factory.constrain_size(tuple1, 0, :default)
|
863
|
+
tuple2 = tuple_t()
|
864
|
+
|
865
|
+
calculator.assignable?(tuple1, tuple2).should == true
|
866
|
+
calculator.assignable?(tuple2, tuple1).should == false
|
867
|
+
end
|
868
|
+
|
799
869
|
it 'should accept matching tuples' do
|
800
870
|
tuple1 = tuple_t(1,2)
|
801
871
|
tuple2 = tuple_t(Integer,Integer)
|
@@ -859,6 +929,17 @@ describe 'The type calculator' do
|
|
859
929
|
calculator.assignable?(tuple1, array).should == true
|
860
930
|
calculator.assignable?(array, tuple1).should == true
|
861
931
|
end
|
932
|
+
|
933
|
+
it 'should accept empty array when tuple allows min of 0' do
|
934
|
+
tuple1 = tuple_t(Integer)
|
935
|
+
factory.constrain_size(tuple1, 0, 1)
|
936
|
+
|
937
|
+
array = array_t(Integer)
|
938
|
+
factory.constrain_size(array, 0, 0)
|
939
|
+
|
940
|
+
calculator.assignable?(tuple1, array).should == true
|
941
|
+
calculator.assignable?(array, tuple1).should == false
|
942
|
+
end
|
862
943
|
end
|
863
944
|
|
864
945
|
context 'when dealing with structs' do
|
@@ -960,21 +1041,48 @@ describe 'The type calculator' do
|
|
960
1041
|
context 'when testing if x is instance of type t' do
|
961
1042
|
include_context "types_setup"
|
962
1043
|
|
963
|
-
it 'should consider undef to be instance of
|
1044
|
+
it 'should consider undef to be instance of Any, NilType, and optional' do
|
964
1045
|
calculator.instance?(Puppet::Pops::Types::PNilType.new(), nil).should == true
|
965
|
-
calculator.instance?(Puppet::Pops::Types::
|
1046
|
+
calculator.instance?(Puppet::Pops::Types::PAnyType.new(), nil).should == true
|
1047
|
+
calculator.instance?(Puppet::Pops::Types::POptionalType.new(), nil).should == true
|
966
1048
|
end
|
967
1049
|
|
968
|
-
it '
|
969
|
-
|
970
|
-
Puppet::Pops::Types::
|
1050
|
+
it 'all types should be (ruby) instance of PAnyType' do
|
1051
|
+
all_types.each do |t|
|
1052
|
+
t.new.is_a?(Puppet::Pops::Types::PAnyType).should == true
|
1053
|
+
end
|
1054
|
+
end
|
1055
|
+
|
1056
|
+
it "should consider :undef to be instance of Runtime['ruby', 'Symbol]" do
|
1057
|
+
calculator.instance?(Puppet::Pops::Types::PRuntimeType.new(:runtime => :ruby, :runtime_type_name => 'Symbol'), :undef).should == true
|
1058
|
+
end
|
1059
|
+
|
1060
|
+
it 'should not consider undef to be an instance of any other type than Any, NilType and Data' do
|
1061
|
+
types_to_test = all_types - [
|
1062
|
+
Puppet::Pops::Types::PAnyType,
|
971
1063
|
Puppet::Pops::Types::PNilType,
|
972
|
-
Puppet::Pops::Types::PDataType
|
1064
|
+
Puppet::Pops::Types::PDataType,
|
1065
|
+
Puppet::Pops::Types::POptionalType,
|
1066
|
+
]
|
973
1067
|
|
974
1068
|
types_to_test.each {|t| calculator.instance?(t.new, nil).should == false }
|
975
1069
|
types_to_test.each {|t| calculator.instance?(t.new, :undef).should == false }
|
976
1070
|
end
|
977
1071
|
|
1072
|
+
it 'should consider default to be instance of Default and Any' do
|
1073
|
+
calculator.instance?(Puppet::Pops::Types::PDefaultType.new(), :default).should == true
|
1074
|
+
calculator.instance?(Puppet::Pops::Types::PAnyType.new(), :default).should == true
|
1075
|
+
end
|
1076
|
+
|
1077
|
+
it 'should not consider "default" to be an instance of anything but Default, and Any' do
|
1078
|
+
types_to_test = all_types - [
|
1079
|
+
Puppet::Pops::Types::PAnyType,
|
1080
|
+
Puppet::Pops::Types::PDefaultType,
|
1081
|
+
]
|
1082
|
+
|
1083
|
+
types_to_test.each {|t| calculator.instance?(t.new, :default).should == false }
|
1084
|
+
end
|
1085
|
+
|
978
1086
|
it 'should consider fixnum instanceof PIntegerType' do
|
979
1087
|
calculator.instance?(Puppet::Pops::Types::PIntegerType.new(), 1).should == true
|
980
1088
|
end
|
@@ -1075,7 +1183,7 @@ describe 'The type calculator' do
|
|
1075
1183
|
|
1076
1184
|
context 'and t is Data' do
|
1077
1185
|
it 'undef should be considered instance of Data' do
|
1078
|
-
calculator.instance?(data_t,
|
1186
|
+
calculator.instance?(data_t, nil).should == true
|
1079
1187
|
end
|
1080
1188
|
|
1081
1189
|
it 'other symbols should not be considered instance of Data' do
|
@@ -1092,21 +1200,18 @@ describe 'The type calculator' do
|
|
1092
1200
|
|
1093
1201
|
it 'a hash with nil/undef data should be considered instance of Data' do
|
1094
1202
|
calculator.instance?(data_t, {'a' => nil}).should == true
|
1095
|
-
calculator.instance?(data_t, {'a' => :undef}).should == true
|
1096
1203
|
end
|
1097
1204
|
|
1098
|
-
it 'a hash with nil/
|
1205
|
+
it 'a hash with nil/default key should not considered instance of Data' do
|
1099
1206
|
calculator.instance?(data_t, {nil => 10}).should == false
|
1100
|
-
calculator.instance?(data_t, {:
|
1207
|
+
calculator.instance?(data_t, {:default => 10}).should == false
|
1101
1208
|
end
|
1102
1209
|
|
1103
|
-
it 'an array with
|
1104
|
-
calculator.instance?(data_t, [:undef]).should == true
|
1210
|
+
it 'an array with nil entries should be considered instance of Data' do
|
1105
1211
|
calculator.instance?(data_t, [nil]).should == true
|
1106
1212
|
end
|
1107
1213
|
|
1108
|
-
it 'an array with
|
1109
|
-
calculator.instance?(data_t, [1, :undef, 'a']).should == true
|
1214
|
+
it 'an array with nil + data entries should be considered instance of Data' do
|
1110
1215
|
calculator.instance?(data_t, [1, nil, 'a']).should == true
|
1111
1216
|
end
|
1112
1217
|
end
|
@@ -1119,10 +1224,8 @@ describe 'The type calculator' do
|
|
1119
1224
|
the_block = factory.LAMBDA(params,factory.literal(42))
|
1120
1225
|
the_closure = Puppet::Pops::Evaluator::Closure.new(:fake_evaluator, the_block, :fake_scope)
|
1121
1226
|
expect(calculator.instance?(all_callables_t, the_closure)).to be_true
|
1122
|
-
|
1123
|
-
expect(calculator.instance?(callable_t(
|
1124
|
-
# Arg count is wrong
|
1125
|
-
expect(calculator.instance?(callable_t(optional_object_t, optional_object_t), the_closure)).to be_false
|
1227
|
+
expect(calculator.instance?(callable_t(object_t), the_closure)).to be_true
|
1228
|
+
expect(calculator.instance?(callable_t(object_t, object_t), the_closure)).to be_false
|
1126
1229
|
end
|
1127
1230
|
|
1128
1231
|
it 'a Function instance should be considered a Callable' do
|
@@ -1192,8 +1295,8 @@ describe 'The type calculator' do
|
|
1192
1295
|
calculator.string(Puppet::Pops::Types::PType.new()).should == 'Type'
|
1193
1296
|
end
|
1194
1297
|
|
1195
|
-
it 'should yield \'Object\' for
|
1196
|
-
calculator.string(Puppet::Pops::Types::
|
1298
|
+
it 'should yield \'Object\' for PAnyType' do
|
1299
|
+
calculator.string(Puppet::Pops::Types::PAnyType.new()).should == 'Any'
|
1197
1300
|
end
|
1198
1301
|
|
1199
1302
|
it 'should yield \'Scalar\' for PScalarType' do
|
@@ -1397,20 +1500,29 @@ describe 'The type calculator' do
|
|
1397
1500
|
expect(calculator.string(callable_t(String, Integer))).to eql("Callable[String, Integer]")
|
1398
1501
|
end
|
1399
1502
|
|
1400
|
-
it "should yield 'Callable[t,min
|
1503
|
+
it "should yield 'Callable[t,min,max]' for callable with size constraint (infinite max)" do
|
1401
1504
|
expect(calculator.string(callable_t(String, 0))).to eql("Callable[String, 0, default]")
|
1402
1505
|
end
|
1403
1506
|
|
1404
|
-
it "should yield 'Callable[t,min
|
1507
|
+
it "should yield 'Callable[t,min,max]' for callable with size constraint (capped max)" do
|
1405
1508
|
expect(calculator.string(callable_t(String, 0, 3))).to eql("Callable[String, 0, 3]")
|
1406
1509
|
end
|
1407
1510
|
|
1511
|
+
it "should yield 'Callable[min,max]' callable with size > 0" do
|
1512
|
+
expect(calculator.string(callable_t(0, 0))).to eql("Callable[0, 0]")
|
1513
|
+
expect(calculator.string(callable_t(0, 1))).to eql("Callable[0, 1]")
|
1514
|
+
expect(calculator.string(callable_t(0, :default))).to eql("Callable[0, default]")
|
1515
|
+
end
|
1516
|
+
|
1408
1517
|
it "should yield 'Callable[Callable]' for callable with block" do
|
1409
1518
|
expect(calculator.string(callable_t(all_callables_t))).to eql("Callable[0, 0, Callable]")
|
1410
1519
|
expect(calculator.string(callable_t(string_t, all_callables_t))).to eql("Callable[String, Callable]")
|
1411
1520
|
expect(calculator.string(callable_t(string_t, 1,1, all_callables_t))).to eql("Callable[String, 1, 1, Callable]")
|
1412
1521
|
end
|
1413
1522
|
|
1523
|
+
it "should yield Unit for a Unit type" do
|
1524
|
+
expect(calculator.string(unit_t)).to eql('Unit')
|
1525
|
+
end
|
1414
1526
|
end
|
1415
1527
|
|
1416
1528
|
context 'when processing meta type' do
|
@@ -1428,7 +1540,7 @@ describe 'The type calculator' do
|
|
1428
1540
|
calculator.infer(Puppet::Pops::Types::PCollectionType.new()).is_a?(ptype).should() == true
|
1429
1541
|
calculator.infer(Puppet::Pops::Types::PArrayType.new() ).is_a?(ptype).should() == true
|
1430
1542
|
calculator.infer(Puppet::Pops::Types::PHashType.new() ).is_a?(ptype).should() == true
|
1431
|
-
calculator.infer(Puppet::Pops::Types::
|
1543
|
+
calculator.infer(Puppet::Pops::Types::PRuntimeType.new() ).is_a?(ptype).should() == true
|
1432
1544
|
calculator.infer(Puppet::Pops::Types::PHostClassType.new() ).is_a?(ptype).should() == true
|
1433
1545
|
calculator.infer(Puppet::Pops::Types::PResourceType.new() ).is_a?(ptype).should() == true
|
1434
1546
|
calculator.infer(Puppet::Pops::Types::PEnumType.new() ).is_a?(ptype).should() == true
|
@@ -1453,7 +1565,7 @@ describe 'The type calculator' do
|
|
1453
1565
|
calculator.string(calculator.infer(Puppet::Pops::Types::PCollectionType.new())).should == "Type[Collection]"
|
1454
1566
|
calculator.string(calculator.infer(Puppet::Pops::Types::PArrayType.new() )).should == "Type[Array[?]]"
|
1455
1567
|
calculator.string(calculator.infer(Puppet::Pops::Types::PHashType.new() )).should == "Type[Hash[?, ?]]"
|
1456
|
-
calculator.string(calculator.infer(Puppet::Pops::Types::
|
1568
|
+
calculator.string(calculator.infer(Puppet::Pops::Types::PRuntimeType.new() )).should == "Type[Runtime[?, ?]]"
|
1457
1569
|
calculator.string(calculator.infer(Puppet::Pops::Types::PHostClassType.new() )).should == "Type[Class]"
|
1458
1570
|
calculator.string(calculator.infer(Puppet::Pops::Types::PResourceType.new() )).should == "Type[Resource]"
|
1459
1571
|
calculator.string(calculator.infer(Puppet::Pops::Types::PEnumType.new() )).should == "Type[Enum]"
|
@@ -1462,6 +1574,10 @@ describe 'The type calculator' do
|
|
1462
1574
|
calculator.string(calculator.infer(Puppet::Pops::Types::PTupleType.new() )).should == "Type[Tuple]"
|
1463
1575
|
calculator.string(calculator.infer(Puppet::Pops::Types::POptionalType.new() )).should == "Type[Optional]"
|
1464
1576
|
calculator.string(calculator.infer(Puppet::Pops::Types::PCallableType.new() )).should == "Type[Callable]"
|
1577
|
+
|
1578
|
+
calculator.infer(Puppet::Pops::Types::PResourceType.new(:type_name => 'foo::fee::fum')).to_s.should == "Type[Foo::Fee::Fum]"
|
1579
|
+
calculator.string(calculator.infer(Puppet::Pops::Types::PResourceType.new(:type_name => 'foo::fee::fum'))).should == "Type[Foo::Fee::Fum]"
|
1580
|
+
calculator.infer(Puppet::Pops::Types::PResourceType.new(:type_name => 'Foo::Fee::Fum')).to_s.should == "Type[Foo::Fee::Fum]"
|
1465
1581
|
end
|
1466
1582
|
|
1467
1583
|
it "computes the common type of PType's type parameter" do
|
@@ -1584,6 +1700,87 @@ describe 'The type calculator' do
|
|
1584
1700
|
end
|
1585
1701
|
end
|
1586
1702
|
|
1703
|
+
context 'when determening callability' do
|
1704
|
+
context 'and given is exact' do
|
1705
|
+
it 'with callable' do
|
1706
|
+
required = callable_t(string_t)
|
1707
|
+
given = callable_t(string_t)
|
1708
|
+
calculator.callable?(required, given).should == true
|
1709
|
+
end
|
1710
|
+
|
1711
|
+
it 'with args tuple' do
|
1712
|
+
required = callable_t(string_t)
|
1713
|
+
given = tuple_t(string_t)
|
1714
|
+
calculator.callable?(required, given).should == true
|
1715
|
+
end
|
1716
|
+
|
1717
|
+
it 'with args tuple having a block' do
|
1718
|
+
required = callable_t(string_t, callable_t(string_t))
|
1719
|
+
given = tuple_t(string_t, callable_t(string_t))
|
1720
|
+
calculator.callable?(required, given).should == true
|
1721
|
+
end
|
1722
|
+
|
1723
|
+
it 'with args array' do
|
1724
|
+
required = callable_t(string_t)
|
1725
|
+
given = array_t(string_t)
|
1726
|
+
factory.constrain_size(given, 1, 1)
|
1727
|
+
calculator.callable?(required, given).should == true
|
1728
|
+
end
|
1729
|
+
end
|
1730
|
+
|
1731
|
+
context 'and given is more generic' do
|
1732
|
+
it 'with callable' do
|
1733
|
+
required = callable_t(string_t)
|
1734
|
+
given = callable_t(object_t)
|
1735
|
+
calculator.callable?(required, given).should == true
|
1736
|
+
end
|
1737
|
+
|
1738
|
+
it 'with args tuple' do
|
1739
|
+
required = callable_t(string_t)
|
1740
|
+
given = tuple_t(object_t)
|
1741
|
+
calculator.callable?(required, given).should == false
|
1742
|
+
end
|
1743
|
+
|
1744
|
+
it 'with args tuple having a block' do
|
1745
|
+
required = callable_t(string_t, callable_t(string_t))
|
1746
|
+
given = tuple_t(string_t, callable_t(object_t))
|
1747
|
+
calculator.callable?(required, given).should == true
|
1748
|
+
end
|
1749
|
+
|
1750
|
+
it 'with args tuple having a block with captures rest' do
|
1751
|
+
required = callable_t(string_t, callable_t(string_t))
|
1752
|
+
given = tuple_t(string_t, callable_t(object_t, 0, :default))
|
1753
|
+
calculator.callable?(required, given).should == true
|
1754
|
+
end
|
1755
|
+
end
|
1756
|
+
|
1757
|
+
context 'and given is more specific' do
|
1758
|
+
it 'with callable' do
|
1759
|
+
required = callable_t(object_t)
|
1760
|
+
given = callable_t(string_t)
|
1761
|
+
calculator.callable?(required, given).should == false
|
1762
|
+
end
|
1763
|
+
|
1764
|
+
it 'with args tuple' do
|
1765
|
+
required = callable_t(object_t)
|
1766
|
+
given = tuple_t(string_t)
|
1767
|
+
calculator.callable?(required, given).should == true
|
1768
|
+
end
|
1769
|
+
|
1770
|
+
it 'with args tuple having a block' do
|
1771
|
+
required = callable_t(string_t, callable_t(object_t))
|
1772
|
+
given = tuple_t(string_t, callable_t(string_t))
|
1773
|
+
calculator.callable?(required, given).should == false
|
1774
|
+
end
|
1775
|
+
|
1776
|
+
it 'with args tuple having a block with captures rest' do
|
1777
|
+
required = callable_t(string_t, callable_t(object_t))
|
1778
|
+
given = tuple_t(string_t, callable_t(string_t, 0, :default))
|
1779
|
+
calculator.callable?(required, given).should == false
|
1780
|
+
end
|
1781
|
+
end
|
1782
|
+
end
|
1783
|
+
|
1587
1784
|
matcher :be_assignable_to do |type|
|
1588
1785
|
calc = Puppet::Pops::Types::TypeCalculator.new
|
1589
1786
|
|