puppet 4.2.3 → 4.3.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/Gemfile +3 -0
- data/README.md +1 -1
- data/ext/debian/puppet.init +0 -1
- data/ext/debian/puppet.logrotate +14 -5
- data/ext/osx/puppet.plist +0 -2
- data/ext/redhat/client.init +13 -5
- data/ext/redhat/logrotate +15 -3
- data/ext/redhat/puppet.spec.erb +5 -1
- data/ext/redhat/server.init +1 -1
- data/ext/systemd/puppet.service +1 -0
- data/lib/puppet.rb +12 -0
- data/lib/puppet/agent.rb +4 -4
- data/lib/puppet/agent/locker.rb +11 -2
- data/lib/puppet/application/agent.rb +5 -1
- data/lib/puppet/application/apply.rb +4 -0
- data/lib/puppet/application/filebucket.rb +78 -4
- data/lib/puppet/application/lookup.rb +356 -0
- data/lib/puppet/application/master.rb +3 -0
- data/lib/puppet/configurer.rb +9 -5
- data/lib/puppet/context.rb +16 -1
- data/lib/puppet/context/trusted_information.rb +21 -1
- data/lib/puppet/daemon.rb +17 -13
- data/lib/puppet/data_binding.rb +4 -2
- data/lib/puppet/data_providers.rb +12 -13
- data/lib/puppet/data_providers/data_adapter.rb +7 -68
- data/lib/puppet/data_providers/data_function_support.rb +5 -26
- data/lib/puppet/data_providers/function_env_data_provider.rb +0 -10
- data/lib/puppet/data_providers/function_module_data_provider.rb +0 -22
- data/lib/puppet/data_providers/hiera_config.rb +106 -0
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +18 -0
- data/lib/puppet/data_providers/hiera_interpolate.rb +97 -0
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +23 -0
- data/lib/puppet/data_providers/hiera_support.rb +37 -0
- data/lib/puppet/data_providers/json_data_provider_factory.rb +31 -0
- data/lib/puppet/data_providers/lookup_adapter.rb +200 -0
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +32 -0
- data/lib/puppet/defaults.rb +12 -2
- data/lib/puppet/error.rb +4 -0
- data/lib/puppet/face/module/changes.rb +2 -1
- data/lib/puppet/feature/cfacter.rb +1 -0
- data/lib/puppet/file_bucket/dipper.rb +58 -2
- data/lib/puppet/functions.rb +2 -4
- data/lib/puppet/functions/assert_type.rb +48 -12
- data/lib/puppet/functions/defined.rb +79 -48
- data/lib/puppet/functions/each.rb +85 -27
- data/lib/puppet/functions/filter.rb +58 -23
- data/lib/puppet/functions/hiera.rb +76 -3
- data/lib/puppet/functions/hiera_array.rb +65 -3
- data/lib/puppet/functions/hiera_hash.rb +74 -2
- data/lib/puppet/functions/hiera_include.rb +75 -2
- data/lib/puppet/functions/lookup.rb +19 -17
- data/lib/puppet/functions/map.rb +56 -21
- data/lib/puppet/functions/match.rb +29 -12
- data/lib/puppet/functions/reduce.rb +95 -58
- data/lib/puppet/functions/versioncmp.rb +36 -0
- data/lib/puppet/functions/with.rb +15 -7
- data/lib/puppet/indirector/catalog/compiler.rb +3 -3
- data/lib/puppet/indirector/catalog/static_compiler.rb +46 -30
- data/lib/puppet/indirector/data_binding/none.rb +4 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +58 -1
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/request.rb +7 -8
- data/lib/puppet/indirector/resource_type/parser.rb +5 -3
- data/lib/puppet/info_service.rb +7 -0
- data/lib/puppet/info_service/class_information_service.rb +111 -0
- data/lib/puppet/module_tool/metadata.rb +32 -9
- data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +42 -38
- data/lib/puppet/network/authconfig.rb +21 -1
- data/lib/puppet/network/authorization.rb +8 -1
- data/lib/puppet/network/http/api/master/v3.rb +7 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +59 -0
- data/lib/puppet/node/environment.rb +9 -2
- data/lib/puppet/parser.rb +3 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +39 -1
- data/lib/puppet/parser/compiler.rb +302 -12
- data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +38 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
- data/lib/puppet/parser/environment_compiler.rb +165 -0
- data/lib/puppet/parser/functions/assert_type.rb +46 -16
- data/lib/puppet/parser/functions/defined.rb +105 -68
- data/lib/puppet/parser/functions/each.rb +85 -27
- data/lib/puppet/parser/functions/filter.rb +59 -23
- data/lib/puppet/parser/functions/hiera.rb +83 -27
- data/lib/puppet/parser/functions/hiera_array.rb +71 -28
- data/lib/puppet/parser/functions/hiera_hash.rb +81 -30
- data/lib/puppet/parser/functions/hiera_include.rb +81 -40
- data/lib/puppet/parser/functions/map.rb +55 -20
- data/lib/puppet/parser/functions/match.rb +27 -12
- data/lib/puppet/parser/functions/reduce.rb +97 -60
- data/lib/puppet/parser/functions/with.rb +16 -8
- data/lib/puppet/parser/resource.rb +98 -19
- data/lib/puppet/plugins/configuration.rb +3 -2
- data/lib/puppet/plugins/data_providers.rb +12 -60
- data/lib/puppet/plugins/data_providers/data_provider.rb +283 -0
- data/lib/puppet/plugins/data_providers/registry.rb +84 -0
- data/lib/puppet/pops.rb +19 -17
- data/lib/puppet/pops/adapters.rb +12 -0
- data/lib/puppet/pops/binder/binder.rb +2 -2
- data/lib/puppet/pops/binder/bindings_checker.rb +1 -1
- data/lib/puppet/pops/binder/bindings_label_provider.rb +3 -1
- data/lib/puppet/pops/binder/bindings_loader.rb +6 -2
- data/lib/puppet/pops/binder/bindings_model_meta.rb +2 -2
- data/lib/puppet/pops/binder/config/binder_config.rb +1 -1
- data/lib/puppet/pops/binder/injector.rb +4 -4
- data/lib/puppet/pops/binder/key_factory.rb +3 -9
- data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +68 -9
- data/lib/puppet/pops/evaluator/access_operator.rb +27 -60
- data/lib/puppet/pops/evaluator/closure.rb +8 -8
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +87 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +7 -1
- data/lib/puppet/pops/functions/dispatcher.rb +3 -3
- data/lib/puppet/pops/issues.rb +1 -1
- data/lib/puppet/pops/label_provider.rb +1 -1
- data/lib/puppet/pops/lookup.rb +25 -47
- data/lib/puppet/pops/lookup/explainer.rb +402 -0
- data/lib/puppet/pops/lookup/invocation.rb +117 -0
- data/lib/puppet/pops/merge_strategy.rb +73 -5
- data/lib/puppet/pops/model/factory.rb +34 -0
- data/lib/puppet/pops/model/model_label_provider.rb +10 -1
- data/lib/puppet/pops/model/model_meta.rb +15 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +18 -0
- data/lib/puppet/pops/parser/code_merger.rb +13 -1
- data/lib/puppet/pops/parser/egrammar.ra +56 -3
- data/lib/puppet/pops/parser/eparser.rb +1549 -1352
- data/lib/puppet/pops/parser/lexer2.rb +31 -6
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/parser_support.rb +25 -13
- data/lib/puppet/pops/types/enumeration.rb +1 -2
- data/lib/puppet/pops/types/type_asserter.rb +16 -15
- data/lib/puppet/pops/types/type_assertion_error.rb +1 -0
- data/lib/puppet/pops/types/type_calculator.rb +171 -1020
- data/lib/puppet/pops/types/type_factory.rb +87 -148
- data/lib/puppet/pops/types/type_mismatch_describer.rb +743 -0
- data/lib/puppet/pops/types/type_parser.rb +116 -127
- data/lib/puppet/pops/types/types.rb +1394 -255
- data/lib/puppet/pops/types/types_meta.rb +0 -234
- data/lib/puppet/pops/validation.rb +7 -2
- data/lib/puppet/pops/validation/checker4_0.rb +28 -0
- data/lib/puppet/provider/augeas/augeas.rb +50 -0
- data/lib/puppet/provider/group/directoryservice.rb +10 -0
- data/lib/puppet/provider/package/dnf.rb +41 -0
- data/lib/puppet/provider/package/gem.rb +7 -2
- data/lib/puppet/provider/package/rpm.rb +1 -0
- data/lib/puppet/provider/package/windows/exe_package.rb +10 -8
- data/lib/puppet/provider/package/windows/msi_package.rb +4 -3
- data/lib/puppet/provider/package/windows/package.rb +9 -1
- data/lib/puppet/provider/package/yum.rb +14 -9
- data/lib/puppet/provider/service/bsd.rb +1 -1
- data/lib/puppet/provider/service/debian.rb +21 -0
- data/lib/puppet/provider/service/init.rb +6 -0
- data/lib/puppet/provider/service/rcng.rb +51 -0
- data/lib/puppet/provider/service/redhat.rb +2 -1
- data/lib/puppet/provider/service/smf.rb +43 -2
- data/lib/puppet/provider/service/src.rb +27 -0
- data/lib/puppet/provider/service/systemd.rb +15 -3
- data/lib/puppet/provider/sshkey/parsed.rb +19 -9
- data/lib/puppet/reference/report.rb +9 -12
- data/lib/puppet/reports.rb +5 -1
- data/lib/puppet/resource.rb +50 -73
- data/lib/puppet/resource/capability_finder.rb +95 -0
- data/lib/puppet/resource/catalog.rb +47 -7
- data/lib/puppet/resource/status.rb +0 -2
- data/lib/puppet/resource/type.rb +238 -44
- data/lib/puppet/resource/type_collection.rb +60 -2
- data/lib/puppet/settings.rb +2 -2
- data/lib/puppet/ssl/certificate_authority/interface.rb +2 -2
- data/lib/puppet/ssl/oids.rb +9 -1
- data/lib/puppet/transaction.rb +4 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +71 -8
- data/lib/puppet/transaction/resource_harness.rb +9 -4
- data/lib/puppet/type.rb +74 -3
- data/lib/puppet/type/augeas.rb +8 -0
- data/lib/puppet/type/file/source.rb +14 -12
- data/lib/puppet/type/user.rb +4 -2
- data/lib/puppet/util/windows/security.rb +4 -1
- data/lib/puppet/util/windows/taskscheduler.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +3 -0
- data/spec/fixtures/unit/application/environments/production/environment.conf +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +18 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +46 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +30 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +13 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +18 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +3 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/hiera.yaml +8 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/manifests/init.pp +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/manifests/init.pp +3 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +10 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +23 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/manifests/init.pp +3 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/metadata.json +9 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +184 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +24 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +24 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +24 -0
- data/spec/integration/data_binding_spec.rb +229 -0
- data/spec/integration/file_bucket/file_spec.rb +2 -2
- data/spec/integration/parser/compiler_spec.rb +23 -19
- data/spec/integration/parser/resource_expressions_spec.rb +4 -4
- data/spec/integration/parser/undef_param_spec.rb +1 -1
- data/spec/integration/resource/catalog_spec.rb +1 -1
- data/spec/integration/type/package_spec.rb +2 -0
- data/spec/integration/util/windows/security_spec.rb +18 -0
- data/spec/lib/matchers/include_in_order.rb +2 -2
- data/spec/shared_behaviours/iterative_functions.rb +8 -8
- data/spec/spec_helper.rb +7 -0
- data/spec/unit/agent/locker_spec.rb +4 -4
- data/spec/unit/agent_spec.rb +0 -8
- data/spec/unit/application/agent_spec.rb +5 -0
- data/spec/unit/application/apply_spec.rb +8 -0
- data/spec/unit/application/filebucket_spec.rb +87 -1
- data/spec/unit/application/lookup_spec.rb +195 -0
- data/spec/unit/appmgmt_spec.rb +657 -0
- data/spec/unit/capability_spec.rb +414 -0
- data/spec/unit/configurer_spec.rb +7 -1
- data/spec/unit/context/trusted_information_spec.rb +24 -1
- data/spec/unit/daemon_spec.rb +18 -8
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +201 -0
- data/spec/unit/file_bucket/dipper_spec.rb +210 -1
- data/spec/unit/functions/assert_type_spec.rb +5 -7
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +2 -2
- data/spec/unit/functions/lookup_spec.rb +200 -9
- data/spec/unit/functions/regsubst_spec.rb +17 -8
- data/spec/unit/functions/scanf_spec.rb +1 -1
- data/spec/unit/functions/split_spec.rb +2 -2
- data/spec/unit/functions/versioncmp_spec.rb +36 -0
- data/spec/unit/functions4_spec.rb +58 -72
- data/spec/unit/indirector/catalog/compiler_spec.rb +28 -8
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +38 -20
- data/spec/unit/indirector/data_binding/none_spec.rb +2 -2
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +52 -1
- data/spec/unit/indirector/request_spec.rb +8 -8
- data/spec/unit/info_service_spec.rb +236 -0
- data/spec/unit/module_tool/metadata_spec.rb +31 -2
- data/spec/unit/network/authconfig_spec.rb +62 -32
- data/spec/unit/network/authorization_spec.rb +30 -2
- data/spec/unit/network/http/connection_spec.rb +14 -19
- data/spec/unit/parser/compiler_spec.rb +86 -2
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/resource_spec.rb +2 -20
- data/spec/unit/pops/binder/config/binder_config_spec.rb +1 -1
- data/spec/unit/pops/binder/injector_spec.rb +3 -3
- data/spec/unit/pops/evaluator/access_ops_spec.rb +13 -11
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -2
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -11
- data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +43 -0
- data/spec/unit/pops/label_provider_spec.rb +5 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +33 -7
- data/spec/unit/pops/parser/parse_application_spec.rb +40 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +4 -0
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +47 -0
- data/spec/unit/pops/parser/parse_site_spec.rb +38 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
- data/spec/unit/pops/parser/parser_spec.rb +18 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +427 -444
- data/spec/unit/pops/types/type_factory_spec.rb +12 -12
- data/spec/unit/pops/types/type_parser_spec.rb +7 -12
- data/spec/unit/pops/validator/validator_spec.rb +25 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +50 -0
- data/spec/unit/provider/group/directoryservice_spec.rb +33 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +3 -0
- data/spec/unit/provider/package/dnf_spec.rb +92 -0
- data/spec/unit/provider/package/gem_spec.rb +7 -0
- data/spec/unit/provider/package/rpm_spec.rb +25 -2
- data/spec/unit/provider/package/windows/package_spec.rb +41 -0
- data/spec/unit/provider/package/yum_spec.rb +21 -13
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +10 -0
- data/spec/unit/provider/service/debian_spec.rb +27 -0
- data/spec/unit/provider/service/rcng_spec.rb +41 -0
- data/spec/unit/provider/service/redhat_spec.rb +8 -1
- data/spec/unit/provider/service/smf_spec.rb +30 -5
- data/spec/unit/provider/service/src_spec.rb +19 -4
- data/spec/unit/provider/service/systemd_spec.rb +78 -29
- data/spec/unit/provider/sshkey/parsed_spec.rb +23 -0
- data/spec/unit/reports_spec.rb +10 -0
- data/spec/unit/resource/capability_finder_spec.rb +56 -0
- data/spec/unit/resource/catalog_spec.rb +31 -8
- data/spec/unit/resource/type_collection_spec.rb +23 -2
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +22 -4
- data/spec/unit/settings_spec.rb +90 -1
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +4 -3
- data/spec/unit/ssl/oids_spec.rb +8 -0
- data/spec/unit/transaction/additional_resource_generator_spec.rb +78 -5
- data/spec/unit/transaction/report_spec.rb +24 -1
- data/spec/unit/type/package_spec.rb +1 -0
- data/spec/unit/type/user_spec.rb +14 -7
- data/spec/unit/type_spec.rb +1 -1
- metadata +169 -5
- data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +0 -175
- data/spec/integration/data_binding.rb +0 -104
@@ -25,13 +25,11 @@ describe 'the assert_type function' do
|
|
25
25
|
it 'checks that first argument is a type' do
|
26
26
|
expect do
|
27
27
|
func.call({}, 10, 10)
|
28
|
-
end.to raise_error(ArgumentError,
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
actual:
|
34
|
-
assert_type(Integer, Integer) - arg count {2}")))
|
28
|
+
end.to raise_error(ArgumentError, "'assert_type' expected one of:
|
29
|
+
(Type type, Any value, Callable[Type, Type] block?)
|
30
|
+
rejected: parameter 'type' expects a Type value, got Integer
|
31
|
+
(String type_string, Any value, Callable[Type, Type] block?)
|
32
|
+
rejected: parameter 'type_string' expects a String value, got Integer")
|
35
33
|
end
|
36
34
|
|
37
35
|
it 'allows the second arg to be undef/nil)' do
|
@@ -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, /
|
271
|
+
expect{func.call(@scope, nil)}.to raise_error(ArgumentError, /'defined' parameter 'vals' expects a value of type String, Type\[CatalogEntry\], or Type\[Type\[CatalogEntry\]\], 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, /
|
275
|
+
expect{func.call(@scope, 42)}.to raise_error(ArgumentError, /'defined' parameter 'vals' expects a value of type String, Type\[CatalogEntry\], or Type\[Type\[CatalogEntry\]\], got Integer/)
|
276
276
|
end
|
277
277
|
|
278
278
|
it 'is false if referencing empty string' do
|
@@ -80,13 +80,13 @@ describe "the epp function" do
|
|
80
80
|
it "raises an error when the passed value does not match the parameter's type" do
|
81
81
|
expect do
|
82
82
|
eval_template_with_args("<%-|Integer $x|-%><%= $x %>", 'x' => 'incorrect')
|
83
|
-
end.to raise_error(/
|
83
|
+
end.to raise_error(/block parameter 'x' expects an Integer value, got String/)
|
84
84
|
end
|
85
85
|
|
86
86
|
it "raises an error when the default value does not match the parameter's type" do
|
87
87
|
expect do
|
88
88
|
eval_template("<%-|Integer $x = 'nope'|-%><%= $x %>")
|
89
|
-
end.to raise_error(/
|
89
|
+
end.to raise_error(/block parameter 'x' expects an Integer value, got String/)
|
90
90
|
end
|
91
91
|
|
92
92
|
it "allows an parameter to default to undef" do
|
@@ -27,19 +27,24 @@ describe "when performing lookup" do
|
|
27
27
|
# @param *args [String] splat of args that will be concatenated to form the puppet args sent to lookup
|
28
28
|
# @return [Array<String>] List of names of Notify resources in the resulting catalog
|
29
29
|
#
|
30
|
-
def assemble_and_compile(fmt, *lookup_args)
|
31
|
-
assemble_and_compile_with_block(fmt, "'no_block_present'", *lookup_args)
|
30
|
+
def assemble_and_compile(fmt, *lookup_args, &block)
|
31
|
+
assemble_and_compile_with_block(fmt, "'no_block_present'", *lookup_args, &block)
|
32
32
|
end
|
33
33
|
|
34
|
-
def assemble_and_compile_with_block(fmt, block, *lookup_args)
|
35
|
-
|
34
|
+
def assemble_and_compile_with_block(fmt, block, *lookup_args, &cblock)
|
35
|
+
compile_and_get_notifications(<<-END.gsub(/^ {6}/, ''), &cblock)
|
36
36
|
$args = [#{lookup_args.join(',')}]
|
37
37
|
$block = #{block}
|
38
38
|
include abc
|
39
39
|
$r = if $abc::result == undef { 'no_value' } else { $abc::result }
|
40
40
|
notify { \"#{fmt}\": }
|
41
41
|
END
|
42
|
-
|
42
|
+
end
|
43
|
+
|
44
|
+
def compile_and_get_notifications(code)
|
45
|
+
Puppet[:code] = code
|
46
|
+
catalog = block_given? ? compiler.compile { |catalog| yield(compiler.topscope); catalog } : compiler.compile
|
47
|
+
catalog.resources.map(&:ref).select { |r| r.start_with?('Notify[') }.map { |r| r[7..-2] }
|
43
48
|
end
|
44
49
|
|
45
50
|
# There is a fully configured 'production' environment in fixtures at this location
|
@@ -76,7 +81,18 @@ describe "when performing lookup" do
|
|
76
81
|
expect(resources).to include('module_b')
|
77
82
|
end
|
78
83
|
|
84
|
+
it "can lookup value provided by the module that has 'function' data_provider entry in metadata.json" do
|
85
|
+
resources = compile_and_get_notifications("$args = ['meta::b']\ninclude meta\nnotify { $meta::result: }\n")
|
86
|
+
expect(resources).to include('module_b')
|
87
|
+
end
|
88
|
+
|
89
|
+
it "can lookup value provided by the module that has 'sample' data_provider entry in metadata.json" do
|
90
|
+
resources = compile_and_get_notifications("$args = ['metawcp::b']\ninclude metawcp\nnotify { $metawcp::result: }\n")
|
91
|
+
expect(resources).to include('module_b')
|
92
|
+
end
|
93
|
+
|
79
94
|
it 'can lookup value provided in global scope' do
|
95
|
+
Hiera.any_instance.expects(:lookup).with('lookup_options', any_parameters).at_most_once.throws(:no_such_key)
|
80
96
|
Hiera.any_instance.expects(:lookup).with('abc::a', any_parameters).returns('global_a')
|
81
97
|
resources = assemble_and_compile('${r}', "'abc::a'")
|
82
98
|
expect(resources).to include('global_a')
|
@@ -108,6 +124,7 @@ describe "when performing lookup" do
|
|
108
124
|
end
|
109
125
|
|
110
126
|
it "can 'hash' merge values provided by global, environment, and module" do
|
127
|
+
Hiera.any_instance.expects(:lookup).with('lookup_options', any_parameters).at_most_once.throws(:no_such_key)
|
111
128
|
Hiera.any_instance.expects(:lookup).with('abc::e', any_parameters).returns({ 'k1' => 'global_e1' })
|
112
129
|
resources = assemble_and_compile('${r[k1]}_${r[k2]}_${r[k3]}', "'abc::e'", 'Hash[String,String]', "'hash'")
|
113
130
|
expect(resources).to include('global_e1_module_e2_env_e3')
|
@@ -173,30 +190,35 @@ describe "when performing lookup" do
|
|
173
190
|
end
|
174
191
|
|
175
192
|
it 'can lookup and deep merge deep values provided by global, environment, and module' do
|
193
|
+
Hiera.any_instance.expects(:lookup).with('lookup_options', any_parameters).at_most_once.throws(:no_such_key)
|
176
194
|
Hiera.any_instance.expects(:lookup).with('abc::f', any_parameters).returns({ 'k1' => { 's1' => 'global_f11' }, 'k2' => { 's3' => 'global_f23' }})
|
177
195
|
resources = assemble_and_compile('${r[k1][s1]}_${r[k1][s2]}_${r[k1][s3]}_${r[k2][s1]}_${r[k2][s2]}_${r[k2][s3]}', "'abc::f'", 'Hash[String,Hash[String,String]]', "'deep'")
|
178
196
|
expect(resources).to include('global_f11_env_f12_module_f13_env_f21_module_f22_global_f23')
|
179
197
|
end
|
180
198
|
|
181
199
|
it 'will propagate resolution_type :array to Hiera when merge == \'unique\'' do
|
200
|
+
Hiera.any_instance.expects(:lookup).with('lookup_options', any_parameters).at_most_once.throws(:no_such_key)
|
182
201
|
Hiera.any_instance.expects(:lookup).with('abc::c', anything, anything, anything, :array).returns(['global_c'])
|
183
202
|
resources = assemble_and_compile('${r[0]}_${r[1]}_${r[2]}', "'abc::c'", 'Array[String]', "'unique'")
|
184
203
|
expect(resources).to include('global_c_env_c_module_c')
|
185
204
|
end
|
186
205
|
|
187
206
|
it 'will propagate a Hash resolution_type with :behavior => :native to Hiera when merge == \'hash\'' do
|
207
|
+
Hiera.any_instance.expects(:lookup).with('lookup_options', any_parameters).at_most_once.throws(:no_such_key)
|
188
208
|
Hiera.any_instance.expects(:lookup).with('abc::e', anything, anything, anything, { :behavior => :native }).returns({ 'k1' => 'global_e1' })
|
189
209
|
resources = assemble_and_compile('${r[k1]}_${r[k2]}_${r[k3]}', "'abc::e'", 'Hash[String,String]', "{strategy => 'hash'}")
|
190
210
|
expect(resources).to include('global_e1_module_e2_env_e3')
|
191
211
|
end
|
192
212
|
|
193
213
|
it 'will propagate a Hash resolution_type with :behavior => :deeper to Hiera when merge == \'deep\'' do
|
214
|
+
Hiera.any_instance.expects(:lookup).with('lookup_options', any_parameters).at_most_once.throws(:no_such_key)
|
194
215
|
Hiera.any_instance.expects(:lookup).with('abc::f', anything, anything, anything, { :behavior => :deeper }).returns({ 'k1' => { 's1' => 'global_f11' }, 'k2' => { 's3' => 'global_f23' }})
|
195
216
|
resources = assemble_and_compile('${r[k1][s1]}_${r[k1][s2]}_${r[k1][s3]}_${r[k2][s1]}_${r[k2][s2]}_${r[k2][s3]}', "'abc::f'", 'Hash[String,Hash[String,String]]', "'deep'")
|
196
217
|
expect(resources).to include('global_f11_env_f12_module_f13_env_f21_module_f22_global_f23')
|
197
218
|
end
|
198
219
|
|
199
220
|
it 'will propagate a Hash resolution_type with symbolic deep merge options to Hiera' do
|
221
|
+
Hiera.any_instance.expects(:lookup).with('lookup_options', any_parameters).at_most_once.throws(:no_such_key)
|
200
222
|
Hiera.any_instance.expects(:lookup).with('abc::f', anything, anything, anything, { :behavior => :deeper, :knockout_prefix => '--' }).returns({ 'k1' => { 's1' => 'global_f11' }, 'k2' => { 's3' => 'global_f23' }})
|
201
223
|
resources = assemble_and_compile('${r[k1][s1]}_${r[k1][s2]}_${r[k1][s3]}_${r[k2][s1]}_${r[k2][s2]}_${r[k2][s3]}', "'abc::f'", 'Hash[String,Hash[String,String]]', "{ 'strategy' => 'deep', 'knockout_prefix' => '--' }")
|
202
224
|
expect(resources).to include('global_f11_env_f12_module_f13_env_f21_module_f22_global_f23')
|
@@ -331,24 +353,26 @@ describe "when performing lookup" do
|
|
331
353
|
end
|
332
354
|
|
333
355
|
it 'will resolve global, environment, and module correctly' do
|
356
|
+
Hiera.any_instance.expects(:lookup).with('lookup_options', any_parameters).at_most_once.throws(:no_such_key)
|
334
357
|
Hiera.any_instance.expects(:lookup).with('bca::e', any_parameters).returns({ 'k1' => 'global_e1' })
|
335
|
-
|
358
|
+
resources = compile_and_get_notifications(<<-END.gsub(/^ {8}/, '')
|
336
359
|
include bca
|
337
360
|
$r = lookup(bca::e, Hash[String,String], hash)
|
338
361
|
notify { "${r[k1]}_${r[k2]}_${r[k3]}": }
|
339
362
|
END
|
340
|
-
|
363
|
+
)
|
341
364
|
expect(resources).to include('global_e1_module_bca_e2_env_bca_e3')
|
342
365
|
end
|
343
366
|
|
344
367
|
it 'will resolve global and environment correctly when module has no provider' do
|
368
|
+
Hiera.any_instance.expects(:lookup).with('lookup_options', any_parameters).at_most_once.throws(:no_such_key)
|
345
369
|
Hiera.any_instance.expects(:lookup).with('no_provider::e', any_parameters).returns({ 'k1' => 'global_e1' })
|
346
|
-
|
370
|
+
resources = compile_and_get_notifications(<<-END.gsub(/^ {8}/, '')
|
347
371
|
include no_provider
|
348
372
|
$r = lookup(no_provider::e, Hash[String,String], hash)
|
349
373
|
notify { "${r[k1]}_${r[k2]}_${r[k3]}": }
|
350
374
|
END
|
351
|
-
|
375
|
+
)
|
352
376
|
expect(resources).to include('global_e1__env_no_provider_e3') # k2 is missing
|
353
377
|
end
|
354
378
|
end
|
@@ -361,4 +385,171 @@ describe "when performing lookup" do
|
|
361
385
|
end.to raise_error(Puppet::ParseError, /data for module 'bad_data' must use keys qualified with the name of the module/)
|
362
386
|
end
|
363
387
|
end
|
388
|
+
|
389
|
+
|
390
|
+
context 'when using explain' do
|
391
|
+
it 'will explain that module is not found' do
|
392
|
+
assemble_and_compile('${r}', "'abc::a'") do |scope|
|
393
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, true)
|
394
|
+
begin
|
395
|
+
Puppet::Pops::Lookup.lookup('ppx::e',nil, nil, false, nil, lookup_invocation)
|
396
|
+
rescue Puppet::Error
|
397
|
+
end
|
398
|
+
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
399
|
+
Merge strategy first
|
400
|
+
Data Binding "hiera"
|
401
|
+
No such key: "ppx::e"
|
402
|
+
Data Provider "FunctionEnvDataProvider"
|
403
|
+
No such key: "ppx::e"
|
404
|
+
Module "ppx"
|
405
|
+
Module not found
|
406
|
+
EOS
|
407
|
+
end
|
408
|
+
end
|
409
|
+
|
410
|
+
it 'will explain that module does not find a key' do
|
411
|
+
assemble_and_compile('${r}', "'abc::a'") do |scope|
|
412
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, true)
|
413
|
+
begin
|
414
|
+
Puppet::Pops::Lookup.lookup('abc::x', nil, nil, false, nil, lookup_invocation)
|
415
|
+
rescue Puppet::Error
|
416
|
+
end
|
417
|
+
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
418
|
+
Merge strategy first
|
419
|
+
Data Binding "hiera"
|
420
|
+
No such key: "abc::x"
|
421
|
+
Data Provider "FunctionEnvDataProvider"
|
422
|
+
No such key: "abc::x"
|
423
|
+
Module "abc" using Data Provider "FunctionModuleDataProvider"
|
424
|
+
No such key: "abc::x"
|
425
|
+
EOS
|
426
|
+
end
|
427
|
+
end
|
428
|
+
|
429
|
+
it 'will explain deep merge results without options' do
|
430
|
+
assemble_and_compile('${r}', "'abc::a'") do |scope|
|
431
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, true)
|
432
|
+
Puppet::Pops::Lookup.lookup('abc::e', Puppet::Pops::Types::TypeParser.new.parse('Hash[String,String]'), nil, false, 'deep', lookup_invocation)
|
433
|
+
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
434
|
+
Merge strategy deep
|
435
|
+
Data Binding "hiera"
|
436
|
+
No such key: "abc::e"
|
437
|
+
Data Provider "FunctionEnvDataProvider"
|
438
|
+
Found key: "abc::e" value: {
|
439
|
+
"k1" => "env_e1",
|
440
|
+
"k3" => "env_e3"
|
441
|
+
}
|
442
|
+
Module "abc" using Data Provider "FunctionModuleDataProvider"
|
443
|
+
Found key: "abc::e" value: {
|
444
|
+
"k1" => "module_e1",
|
445
|
+
"k2" => "module_e2"
|
446
|
+
}
|
447
|
+
Merged result: {
|
448
|
+
"k1" => "env_e1",
|
449
|
+
"k2" => "module_e2",
|
450
|
+
"k3" => "env_e3"
|
451
|
+
}
|
452
|
+
EOS
|
453
|
+
end
|
454
|
+
end
|
455
|
+
|
456
|
+
it 'will explain deep merge results with options' do
|
457
|
+
assemble_and_compile('${r}', "'abc::a'") do |scope|
|
458
|
+
Hiera.any_instance.expects(:lookup).with(any_parameters).returns({'k1' => 'global_g1'})
|
459
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, true)
|
460
|
+
Puppet::Pops::Lookup.lookup('abc::e', Puppet::Pops::Types::TypeParser.new.parse('Hash[String,String]'), nil, false, {'strategy' => 'deep', 'merge_hash_arrays' => true}, lookup_invocation)
|
461
|
+
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
462
|
+
Merge strategy deep
|
463
|
+
Options: {
|
464
|
+
"merge_hash_arrays" => true
|
465
|
+
}
|
466
|
+
Data Binding "hiera"
|
467
|
+
Found key: "abc::e" value: {
|
468
|
+
"k1" => "global_g1"
|
469
|
+
}
|
470
|
+
Data Provider "FunctionEnvDataProvider"
|
471
|
+
Found key: "abc::e" value: {
|
472
|
+
"k1" => "env_e1",
|
473
|
+
"k3" => "env_e3"
|
474
|
+
}
|
475
|
+
Module "abc" using Data Provider "FunctionModuleDataProvider"
|
476
|
+
Found key: "abc::e" value: {
|
477
|
+
"k1" => "module_e1",
|
478
|
+
"k2" => "module_e2"
|
479
|
+
}
|
480
|
+
Merged result: {
|
481
|
+
"k1" => "global_g1",
|
482
|
+
"k2" => "module_e2",
|
483
|
+
"k3" => "env_e3"
|
484
|
+
}
|
485
|
+
EOS
|
486
|
+
end
|
487
|
+
end
|
488
|
+
|
489
|
+
it 'will handle path merge with not found correctly' do
|
490
|
+
assemble_and_compile('${r}', "'hieraprovider::test::param_a'") do |scope|
|
491
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, true)
|
492
|
+
begin
|
493
|
+
Puppet::Pops::Lookup.lookup('hieraprovider::test::not_found', nil, nil, false, nil, lookup_invocation)
|
494
|
+
rescue Puppet::DataBinding::LookupError
|
495
|
+
end
|
496
|
+
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
497
|
+
Merge strategy first
|
498
|
+
Data Binding "hiera"
|
499
|
+
No such key: "hieraprovider::test::not_found"
|
500
|
+
Data Provider "FunctionEnvDataProvider"
|
501
|
+
No such key: "hieraprovider::test::not_found"
|
502
|
+
Module "hieraprovider" using Data Provider "Hiera Data Provider, version 4"
|
503
|
+
ConfigurationPath "#{environmentpath}/production/modules/hieraprovider/hiera.yaml"
|
504
|
+
Data Provider "two paths"
|
505
|
+
Merge strategy first
|
506
|
+
Path "#{environmentpath}/production/modules/hieraprovider/data/first.json"
|
507
|
+
Original path: first
|
508
|
+
No such key: "hieraprovider::test::not_found"
|
509
|
+
Path "#{environmentpath}/production/modules/hieraprovider/data/second_not_present.json"
|
510
|
+
Original path: second_not_present
|
511
|
+
Path not found
|
512
|
+
EOS
|
513
|
+
end
|
514
|
+
end
|
515
|
+
|
516
|
+
it 'will provide a hash containing all explanation elements' do
|
517
|
+
assemble_and_compile('${r}', "'abc::a'") do |scope|
|
518
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, true)
|
519
|
+
Puppet::Pops::Lookup.lookup('abc::e', Puppet::Pops::Types::TypeParser.new.parse('Hash[String,String]'), nil, false, {'strategy' => 'deep', 'merge_hash_arrays' => true}, lookup_invocation)
|
520
|
+
expect(lookup_invocation.explainer.to_hash).to eq(
|
521
|
+
{
|
522
|
+
:branches => [
|
523
|
+
{
|
524
|
+
:key => 'abc::e',
|
525
|
+
:event => :not_found,
|
526
|
+
:type => :global,
|
527
|
+
:name => :hiera
|
528
|
+
},
|
529
|
+
{
|
530
|
+
:key => 'abc::e',
|
531
|
+
:value => { 'k1' => 'env_e1', 'k3' => 'env_e3' },
|
532
|
+
:event => :found,
|
533
|
+
:type => :data_provider,
|
534
|
+
:name => 'FunctionEnvDataProvider'
|
535
|
+
},
|
536
|
+
{
|
537
|
+
:key => 'abc::e',
|
538
|
+
:value => { 'k1' => 'module_e1', 'k2' => 'module_e2' },
|
539
|
+
:event => :found,
|
540
|
+
:type => :data_provider,
|
541
|
+
:name => 'FunctionModuleDataProvider',
|
542
|
+
:module => 'abc'
|
543
|
+
}
|
544
|
+
],
|
545
|
+
:value => { 'k1' => 'env_e1', 'k2' => 'module_e2', 'k3' => 'env_e3' },
|
546
|
+
:event => :result,
|
547
|
+
:merge => :deep,
|
548
|
+
:options => { 'merge_hash_arrays' => true },
|
549
|
+
:type => :merge
|
550
|
+
}
|
551
|
+
)
|
552
|
+
end
|
553
|
+
end
|
554
|
+
end
|
364
555
|
end
|
@@ -22,19 +22,19 @@ describe 'the regsubst function' do
|
|
22
22
|
|
23
23
|
context 'when using a string pattern' do
|
24
24
|
it 'should raise an Error if there is less than 3 arguments' do
|
25
|
-
expect { regsubst('foo', 'bar') }.to raise_error(/
|
25
|
+
expect { regsubst('foo', 'bar') }.to raise_error(/expects between 3 and 5 arguments, got 2/)
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'should raise an Error if there is more than 5 arguments' do
|
29
|
-
expect { regsubst('foo', 'bar', 'gazonk', 'G', 'U', 'y') }.to raise_error(/
|
29
|
+
expect { regsubst('foo', 'bar', 'gazonk', 'G', 'U', 'y') }.to raise_error(/expects between 3 and 5 arguments, got 6/)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'should raise an Error if given a bad flag' do
|
33
|
-
expect { regsubst('foo', 'bar', 'gazonk', 'X') }.to raise_error(/
|
33
|
+
expect { regsubst('foo', 'bar', 'gazonk', 'X') }.to raise_error(/parameter 'flags' expects a match for Pattern\[\/\^\[GEIM\]\*\$\/\], got 'X'/)
|
34
34
|
end
|
35
35
|
|
36
36
|
it 'should raise an Error if given a bad encoding' do
|
37
|
-
expect { regsubst('foo', 'bar', 'gazonk', nil, 'X') }.to raise_error(/
|
37
|
+
expect { regsubst('foo', 'bar', 'gazonk', nil, 'X') }.to raise_error(/parameter 'encoding' expects a match for Enum\['E', 'N', 'S', 'U'\], got 'X'/)
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'should raise an Error if given a bad regular expression' do
|
@@ -48,15 +48,15 @@ describe 'the regsubst function' do
|
|
48
48
|
|
49
49
|
context 'when using a regexp pattern' do
|
50
50
|
it 'should raise an Error if there is less than 3 arguments' do
|
51
|
-
expect { regsubst('foo', /bar/) }.to raise_error(/
|
51
|
+
expect { regsubst('foo', /bar/) }.to raise_error(/expects between 3 and 5 arguments, got 2/)
|
52
52
|
end
|
53
53
|
|
54
|
-
it 'should raise an Error if there is more than
|
55
|
-
expect { regsubst('foo', /bar/, 'gazonk', 'G', 'y') }.to raise_error(/
|
54
|
+
it 'should raise an Error if there is more than 5 arguments' do
|
55
|
+
expect { regsubst('foo', /bar/, 'gazonk', 'G', 'E', 'y') }.to raise_error(/expects between 3 and 5 arguments, got 6/)
|
56
56
|
end
|
57
57
|
|
58
58
|
it 'should raise an Error if given a flag other thant G' do
|
59
|
-
expect { regsubst('foo', /bar/, 'gazonk', 'I') }.to raise_error(/
|
59
|
+
expect { regsubst('foo', /bar/, 'gazonk', 'I') }.to raise_error(/expected one of/)
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'should handle global substitutions' do
|
@@ -94,5 +94,14 @@ describe 'the regsubst function' do
|
|
94
94
|
'G')
|
95
95
|
).to eql(['<130>.<236>.<254>.<10>', '<foo>.<example>.<com>','<coconut>', '<10>.<20>.<30>.<40>'])
|
96
96
|
end
|
97
|
+
|
98
|
+
it 'should return an empty array if given an empty array and string pattern' do
|
99
|
+
expect(regsubst([], '', '')).to eql([])
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'should return an empty array if given an empty array and regexp pattern' do
|
103
|
+
expect(regsubst([], //, '')).to eql([])
|
104
|
+
end
|
105
|
+
|
97
106
|
end
|
98
107
|
end
|
@@ -27,6 +27,6 @@ describe 'the scanf function' do
|
|
27
27
|
it 'errors when not given enough arguments' do
|
28
28
|
expect do
|
29
29
|
compile_to_catalog("'42'.scanf()")
|
30
|
-
end.to raise_error(
|
30
|
+
end.to raise_error(/'scanf' expects 2 arguments, got 1/)
|
31
31
|
end
|
32
32
|
end
|
@@ -21,11 +21,11 @@ describe 'the split function' do
|
|
21
21
|
let(:type_parser) { Puppet::Pops::Types::TypeParser.new }
|
22
22
|
|
23
23
|
it 'should raise an Error if there is less than 2 arguments' do
|
24
|
-
expect { split('a,b') }.to raise_error(/
|
24
|
+
expect { split('a,b') }.to raise_error(/'split' expects 2 arguments, got 1/)
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'should raise an Error if there is more than 2 arguments' do
|
28
|
-
expect { split('a,b','foo', 'bar') }.to raise_error(/
|
28
|
+
expect { split('a,b','foo', 'bar') }.to raise_error(/'split' expects 2 arguments, got 3/)
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'should raise a RegexpError if the regexp is malformed' do
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet/pops'
|
3
|
+
require 'puppet/loaders'
|
4
|
+
|
5
|
+
describe "the versioncmp function" do
|
6
|
+
|
7
|
+
before(:all) do
|
8
|
+
loaders = Puppet::Pops::Loaders.new(Puppet::Node::Environment.create(:testing, []))
|
9
|
+
Puppet.push_context({:loaders => loaders}, "test-examples")
|
10
|
+
end
|
11
|
+
|
12
|
+
after(:all) do
|
13
|
+
Puppet::Pops::Loaders.clear
|
14
|
+
Puppet::pop_context()
|
15
|
+
end
|
16
|
+
|
17
|
+
def versioncmp(*args)
|
18
|
+
Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'versioncmp').call({}, *args)
|
19
|
+
end
|
20
|
+
|
21
|
+
let(:type_parser) { Puppet::Pops::Types::TypeParser.new }
|
22
|
+
|
23
|
+
it 'should raise an Error if there is less than 2 arguments' do
|
24
|
+
expect { versioncmp('a,b') }.to raise_error(/expects 2 arguments, got 1/)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should raise an Error if there is more than 2 arguments' do
|
28
|
+
expect { versioncmp('a,b','foo', 'bar') }.to raise_error(/expects 2 arguments, got 3/)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should call Puppet::Util::Package.versioncmp (included in scope)" do
|
32
|
+
Puppet::Util::Package.expects(:versioncmp).with('1.2', '1.3').returns(-1)
|
33
|
+
|
34
|
+
expect(versioncmp('1.2', '1.3')).to eq -1
|
35
|
+
end
|
36
|
+
end
|