puppet 4.3.2-x64-mingw32 → 4.4.0-x64-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/COMMITTERS.md +2 -2
- data/CONTRIBUTING.md +6 -6
- data/LICENSE +1 -1
- data/README.md +8 -9
- data/conf/auth.conf +2 -2
- data/ext/README.environment +1 -1
- data/ext/debian/README.source +1 -1
- data/ext/debian/control +1 -1
- data/ext/debian/copyright +4 -4
- data/ext/debian/puppetmaster.README.debian +11 -9
- data/ext/emacs/puppet-mode.el +1 -1
- data/ext/envpuppet +2 -2
- data/ext/ips/puppetagent.xml +1 -1
- data/ext/ips/puppetmaster.xml +1 -1
- data/ext/project_data.yaml +8 -0
- data/ext/puppet-test +3 -3
- data/ext/rack/example-passenger-vhost.conf +1 -1
- data/ext/redhat/puppet.spec.erb +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +1 -1
- data/ext/solaris/pkginfo +1 -1
- data/ext/solaris/smf/puppet.xml +1 -1
- data/ext/suse/puppet.spec +2 -2
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/puppet_interactive.bat +6 -0
- data/ext/windows/puppet_shell.bat +9 -0
- data/ext/windows/run_puppet_interactive.bat +9 -0
- data/ext/yaml_nodes.rb +1 -1
- data/install.rb +30 -20
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/agent.rb +4 -2
- data/lib/puppet/application/apply.rb +7 -4
- data/lib/puppet/application/cert.rb +1 -1
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +1 -1
- data/lib/puppet/application/lookup.rb +4 -4
- data/lib/puppet/application/master.rb +2 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/configurer.rb +100 -22
- data/lib/puppet/data_providers/hiera_config.rb +28 -3
- data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
- data/lib/puppet/data_providers/hiera_support.rb +1 -1
- data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +65 -19
- data/lib/puppet/environments.rb +3 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/epp.rb +1 -1
- data/lib/puppet/face/help/man.erb +1 -1
- data/lib/puppet/face/module/install.rb +6 -6
- data/lib/puppet/face/parser.rb +12 -9
- data/lib/puppet/face/status.rb +2 -1
- data/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/lib/puppet/feature/telnet.rb +9 -0
- data/lib/puppet/file_serving/http_metadata.rb +46 -0
- data/lib/puppet/file_serving/metadata.rb +18 -2
- data/lib/puppet/file_serving/terminus_selector.rb +2 -0
- data/lib/puppet/file_system.rb +2 -2
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/functions.rb +45 -6
- data/lib/puppet/functions/assert_type.rb +9 -9
- data/lib/puppet/functions/each.rb +5 -13
- data/lib/puppet/functions/filter.rb +5 -14
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/reduce.rb +5 -13
- data/lib/puppet/functions/reverse_each.rb +82 -0
- data/lib/puppet/functions/scanf.rb +15 -18
- data/lib/puppet/functions/slice.rb +22 -36
- data/lib/puppet/functions/split.rb +2 -2
- data/lib/puppet/functions/step.rb +88 -0
- data/lib/puppet/functions/type.rb +70 -0
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/file_content/http.rb +15 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -0
- data/lib/puppet/indirector/generic_http.rb +16 -0
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/info_service/class_information_service.rb +13 -12
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/module.rb +3 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/network/http/pool.rb +9 -0
- data/lib/puppet/node.rb +1 -1
- data/lib/puppet/node/environment.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +3 -3
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- data/lib/puppet/parser/functions.rb +28 -16
- data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/scanf.rb +15 -26
- data/lib/puppet/parser/functions/slice.rb +17 -24
- data/lib/puppet/parser/functions/split.rb +1 -1
- data/lib/puppet/parser/resource.rb +19 -17
- data/lib/puppet/parser/scope.rb +176 -5
- data/lib/puppet/plugins/data_providers/data_provider.rb +54 -13
- data/lib/puppet/pops.rb +0 -8
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +38 -13
- data/lib/puppet/pops/binder/binder.rb +21 -17
- data/lib/puppet/pops/binder/binder_issues.rb +8 -6
- data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
- data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
- data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
- data/lib/puppet/pops/binder/bindings_model.rb +49 -47
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
- data/lib/puppet/pops/binder/injector.rb +53 -48
- data/lib/puppet/pops/binder/key_factory.rb +10 -6
- data/lib/puppet/pops/binder/producers.rb +67 -62
- data/lib/puppet/pops/evaluator/access_operator.rb +95 -93
- data/lib/puppet/pops/evaluator/closure.rb +84 -68
- data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -14
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +41 -45
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +34 -11
- data/lib/puppet/pops/loader/base_loader.rb +1 -1
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +15 -0
- data/lib/puppet/pops/loader/module_loaders.rb +17 -13
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +16 -12
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
- data/lib/puppet/pops/loaders.rb +51 -9
- data/lib/puppet/pops/lookup.rb +14 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +26 -2
- data/lib/puppet/pops/model/model.rb +8 -8
- data/lib/puppet/pops/model/model_label_provider.rb +13 -7
- data/lib/puppet/pops/model/model_meta.rb +17 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
- data/lib/puppet/pops/parser/egrammar.ra +38 -14
- data/lib/puppet/pops/parser/eparser.rb +1353 -1276
- data/lib/puppet/pops/parser/epp_support.rb +11 -7
- data/lib/puppet/pops/parser/evaluating_parser.rb +14 -10
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +26 -19
- data/lib/puppet/pops/parser/lexer_support.rb +85 -7
- data/lib/puppet/pops/parser/locator.rb +21 -0
- data/lib/puppet/pops/parser/parser_support.rb +19 -16
- data/lib/puppet/pops/parser/slurp_support.rb +11 -7
- data/lib/puppet/pops/types/class_loader.rb +23 -19
- data/lib/puppet/pops/types/enumeration.rb +9 -26
- data/lib/puppet/pops/types/iterable.rb +308 -0
- data/lib/puppet/pops/types/recursion_guard.rb +82 -0
- data/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/lib/puppet/pops/types/type_asserter.rb +10 -9
- data/lib/puppet/pops/types/type_calculator.rb +138 -381
- data/lib/puppet/pops/types/type_factory.rb +91 -57
- data/lib/puppet/pops/types/type_formatter.rb +334 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
- data/lib/puppet/pops/types/type_parser.rb +159 -112
- data/lib/puppet/pops/types/types.rb +2057 -1247
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops/validation/checker4_0.rb +83 -55
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/provider/aixobject.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
- data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
- data/lib/puppet/provider/package/appdmg.rb +3 -2
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +5 -8
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -2
- data/lib/puppet/provider/package/pkgng.rb +13 -4
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +2 -2
- data/lib/puppet/provider/service/launchd.rb +6 -18
- data/lib/puppet/provider/service/systemd.rb +9 -2
- data/lib/puppet/provider/sshkey/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +33 -58
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/resource/capability_finder.rb +20 -13
- data/lib/puppet/resource/catalog.rb +60 -3
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/resource/type.rb +28 -38
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/ssl/certificate_factory.rb +3 -3
- data/lib/puppet/ssl/certificate_request.rb +4 -4
- data/lib/puppet/ssl/certificate_signer.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +16 -4
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/transaction/additional_resource_generator.rb +6 -2
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/type.rb +11 -11
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- data/lib/puppet/type/file.rb +91 -39
- data/lib/puppet/type/file/checksum_value.rb +53 -0
- data/lib/puppet/type/file/content.rb +26 -111
- data/lib/puppet/type/file/data_sync.rb +84 -0
- data/lib/puppet/type/file/ensure.rb +17 -14
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +103 -18
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/interface.rb +8 -3
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/package.rb +6 -0
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/stage.rb +1 -1
- data/lib/puppet/type/user.rb +19 -17
- data/lib/puppet/type/yumrepo.rb +20 -0
- data/lib/puppet/util.rb +109 -22
- data/lib/puppet/util/autoload.rb +16 -11
- data/lib/puppet/util/checksums.rb +74 -31
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +72 -0
- data/lib/puppet/util/log.rb +2 -0
- data/lib/puppet/util/logging.rb +43 -1
- data/lib/puppet/util/monkey_patches.rb +2 -2
- data/lib/puppet/util/multi_match.rb +51 -0
- data/lib/puppet/util/network_device/cisco/device.rb +10 -2
- data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
- data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
- data/lib/puppet/util/plist.rb +130 -0
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/run_mode.rb +2 -2
- data/lib/puppet/util/skip_tags.rb +9 -0
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/access_control_list.rb +3 -3
- data/lib/puppet/util/windows/adsi.rb +4 -4
- data/lib/puppet/util/windows/api_types.rb +24 -18
- data/lib/puppet/util/windows/com.rb +3 -3
- data/lib/puppet/util/windows/error.rb +1 -1
- data/lib/puppet/util/windows/file.rb +8 -8
- data/lib/puppet/util/windows/principal.rb +23 -14
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +1 -1
- data/lib/puppet/util/windows/root_certs.rb +5 -5
- data/lib/puppet/util/windows/security.rb +33 -35
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +42 -4
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
- data/lib/puppet/vendor/pathspec/LICENSE +2 -2
- data/lib/puppet/vendor/pathspec/README.md +1 -1
- data/lib/puppet/vendor/rgen/README.rdoc +1 -1
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +17 -1
- data/man/man5/puppet.conf.5 +12 -12
- data/man/man8/extlookup2hiera.8 +1 -1
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +2 -2
- data/man/man8/puppet-catalog.8 +2 -2
- data/man/man8/puppet-cert.8 +2 -2
- data/man/man8/puppet-certificate.8 +2 -2
- data/man/man8/puppet-certificate_request.8 +2 -2
- data/man/man8/puppet-certificate_revocation_list.8 +2 -2
- data/man/man8/puppet-config.8 +3 -3
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +2 -2
- data/man/man8/puppet-facts.8 +2 -2
- data/man/man8/puppet-file.8 +2 -2
- data/man/man8/puppet-filebucket.8 +2 -2
- data/man/man8/puppet-help.8 +2 -2
- data/man/man8/puppet-inspect.8 +2 -2
- data/man/man8/puppet-key.8 +2 -2
- data/man/man8/puppet-man.8 +2 -2
- data/man/man8/puppet-master.8 +2 -2
- data/man/man8/puppet-module.8 +9 -9
- data/man/man8/puppet-node.8 +2 -2
- data/man/man8/puppet-parser.8 +2 -2
- data/man/man8/puppet-plugin.8 +2 -2
- data/man/man8/puppet-report.8 +2 -2
- data/man/man8/puppet-resource.8 +2 -2
- data/man/man8/puppet-resource_type.8 +2 -2
- data/man/man8/puppet-status.8 +3 -3
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/module.tar.gz +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
- data/spec/fixtures/unit/module/trailing-comma.json +1 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +3 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
- data/spec/integration/defaults_spec.rb +14 -2
- data/spec/integration/file_system/uniquefile_spec.rb +29 -0
- data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
- data/spec/integration/node/environment_spec.rb +13 -0
- data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
- data/spec/integration/parser/undef_param_spec.rb +8 -0
- data/spec/integration/provider/yumrepo_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +28 -0
- data/spec/integration/transaction/report_spec.rb +16 -0
- data/spec/integration/transaction_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +194 -4
- data/spec/integration/type/package_spec.rb +5 -1
- data/spec/integration/type/tidy_spec.rb +21 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/principal_spec.rb +90 -4
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/integration/util/windows/security_spec.rb +6 -6
- data/spec/integration/util/windows/user_spec.rb +1 -1
- data/spec/integration/util_spec.rb +49 -27
- data/spec/lib/puppet_spec/compiler.rb +17 -0
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/pops.rb +13 -0
- data/spec/shared_behaviours/iterative_functions.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +96 -0
- data/spec/unit/agent_spec.rb +1 -0
- data/spec/unit/application/agent_spec.rb +10 -0
- data/spec/unit/application/apply_spec.rb +9 -0
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
- data/spec/unit/defaults_spec.rb +15 -0
- data/spec/unit/environments_spec.rb +24 -4
- data/spec/unit/face/parser_spec.rb +43 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
- data/spec/unit/file_serving/metadata_spec.rb +50 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
- data/spec/unit/file_system_spec.rb +26 -0
- data/spec/unit/functions/assert_type_spec.rb +36 -2
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +11 -3
- data/spec/unit/functions/lookup_spec.rb +58 -13
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/reverse_each_spec.rb +108 -0
- data/spec/unit/functions/step_spec.rb +113 -0
- data/spec/unit/functions/type_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +61 -5
- data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +94 -32
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +1 -0
- data/spec/unit/network/http/pool_spec.rb +30 -0
- data/spec/unit/node_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +16 -0
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +7 -1
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
- data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +44 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +112 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_spec.rb +10 -0
- data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
- data/spec/unit/pops/types/iterable_spec.rb +262 -0
- data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
- data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +275 -373
- data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
- data/spec/unit/pops/types/type_parser_spec.rb +58 -13
- data/spec/unit/pops/types/types_spec.rb +241 -0
- data/spec/unit/pops/validator/validator_spec.rb +100 -43
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/macauthorization_spec.rb +5 -2
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
- data/spec/unit/provider/package/appdmg_spec.rb +3 -3
- data/spec/unit/provider/package/dnf_spec.rb +16 -0
- data/spec/unit/provider/package/pip3_spec.rb +60 -42
- data/spec/unit/provider/package/pip_spec.rb +47 -34
- data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
- data/spec/unit/provider/package/pkgng_spec.rb +4 -2
- data/spec/unit/provider/package/yum_spec.rb +11 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/launchd_spec.rb +17 -35
- data/spec/unit/provider/service/systemd_spec.rb +7 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/resource/capability_finder_spec.rb +28 -15
- data/spec/unit/resource/catalog_spec.rb +33 -1
- data/spec/unit/resource/type_spec.rb +149 -7
- data/spec/unit/resource_spec.rb +96 -57
- data/spec/unit/settings/environment_conf_spec.rb +18 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
- data/spec/unit/transaction/report_spec.rb +27 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -47
- data/spec/unit/transaction_spec.rb +5 -0
- data/spec/unit/type/file/checksum_spec.rb +6 -0
- data/spec/unit/type/file/checksum_value_spec.rb +286 -0
- data/spec/unit/type/file/content_spec.rb +12 -193
- data/spec/unit/type/file/source_spec.rb +211 -119
- data/spec/unit/type/file_spec.rb +133 -34
- data/spec/unit/type/interface_spec.rb +32 -0
- data/spec/unit/type/macauthorization_spec.rb +4 -1
- data/spec/unit/type/yumrepo_spec.rb +2 -2
- data/spec/unit/util/filetype_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +0 -2
- data/spec/unit/util/logging_spec.rb +69 -0
- data/spec/unit/util/multi_match_spec.rb +39 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
- data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
- data/spec/unit/util/plist_spec.rb +110 -0
- data/spec/unit/util/resource_template_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -3
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +42 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
- data/spec/unit/util/windows/sid_spec.rb +1 -1
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +114 -26
- data/lib/puppet/vendor/load_plist.rb +0 -1
- data/lib/puppet/vendor/plist/CHANGELOG +0 -82
- data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
- data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/plist/README +0 -36
- data/lib/puppet/vendor/plist/Rakefile +0 -144
- data/lib/puppet/vendor/plist/docs/USAGE +0 -104
- data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
- data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
- data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
- data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
- data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
- data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
- data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
- data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
- data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
- data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
- data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
data/lib/puppet/pops/utils.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# Provides utility methods
|
2
|
-
module Puppet::Pops
|
2
|
+
module Puppet::Pops
|
3
|
+
module Utils
|
3
4
|
# Can the given o be converted to numeric? (or is numeric already)
|
4
5
|
# Accepts a leading '::'
|
5
6
|
# Returns a boolean if the value is numeric
|
@@ -10,11 +11,11 @@ module Puppet::Pops::Utils
|
|
10
11
|
when Numeric
|
11
12
|
true
|
12
13
|
else
|
13
|
-
!!
|
14
|
+
!!Patterns::NUMERIC.match(relativize_name(o.to_s))
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
17
|
-
# Convert a match from
|
18
|
+
# Convert a match from Patterns::NUMERIC to floating point value if
|
18
19
|
# possible
|
19
20
|
def self.match_to_fp(match)
|
20
21
|
if match[5].to_s.length > 0
|
@@ -45,7 +46,7 @@ module Puppet::Pops::Utils
|
|
45
46
|
begin
|
46
47
|
case o
|
47
48
|
when String
|
48
|
-
match =
|
49
|
+
match = Patterns::NUMERIC.match(relativize_name(o))
|
49
50
|
if !match
|
50
51
|
nil
|
51
52
|
elsif match[5].to_s.length > 0
|
@@ -84,7 +85,7 @@ module Puppet::Pops::Utils
|
|
84
85
|
begin
|
85
86
|
case o
|
86
87
|
when String
|
87
|
-
match =
|
88
|
+
match = Patterns::NUMERIC.match(relativize_name(o))
|
88
89
|
if !match
|
89
90
|
nil
|
90
91
|
elsif match[5].to_s.length > 0
|
@@ -129,14 +130,14 @@ module Puppet::Pops::Utils
|
|
129
130
|
return find_adapter(o.eContainer, adapter)
|
130
131
|
end
|
131
132
|
|
132
|
-
# Finds the closest positioned
|
133
|
+
# Finds the closest positioned Model::Positioned object, or object decorated with
|
133
134
|
# a SourcePosAdapter, and returns
|
134
135
|
# a SourcePosAdapter for the first found, or nil if not found.
|
135
136
|
#
|
136
137
|
def self.find_closest_positioned(o)
|
137
|
-
return nil if o.nil? || o.is_a?(
|
138
|
-
return find_adapter(o,
|
139
|
-
o.offset.nil? ? find_closest_positioned(o.eContainer) :
|
138
|
+
return nil if o.nil? || o.is_a?(Model::Program) || (o.is_a?(Array) && o.empty?)
|
139
|
+
return find_adapter(o, Adapters::SourcePosAdapter) unless o.is_a?(Model::Positioned)
|
140
|
+
o.offset.nil? ? find_closest_positioned(o.eContainer) : Adapters::SourcePosAdapter.adapt(o)
|
140
141
|
end
|
141
|
-
|
142
|
+
end
|
142
143
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
module Puppet::Pops
|
1
2
|
# A module with base functionality for validation of a model.
|
2
3
|
#
|
3
4
|
# * **Factory** - an abstract factory implementation that makes it easier to create a new validation factory.
|
@@ -6,7 +7,7 @@
|
|
6
7
|
# * **Acceptor** - the receiver/sink/collector of computed diagnostics
|
7
8
|
# * **DiagnosticFormatter** - produces human readable output for a Diagnostic
|
8
9
|
#
|
9
|
-
module
|
10
|
+
module Validation
|
10
11
|
|
11
12
|
# This class is an abstract base implementation of a _model validation factory_ that creates a validator instance
|
12
13
|
# and associates it with a fully configured DiagnosticProducer.
|
@@ -45,7 +46,7 @@ module Puppet::Pops::Validation
|
|
45
46
|
# @api public
|
46
47
|
#
|
47
48
|
def diagnostic_producer(acceptor)
|
48
|
-
|
49
|
+
DiagnosticProducer.new(acceptor, severity_producer(), label_provider())
|
49
50
|
end
|
50
51
|
|
51
52
|
# Produces the SeverityProducer to use
|
@@ -56,7 +57,7 @@ module Puppet::Pops::Validation
|
|
56
57
|
# @api public
|
57
58
|
#
|
58
59
|
def severity_producer
|
59
|
-
|
60
|
+
SeverityProducer.new
|
60
61
|
end
|
61
62
|
|
62
63
|
# Produces the checker to use.
|
@@ -119,12 +120,12 @@ module Puppet::Pops::Validation
|
|
119
120
|
|
120
121
|
# Override a default severity with the given severity level.
|
121
122
|
#
|
122
|
-
# @param issue [
|
123
|
+
# @param issue [Issues::Issue] the issue for which to set severity
|
123
124
|
# @param level [Symbol] the severity level (:error, :warning, or :ignore).
|
124
125
|
# @api public
|
125
126
|
#
|
126
127
|
def []=(issue, level)
|
127
|
-
raise Puppet::DevError.new("Attempt to set validation severity for something that is not an Issue. (Got #{issue.class})") unless issue.is_a?
|
128
|
+
raise Puppet::DevError.new("Attempt to set validation severity for something that is not an Issue. (Got #{issue.class})") unless issue.is_a? Issues::Issue
|
128
129
|
raise Puppet::DevError.new("Illegal severity level: #{option}") unless @@severity_hash[level]
|
129
130
|
raise Puppet::DevError.new("Attempt to demote the hard issue '#{issue.issue_code}' to #{level}") unless issue.demotable? || level == :error
|
130
131
|
@severities[issue] = level
|
@@ -144,7 +145,7 @@ module Puppet::Pops::Validation
|
|
144
145
|
# @api private
|
145
146
|
#
|
146
147
|
def assert_issue issue
|
147
|
-
raise Puppet::DevError.new("Attempt to get validation severity for something that is not an Issue. (Got #{issue.class})") unless issue.is_a?
|
148
|
+
raise Puppet::DevError.new("Attempt to get validation severity for something that is not an Issue. (Got #{issue.class})") unless issue.is_a? Issues::Issue
|
148
149
|
end
|
149
150
|
|
150
151
|
# Checks if the given severity level is valid.
|
@@ -203,7 +204,7 @@ module Puppet::Pops::Validation
|
|
203
204
|
source_pos = semantic
|
204
205
|
file = semantic.file
|
205
206
|
else
|
206
|
-
source_pos =
|
207
|
+
source_pos = Utils.find_closest_positioned(semantic)
|
207
208
|
file = source_pos ? source_pos.locator.file : nil
|
208
209
|
end
|
209
210
|
|
@@ -404,7 +405,7 @@ module Puppet::Pops::Validation
|
|
404
405
|
end
|
405
406
|
|
406
407
|
# Add a diagnostic, or all diagnostics from another acceptor to the set of diagnostics
|
407
|
-
# @param diagnostic [
|
408
|
+
# @param diagnostic [Diagnostic, Acceptor] diagnostic(s) that should be accepted
|
408
409
|
def accept(diagnostic)
|
409
410
|
if diagnostic.is_a?(Acceptor)
|
410
411
|
diagnostic.diagnostics.each {|d| self.send(d.severity, d)}
|
@@ -415,7 +416,7 @@ module Puppet::Pops::Validation
|
|
415
416
|
|
416
417
|
# Prunes the contain diagnostics by removing those for which the given block returns true.
|
417
418
|
# The internal statistics is updated as a consequence of removing.
|
418
|
-
# @return [Array<
|
419
|
+
# @return [Array<Diagnostic, nil] the removed set of diagnostics or nil if nothing was removed
|
419
420
|
#
|
420
421
|
def prune(&block)
|
421
422
|
removed = []
|
@@ -458,3 +459,4 @@ module Puppet::Pops::Validation
|
|
458
459
|
end
|
459
460
|
end
|
460
461
|
end
|
462
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
module Puppet::Pops
|
2
|
+
module Validation
|
1
3
|
# A Validator validates a model.
|
2
4
|
#
|
3
5
|
# Validation is performed on each model element in isolation. Each method should validate the model element's state
|
@@ -9,10 +11,7 @@
|
|
9
11
|
# Model objects via their metamodel. (I.e an extra call to multiplicity check in polymorph check).
|
10
12
|
# This is however mostly valuable when validating model to model transformations, and is therefore T.B.D
|
11
13
|
#
|
12
|
-
class
|
13
|
-
Issues = Puppet::Pops::Issues
|
14
|
-
Model = Puppet::Pops::Model
|
15
|
-
|
14
|
+
class Checker4_0
|
16
15
|
attr_reader :acceptor
|
17
16
|
attr_reader :migration_checker
|
18
17
|
|
@@ -20,19 +19,19 @@ class Puppet::Pops::Validation::Checker4_0
|
|
20
19
|
# `:will_accept?` and `:accept`.
|
21
20
|
#
|
22
21
|
def initialize(diagnostics_producer)
|
23
|
-
@@check_visitor ||=
|
24
|
-
@@rvalue_visitor ||=
|
25
|
-
@@hostname_visitor ||=
|
26
|
-
@@assignment_visitor ||=
|
27
|
-
@@query_visitor ||=
|
28
|
-
@@top_visitor ||=
|
29
|
-
@@relation_visitor ||=
|
30
|
-
@@idem_visitor ||=
|
22
|
+
@@check_visitor ||= Visitor.new(nil, "check", 0, 0)
|
23
|
+
@@rvalue_visitor ||= Visitor.new(nil, "rvalue", 0, 0)
|
24
|
+
@@hostname_visitor ||= Visitor.new(nil, "hostname", 1, 2)
|
25
|
+
@@assignment_visitor ||= Visitor.new(nil, "assign", 0, 1)
|
26
|
+
@@query_visitor ||= Visitor.new(nil, "query", 0, 0)
|
27
|
+
@@top_visitor ||= Visitor.new(nil, "top", 1, 1)
|
28
|
+
@@relation_visitor ||= Visitor.new(nil, "relation", 0, 0)
|
29
|
+
@@idem_visitor ||= Visitor.new(self, "idem", 0, 0)
|
31
30
|
|
32
31
|
@acceptor = diagnostics_producer
|
33
32
|
|
34
33
|
# Use null migration checker unless given in context
|
35
|
-
@migration_checker = (Puppet.lookup(:migration_checker) {
|
34
|
+
@migration_checker = (Puppet.lookup(:migration_checker) { Migration::MigrationChecker.new() })
|
36
35
|
end
|
37
36
|
|
38
37
|
# Validates the entire model by visiting each model element and calling `check`.
|
@@ -94,7 +93,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
94
93
|
|
95
94
|
# Returns the last expression in a block, or the expression, if that expression is idem
|
96
95
|
def ends_with_idem(o)
|
97
|
-
if o.is_a?(
|
96
|
+
if o.is_a?(Model::BlockExpression)
|
98
97
|
last = o.statements[-1]
|
99
98
|
idem(last) ? last : nil
|
100
99
|
else
|
@@ -106,7 +105,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
106
105
|
|
107
106
|
def assign_VariableExpression(o, via_index)
|
108
107
|
varname_string = varname_to_s(o.expr)
|
109
|
-
if varname_string =~
|
108
|
+
if varname_string =~ Patterns::NUMERIC_VAR_NAME
|
110
109
|
acceptor.accept(Issues::ILLEGAL_NUMERIC_ASSIGNMENT, o, :varname => varname_string)
|
111
110
|
end
|
112
111
|
# Can not assign to something in another namespace (i.e. a '::' in the name is not legal)
|
@@ -214,9 +213,9 @@ class Puppet::Pops::Validation::Checker4_0
|
|
214
213
|
end
|
215
214
|
|
216
215
|
def resource_without_title?(o)
|
217
|
-
if o.instance_of?(
|
216
|
+
if o.instance_of?(Model::BlockExpression)
|
218
217
|
statements = o.statements
|
219
|
-
statements.length == 2 && statements[0].instance_of?(
|
218
|
+
statements.length == 2 && statements[0].instance_of?(Model::QualifiedName) && statements[1].instance_of?(Model::LiteralHash)
|
220
219
|
else
|
221
220
|
false
|
222
221
|
end
|
@@ -237,10 +236,10 @@ class Puppet::Pops::Validation::Checker4_0
|
|
237
236
|
|
238
237
|
def check_CallNamedFunctionExpression(o)
|
239
238
|
case o.functor_expr
|
240
|
-
when
|
239
|
+
when Model::QualifiedName
|
241
240
|
# ok
|
242
241
|
nil
|
243
|
-
when
|
242
|
+
when Model::RenderStringExpression
|
244
243
|
# helpful to point out this easy to make Epp error
|
245
244
|
acceptor.accept(Issues::ILLEGAL_EPP_PARAMETERS, o)
|
246
245
|
else
|
@@ -251,16 +250,16 @@ class Puppet::Pops::Validation::Checker4_0
|
|
251
250
|
def check_CapabilityMapping(o)
|
252
251
|
ok =
|
253
252
|
case o.component
|
254
|
-
when
|
253
|
+
when Model::QualifiedName
|
255
254
|
name = o.component.value
|
256
|
-
acceptor.accept(Issues::ILLEGAL_CLASSREF, o.component, {:name=>name}) unless name =~
|
255
|
+
acceptor.accept(Issues::ILLEGAL_CLASSREF, o.component, {:name=>name}) unless name =~ Patterns::CLASSREF_EXT
|
257
256
|
true
|
258
|
-
when
|
257
|
+
when Model::AccessExpression
|
259
258
|
keys = o.component.keys
|
260
259
|
expr = o.component.left_expr
|
261
|
-
if expr.is_a?(
|
260
|
+
if expr.is_a?(Model::QualifiedReference) && keys.size == 1
|
262
261
|
key = keys[0]
|
263
|
-
key.is_a?(
|
262
|
+
key.is_a?(Model::LiteralString) || key.is_a?(Model::QualifiedName) || key.is_a?(Model::QualifiedReference)
|
264
263
|
else
|
265
264
|
false
|
266
265
|
end
|
@@ -269,13 +268,13 @@ class Puppet::Pops::Validation::Checker4_0
|
|
269
268
|
end
|
270
269
|
acceptor.accept(Issues::ILLEGAL_EXPRESSION, o.component, :feature=>'capability mapping', :container => o) unless ok
|
271
270
|
|
272
|
-
if o.capability !~
|
271
|
+
if o.capability !~ Patterns::CLASSREF_EXT
|
273
272
|
acceptor.accept(Issues::ILLEGAL_CLASSREF, o, {:name=>o.capability})
|
274
273
|
end
|
275
274
|
end
|
276
275
|
|
277
276
|
def check_EppExpression(o)
|
278
|
-
if o.eContainer.is_a?(
|
277
|
+
if o.eContainer.is_a?(Model::LambdaExpression)
|
279
278
|
internal_check_no_capture(o.eContainer, o)
|
280
279
|
internal_check_parameter_name_uniqueness(o.eContainer)
|
281
280
|
end
|
@@ -301,13 +300,6 @@ class Puppet::Pops::Validation::Checker4_0
|
|
301
300
|
unless o.type_expr.is_a? Model::QualifiedReference
|
302
301
|
acceptor.accept(Issues::ILLEGAL_EXPRESSION, o.type_expr, :feature=> 'type name', :container => o)
|
303
302
|
end
|
304
|
-
|
305
|
-
# If a collect expression tries to collect exported resources and storeconfigs is not on
|
306
|
-
# then it will not work... This was checked in the parser previously. This is a runtime checking
|
307
|
-
# thing as opposed to a language thing.
|
308
|
-
if acceptor.will_accept?(Issues::RT_NO_STORECONFIGS) && o.query.is_a?(Model::ExportedQuery)
|
309
|
-
acceptor.accept(Issues::RT_NO_STORECONFIGS, o)
|
310
|
-
end
|
311
303
|
end
|
312
304
|
|
313
305
|
# Only used for function names, grammar should not be able to produce something faulty, but
|
@@ -350,23 +342,29 @@ class Puppet::Pops::Validation::Checker4_0
|
|
350
342
|
# for 'class', 'define', and function
|
351
343
|
def check_NamedDefinition(o)
|
352
344
|
top(o.eContainer, o)
|
353
|
-
if o.name !~
|
345
|
+
if o.name !~ Patterns::CLASSREF
|
354
346
|
acceptor.accept(Issues::ILLEGAL_DEFINITION_NAME, o, {:name=>o.name})
|
355
347
|
end
|
348
|
+
internal_check_reserved_type_name(o, o.name)
|
349
|
+
internal_check_future_reserved_word(o, o.name)
|
350
|
+
end
|
356
351
|
|
357
|
-
|
358
|
-
|
359
|
-
|
352
|
+
def check_TypeAlias(o)
|
353
|
+
top(o.eContainer, o)
|
354
|
+
internal_check_reserved_type_name(o, o.name)
|
355
|
+
internal_check_type_ref(o, o.type_expr)
|
356
|
+
end
|
360
357
|
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
358
|
+
def check_TypeDefinition(o)
|
359
|
+
top(o.eContainer, o)
|
360
|
+
internal_check_reserved_type_name(o, o.name)
|
361
|
+
# TODO: Check TypeDefinition body. For now, just error out
|
362
|
+
acceptor.accept(Issues::UNSUPPORTED_EXPRESSION, o)
|
366
363
|
end
|
367
364
|
|
368
365
|
def check_FunctionDefinition(o)
|
369
366
|
check_NamedDefinition(o)
|
367
|
+
internal_check_parameter_name_uniqueness(o)
|
370
368
|
end
|
371
369
|
|
372
370
|
def check_HostClassDefinition(o)
|
@@ -385,6 +383,15 @@ class Puppet::Pops::Validation::Checker4_0
|
|
385
383
|
internal_check_no_idem_last(o)
|
386
384
|
end
|
387
385
|
|
386
|
+
def internal_check_type_ref(o, r)
|
387
|
+
n = r.is_a?(Model::AccessExpression) ? r.left_expr : r
|
388
|
+
if n.is_a? Model::QualifiedReference
|
389
|
+
internal_check_future_reserved_word(r, n.value)
|
390
|
+
else
|
391
|
+
acceptor.accept(Issues::ILLEGAL_EXPRESSION, r, :feature => 'a type reference', :container => o)
|
392
|
+
end
|
393
|
+
end
|
394
|
+
|
388
395
|
def internal_check_no_idem_last(o)
|
389
396
|
if violator = ends_with_idem(o.body)
|
390
397
|
acceptor.accept(Issues::IDEM_NOT_ALLOWED_LAST, violator, {:container => o}) unless resource_without_title?(violator)
|
@@ -408,6 +415,19 @@ class Puppet::Pops::Validation::Checker4_0
|
|
408
415
|
end
|
409
416
|
end
|
410
417
|
|
418
|
+
def internal_check_reserved_type_name(o, name)
|
419
|
+
if RESERVED_TYPE_NAMES[name]
|
420
|
+
acceptor.accept(Issues::RESERVED_TYPE_NAME, o, {:name => name})
|
421
|
+
end
|
422
|
+
end
|
423
|
+
|
424
|
+
def internal_check_future_reserved_word(o, name)
|
425
|
+
if FUTURE_RESERVED_WORDS[name]
|
426
|
+
acceptor.accept(Issues::FUTURE_RESERVED_WORD, o, {:word => name})
|
427
|
+
end
|
428
|
+
end
|
429
|
+
|
430
|
+
|
411
431
|
RESERVED_PARAMETERS = {
|
412
432
|
'name' => true,
|
413
433
|
'title' => true,
|
@@ -471,7 +491,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
471
491
|
# DOH: QualifiedReferences are created with LOWER CASE NAMES at parse time
|
472
492
|
def check_QualifiedReference(o)
|
473
493
|
# Is this a valid qualified name?
|
474
|
-
if o.value !~
|
494
|
+
if o.value !~ Patterns::CLASSREF
|
475
495
|
acceptor.accept(Issues::ILLEGAL_CLASSREF, o, {:name=>o.value})
|
476
496
|
end
|
477
497
|
end
|
@@ -493,17 +513,21 @@ class Puppet::Pops::Validation::Checker4_0
|
|
493
513
|
acceptor.accept(Issues::ILLEGAL_NUMERIC_PARAMETER, o, :name => o.name)
|
494
514
|
end
|
495
515
|
|
496
|
-
unless o.name =~
|
516
|
+
unless o.name =~ Patterns::PARAM_NAME
|
497
517
|
acceptor.accept(Issues::ILLEGAL_PARAM_NAME, o, :name => o.name)
|
498
518
|
end
|
499
519
|
return unless o.value
|
500
520
|
|
501
|
-
|
502
|
-
|
521
|
+
internal_check_illegal_assignment(o.value)
|
522
|
+
end
|
523
|
+
|
524
|
+
def internal_check_illegal_assignment(o)
|
525
|
+
if o.is_a?(Model::AssignmentExpression)
|
526
|
+
acceptor.accept(Issues::ILLEGAL_ASSIGNMENT_CONTEXT, o)
|
503
527
|
else
|
504
|
-
|
505
|
-
|
506
|
-
|
528
|
+
# recursively check all contents unless it's a lambda expression. A lambda may contain
|
529
|
+
# local assignments
|
530
|
+
o.eContents.each {|model| internal_check_illegal_assignment(model) } unless o.is_a?(Model::LambdaExpression)
|
507
531
|
end
|
508
532
|
end
|
509
533
|
|
@@ -531,7 +555,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
531
555
|
def check_ResourceBody(o)
|
532
556
|
seenUnfolding = false
|
533
557
|
o.operations.each do |ao|
|
534
|
-
if ao.is_a?(
|
558
|
+
if ao.is_a?(Model::AttributesOperation)
|
535
559
|
if seenUnfolding
|
536
560
|
acceptor.accept(Issues::MULTIPLE_ATTRIBUTES_UNFOLD, ao)
|
537
561
|
else
|
@@ -589,11 +613,11 @@ class Puppet::Pops::Validation::Checker4_0
|
|
589
613
|
# name must be either a decimal string value, or a valid NAME
|
590
614
|
name = o.expr.value
|
591
615
|
if name[0,1] =~ /[0-9]/
|
592
|
-
unless name =~
|
616
|
+
unless name =~ Patterns::NUMERIC_VAR_NAME
|
593
617
|
acceptor.accept(Issues::ILLEGAL_NUMERIC_VAR_NAME, o, :name => name)
|
594
618
|
end
|
595
619
|
else
|
596
|
-
unless name =~
|
620
|
+
unless name =~ Patterns::VAR_NAME
|
597
621
|
acceptor.accept(Issues::ILLEGAL_VAR_NAME, o, :name => name)
|
598
622
|
end
|
599
623
|
end
|
@@ -612,7 +636,7 @@ class Puppet::Pops::Validation::Checker4_0
|
|
612
636
|
# but this allows pathological names like "a..b......c", "----"
|
613
637
|
# TODO: Investigate if more illegal hostnames should be flagged.
|
614
638
|
#
|
615
|
-
if o =~
|
639
|
+
if o =~ Patterns::ILLEGAL_HOSTNAME_CHARS
|
616
640
|
acceptor.accept(Issues::ILLEGAL_HOSTNAME_CHARS, semantic, :hostname => o)
|
617
641
|
end
|
618
642
|
end
|
@@ -719,8 +743,10 @@ class Puppet::Pops::Validation::Checker4_0
|
|
719
743
|
end
|
720
744
|
|
721
745
|
def top_BlockExpression(o, definition)
|
722
|
-
if
|
723
|
-
|
746
|
+
if !o.eContainer.is_a?(Model::Program) &&
|
747
|
+
(definition.is_a?(Model::FunctionDefinition) || definition.is_a?(Model::TypeAlias) || definition.is_a?(Model::TypeDefinition))
|
748
|
+
|
749
|
+
# not ok. These can never be nested in a block
|
724
750
|
acceptor.accept(Issues::NOT_ABSOLUTE_TOP_LEVEL, definition)
|
725
751
|
else
|
726
752
|
# ok, if this is a block representing the body of a class, or is top level
|
@@ -864,3 +890,5 @@ class Puppet::Pops::Validation::Checker4_0
|
|
864
890
|
end
|
865
891
|
end
|
866
892
|
end
|
893
|
+
end
|
894
|
+
end
|
@@ -1,16 +1,18 @@
|
|
1
|
+
module Puppet::Pops
|
2
|
+
module Validation
|
1
3
|
# Configures validation suitable for 4.0
|
2
4
|
#
|
3
|
-
class
|
4
|
-
Issues =
|
5
|
+
class ValidatorFactory_4_0 < Factory
|
6
|
+
Issues = Issues
|
5
7
|
|
6
8
|
# Produces the checker to use
|
7
9
|
def checker diagnostic_producer
|
8
|
-
|
10
|
+
Checker4_0.new(diagnostic_producer)
|
9
11
|
end
|
10
12
|
|
11
13
|
# Produces the label provider to use
|
12
14
|
def label_provider
|
13
|
-
|
15
|
+
Model::ModelLabelProvider.new()
|
14
16
|
end
|
15
17
|
|
16
18
|
# Produces the severity producer to use
|
@@ -30,3 +32,5 @@ class Puppet::Pops::Validation::ValidatorFactory_4_0 < Puppet::Pops::Validation:
|
|
30
32
|
p
|
31
33
|
end
|
32
34
|
end
|
35
|
+
end
|
36
|
+
end
|