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
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#! /usr/bin/env ruby
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
require 'puppet'
|
|
4
|
+
require 'puppet/data_providers/hiera_config'
|
|
5
|
+
require 'puppet/data_providers/hiera_interpolate'
|
|
6
|
+
|
|
7
|
+
describe "Puppet::DataProviders::HieraInterpolate" do
|
|
8
|
+
|
|
9
|
+
let(:interpolator) { Class.new { include Puppet::DataProviders::HieraInterpolate }.new }
|
|
10
|
+
let(:scope) { {} }
|
|
11
|
+
let(:lookup_invocation) { Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, nil) }
|
|
12
|
+
|
|
13
|
+
context 'when interpolating nested data' do
|
|
14
|
+
let(:nested_hash) { { 'a' => { 'aa' => "%{alias('aaa')}" } } }
|
|
15
|
+
|
|
16
|
+
it 'produces a nested hash with arrays from nested aliases with hashes and arrays' do
|
|
17
|
+
Puppet::Pops::Lookup.expects(:lookup).with('aaa', nil, '', true, nil, lookup_invocation).returns({ 'b' => { 'bb' => "%{alias('bbb')}" } })
|
|
18
|
+
Puppet::Pops::Lookup.expects(:lookup).with('bbb', nil, '', true, nil, lookup_invocation).returns([ "%{alias('ccc')}" ])
|
|
19
|
+
Puppet::Pops::Lookup.expects(:lookup).with('ccc', nil, '', true, nil, lookup_invocation).returns('text')
|
|
20
|
+
expect(interpolator.interpolate(nested_hash, lookup_invocation, true)).to eq('a'=>{'aa'=>{'b'=>{'bb'=>['text']}}})
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
context 'when there are empty interpolations %{} in data' do
|
|
25
|
+
|
|
26
|
+
let(:empty_interpolation) {'clown%{}shoe'}
|
|
27
|
+
let(:empty_interpolation_as_escape) {'clown%%{}{shoe}s'}
|
|
28
|
+
let(:only_empty_interpolation) {'%{}'}
|
|
29
|
+
let(:empty_namespace) {'%{::}'}
|
|
30
|
+
let(:whitespace1) {'%{ :: }'}
|
|
31
|
+
let(:whitespace2) {'%{ }'}
|
|
32
|
+
|
|
33
|
+
it 'should produce an empty string for the interpolation' do
|
|
34
|
+
expect(interpolator.interpolate(empty_interpolation, lookup_invocation, true)).to eq('clownshoe')
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'the empty interpolation can be used as an escape mechanism' do
|
|
38
|
+
expect(interpolator.interpolate(empty_interpolation_as_escape, lookup_invocation, true)).to eq('clown%{shoe}s')
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'the value can consist of only an empty escape' do
|
|
42
|
+
expect(interpolator.interpolate(only_empty_interpolation, lookup_invocation, true)).to eq('')
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'the value can consist of an empty namespace %{::}' do
|
|
46
|
+
expect(interpolator.interpolate(empty_namespace, lookup_invocation, true)).to eq('')
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it 'the value can consist of whitespace %{ :: }' do
|
|
50
|
+
expect(interpolator.interpolate(whitespace1, lookup_invocation, true)).to eq('')
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it 'the value can consist of whitespace %{ }' do
|
|
54
|
+
expect(interpolator.interpolate(whitespace2, lookup_invocation, true)).to eq('')
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
data/spec/unit/defaults_spec.rb
CHANGED
|
@@ -71,4 +71,19 @@ describe "Defaults" do
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
end
|
|
74
|
+
|
|
75
|
+
describe 'supported_checksum_types' do
|
|
76
|
+
it 'should default to md5,sha256' do
|
|
77
|
+
expect(Puppet.settings[:supported_checksum_types]).to eq(['md5', 'sha256'])
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it 'should raise an error on an unsupported checksum type' do
|
|
81
|
+
expect { Puppet.settings[:supported_checksum_types] = ['md5', 'foo'] }.to raise_exception ArgumentError, 'Unrecognized checksum types ["foo"] are not supported. Valid values are ["md5", "md5lite", "sha256", "sha256lite", "sha1", "sha1lite", "mtime", "ctime"].'
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it 'should not raise an error on setting a valid list of checksum types' do
|
|
85
|
+
Puppet.settings[:supported_checksum_types] = ['sha256', 'md5lite', 'mtime']
|
|
86
|
+
expect(Puppet.settings[:supported_checksum_types]).to eq(['sha256', 'md5lite', 'mtime'])
|
|
87
|
+
end
|
|
88
|
+
end
|
|
74
89
|
end
|
|
@@ -121,6 +121,7 @@ describe Puppet::Environments do
|
|
|
121
121
|
manifest=#{manifestdir}
|
|
122
122
|
modulepath=#{modulepath.join(File::PATH_SEPARATOR)}
|
|
123
123
|
config_version=/some/script
|
|
124
|
+
static_catalogs=false
|
|
124
125
|
EOF
|
|
125
126
|
end
|
|
126
127
|
|
|
@@ -156,6 +157,17 @@ config_version=/some/script
|
|
|
156
157
|
end
|
|
157
158
|
end
|
|
158
159
|
|
|
160
|
+
it "reads static_catalogs setting" do
|
|
161
|
+
loader_from(:filesystem => [envdir, manifestdir, modulepath].flatten,
|
|
162
|
+
:directory => envdir) do |loader|
|
|
163
|
+
expect(loader.get("env1")).to environment(:env1).
|
|
164
|
+
with_manifest(manifestdir.path).
|
|
165
|
+
with_modulepath(modulepath.map(&:path)).
|
|
166
|
+
with_config_version(File.expand_path('/some/script')).
|
|
167
|
+
with_static_catalogs(false)
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
159
171
|
it "accepts an empty environment.conf without warning" do
|
|
160
172
|
content = nil
|
|
161
173
|
|
|
@@ -176,7 +188,8 @@ config_version=/some/script
|
|
|
176
188
|
expect(loader.get("env1")).to environment(:env1).
|
|
177
189
|
with_manifest("#{FS.path_string(envdir)}/env1/manifests").
|
|
178
190
|
with_modulepath(["#{FS.path_string(envdir)}/env1/modules", global_path_location]).
|
|
179
|
-
with_config_version(nil)
|
|
191
|
+
with_config_version(nil).
|
|
192
|
+
with_static_catalogs(true)
|
|
180
193
|
end
|
|
181
194
|
|
|
182
195
|
expect(@logs).to be_empty
|
|
@@ -386,6 +399,7 @@ config_version=$vardir/random/scripts
|
|
|
386
399
|
expect(conf.modulepath).to eq('')
|
|
387
400
|
expect(conf.manifest).to eq(:no_manifest)
|
|
388
401
|
expect(conf.config_version).to be_nil
|
|
402
|
+
expect(conf.static_catalogs).to eq(true)
|
|
389
403
|
end
|
|
390
404
|
|
|
391
405
|
it "returns nil if you request a configuration from an env that doesn't exist" do
|
|
@@ -547,7 +561,8 @@ config_version=$vardir/random/scripts
|
|
|
547
561
|
(!@manifest || @manifest == env.manifest) &&
|
|
548
562
|
(!@modulepath || @modulepath == env.modulepath) &&
|
|
549
563
|
(!@full_modulepath || @full_modulepath == env.full_modulepath) &&
|
|
550
|
-
(!@config_version || @config_version == env.config_version)
|
|
564
|
+
(!@config_version || @config_version == env.config_version) &&
|
|
565
|
+
(!@static_catalogs || @static_catalogs == env.static_catalogs?)
|
|
551
566
|
end
|
|
552
567
|
|
|
553
568
|
chain :with_manifest do |manifest|
|
|
@@ -566,16 +581,21 @@ config_version=$vardir/random/scripts
|
|
|
566
581
|
@config_version = config_version
|
|
567
582
|
end
|
|
568
583
|
|
|
584
|
+
chain :with_static_catalogs do |static_catalogs|
|
|
585
|
+
@static_catalogs = static_catalogs
|
|
586
|
+
end
|
|
587
|
+
|
|
569
588
|
description do
|
|
570
589
|
"environment #{expected}" +
|
|
571
590
|
(@manifest ? " with manifest #{@manifest}" : "") +
|
|
572
591
|
(@modulepath ? " with modulepath [#{@modulepath.join(', ')}]" : "") +
|
|
573
592
|
(@full_modulepath ? " with full_modulepath [#{@full_modulepath.join(', ')}]" : "") +
|
|
574
|
-
(@config_version ? " with config_version #{@config_version}" : "")
|
|
593
|
+
(@config_version ? " with config_version #{@config_version}" : "") +
|
|
594
|
+
(@static_catalogs ? " with static_catalogs #{@static_catalogs}" : "")
|
|
575
595
|
end
|
|
576
596
|
|
|
577
597
|
failure_message do |env|
|
|
578
|
-
"expected <#{env.name}: modulepath = [#{env.full_modulepath.join(', ')}], manifest = #{env.manifest}, config_version = #{env.config_version}
|
|
598
|
+
"expected <#{env.name}: modulepath = [#{env.full_modulepath.join(', ')}], manifest = #{env.manifest}, config_version = #{env.config_version}>, static_catalogs = #{env.static_catalogs?} to be #{description}"
|
|
579
599
|
end
|
|
580
600
|
end
|
|
581
601
|
|
|
@@ -150,7 +150,7 @@ describe Puppet::Face[:epp, :current] do
|
|
|
150
150
|
dir = dir_containing('templates', { template_name => "<% 1 2 3 %>" })
|
|
151
151
|
template = File.join(dir, template_name)
|
|
152
152
|
expect(eppface.dump(template, :validate => true)).to eq("")
|
|
153
|
-
expect(@logs.join).to match(/This Literal Integer has no effect
|
|
153
|
+
expect(@logs.join).to match(/This Literal Integer has no effect.*\/template1.epp:1:4/)
|
|
154
154
|
end
|
|
155
155
|
|
|
156
156
|
it "validated content by default" do
|
|
@@ -158,7 +158,7 @@ describe Puppet::Face[:epp, :current] do
|
|
|
158
158
|
dir = dir_containing('templates', { template_name => "<% 1 2 3 %>" })
|
|
159
159
|
template = File.join(dir, template_name)
|
|
160
160
|
expect(eppface.dump(template)).to eq("")
|
|
161
|
-
expect(@logs.join).to match(/This Literal Integer has no effect
|
|
161
|
+
expect(@logs.join).to match(/This Literal Integer has no effect.*\/template1.epp:1:4/)
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
it "informs the user of files that don't exist" do
|
|
@@ -30,9 +30,25 @@ describe Puppet::Face[:parser, :current] do
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
it "runs error free when there are no validation errors" do
|
|
33
|
-
|
|
33
|
+
expect {
|
|
34
|
+
manifest = file_containing('site.pp', "notify { valid: }")
|
|
35
|
+
parser.validate(manifest)
|
|
36
|
+
}.to_not raise_error
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "runs error free when there is a puppet function in manifest being validated" do
|
|
40
|
+
expect {
|
|
41
|
+
manifest = file_containing('site.pp', "function valid() { 'valid' } notify{ valid(): }")
|
|
42
|
+
parser.validate(manifest)
|
|
43
|
+
}.to_not raise_error
|
|
44
|
+
end
|
|
34
45
|
|
|
35
|
-
|
|
46
|
+
it "runs error free when there is a type alias in a manifest that requires type resolution" do
|
|
47
|
+
expect {
|
|
48
|
+
manifest = file_containing('site.pp',
|
|
49
|
+
"type A = String; type B = Array[A]; function valid(B $x) { $x } notify{ valid([valid]): }")
|
|
50
|
+
parser.validate(manifest)
|
|
51
|
+
}.to_not raise_error
|
|
36
52
|
end
|
|
37
53
|
|
|
38
54
|
it "reports missing files" do
|
|
@@ -98,6 +114,31 @@ describe Puppet::Face[:parser, :current] do
|
|
|
98
114
|
expect(@logs[0].message).to eq("Syntax error at end of file")
|
|
99
115
|
expect(@logs[0].level).to eq(:err)
|
|
100
116
|
end
|
|
117
|
+
|
|
118
|
+
it "logs an error if the input begins with a UTF-8 BOM (Byte Order Mark)" do
|
|
119
|
+
utf8_bom_manifest = file_containing('utf8_bom.pp', "\uFEFFnotice hi")
|
|
120
|
+
|
|
121
|
+
output = parser.dump(utf8_bom_manifest)
|
|
122
|
+
|
|
123
|
+
expect(output).to eq("")
|
|
124
|
+
expect(@logs[1].message).to eq("Illegal UTF-8 Byte Order mark at beginning of input: [EF BB BF] - remove these from the puppet source")
|
|
125
|
+
expect(@logs[1].level).to eq(:err)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it "runs error free when there is a puppet function in manifest being dumped" do
|
|
129
|
+
expect {
|
|
130
|
+
manifest = file_containing('site.pp', "function valid() { 'valid' } notify{ valid(): }")
|
|
131
|
+
parser.dump(manifest)
|
|
132
|
+
}.to_not raise_error
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it "runs error free when there is a type alias in a manifest that requires type resolution" do
|
|
136
|
+
expect {
|
|
137
|
+
manifest = file_containing('site.pp',
|
|
138
|
+
"type A = String; type B = Array[A]; function valid(B $x) { $x } notify{ valid([valid]): }")
|
|
139
|
+
parser.dump(manifest)
|
|
140
|
+
}.to_not raise_error
|
|
141
|
+
end
|
|
101
142
|
end
|
|
102
143
|
|
|
103
144
|
def from_an_interactive_terminal
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#! /usr/bin/env ruby
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
require 'puppet/file_serving/http_metadata'
|
|
4
|
+
require 'matchers/json'
|
|
5
|
+
require 'net/http'
|
|
6
|
+
require 'digest'
|
|
7
|
+
|
|
8
|
+
describe Puppet::FileServing::HttpMetadata do
|
|
9
|
+
let(:foobar) { File.expand_path('/foo/bar') }
|
|
10
|
+
|
|
11
|
+
it "should be a subclass of Metadata" do
|
|
12
|
+
expect( described_class.superclass ).to be Puppet::FileServing::Metadata
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "when initializing" do
|
|
16
|
+
let(:http_response) { Net::HTTPOK.new(1.0, '200', 'OK') }
|
|
17
|
+
|
|
18
|
+
it "can be instantiated from a HTTP response object" do
|
|
19
|
+
expect( described_class.new(http_response) ).to_not be_nil
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "represents a plain file" do
|
|
23
|
+
expect( described_class.new(http_response).ftype ).to eq 'file'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "carries no information on owner, group and mode" do
|
|
27
|
+
metadata = described_class.new(http_response)
|
|
28
|
+
expect( metadata.owner ).to be_nil
|
|
29
|
+
expect( metadata.group ).to be_nil
|
|
30
|
+
expect( metadata.mode ).to be_nil
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context "with no Last-Modified or Content-MD5 header from the server" do
|
|
34
|
+
before do
|
|
35
|
+
http_response.stubs(:[]).with('last-modified').returns nil
|
|
36
|
+
http_response.stubs(:[]).with('content-md5').returns nil
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should use :mtime as the checksum type, based on current time" do
|
|
40
|
+
# Stringifying Time.now does some rounding; do so here so we don't end up with a time
|
|
41
|
+
# that's greater than the stringified version returned by collect.
|
|
42
|
+
time = Time.parse(Time.now.to_s)
|
|
43
|
+
metadata = described_class.new(http_response)
|
|
44
|
+
metadata.collect
|
|
45
|
+
expect( metadata.checksum_type ).to eq :mtime
|
|
46
|
+
checksum = metadata.checksum
|
|
47
|
+
expect( checksum[0...7] ).to eq '{mtime}'
|
|
48
|
+
expect( Time.parse(checksum[7..-1]) ).to be >= time
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
context "with a Last-Modified header from the server" do
|
|
53
|
+
let(:time) { Time.now.utc }
|
|
54
|
+
before do
|
|
55
|
+
http_response.stubs(:[]).with('content-md5').returns nil
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should use :mtime as the checksum type, based on Last-Modified" do
|
|
59
|
+
# HTTP uses "GMT" not "UTC"
|
|
60
|
+
http_response.stubs(:[]).with('last-modified').returns(time.strftime("%a, %d %b %Y %T GMT"))
|
|
61
|
+
metadata = described_class.new(http_response)
|
|
62
|
+
metadata.collect
|
|
63
|
+
expect( metadata.checksum_type ).to eq :mtime
|
|
64
|
+
expect( metadata.checksum ).to eq "{mtime}#{time.to_time}"
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
context "with a Content-MD5 header being received" do
|
|
69
|
+
let(:input) { Time.now.to_s }
|
|
70
|
+
let(:base64) { Digest::MD5.new.base64digest input }
|
|
71
|
+
let(:hex) { Digest::MD5.new.hexdigest input }
|
|
72
|
+
before do
|
|
73
|
+
http_response.stubs(:[]).with('last-modified').returns nil
|
|
74
|
+
http_response.stubs(:[]).with('content-md5').returns base64
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "should use the md5 checksum" do
|
|
78
|
+
metadata = described_class.new(http_response)
|
|
79
|
+
metadata.collect
|
|
80
|
+
expect( metadata.checksum_type ).to eq :md5
|
|
81
|
+
expect( metadata.checksum ).to eq "{md5}#{hex}"
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -76,6 +76,45 @@ describe Puppet::FileServing::Metadata do
|
|
|
76
76
|
it "should pass the checksum in the hash verbatim as the checksum's value" do
|
|
77
77
|
expect(metadata.to_data_hash['checksum']['value']).to eq(metadata.checksum)
|
|
78
78
|
end
|
|
79
|
+
|
|
80
|
+
describe "when a source and content_uri are set" do
|
|
81
|
+
before do
|
|
82
|
+
metadata.source = '/foo'
|
|
83
|
+
metadata.content_uri = 'puppet:///foo'
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "the data should include the path, relative_path, links, owner, group, mode, checksum, type, destination, source, and content_uri" do
|
|
87
|
+
expect(metadata.to_data_hash.keys.sort).to eq(%w{ path relative_path links owner group mode checksum type destination source content_uri }.sort)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "should pass the source in the hash verbatim" do
|
|
91
|
+
expect(metadata.to_data_hash['source']).to eq(metadata.source)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it "should pass the content_uri in the hash verbatim" do
|
|
95
|
+
expect(metadata.to_data_hash['content_uri']).to eq(metadata.content_uri)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
describe "when assigning a content_uri" do
|
|
100
|
+
it "should fail if uri is invalid" do
|
|
101
|
+
expect { metadata.content_uri = '://' }.to raise_error ArgumentError, /Could not understand URI :\/\//
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "should accept characters that require percent-encoding" do
|
|
105
|
+
uri = 'puppet:///modules/foo/files/ %:?#[]@!$&\'()*+,;='
|
|
106
|
+
metadata.content_uri = uri
|
|
107
|
+
expect(metadata.content_uri).to eq(uri)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it "should fail if uri is opaque" do
|
|
111
|
+
expect { metadata.content_uri = 'scheme:www.example.com' }.to raise_error ArgumentError, "Cannot use opaque URLs 'scheme:www.example.com'"
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it "should fail if uri is not a puppet scheme" do
|
|
115
|
+
expect { metadata.content_uri = 'http://www.example.com' }.to raise_error ArgumentError, "Must use URLs of type puppet as content URI"
|
|
116
|
+
end
|
|
117
|
+
end
|
|
79
118
|
end
|
|
80
119
|
end
|
|
81
120
|
|
|
@@ -135,6 +174,17 @@ describe Puppet::FileServing::Metadata, :uses_checksums => true do
|
|
|
135
174
|
it "should validate against the schema" do
|
|
136
175
|
expect(metadata.to_pson).to validate_against('api/schemas/file_metadata.json')
|
|
137
176
|
end
|
|
177
|
+
|
|
178
|
+
describe "when a source and content_uri are set" do
|
|
179
|
+
before do
|
|
180
|
+
metadata.source = '/foo'
|
|
181
|
+
metadata.content_uri = 'puppet:///foo'
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
it "should validate against the schema" do
|
|
185
|
+
expect(metadata.to_pson).to validate_against('api/schemas/file_metadata.json')
|
|
186
|
+
end
|
|
187
|
+
end
|
|
138
188
|
end
|
|
139
189
|
|
|
140
190
|
describe "when managing directories" do
|
|
@@ -22,8 +22,18 @@ describe Puppet::FileServing::TerminusSelector do
|
|
|
22
22
|
expect(@object.select(@request)).to eq(:file)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
it "should
|
|
26
|
-
@request.
|
|
25
|
+
it "should return :http if the URI protocol is set to 'http'" do
|
|
26
|
+
@request.expects(:protocol).returns "http"
|
|
27
|
+
expect(@object.select(@request)).to eq :http
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should return :http if the URI protocol is set to 'https'" do
|
|
31
|
+
@request.expects(:protocol).returns "https"
|
|
32
|
+
expect(@object.select(@request)).to eq :http
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should fail when a protocol other than :puppet, :http(s) or :file is used" do
|
|
36
|
+
@request.stubs(:protocol).returns "ftp"
|
|
27
37
|
expect { @object.select(@request) }.to raise_error(ArgumentError)
|
|
28
38
|
end
|
|
29
39
|
|
|
@@ -134,6 +134,32 @@ describe "Puppet::FileSystem" do
|
|
|
134
134
|
end
|
|
135
135
|
end
|
|
136
136
|
|
|
137
|
+
context "read should allow an encoding to be specified" do
|
|
138
|
+
# First line of Rune version of Rune poem at http://www.columbia.edu/~fdc/utf8/
|
|
139
|
+
# characters chosen since they will not parse on Windows with codepage 437 or 1252
|
|
140
|
+
# Section 3.2.1.3 of Ruby spec guarantees that \u strings are encoded as UTF-8
|
|
141
|
+
let (:rune_utf8) { "\u16A0\u16C7\u16BB" } # 'ᚠᛇᚻ'
|
|
142
|
+
|
|
143
|
+
it "and should read a UTF8 file properly" do
|
|
144
|
+
temp_file = file_containing('utf8.txt', rune_utf8)
|
|
145
|
+
|
|
146
|
+
contents = Puppet::FileSystem.read(temp_file, :encoding => 'utf-8')
|
|
147
|
+
|
|
148
|
+
expect(contents.encoding).to eq(Encoding::UTF_8)
|
|
149
|
+
expect(contents).to eq(rune_utf8)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it "does not strip the UTF8 BOM (Byte Order Mark) if present in a file" do
|
|
153
|
+
bom = "\uFEFF"
|
|
154
|
+
|
|
155
|
+
temp_file = file_containing('utf8bom.txt', "#{bom}#{rune_utf8}")
|
|
156
|
+
contents = Puppet::FileSystem.read(temp_file, :encoding => 'utf-8')
|
|
157
|
+
|
|
158
|
+
expect(contents.encoding).to eq(Encoding::UTF_8)
|
|
159
|
+
expect(contents).to eq("#{bom}#{rune_utf8}")
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
137
163
|
describe "symlink",
|
|
138
164
|
:if => ! Puppet.features.manages_symlinks? &&
|
|
139
165
|
Puppet.features.microsoft_windows? do
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
require 'puppet/pops'
|
|
3
3
|
require 'puppet/loaders'
|
|
4
|
+
require 'puppet_spec/compiler'
|
|
4
5
|
|
|
5
6
|
describe 'the assert_type function' do
|
|
7
|
+
include PuppetSpec::Compiler
|
|
8
|
+
|
|
6
9
|
after(:all) { Puppet::Pops::Loaders.clear }
|
|
7
10
|
|
|
8
11
|
let(:loaders) { Puppet::Pops::Loaders.new(Puppet::Node::Environment.create(:testing, [])) }
|
|
@@ -19,13 +22,13 @@ describe 'the assert_type function' do
|
|
|
19
22
|
it 'asserts non compliant type by raising an error' do
|
|
20
23
|
expect do
|
|
21
24
|
func.call({}, type(Integer), 'hello world')
|
|
22
|
-
end.to raise_error(Puppet::Pops::Types::TypeAssertionError, /
|
|
25
|
+
end.to raise_error(Puppet::Pops::Types::TypeAssertionError, /expected an Integer value, got String/)
|
|
23
26
|
end
|
|
24
27
|
|
|
25
28
|
it 'checks that first argument is a type' do
|
|
26
29
|
expect do
|
|
27
30
|
func.call({}, 10, 10)
|
|
28
|
-
end.to raise_error(ArgumentError, "'assert_type'
|
|
31
|
+
end.to raise_error(ArgumentError, "'assert_type' expects one of:
|
|
29
32
|
(Type type, Any value, Callable[Type, Type] block?)
|
|
30
33
|
rejected: parameter 'type' expects a Type value, got Integer
|
|
31
34
|
(String type_string, Any value, Callable[Type, Type] block?)
|
|
@@ -52,4 +55,35 @@ describe 'the assert_type function' do
|
|
|
52
55
|
def type(type_ref)
|
|
53
56
|
Puppet::Pops::Types::TypeFactory.type_of(type_ref)
|
|
54
57
|
end
|
|
58
|
+
|
|
59
|
+
it 'can validate a resource type' do
|
|
60
|
+
expect(eval_and_collect_notices("assert_type(Type[Resource], File['/tmp/test']) notice('ok')")).to eq(['ok'])
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it 'can validate a type alias' do
|
|
64
|
+
code = <<-CODE
|
|
65
|
+
type UnprivilegedPort = Integer[1024,65537]
|
|
66
|
+
assert_type(UnprivilegedPort, 5432)
|
|
67
|
+
notice('ok')
|
|
68
|
+
CODE
|
|
69
|
+
expect(eval_and_collect_notices(code)).to eq(['ok'])
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it 'can validate a type alias passed as a String' do
|
|
73
|
+
code = <<-CODE
|
|
74
|
+
type UnprivilegedPort = Integer[1024,65537]
|
|
75
|
+
assert_type('UnprivilegedPort', 5432)
|
|
76
|
+
notice('ok')
|
|
77
|
+
CODE
|
|
78
|
+
expect(eval_and_collect_notices(code)).to eq(['ok'])
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it 'can validate and fail using a type alias' do
|
|
82
|
+
code = <<-CODE
|
|
83
|
+
type UnprivilegedPort = Integer[1024,65537]
|
|
84
|
+
assert_type(UnprivilegedPort, 345)
|
|
85
|
+
notice('ok')
|
|
86
|
+
CODE
|
|
87
|
+
expect { eval_and_collect_notices(code) }.to raise_error(Puppet::Error, /expected an UnprivilegedPort = Integer\[1024, 65537\] value, got Integer\[345, 345\]/)
|
|
88
|
+
end
|
|
55
89
|
end
|
|
@@ -268,11 +268,11 @@ describe "the 'defined' function" do
|
|
|
268
268
|
end
|
|
269
269
|
|
|
270
270
|
it 'raises error if referencing undef' do
|
|
271
|
-
expect{func.call(@scope, nil)}.to raise_error(ArgumentError, /'defined' parameter 'vals' expects a value of type String
|
|
271
|
+
expect{func.call(@scope, nil)}.to raise_error(ArgumentError, /'defined' parameter 'vals' expects a value of type String or Type, got Undef/)
|
|
272
272
|
end
|
|
273
273
|
|
|
274
274
|
it 'raises error if referencing a number' do
|
|
275
|
-
expect{func.call(@scope, 42)}.to raise_error(ArgumentError, /'defined' parameter 'vals' expects a value of type String
|
|
275
|
+
expect{func.call(@scope, 42)}.to raise_error(ArgumentError, /'defined' parameter 'vals' expects a value of type String or Type, got Integer/)
|
|
276
276
|
end
|
|
277
277
|
|
|
278
278
|
it 'is false if referencing empty string' do
|
|
@@ -5,7 +5,7 @@ describe "the epp function" do
|
|
|
5
5
|
|
|
6
6
|
let :node do Puppet::Node.new('localhost') end
|
|
7
7
|
let :compiler do Puppet::Parser::Compiler.new(node) end
|
|
8
|
-
let :scope do
|
|
8
|
+
let :scope do compiler.topscope end
|
|
9
9
|
|
|
10
10
|
context "when accessing scope variables as $ variables" do
|
|
11
11
|
it "looks up the value from the scope" do
|
|
@@ -27,11 +27,19 @@ describe "the epp function" do
|
|
|
27
27
|
expect(eval_template_with_args("<%= $phantom == dragos %>", 'phantom' => 'dragos')).to eq("true")
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
it "can use values from the
|
|
30
|
+
it "can use values from the global scope for defaults" do
|
|
31
31
|
scope['phantom'] = 'of the opera'
|
|
32
|
-
expect(eval_template("<%- |$phantom =
|
|
32
|
+
expect(eval_template("<%- |$phantom = $::phantom| -%><%= $phantom %>")).to eq("of the opera")
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
+
it "will not use values from the enclosing scope for defaults" do
|
|
36
|
+
scope['the_phantom'] = 'of the state opera'
|
|
37
|
+
scope.new_ephemeral(true)
|
|
38
|
+
scope['the_phantom'] = 'of the local opera'
|
|
39
|
+
expect(scope['the_phantom']).to eq('of the local opera')
|
|
40
|
+
expect(eval_template("<%- |$phantom = $the_phantom| -%><%= $phantom %>")).to eq("of the state opera")
|
|
41
|
+
end
|
|
42
|
+
|
|
35
43
|
it "uses the default value if the given value is undef/nil" do
|
|
36
44
|
expect(eval_template_with_args("<%- |$phantom = 'inside your mind'| -%><%= $phantom %>", 'phantom' => nil)).to eq("inside your mind")
|
|
37
45
|
end
|
|
@@ -44,15 +52,15 @@ describe "the epp function" do
|
|
|
44
52
|
it "raises an error if required variable is not given" do
|
|
45
53
|
scope['x'] = 'wrong one'
|
|
46
54
|
expect do
|
|
47
|
-
|
|
48
|
-
end.to raise_error(/
|
|
55
|
+
eval_template("<%-| $x |-%><%= $x == correct %>")
|
|
56
|
+
end.to raise_error(/expects a value for parameter 'x'/)
|
|
49
57
|
end
|
|
50
58
|
|
|
51
|
-
it
|
|
59
|
+
it 'raises an error if invalid arguments are given' do
|
|
52
60
|
scope['x'] = 'wrong one'
|
|
53
61
|
expect do
|
|
54
62
|
eval_template_with_args("<%-| $x |-%><%= $x == correct %>", 'x' => 'correct', 'y' => 'surplus')
|
|
55
|
-
end.to raise_error(/
|
|
63
|
+
end.to raise_error(/has no parameter named 'y'/)
|
|
56
64
|
end
|
|
57
65
|
end
|
|
58
66
|
|
|
@@ -80,13 +88,13 @@ describe "the epp function" do
|
|
|
80
88
|
it "raises an error when the passed value does not match the parameter's type" do
|
|
81
89
|
expect do
|
|
82
90
|
eval_template_with_args("<%-|Integer $x|-%><%= $x %>", 'x' => 'incorrect')
|
|
83
|
-
end.to raise_error(/
|
|
91
|
+
end.to raise_error(/parameter 'x' expects an Integer value, got String/)
|
|
84
92
|
end
|
|
85
93
|
|
|
86
94
|
it "raises an error when the default value does not match the parameter's type" do
|
|
87
95
|
expect do
|
|
88
96
|
eval_template("<%-|Integer $x = 'nope'|-%><%= $x %>")
|
|
89
|
-
end.to raise_error(/
|
|
97
|
+
end.to raise_error(/parameter 'x' expects an Integer value, got String/)
|
|
90
98
|
end
|
|
91
99
|
|
|
92
100
|
it "allows an parameter to default to undef" do
|
|
@@ -36,15 +36,15 @@ describe "the inline_epp function" do
|
|
|
36
36
|
it "raises an error if required variable is not given" do
|
|
37
37
|
scope['x'] = 'wrong one'
|
|
38
38
|
expect {
|
|
39
|
-
eval_template_with_args("<%-| $x |-%><%= $x == correct %>",
|
|
40
|
-
}.to raise_error(/
|
|
39
|
+
eval_template_with_args("<%-| $x |-%><%= $x == correct %>", {})
|
|
40
|
+
}.to raise_error(/expects a value for parameter 'x'/)
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
it
|
|
43
|
+
it 'raises an error if unexpected arguments are given' do
|
|
44
44
|
scope['x'] = 'wrong one'
|
|
45
45
|
expect {
|
|
46
46
|
eval_template_with_args("<%-| $x |-%><%= $x == correct %>", 'x' => 'correct', 'y' => 'surplus')
|
|
47
|
-
}.to raise_error(/
|
|
47
|
+
}.to raise_error(/has no parameter named 'y'/)
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
|