puppet 4.3.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- 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/build_defaults.yaml +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/hiera/scope.rb +1 -1
- 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 +45 -47
- 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/lookup_adapter.rb +73 -26
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +69 -22
- 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/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/file_system.rb +2 -2
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/forge.rb +1 -1
- 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/lookup.rb +126 -150
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/match.rb +1 -0
- 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/functions.rb +45 -6
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/facts/facter.rb +2 -13
- 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/hiera.rb +3 -1
- data/lib/puppet/indirector/indirection.rb +6 -2
- data/lib/puppet/indirector/json.rb +2 -2
- 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 +6 -2
- 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/environment.rb +11 -2
- data/lib/puppet/node.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +4 -11
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- 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/lookup.rb +128 -149
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/match.rb +1 -0
- 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/functions.rb +28 -16
- 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 +56 -14
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +80 -12
- 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 +98 -96
- data/lib/puppet/pops/evaluator/closure.rb +122 -106
- data/lib/puppet/pops/evaluator/collector_transformer.rb +34 -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 +47 -42
- data/lib/puppet/pops/functions/function.rb +6 -2
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +50 -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 +18 -13
- 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/explainer.rb +73 -3
- data/lib/puppet/pops/lookup/invocation.rb +21 -19
- data/lib/puppet/pops/lookup.rb +17 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +179 -157
- data/lib/puppet/pops/model/model.rb +17 -8
- data/lib/puppet/pops/model/model_label_provider.rb +14 -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 +17 -13
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +428 -403
- 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 +16 -8
- 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 +140 -387
- 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 -1253
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation/checker4_0.rb +115 -63
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops.rb +0 -8
- 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/group/windows_adsi.rb +2 -2
- 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 +16 -9
- 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/rpm.rb +0 -1
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +7 -20
- data/lib/puppet/provider/service/init.rb +7 -0
- data/lib/puppet/provider/service/launchd.rb +6 -12
- 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/user/windows_adsi.rb +2 -2
- data/lib/puppet/provider/yumrepo/inifile.rb +6 -3
- 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/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 +33 -42
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/settings.rb +1 -1
- 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/additional_resource_generator.rb +23 -5
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- 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/file.rb +91 -39
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/group.rb +6 -2
- 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/type.rb +11 -11
- 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 +65 -28
- 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 +190 -0
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +22 -16
- 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 +84 -15
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/util/windows.rb +4 -0
- data/lib/puppet/util.rb +109 -22
- 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/puppet.rb +17 -0
- 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/application/environments/production/data/common.yaml +4 -0
- data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/data.pp +10 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -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/functions/usee_puppet.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
- 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/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +81 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
- 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/collection_spec.rb +8 -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 +201 -0
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/{unit → integration}/util/windows/registry_spec.rb +91 -1
- data/spec/integration/util/windows/security_spec.rb +8 -8
- 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/application/lookup_spec.rb +138 -28
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +182 -5
- 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/epp_face_spec.rb +2 -2
- 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 +17 -9
- data/spec/unit/functions/inline_epp_spec.rb +4 -4
- data/spec/unit/functions/lookup_spec.rb +88 -16
- 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 +62 -6
- data/spec/unit/hiera/scope_spec.rb +5 -2
- 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/indirector/json_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 +8 -0
- data/spec/unit/parser/compiler_spec.rb +16 -18
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +7 -7
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -2
- 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 +127 -2
- data/spec/unit/pops/parser/lexer2_spec.rb +118 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -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 -390
- 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 +159 -15
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +8 -8
- 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 +88 -47
- 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/rpm_spec.rb +2 -25
- data/spec/unit/provider/package/yum_spec.rb +12 -1
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/debian_spec.rb +6 -24
- data/spec/unit/provider/service/init_spec.rb +11 -1
- data/spec/unit/provider/service/launchd_spec.rb +18 -25
- data/spec/unit/provider/service/systemd_spec.rb +25 -12
- data/spec/unit/provider/service/upstart_spec.rb +57 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/provider/user/windows_adsi_spec.rb +5 -5
- data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
- 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 +99 -50
- 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 +46 -38
- 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 +48 -11
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +3342 -3195
- 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/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- 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/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
|
@@ -41,7 +41,7 @@ describe Puppet::FileBucketFile::File, :uses_checksums => true do
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
it "fails if the contents collide with existing contents" do
|
|
44
|
-
# This is the shortest known MD5 collision. See
|
|
44
|
+
# This is the shortest known MD5 collision. See https://eprint.iacr.org/2010/643.pdf
|
|
45
45
|
first_contents = [0x6165300e,0x87a79a55,0xf7c60bd0,0x34febd0b,
|
|
46
46
|
0x6503cf04,0x854f709e,0xfb0fc034,0x874c9c65,
|
|
47
47
|
0x2f94cc40,0x15a12deb,0x5c15f4a3,0x490786bb,
|
|
@@ -81,7 +81,7 @@ describe Puppet::Indirector::JSON do
|
|
|
81
81
|
# I don't like this, but there isn't a credible alternative that
|
|
82
82
|
# also works on Windows, so a stub it is. At least the expectation
|
|
83
83
|
# will fail if the implementation changes. Sorry to the next dev.
|
|
84
|
-
|
|
84
|
+
Puppet::FileSystem.expects(:read).with(file).raises(Errno::EPERM)
|
|
85
85
|
expect { subject.find(request) }.
|
|
86
86
|
to raise_error Puppet::Error, /Could not read JSON/
|
|
87
87
|
end
|
|
@@ -19,6 +19,9 @@ describe "Puppet::InfoService" do
|
|
|
19
19
|
class bar($bar_a, Integer $bar_b, String $bar_c = 'c default value') { }
|
|
20
20
|
class bar2($bar2_a, Integer $bar2_b, String $bar2_c = 'c default value') { }
|
|
21
21
|
CODE
|
|
22
|
+
'intp.pp' => <<-CODE,
|
|
23
|
+
class intp(String $intp_a = "default with interpolated $::os_family") { }
|
|
24
|
+
CODE
|
|
22
25
|
'fee.pp' => <<-CODE,
|
|
23
26
|
class fee(Integer $fee_a = 1+1) { }
|
|
24
27
|
CODE
|
|
@@ -31,6 +34,9 @@ describe "Puppet::InfoService" do
|
|
|
31
34
|
'borked.pp' => <<-CODE,
|
|
32
35
|
class Borked($Herp+$Derp) {}
|
|
33
36
|
CODE
|
|
37
|
+
'json_unsafe.pp' => <<-CODE,
|
|
38
|
+
class json_unsafe($arg1 = /.*/, $arg2 = default, $arg3 = {1 => 1}) {}
|
|
39
|
+
CODE
|
|
34
40
|
})
|
|
35
41
|
end
|
|
36
42
|
|
|
@@ -47,21 +53,23 @@ describe "Puppet::InfoService" do
|
|
|
47
53
|
result = Puppet::InfoService.classes_per_environment({'production' => files })
|
|
48
54
|
expect(result).to eq({
|
|
49
55
|
"production"=>{
|
|
50
|
-
"#{code_dir}/foo.pp"=>[
|
|
56
|
+
"#{code_dir}/foo.pp"=> {:classes => [
|
|
51
57
|
{:name=>"foo",
|
|
52
58
|
:params=>[
|
|
53
59
|
{:name=>"foo_a"},
|
|
54
60
|
{:name=>"foo_b", :type=>"Integer"},
|
|
55
|
-
{:name=>"foo_c", :type=>"String", :default_literal=>"c default value"
|
|
61
|
+
{:name=>"foo_c", :type=>"String", :default_literal=>"c default value",
|
|
62
|
+
:default_source=>"'c default value'"}
|
|
56
63
|
]},
|
|
57
64
|
{:name=>"foo2",
|
|
58
65
|
:params=>[
|
|
59
66
|
{:name=>"foo2_a"},
|
|
60
67
|
{:name=>"foo2_b", :type=>"Integer"},
|
|
61
|
-
{:name=>"foo2_c", :type=>"String", :default_literal=>"c default value"
|
|
68
|
+
{:name=>"foo2_c", :type=>"String", :default_literal=>"c default value",
|
|
69
|
+
:default_source=>"'c default value'"}
|
|
62
70
|
]
|
|
63
71
|
}
|
|
64
|
-
]} # end production env
|
|
72
|
+
]}} # end production env
|
|
65
73
|
})
|
|
66
74
|
end
|
|
67
75
|
|
|
@@ -70,36 +78,40 @@ describe "Puppet::InfoService" do
|
|
|
70
78
|
result = Puppet::InfoService.classes_per_environment({'production' => files })
|
|
71
79
|
expect(result).to eq({
|
|
72
80
|
"production"=>{
|
|
73
|
-
"#{code_dir}/foo.pp"=>[
|
|
81
|
+
"#{code_dir}/foo.pp"=>{:classes => [
|
|
74
82
|
{:name=>"foo",
|
|
75
83
|
:params=>[
|
|
76
84
|
{:name=>"foo_a"},
|
|
77
85
|
{:name=>"foo_b", :type=>"Integer"},
|
|
78
|
-
{:name=>"foo_c", :type=>"String", :default_literal=>"c default value"
|
|
86
|
+
{:name=>"foo_c", :type=>"String", :default_literal=>"c default value",
|
|
87
|
+
:default_source=>"'c default value'"}
|
|
79
88
|
]},
|
|
80
89
|
{:name=>"foo2",
|
|
81
90
|
:params=>[
|
|
82
91
|
{:name=>"foo2_a"},
|
|
83
92
|
{:name=>"foo2_b", :type=>"Integer"},
|
|
84
|
-
{:name=>"foo2_c", :type=>"String", :default_literal=>"c default value"
|
|
93
|
+
{:name=>"foo2_c", :type=>"String", :default_literal=>"c default value",
|
|
94
|
+
:default_source=>"'c default value'"}
|
|
85
95
|
]
|
|
86
96
|
}
|
|
87
|
-
],
|
|
88
|
-
"#{code_dir}/bar.pp"=>[
|
|
97
|
+
]},
|
|
98
|
+
"#{code_dir}/bar.pp"=> {:classes =>[
|
|
89
99
|
{:name=>"bar",
|
|
90
100
|
:params=>[
|
|
91
101
|
{:name=>"bar_a"},
|
|
92
102
|
{:name=>"bar_b", :type=>"Integer"},
|
|
93
|
-
{:name=>"bar_c", :type=>"String", :default_literal=>"c default value"
|
|
103
|
+
{:name=>"bar_c", :type=>"String", :default_literal=>"c default value",
|
|
104
|
+
:default_source=>"'c default value'"}
|
|
94
105
|
]},
|
|
95
106
|
{:name=>"bar2",
|
|
96
107
|
:params=>[
|
|
97
108
|
{:name=>"bar2_a"},
|
|
98
109
|
{:name=>"bar2_b", :type=>"Integer"},
|
|
99
|
-
{:name=>"bar2_c", :type=>"String", :default_literal=>"c default value"
|
|
110
|
+
{:name=>"bar2_c", :type=>"String", :default_literal=>"c default value",
|
|
111
|
+
:default_source=>"'c default value'"}
|
|
100
112
|
]
|
|
101
113
|
}
|
|
102
|
-
],
|
|
114
|
+
]},
|
|
103
115
|
|
|
104
116
|
} # end production env
|
|
105
117
|
}
|
|
@@ -116,50 +128,54 @@ describe "Puppet::InfoService" do
|
|
|
116
128
|
|
|
117
129
|
expect(result).to eq({
|
|
118
130
|
"production"=>{
|
|
119
|
-
"#{code_dir}/foo.pp"=>[
|
|
131
|
+
"#{code_dir}/foo.pp"=>{:classes => [
|
|
120
132
|
{:name=>"foo",
|
|
121
133
|
:params=>[
|
|
122
134
|
{:name=>"foo_a"},
|
|
123
135
|
{:name=>"foo_b", :type=>"Integer"},
|
|
124
|
-
{:name=>"foo_c", :type=>"String", :default_literal=>"c default value"
|
|
136
|
+
{:name=>"foo_c", :type=>"String", :default_literal=>"c default value",
|
|
137
|
+
:default_source=>"'c default value'"}
|
|
125
138
|
]},
|
|
126
139
|
{:name=>"foo2",
|
|
127
140
|
:params=>[
|
|
128
141
|
{:name=>"foo2_a"},
|
|
129
142
|
{:name=>"foo2_b", :type=>"Integer"},
|
|
130
|
-
{:name=>"foo2_c", :type=>"String", :default_literal=>"c default value"
|
|
143
|
+
{:name=>"foo2_c", :type=>"String", :default_literal=>"c default value",
|
|
144
|
+
:default_source=>"'c default value'"}
|
|
131
145
|
]
|
|
132
146
|
}
|
|
133
|
-
],
|
|
134
|
-
"#{code_dir}/bar.pp"=>[
|
|
147
|
+
]},
|
|
148
|
+
"#{code_dir}/bar.pp"=>{:classes => [
|
|
135
149
|
{:name=>"bar",
|
|
136
150
|
:params=>[
|
|
137
151
|
{:name=>"bar_a"},
|
|
138
152
|
{:name=>"bar_b", :type=>"Integer"},
|
|
139
|
-
{:name=>"bar_c", :type=>"String", :default_literal=>"c default value"
|
|
153
|
+
{:name=>"bar_c", :type=>"String", :default_literal=>"c default value",
|
|
154
|
+
:default_source=>"'c default value'"}
|
|
140
155
|
]},
|
|
141
156
|
{:name=>"bar2",
|
|
142
157
|
:params=>[
|
|
143
158
|
{:name=>"bar2_a"},
|
|
144
159
|
{:name=>"bar2_b", :type=>"Integer"},
|
|
145
|
-
{:name=>"bar2_c", :type=>"String", :default_literal=>"c default value"
|
|
160
|
+
{:name=>"bar2_c", :type=>"String", :default_literal=>"c default value",
|
|
161
|
+
:default_source=>"'c default value'"}
|
|
146
162
|
]
|
|
147
163
|
}
|
|
148
|
-
|
|
164
|
+
]},
|
|
149
165
|
}, # end production env
|
|
150
166
|
"test"=>{
|
|
151
|
-
"#{code_dir}/fee.pp"=>[
|
|
167
|
+
"#{code_dir}/fee.pp"=>{:classes => [
|
|
152
168
|
{:name=>"fee",
|
|
153
169
|
:params=>[
|
|
154
170
|
{:name=>"fee_a", :type=>"Integer", :default_source=>"1+1"}
|
|
155
171
|
]},
|
|
156
|
-
],
|
|
157
|
-
"#{code_dir}/fum.pp"=>[
|
|
172
|
+
]},
|
|
173
|
+
"#{code_dir}/fum.pp"=>{:classes => [
|
|
158
174
|
{:name=>"fum",
|
|
159
175
|
:params=>[
|
|
160
176
|
{:name=>"fum_a"}
|
|
161
177
|
]},
|
|
162
|
-
],
|
|
178
|
+
]},
|
|
163
179
|
} # end test env
|
|
164
180
|
}
|
|
165
181
|
)
|
|
@@ -177,8 +193,8 @@ describe "Puppet::InfoService" do
|
|
|
177
193
|
'test' => files_test
|
|
178
194
|
})
|
|
179
195
|
expect(result).to eq({
|
|
180
|
-
|
|
181
|
-
|
|
196
|
+
"production"=>{ "#{code_dir}/fum.pp"=>{:classes => [ {:name=>"fum", :params=>[ {:name=>"fum_a"}]}]}},
|
|
197
|
+
"test" =>{ "#{code_dir}/fum.pp"=>{:classes => [ {:name=>"fum", :params=>[ {:name=>"fum_a"}]}]}}
|
|
182
198
|
}
|
|
183
199
|
)
|
|
184
200
|
end
|
|
@@ -188,29 +204,64 @@ describe "Puppet::InfoService" do
|
|
|
188
204
|
result = Puppet::InfoService.classes_per_environment({'production' => files })
|
|
189
205
|
expect(result).to eq({
|
|
190
206
|
"production"=>{
|
|
191
|
-
"#{code_dir}/fee.pp"=>[
|
|
207
|
+
"#{code_dir}/fee.pp"=>{:classes => [
|
|
192
208
|
{:name=>"fee",
|
|
193
209
|
:params=>[
|
|
194
210
|
{:name=>"fee_a", :type=>"Integer", :default_source=>"1+1"}
|
|
195
211
|
]},
|
|
196
|
-
]} # end production env
|
|
212
|
+
]}} # end production env
|
|
197
213
|
})
|
|
198
214
|
end
|
|
199
215
|
|
|
216
|
+
it "produces source string for literals that are not pure json" do
|
|
217
|
+
files = ['json_unsafe.pp'].map {|f| File.join(code_dir, f) }
|
|
218
|
+
result = Puppet::InfoService.classes_per_environment({'production' => files })
|
|
219
|
+
expect(result).to eq({
|
|
220
|
+
"production"=>{
|
|
221
|
+
"#{code_dir}/json_unsafe.pp" => {:classes => [
|
|
222
|
+
{:name=>"json_unsafe",
|
|
223
|
+
:params => [
|
|
224
|
+
{:name => "arg1",
|
|
225
|
+
:default_source => "/.*/" },
|
|
226
|
+
{:name => "arg2",
|
|
227
|
+
:default_source => "default" },
|
|
228
|
+
{:name => "arg3",
|
|
229
|
+
:default_source => "{1 => 1}" }
|
|
230
|
+
]}
|
|
231
|
+
]}} # end production env
|
|
232
|
+
})
|
|
233
|
+
end
|
|
234
|
+
|
|
200
235
|
it "produces no type entry if type is not given" do
|
|
201
236
|
files = ['fum.pp'].map {|f| File.join(code_dir, f) }
|
|
202
237
|
result = Puppet::InfoService.classes_per_environment({'production' => files })
|
|
203
238
|
expect(result).to eq({
|
|
204
239
|
"production"=>{
|
|
205
|
-
"#{code_dir}/fum.pp"=>[
|
|
240
|
+
"#{code_dir}/fum.pp"=>{:classes => [
|
|
206
241
|
{:name=>"fum",
|
|
207
242
|
:params=>[
|
|
208
243
|
{:name=>"fum_a" }
|
|
209
244
|
]},
|
|
210
|
-
]} # end production env
|
|
245
|
+
]}} # end production env
|
|
211
246
|
})
|
|
212
247
|
end
|
|
213
248
|
|
|
249
|
+
it 'does not evaluate default expressions' do
|
|
250
|
+
files = ['intp.pp'].map {|f| File.join(code_dir, f) }
|
|
251
|
+
result = Puppet::InfoService.classes_per_environment({'production' => files })
|
|
252
|
+
expect(result).to eq({
|
|
253
|
+
'production' =>{
|
|
254
|
+
"#{code_dir}/intp.pp"=>{:classes => [
|
|
255
|
+
{:name=> 'intp',
|
|
256
|
+
:params=>[
|
|
257
|
+
{:name=> 'intp_a',
|
|
258
|
+
:type=> 'String',
|
|
259
|
+
:default_source=>'"default with interpolated $::os_family"'}
|
|
260
|
+
]},
|
|
261
|
+
]}} # end production env
|
|
262
|
+
})
|
|
263
|
+
end
|
|
264
|
+
|
|
214
265
|
it "produces error entry if file is broken" do
|
|
215
266
|
files = ['borked.pp'].map {|f| File.join(code_dir, f) }
|
|
216
267
|
result = Puppet::InfoService.classes_per_environment({'production' => files })
|
|
@@ -228,9 +279,20 @@ describe "Puppet::InfoService" do
|
|
|
228
279
|
result = Puppet::InfoService.classes_per_environment({'production' => files })
|
|
229
280
|
expect(result).to eq({
|
|
230
281
|
"production"=>{
|
|
231
|
-
|
|
232
|
-
|
|
282
|
+
"#{code_dir}/nothing.pp"=> {:classes => [] }
|
|
283
|
+
},
|
|
233
284
|
})
|
|
234
285
|
end
|
|
286
|
+
|
|
287
|
+
it "produces error when given a file that does not exist" do
|
|
288
|
+
files = ['the_tooth_fairy_does_not_exist.pp'].map {|f| File.join(code_dir, f) }
|
|
289
|
+
result = Puppet::InfoService.classes_per_environment({'production' => files })
|
|
290
|
+
expect(result).to eq({
|
|
291
|
+
"production"=>{
|
|
292
|
+
"#{code_dir}/the_tooth_fairy_does_not_exist.pp" => {:error => "The file #{code_dir}/the_tooth_fairy_does_not_exist.pp does not exist"}
|
|
293
|
+
},
|
|
294
|
+
})
|
|
295
|
+
end
|
|
296
|
+
|
|
235
297
|
end
|
|
236
298
|
end
|
data/spec/unit/module_spec.rb
CHANGED
|
@@ -347,6 +347,20 @@ describe Puppet::Module do
|
|
|
347
347
|
expect(mod.unmet_dependencies).to eq([])
|
|
348
348
|
end
|
|
349
349
|
|
|
350
|
+
it "should throw an error if invalid dependencies are specified" do
|
|
351
|
+
expect {
|
|
352
|
+
PuppetSpec::Modules.create(
|
|
353
|
+
'foobar',
|
|
354
|
+
@modpath,
|
|
355
|
+
:metadata => {
|
|
356
|
+
:dependencies => ""
|
|
357
|
+
}
|
|
358
|
+
)
|
|
359
|
+
}.to raise_error(
|
|
360
|
+
Puppet::Module::MissingMetadata,
|
|
361
|
+
/dependencies in the file metadata.json of the module foobar must be an array, not: ''/)
|
|
362
|
+
end
|
|
363
|
+
|
|
350
364
|
it "should only list unmet dependencies" do
|
|
351
365
|
env = Puppet::Node::Environment.create(:testing, [@modpath])
|
|
352
366
|
|
|
@@ -343,12 +343,12 @@ symlinkfile
|
|
|
343
343
|
f.puts({
|
|
344
344
|
"name" => "#{module_name}",
|
|
345
345
|
"version" => "#{version}",
|
|
346
|
-
"source" => "
|
|
346
|
+
"source" => "https://github.com/testing/#{module_name}",
|
|
347
347
|
"author" => "testing",
|
|
348
348
|
"license" => "Apache License Version 2.0",
|
|
349
349
|
"summary" => "Puppet testing module",
|
|
350
350
|
"description" => "This module can be used for basic testing",
|
|
351
|
-
"project_page" => "
|
|
351
|
+
"project_page" => "https://github.com/testing/#{module_name}"
|
|
352
352
|
}.to_json)
|
|
353
353
|
end
|
|
354
354
|
end
|
|
@@ -381,12 +381,12 @@ symlinkfile
|
|
|
381
381
|
f.puts({
|
|
382
382
|
"name" => "#{module_name}",
|
|
383
383
|
"version" => "#{version}",
|
|
384
|
-
"source" => "
|
|
384
|
+
"source" => "https://github.com/testing/#{module_name}",
|
|
385
385
|
"author" => "testing",
|
|
386
386
|
"license" => "Apache License Version 2.0",
|
|
387
387
|
"summary" => "Puppet testing module",
|
|
388
388
|
"description" => "This module can be used for basic testing",
|
|
389
|
-
"project_page" => "
|
|
389
|
+
"project_page" => "https://github.com/testing/#{module_name}",
|
|
390
390
|
"checksums" => {"README.md" => "deadbeef"}
|
|
391
391
|
}.to_json)
|
|
392
392
|
end
|
|
@@ -301,7 +301,7 @@ describe Puppet::Network::AuthStore::Declaration do
|
|
|
301
301
|
|
|
302
302
|
issue_7477 = !(IPAddr.new(ip) rescue false)
|
|
303
303
|
|
|
304
|
-
describe "on rubies with a fix for issue [7477](
|
|
304
|
+
describe "on rubies with a fix for issue [7477](https://goo.gl/Bb1LU)", :if => issue_7477
|
|
305
305
|
it "should match the specified IP" do
|
|
306
306
|
expect(declaration).to be_match('www.testsite.org',ip)
|
|
307
307
|
end
|
|
@@ -163,6 +163,7 @@ describe Puppet::Network::HTTP::Connection do
|
|
|
163
163
|
|
|
164
164
|
Net::HTTP.any_instance.stubs(:start)
|
|
165
165
|
Net::HTTP.any_instance.stubs(:request).returns(httpok)
|
|
166
|
+
Puppet::Network::HTTP::Pool.any_instance.stubs(:setsockopts)
|
|
166
167
|
|
|
167
168
|
connection.get('request')
|
|
168
169
|
end
|
|
@@ -109,6 +109,31 @@ describe Puppet::Network::HTTP::Pool do
|
|
|
109
109
|
end rescue nil
|
|
110
110
|
end
|
|
111
111
|
|
|
112
|
+
it 'sets keepalive bit on network socket' do
|
|
113
|
+
pool = create_pool
|
|
114
|
+
s = Socket.new(Socket::PF_INET, Socket::SOCK_STREAM)
|
|
115
|
+
pool.setsockopts(Net::BufferedIO.new(s))
|
|
116
|
+
|
|
117
|
+
# On windows, Socket.getsockopt() doesn't return exactly the same data
|
|
118
|
+
# as an equivalent Socket::Option.new() statement, so we strip off the
|
|
119
|
+
# unrelevant bits only on this platform.
|
|
120
|
+
#
|
|
121
|
+
# To make sure we're not voiding the test case by doing this, we check
|
|
122
|
+
# both with and without the keepalive bit set.
|
|
123
|
+
#
|
|
124
|
+
# This workaround can be removed once all the ruby versions we care about
|
|
125
|
+
# have the patch from https://bugs.ruby-lang.org/issues/11958 applied.
|
|
126
|
+
#
|
|
127
|
+
if Puppet::Util::Platform.windows?
|
|
128
|
+
keepalive = Socket::Option.bool(:INET, :SOCKET, :KEEPALIVE, true).data[0]
|
|
129
|
+
nokeepalive = Socket::Option.bool(:INET, :SOCKET, :KEEPALIVE, false).data[0]
|
|
130
|
+
expect(s.getsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE).data).to eq(keepalive)
|
|
131
|
+
expect(s.getsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE).data).to_not eq(nokeepalive)
|
|
132
|
+
else
|
|
133
|
+
expect(s.getsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE).bool).to eq(true)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
112
137
|
context 'when releasing connections' do
|
|
113
138
|
it 'releases HTTP connections' do
|
|
114
139
|
conn = create_connection(site)
|
|
@@ -150,6 +175,7 @@ describe Puppet::Network::HTTP::Pool do
|
|
|
150
175
|
conn = create_connection(site)
|
|
151
176
|
pool = create_pool
|
|
152
177
|
pool.factory.expects(:create_connection).with(site).returns(conn)
|
|
178
|
+
pool.expects(:setsockopts)
|
|
153
179
|
|
|
154
180
|
expect(pool.borrow(site, verify)).to eq(conn)
|
|
155
181
|
end
|
|
@@ -169,6 +195,7 @@ describe Puppet::Network::HTTP::Pool do
|
|
|
169
195
|
|
|
170
196
|
conn = create_connection(site)
|
|
171
197
|
pool.factory.expects(:create_connection).with(site).returns(conn)
|
|
198
|
+
pool.expects(:setsockopts)
|
|
172
199
|
|
|
173
200
|
expect(pool.borrow(site, verify)).to eq(conn)
|
|
174
201
|
end
|
|
@@ -179,6 +206,7 @@ describe Puppet::Network::HTTP::Pool do
|
|
|
179
206
|
|
|
180
207
|
pool = create_pool
|
|
181
208
|
pool.factory.expects(:create_connection).with(site).returns(conn)
|
|
209
|
+
pool.expects(:setsockopts)
|
|
182
210
|
|
|
183
211
|
expect(pool.borrow(site, verify)).to eq(conn)
|
|
184
212
|
end
|
|
@@ -205,6 +233,7 @@ describe Puppet::Network::HTTP::Pool do
|
|
|
205
233
|
|
|
206
234
|
pool = create_pool_with_expired_connections(site, conn)
|
|
207
235
|
pool.factory.expects(:create_connection => stub('conn', :start => nil))
|
|
236
|
+
pool.expects(:setsockopts)
|
|
208
237
|
|
|
209
238
|
pool.borrow(site, verify)
|
|
210
239
|
end
|
|
@@ -217,6 +246,7 @@ describe Puppet::Network::HTTP::Pool do
|
|
|
217
246
|
|
|
218
247
|
pool = create_pool_with_expired_connections(site, conn)
|
|
219
248
|
pool.factory.expects(:create_connection => stub('open_conn', :start => nil))
|
|
249
|
+
pool.expects(:setsockopts)
|
|
220
250
|
|
|
221
251
|
pool.borrow(site, verify)
|
|
222
252
|
end
|
data/spec/unit/node_spec.rb
CHANGED
|
@@ -86,6 +86,14 @@ describe Puppet::Node do
|
|
|
86
86
|
)
|
|
87
87
|
expect(node.to_pson).to validate_against('api/schemas/node.json')
|
|
88
88
|
end
|
|
89
|
+
|
|
90
|
+
it "should allow its environment parameter to be set by attribute after initialization" do
|
|
91
|
+
node = Puppet::Node.new("foo", { :parameters => { 'environment' => :foo } })
|
|
92
|
+
node.environment_name = :foo
|
|
93
|
+
node.environment = :bar
|
|
94
|
+
expect(node.environment_name).to eq(:bar)
|
|
95
|
+
expect(node.parameters['environment']).to eq('bar')
|
|
96
|
+
end
|
|
89
97
|
end
|
|
90
98
|
|
|
91
99
|
describe "when serializing using yaml" do
|
|
@@ -194,24 +194,6 @@ describe Puppet::Parser::Compiler do
|
|
|
194
194
|
expect(sanitized.trusted_data).to_not eq({ :a => 42 })
|
|
195
195
|
end
|
|
196
196
|
|
|
197
|
-
it "should report 'trusted' parameters as trusted_data but as inauthentic if running as non-root" do
|
|
198
|
-
node = Puppet::Node.new("mynode")
|
|
199
|
-
node.parameters['trusted'] = { 'authenticated' => true,
|
|
200
|
-
'certname' => 'foo',
|
|
201
|
-
'extensions' => 'things' }
|
|
202
|
-
|
|
203
|
-
Puppet.features.stubs(:root?).returns(false)
|
|
204
|
-
|
|
205
|
-
Puppet.ignore(:trusted_information)
|
|
206
|
-
compiler = Puppet::Parser::Compiler.new(node)
|
|
207
|
-
Puppet.restore(:trusted_information)
|
|
208
|
-
|
|
209
|
-
sanitized = compiler.node
|
|
210
|
-
expect(sanitized.trusted_data).to eq({ 'authenticated' => false,
|
|
211
|
-
'certname' => 'foo',
|
|
212
|
-
'extensions' => 'things' })
|
|
213
|
-
end
|
|
214
|
-
|
|
215
197
|
it "should prefer trusted_data in the node above other plausible sources" do
|
|
216
198
|
node = Puppet::Node.new("mynode")
|
|
217
199
|
node.trusted_data = { 'authenticated' => true,
|
|
@@ -276,6 +258,22 @@ describe Puppet::Parser::Compiler do
|
|
|
276
258
|
expect(@compiler.topscope['c']).to eq("d")
|
|
277
259
|
end
|
|
278
260
|
|
|
261
|
+
it "should set node parameters thar are of Symbol type as String variables in the top scope" do
|
|
262
|
+
params = {"a" => :b}
|
|
263
|
+
@node.stubs(:parameters).returns(params)
|
|
264
|
+
compile_stub(:set_node_parameters)
|
|
265
|
+
@compiler.compile
|
|
266
|
+
expect(@compiler.topscope['a']).to eq("b")
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
it "should set the node's environment as a string variable in top scope" do
|
|
270
|
+
compile_stub(:set_node_parameters)
|
|
271
|
+
@node.merge({'wat' => 'this is how the sausage is made'})
|
|
272
|
+
@compiler.compile
|
|
273
|
+
expect(@compiler.topscope['environment']).to eq("testing")
|
|
274
|
+
expect(@compiler.topscope['wat']).to eq('this is how the sausage is made')
|
|
275
|
+
end
|
|
276
|
+
|
|
279
277
|
it "should set the client and server versions on the catalog" do
|
|
280
278
|
params = {"clientversion" => "2", "serverversion" => "3"}
|
|
281
279
|
@node.stubs(:parameters).returns(params)
|
|
@@ -158,7 +158,7 @@ describe Puppet::Parser::Scope do
|
|
|
158
158
|
expect { @scope[:foo] = 12 }.to raise_error(Puppet::ParseError, /Scope variable name .* not a string/)
|
|
159
159
|
end
|
|
160
160
|
|
|
161
|
-
it "should return nil for unset variables" do
|
|
161
|
+
it "should return nil for unset variables when --strict variables is not in effect" do
|
|
162
162
|
expect(@scope["var"]).to be_nil
|
|
163
163
|
end
|
|
164
164
|
|
|
@@ -208,6 +208,26 @@ describe Puppet::Parser::Scope do
|
|
|
208
208
|
expect(@scope).not_to be_include("var")
|
|
209
209
|
end
|
|
210
210
|
|
|
211
|
+
it "warns and return nil for non found unqualified variable" do
|
|
212
|
+
Puppet.expects(:warn_once)
|
|
213
|
+
expect(@scope["santa_clause"]).to be_nil
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
it "warns once for a non found variable" do
|
|
217
|
+
Puppet.expects(:warning).once
|
|
218
|
+
expect([@scope["santa_claus"],@scope["santa_claus"]]).to eq([nil, nil])
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
it "warns and return nil for non found qualified variable" do
|
|
222
|
+
Puppet.expects(:warn_once)
|
|
223
|
+
expect(@scope["north_pole::santa_clause"]).to be_nil
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
it "does not warn when a numeric variable is missing - they always exist" do
|
|
227
|
+
Puppet.expects(:warn_once).never
|
|
228
|
+
expect(@scope["1"]).to be_nil
|
|
229
|
+
end
|
|
230
|
+
|
|
211
231
|
describe "and the variable is qualified" do
|
|
212
232
|
before :each do
|
|
213
233
|
@known_resource_types = @scope.known_resource_types
|
|
@@ -266,17 +286,16 @@ describe Puppet::Parser::Scope do
|
|
|
266
286
|
|
|
267
287
|
it "should warn and return nil for qualified variables whose classes have not been evaluated" do
|
|
268
288
|
klass = newclass("other::deep::klass")
|
|
269
|
-
|
|
289
|
+
Puppet.expects(:warn_once)
|
|
270
290
|
expect(@scope["other::deep::klass::var"]).to be_nil
|
|
271
291
|
end
|
|
272
292
|
|
|
273
293
|
it "should warn and return nil for qualified variables whose classes do not exist" do
|
|
274
|
-
|
|
294
|
+
Puppet.expects(:warn_once)
|
|
275
295
|
expect(@scope["other::deep::klass::var"]).to be_nil
|
|
276
296
|
end
|
|
277
297
|
|
|
278
298
|
it "should return nil when asked for a non-string qualified variable from a class that does not exist" do
|
|
279
|
-
@scope.stubs(:warning)
|
|
280
299
|
expect(@scope["other::deep::klass::var"]).to be_nil
|
|
281
300
|
end
|
|
282
301
|
|
|
@@ -489,17 +508,15 @@ describe Puppet::Parser::Scope do
|
|
|
489
508
|
expect(@scope.include?("1")).to be_falsey
|
|
490
509
|
end
|
|
491
510
|
|
|
492
|
-
describe "when
|
|
511
|
+
describe "when using a guarded scope" do
|
|
493
512
|
it "should remove ephemeral scopes up to this level" do
|
|
494
513
|
@scope.set_match_data({1 => :value1})
|
|
495
514
|
@scope.new_ephemeral
|
|
496
515
|
@scope.set_match_data({1 => :value2})
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
@scope.unset_ephemeral_var(level)
|
|
502
|
-
|
|
516
|
+
@scope.with_guarded_scope do
|
|
517
|
+
@scope.new_ephemeral
|
|
518
|
+
@scope.set_match_data({1 => :value3})
|
|
519
|
+
end
|
|
503
520
|
expect(@scope["1"]).to eq(:value2)
|
|
504
521
|
end
|
|
505
522
|
end
|
|
@@ -120,12 +120,12 @@ describe 'Puppet::Pops::Evaluator::EvaluatorImpl/AccessOperator' do
|
|
|
120
120
|
|
|
121
121
|
it 'produces an Integer[1]' do
|
|
122
122
|
expr = fqr('Integer')[1]
|
|
123
|
-
expect(evaluate(expr)).to eql(range(1
|
|
123
|
+
expect(evaluate(expr)).to eql(range(1,:default))
|
|
124
124
|
end
|
|
125
125
|
|
|
126
|
-
it '
|
|
126
|
+
it 'gives an error for Integer[from, <from]' do
|
|
127
127
|
expr = fqr('Integer')[1,0]
|
|
128
|
-
expect
|
|
128
|
+
expect{evaluate(expr)}.to raise_error(/'from' must be less or equal to 'to'/)
|
|
129
129
|
end
|
|
130
130
|
|
|
131
131
|
it 'produces an error for Integer[] if there are more than 2 keys' do
|
|
@@ -146,17 +146,17 @@ describe 'Puppet::Pops::Evaluator::EvaluatorImpl/AccessOperator' do
|
|
|
146
146
|
|
|
147
147
|
it 'produces a Float[1.0]' do
|
|
148
148
|
expr = fqr('Float')[1.0]
|
|
149
|
-
expect(evaluate(expr)).to eql(float_range(1.0
|
|
149
|
+
expect(evaluate(expr)).to eql(float_range(1.0,:default))
|
|
150
150
|
end
|
|
151
151
|
|
|
152
152
|
it 'produces a Float[1]' do
|
|
153
153
|
expr = fqr('Float')[1]
|
|
154
|
-
expect(evaluate(expr)).to eql(float_range(1.0
|
|
154
|
+
expect(evaluate(expr)).to eql(float_range(1.0,:default))
|
|
155
155
|
end
|
|
156
156
|
|
|
157
|
-
it '
|
|
157
|
+
it 'gives an error for Float[from, <from]' do
|
|
158
158
|
expr = fqr('Float')[1.0,0.0]
|
|
159
|
-
expect
|
|
159
|
+
expect{evaluate(expr)}.to raise_error(/'from' must be less or equal to 'to'/)
|
|
160
160
|
end
|
|
161
161
|
|
|
162
162
|
it 'produces an error for Float[] if there are more than 2 keys' do
|
|
@@ -86,6 +86,9 @@ describe 'Puppet::Pops::Evaluator::EvaluatorImpl' do
|
|
|
86
86
|
it "'1.0' < 1.1 == true" do
|
|
87
87
|
expect{evaluate(literal('1.0') < literal(1.1))}.to raise_error(/String < Float/)
|
|
88
88
|
end
|
|
89
|
+
it "undef < 1.1 == true" do
|
|
90
|
+
expect{evaluate(literal(nil) < literal(1.1))}.to raise_error(/Undef Value < Float/)
|
|
91
|
+
end
|
|
89
92
|
end
|
|
90
93
|
|
|
91
94
|
context "of regular expressions" do
|