puppet 4.2.3 → 4.3.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.
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
@@ -167,15 +167,15 @@ describe "Puppet resource expressions" do
|
|
167
167
|
produces("notify{title:}; Notify[title] { * => { message => set}}" => "Notify[title][message] == 'set'")
|
168
168
|
produces("Notify { * => { message => set}}; notify{title:}" => "Notify[title][message] == 'set'")
|
169
169
|
|
170
|
-
fails("notify { title: unknown => value }" => /
|
170
|
+
fails("notify { title: unknown => value }" => /no parameter named 'unknown'/)
|
171
171
|
|
172
172
|
# this really needs to be a better error message.
|
173
|
-
fails("notify { title: * => { hash => value }, message => oops }" => /
|
173
|
+
fails("notify { title: * => { hash => value }, message => oops }" => /no parameter named 'hash'/)
|
174
174
|
|
175
175
|
# should this be a better error message?
|
176
|
-
fails("notify { title: message => oops, * => { hash => value } }" => /
|
176
|
+
fails("notify { title: message => oops, * => { hash => value } }" => /no parameter named 'hash'/)
|
177
177
|
|
178
|
-
fails("notify { title: * => { unknown => value } }" => /
|
178
|
+
fails("notify { title: * => { unknown => value } }" => /no parameter named 'unknown'/)
|
179
179
|
fails("
|
180
180
|
$x = { mode => '0666' }
|
181
181
|
$y = { owner => the_y }
|
@@ -78,7 +78,7 @@ describe "Parameter passing" do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
it "errors when no parameter is provided and there is no default" do
|
81
|
-
expect_puppet_error(
|
81
|
+
expect_puppet_error(/A\[a\]: expects a value for parameter 'x'/) do <<-MANIFEST
|
82
82
|
define a($x) { notify { 'something': message => $x }}
|
83
83
|
a {'a': }
|
84
84
|
MANIFEST
|
@@ -35,7 +35,7 @@ describe Puppet::Resource::Catalog do
|
|
35
35
|
node.stub_everything
|
36
36
|
|
37
37
|
Puppet::Node.indirection.expects(:find).returns(node)
|
38
|
-
compiler.expects(:compile).with(node).returns nil
|
38
|
+
compiler.expects(:compile).with(node, anything).returns nil
|
39
39
|
|
40
40
|
expect(Puppet::Resource::Catalog.indirection.find("me")).to be_nil
|
41
41
|
end
|
@@ -54,6 +54,7 @@ end
|
|
54
54
|
|
55
55
|
describe Puppet::Type.type(:package), "when packages with the same name are sourced" do
|
56
56
|
before :each do
|
57
|
+
Process.stubs(:euid).returns 0
|
57
58
|
@provider = stub(
|
58
59
|
'provider',
|
59
60
|
:class => Puppet::Type.type(:package).defaultprovider,
|
@@ -131,6 +132,7 @@ describe Puppet::Type.type(:package), 'logging package state transitions' do
|
|
131
132
|
let(:provider) { stub('provider', :class => Puppet::Type.type(:package).defaultprovider, :clear => nil, :validate_source => nil) }
|
132
133
|
|
133
134
|
before :each do
|
135
|
+
Process.stubs(:euid).returns 0
|
134
136
|
provider.stubs(:satisfies?).with([:purgeable]).returns(true)
|
135
137
|
provider.class.stubs(:instances).returns([])
|
136
138
|
provider.stubs(:install).returns nil
|
@@ -238,6 +238,24 @@ describe "Puppet::Util::Windows::Security", :if => Puppet.features.microsoft_win
|
|
238
238
|
expect(ace.mask).to eq(klass::FILE_ALL_ACCESS)
|
239
239
|
expect(ace).not_to be_inherited
|
240
240
|
end
|
241
|
+
|
242
|
+
if Puppet::FileSystem.directory?(path)
|
243
|
+
system_aces.each do |ace|
|
244
|
+
expect(ace).to be_object_inherit
|
245
|
+
expect(ace).to be_container_inherit
|
246
|
+
end
|
247
|
+
|
248
|
+
# it's critically important that this file be default created
|
249
|
+
# and that this file not have it's owner / group / mode set by winsec
|
250
|
+
nested_file = File.join(path, 'nested_file')
|
251
|
+
File.new(nested_file, 'w').close
|
252
|
+
|
253
|
+
system_aces = winsec.get_aces_for_path_by_sid(nested_file, sids[:system])
|
254
|
+
# even when SYSTEM is the owner (in CI), there should be an inherited SYSTEM
|
255
|
+
expect(system_aces.any? do |ace|
|
256
|
+
ace.mask == klass::FILE_ALL_ACCESS && ace.inherited?
|
257
|
+
end).to be_truthy
|
258
|
+
end
|
241
259
|
end
|
242
260
|
|
243
261
|
describe "for modes that require deny aces" do
|
@@ -11,10 +11,10 @@ RSpec::Matchers.define :include_in_order do |*expected|
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def failure_message
|
14
|
-
"expected #{@actual.inspect} to include#{
|
14
|
+
"expected #{@actual.inspect} to include#{expected} in order"
|
15
15
|
end
|
16
16
|
|
17
17
|
def failure_message_when_negated
|
18
|
-
"expected #{@actual.inspect} not to include#{
|
18
|
+
"expected #{@actual.inspect} not to include#{expected} in order"
|
19
19
|
end
|
20
20
|
end
|
@@ -22,25 +22,25 @@ shared_examples_for 'all iterative functions argument checks' do |func|
|
|
22
22
|
it 'raises an error when called with any parameters besides a block' do
|
23
23
|
expect do
|
24
24
|
compile_to_catalog(<<-MANIFEST)
|
25
|
-
[1].#{func}(1) |$v| { }
|
25
|
+
[1].#{func}(1,2) |$v,$y| { }
|
26
26
|
MANIFEST
|
27
|
-
end.to raise_error(Puppet::Error, /
|
27
|
+
end.to raise_error(Puppet::Error, /expects (?:between 1 and 2 arguments|1 argument), got 3/)
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'raises an error when called without a block' do
|
31
31
|
expect do
|
32
32
|
compile_to_catalog(<<-MANIFEST)
|
33
|
-
[1].#{func}
|
33
|
+
[1].#{func}
|
34
34
|
MANIFEST
|
35
|
-
end.to raise_error(Puppet::Error, /
|
35
|
+
end.to raise_error(Puppet::Error, /expects a block/)
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'raises an error when called with something that is not a block' do
|
39
39
|
expect do
|
40
40
|
compile_to_catalog(<<-MANIFEST)
|
41
|
-
[1].#{func}(1)
|
41
|
+
[1].#{func}(1,2)
|
42
42
|
MANIFEST
|
43
|
-
end.to raise_error(Puppet::Error, /
|
43
|
+
end.to raise_error(Puppet::Error, /expects (?:between 1 and 2 arguments|1 argument), got 3/)
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'raises an error when called with a block with too many required parameters' do
|
@@ -48,7 +48,7 @@ shared_examples_for 'all iterative functions argument checks' do |func|
|
|
48
48
|
compile_to_catalog(<<-MANIFEST)
|
49
49
|
[1].#{func}() |$v1, $v2, $v3| { }
|
50
50
|
MANIFEST
|
51
|
-
end.to raise_error(Puppet::Error, /
|
51
|
+
end.to raise_error(Puppet::Error, /block expects(?: between 1 and)? 2 arguments, got 3/)
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'raises an error when called with a block with too few parameters' do
|
@@ -56,7 +56,7 @@ shared_examples_for 'all iterative functions argument checks' do |func|
|
|
56
56
|
compile_to_catalog(<<-MANIFEST)
|
57
57
|
[1].#{func}() | | { }
|
58
58
|
MANIFEST
|
59
|
-
end.to raise_error(Puppet::Error, /
|
59
|
+
end.to raise_error(Puppet::Error, /block expects(?: between 1 and)? 2 arguments, got none/)
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'does not raise an error when called with a block with too many but optional arguments' do
|
data/spec/spec_helper.rb
CHANGED
@@ -43,6 +43,13 @@ Pathname.glob("#{dir}/shared_behaviours/**/*.rb") do |behaviour|
|
|
43
43
|
require behaviour.relative_path_from(Pathname.new(dir))
|
44
44
|
end
|
45
45
|
|
46
|
+
require 'vcr'
|
47
|
+
VCR.configure do |vcr|
|
48
|
+
vcr.cassette_library_dir = File.expand_path('vcr/cassettes', PuppetSpec::FIXTURE_DIR)
|
49
|
+
vcr.hook_into :webmock
|
50
|
+
vcr.configure_rspec_metadata!
|
51
|
+
end
|
52
|
+
|
46
53
|
RSpec.configure do |config|
|
47
54
|
include PuppetSpec::Fixtures
|
48
55
|
|
@@ -58,17 +58,17 @@ describe Puppet::Agent::Locker do
|
|
58
58
|
expect(@locker.lock { :result }).to eq(:result)
|
59
59
|
end
|
60
60
|
|
61
|
-
it "should
|
61
|
+
it "should raise LockError when the lock method does not receive the lock" do
|
62
62
|
@locker.send(:lockfile).expects(:lock).returns false
|
63
63
|
|
64
|
-
expect
|
64
|
+
expect { @locker.lock {} }.to raise_error(Puppet::LockError)
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should not yield when the lock method does not receive the lock" do
|
68
68
|
@locker.send(:lockfile).expects(:lock).returns false
|
69
69
|
|
70
70
|
yielded = false
|
71
|
-
@locker.lock { yielded = true }
|
71
|
+
expect { @locker.lock { yielded = true } }.to raise_error(Puppet::LockError)
|
72
72
|
expect(yielded).to be_falsey
|
73
73
|
end
|
74
74
|
|
@@ -76,7 +76,7 @@ describe Puppet::Agent::Locker do
|
|
76
76
|
@locker.send(:lockfile).expects(:lock).returns false
|
77
77
|
@locker.send(:lockfile).expects(:unlock).never
|
78
78
|
|
79
|
-
@locker.lock {}
|
79
|
+
expect { @locker.lock {} }.to raise_error(Puppet::LockError)
|
80
80
|
end
|
81
81
|
|
82
82
|
it "should unlock after yielding upon obtaining a lock" do
|
data/spec/unit/agent_spec.rb
CHANGED
@@ -58,7 +58,6 @@ describe Puppet::Agent do
|
|
58
58
|
|
59
59
|
client.expects(:run)
|
60
60
|
|
61
|
-
@agent.stubs(:running?).returns false
|
62
61
|
@agent.stubs(:disabled?).returns false
|
63
62
|
@agent.run
|
64
63
|
end
|
@@ -75,7 +74,6 @@ describe Puppet::Agent do
|
|
75
74
|
describe "when being run" do
|
76
75
|
before do
|
77
76
|
AgentTestClient.stubs(:lockfile_path).returns "/my/lock"
|
78
|
-
@agent.stubs(:running?).returns false
|
79
77
|
@agent.stubs(:disabled?).returns false
|
80
78
|
end
|
81
79
|
|
@@ -85,12 +83,6 @@ describe Puppet::Agent do
|
|
85
83
|
@agent.run
|
86
84
|
end
|
87
85
|
|
88
|
-
it "should do nothing if already running" do
|
89
|
-
@agent.expects(:running?).returns true
|
90
|
-
AgentTestClient.expects(:new).never
|
91
|
-
@agent.run
|
92
|
-
end
|
93
|
-
|
94
86
|
it "should do nothing if disabled" do
|
95
87
|
@agent.expects(:disabled?).returns(true)
|
96
88
|
AgentTestClient.expects(:new).never
|
@@ -197,6 +197,11 @@ describe Puppet::Application::Agent do
|
|
197
197
|
Puppet.stubs(:settraps)
|
198
198
|
end
|
199
199
|
|
200
|
+
it "should not run with extra arguments" do
|
201
|
+
@puppetd.command_line.stubs(:args).returns(%w{disable})
|
202
|
+
expect{@puppetd.setup}.to raise_error ArgumentError, /does not take parameters/
|
203
|
+
end
|
204
|
+
|
200
205
|
describe "with --test" do
|
201
206
|
it "should call setup_test" do
|
202
207
|
@puppetd.options[:test] = true
|
@@ -470,4 +470,12 @@ describe Puppet::Application::Apply do
|
|
470
470
|
@apply.send(:apply_catalog, catalog)
|
471
471
|
end
|
472
472
|
end
|
473
|
+
|
474
|
+
it "should honor the catalog_cache_terminus setting" do
|
475
|
+
Puppet.settings[:catalog_cache_terminus] = "json"
|
476
|
+
Puppet::Resource::Catalog.indirection.expects(:cache_class=).with(:json)
|
477
|
+
|
478
|
+
@apply.initialize_app_defaults
|
479
|
+
@apply.setup
|
480
|
+
end
|
473
481
|
end
|
@@ -21,7 +21,15 @@ describe Puppet::Application::Filebucket do
|
|
21
21
|
expect(@filebucket).to respond_to(:restore)
|
22
22
|
end
|
23
23
|
|
24
|
-
|
24
|
+
it "should declare a diff command" do
|
25
|
+
expect(@filebucket).to respond_to(:diff)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should declare a list command" do
|
29
|
+
expect(@filebucket).to respond_to(:list)
|
30
|
+
end
|
31
|
+
|
32
|
+
[:bucket, :debug, :local, :remote, :verbose, :fromdate, :todate].each do |option|
|
25
33
|
it "should declare handle_#{option} method" do
|
26
34
|
expect(@filebucket).to respond_to("handle_#{option}".to_sym)
|
27
35
|
end
|
@@ -201,6 +209,84 @@ describe Puppet::Application::Filebucket do
|
|
201
209
|
end
|
202
210
|
end
|
203
211
|
|
212
|
+
describe "the command diff" do
|
213
|
+
it "should call the client diff method with 2 given checksums" do
|
214
|
+
md5a="DEADBEEF"
|
215
|
+
md5b="BEEF"
|
216
|
+
Puppet::FileSystem.stubs(:exist?).returns(false)
|
217
|
+
@filebucket.stubs(:args).returns([md5a, md5b])
|
218
|
+
|
219
|
+
@client.expects(:diff).with(md5a,md5b, nil, nil)
|
220
|
+
|
221
|
+
@filebucket.diff
|
222
|
+
end
|
223
|
+
|
224
|
+
it "should call the clien diff with a path if the second argument is a file" do
|
225
|
+
md5a="DEADBEEF"
|
226
|
+
md5b="BEEF"
|
227
|
+
Puppet::FileSystem.stubs(:exist?).with(md5a).returns(false)
|
228
|
+
Puppet::FileSystem.stubs(:exist?).with(md5b).returns(true)
|
229
|
+
@filebucket.stubs(:args).returns([md5a, md5b])
|
230
|
+
|
231
|
+
@client.expects(:diff).with(md5a, nil, nil, md5b)
|
232
|
+
|
233
|
+
@filebucket.diff
|
234
|
+
end
|
235
|
+
|
236
|
+
it "should call the clien diff with a path if the first argument is a file" do
|
237
|
+
md5a="DEADBEEF"
|
238
|
+
md5b="BEEF"
|
239
|
+
Puppet::FileSystem.stubs(:exist?).with(md5a).returns(true)
|
240
|
+
Puppet::FileSystem.stubs(:exist?).with(md5b).returns(false)
|
241
|
+
@filebucket.stubs(:args).returns([md5a, md5b])
|
242
|
+
|
243
|
+
@client.expects(:diff).with(nil, md5b, md5a, nil)
|
244
|
+
|
245
|
+
@filebucket.diff
|
246
|
+
end
|
247
|
+
|
248
|
+
it "should call the clien diff with paths if the both arguments are files" do
|
249
|
+
md5a="DEADBEEF"
|
250
|
+
md5b="BEEF"
|
251
|
+
Puppet::FileSystem.stubs(:exist?).with(md5a).returns(true)
|
252
|
+
Puppet::FileSystem.stubs(:exist?).with(md5b).returns(true)
|
253
|
+
@filebucket.stubs(:args).returns([md5a, md5b])
|
254
|
+
|
255
|
+
@client.expects(:diff).with(nil, nil, md5a, md5b)
|
256
|
+
|
257
|
+
@filebucket.diff
|
258
|
+
end
|
259
|
+
|
260
|
+
it "should fail if only one checksum is given" do
|
261
|
+
md5a="DEADBEEF"
|
262
|
+
@filebucket.stubs(:args).returns([md5a])
|
263
|
+
|
264
|
+
expect { @filebucket.diff }.to raise_error Puppet::Error
|
265
|
+
end
|
266
|
+
end
|
267
|
+
describe "the command list" do
|
268
|
+
it "should call the client list method with nil dates" do
|
269
|
+
@client.expects(:list).with(nil, nil)
|
270
|
+
|
271
|
+
@filebucket.list
|
272
|
+
end
|
273
|
+
it "should call the client list method with the given dates" do
|
274
|
+
# 3 Hours ago
|
275
|
+
threehours = 60*60*3
|
276
|
+
fromdate = (Time.now - threehours).strftime("%F %T")
|
277
|
+
# 1 Hour ago
|
278
|
+
onehour = 60*60
|
279
|
+
todate = (Time.now - onehour).strftime("%F %T")
|
280
|
+
|
281
|
+
@filebucket.options.stubs(:[]).with(:fromdate).returns(fromdate)
|
282
|
+
@filebucket.options.stubs(:[]).with(:todate).returns(todate)
|
283
|
+
|
284
|
+
@client.expects(:list).with(fromdate, todate)
|
285
|
+
|
286
|
+
@filebucket.list
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
204
290
|
end
|
205
291
|
|
206
292
|
|
@@ -0,0 +1,195 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet/application/lookup'
|
3
|
+
require 'puppet/pops/lookup'
|
4
|
+
|
5
|
+
describe Puppet::Application::Lookup do
|
6
|
+
|
7
|
+
context "when running with incorrect command line options" do
|
8
|
+
let (:lookup) { Puppet::Application[:lookup] }
|
9
|
+
|
10
|
+
it "errors if no keys are given via the command line" do
|
11
|
+
lookup.options[:node] = 'dantooine.local'
|
12
|
+
expected_error = "No keys were given to lookup."
|
13
|
+
|
14
|
+
expect { lookup.run_command }.to raise_error(RuntimeError, expected_error)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "does not allow deep merge options if '--merge' was not set to deep" do
|
18
|
+
lookup.options[:node] = 'dantooine.local'
|
19
|
+
lookup.options[:merge_hash_arrays] = true
|
20
|
+
lookup.options[:merge] = 'hash'
|
21
|
+
lookup.command_line.stubs(:args).returns(['atton', 'kreia'])
|
22
|
+
|
23
|
+
expected_error = "The options --knock-out-prefix, --sort-merged-arrays, --unpack-arrays, and --merge-hash-arrays are only available with '--merge deep'\nRun 'puppet lookup --help' for more details"
|
24
|
+
|
25
|
+
expect { lookup.run_command }.to raise_error(RuntimeError, expected_error)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "when running with correct command line options" do
|
30
|
+
let (:lookup) { Puppet::Application[:lookup] }
|
31
|
+
|
32
|
+
it "calls the lookup method with the correct arguments" do
|
33
|
+
lookup.options[:node] = 'dantooine.local'
|
34
|
+
lookup.options[:render_as] = :s;
|
35
|
+
lookup.options[:merge_hash_arrays] = true
|
36
|
+
lookup.options[:merge] = 'deep'
|
37
|
+
lookup.command_line.stubs(:args).returns(['atton', 'kreia'])
|
38
|
+
lookup.stubs(:generate_scope).yields('scope')
|
39
|
+
|
40
|
+
expected_merge = { "strategy" => "deep", "sort_merge_arrays" => false, "merge_hash_arrays" => true }
|
41
|
+
|
42
|
+
(Puppet::Pops::Lookup).expects(:lookup).with(['atton', 'kreia'], nil, nil, false, expected_merge, anything).returns('rand')
|
43
|
+
|
44
|
+
expect { lookup.run_command }.to output("rand\n").to_stdout
|
45
|
+
end
|
46
|
+
|
47
|
+
it "prints the value found by lookup" do
|
48
|
+
lookup.options[:node] = 'dantooine.local'
|
49
|
+
lookup.command_line.stubs(:args).returns(['atton', 'kreia'])
|
50
|
+
lookup.stubs(:generate_scope).yields('scope')
|
51
|
+
|
52
|
+
Puppet::Pops::Lookup.stubs(:lookup).returns('rand')
|
53
|
+
|
54
|
+
expect { lookup.run_command }.to output("--- rand\n...\n").to_stdout
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
context 'when asked to explain' do
|
60
|
+
let (:lookup) { Puppet::Application[:lookup] }
|
61
|
+
|
62
|
+
# There is a fully configured 'sample' environment in fixtures at this location
|
63
|
+
let(:environmentpath) { File.absolute_path(File.join(my_fixture_dir(), '../environments')) }
|
64
|
+
|
65
|
+
let(:facts) { Puppet::Node::Facts.new("facts", {}) }
|
66
|
+
|
67
|
+
let(:node) { Puppet::Node.new("testnode", :facts => facts, :environment => environment) }
|
68
|
+
|
69
|
+
let(:expected_json_hash) { {
|
70
|
+
'type' => 'merge',
|
71
|
+
'merge' => 'first',
|
72
|
+
'event' => 'result',
|
73
|
+
'value' => 'This is A',
|
74
|
+
'branches' => [
|
75
|
+
{ 'key' => 'a',
|
76
|
+
'event' => 'not_found',
|
77
|
+
'type' => 'global',
|
78
|
+
'name' => 'hiera'
|
79
|
+
},
|
80
|
+
{
|
81
|
+
'type' => 'data_provider',
|
82
|
+
'name' => 'Hiera Data Provider, version 4',
|
83
|
+
'configuration_path' => "#{environmentpath}/production/hiera.yaml",
|
84
|
+
'branches' => [
|
85
|
+
{
|
86
|
+
'name' => 'common',
|
87
|
+
'type' => 'data_provider',
|
88
|
+
'branches' => [
|
89
|
+
{
|
90
|
+
'key' => 'a',
|
91
|
+
'value' => 'This is A',
|
92
|
+
'event' => 'found',
|
93
|
+
'type' => 'path',
|
94
|
+
'original_path' => 'common',
|
95
|
+
'path' => "#{environmentpath}/production/data/common.yaml",
|
96
|
+
}]
|
97
|
+
}]
|
98
|
+
}]
|
99
|
+
} }
|
100
|
+
|
101
|
+
let(:expected_yaml_hash) { {
|
102
|
+
:type => :merge,
|
103
|
+
:merge => :first,
|
104
|
+
:event => :result,
|
105
|
+
:value => 'This is A',
|
106
|
+
:branches => [
|
107
|
+
{ :key => 'a',
|
108
|
+
:event => :not_found,
|
109
|
+
:type => :global,
|
110
|
+
:name => :hiera
|
111
|
+
},
|
112
|
+
{
|
113
|
+
:type => :data_provider,
|
114
|
+
:name => 'Hiera Data Provider, version 4',
|
115
|
+
:configuration_path => "#{environmentpath}/production/hiera.yaml",
|
116
|
+
:branches => [
|
117
|
+
{
|
118
|
+
:type => :data_provider,
|
119
|
+
:name => 'common',
|
120
|
+
:branches => [
|
121
|
+
{
|
122
|
+
:key => 'a',
|
123
|
+
:value => 'This is A',
|
124
|
+
:event => :found,
|
125
|
+
:type => :path,
|
126
|
+
:original_path => 'common',
|
127
|
+
:path => "#{environmentpath}/production/data/common.yaml",
|
128
|
+
}]
|
129
|
+
}]
|
130
|
+
}]
|
131
|
+
} }
|
132
|
+
|
133
|
+
around(:each) do |example|
|
134
|
+
# Initialize settings to get a full compile as close as possible to a real
|
135
|
+
# environment load
|
136
|
+
Puppet.settings.initialize_global_settings
|
137
|
+
loader = Puppet::Environments::Directories.new(environmentpath, [])
|
138
|
+
Puppet.override(:environments => loader) do
|
139
|
+
example.run
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'produces human readable text by default' do
|
144
|
+
lookup.options[:node] = Puppet::Node.new("testnode", :facts => facts, :environment => 'production')
|
145
|
+
lookup.options[:explain] = true
|
146
|
+
lookup.command_line.stubs(:args).returns(['a'])
|
147
|
+
expect { lookup.run_command }.to output(<<-EXPLANATION).to_stdout
|
148
|
+
Merge strategy first
|
149
|
+
Data Binding "hiera"
|
150
|
+
No such key: "a"
|
151
|
+
Data Provider "Hiera Data Provider, version 4"
|
152
|
+
ConfigurationPath "#{environmentpath}/production/hiera.yaml"
|
153
|
+
Data Provider "common"
|
154
|
+
Path "#{environmentpath}/production/data/common.yaml"
|
155
|
+
Original path: common
|
156
|
+
Found key: "a" value: "This is A"
|
157
|
+
Merged result: "This is A"
|
158
|
+
EXPLANATION
|
159
|
+
end
|
160
|
+
|
161
|
+
it 'can produce a yaml explanation' do
|
162
|
+
lookup.options[:node] = Puppet::Node.new("testnode", :facts => facts, :environment => 'production')
|
163
|
+
lookup.options[:explain] = true
|
164
|
+
lookup.options[:render_as] = :yaml
|
165
|
+
lookup.command_line.stubs(:args).returns(['a'])
|
166
|
+
save_stdout = $stdout
|
167
|
+
output = nil
|
168
|
+
begin
|
169
|
+
$stdout = StringIO.new
|
170
|
+
lookup.run_command
|
171
|
+
output = $stdout.string
|
172
|
+
ensure
|
173
|
+
$stdout = save_stdout
|
174
|
+
end
|
175
|
+
expect(YAML.load(output)).to eq(expected_yaml_hash)
|
176
|
+
end
|
177
|
+
|
178
|
+
it 'can produce a json explanation' do
|
179
|
+
lookup.options[:node] = Puppet::Node.new("testnode", :facts => facts, :environment => 'production')
|
180
|
+
lookup.options[:explain] = true
|
181
|
+
lookup.options[:render_as] = :json
|
182
|
+
lookup.command_line.stubs(:args).returns(['a'])
|
183
|
+
save_stdout = $stdout
|
184
|
+
output = nil
|
185
|
+
begin
|
186
|
+
$stdout = StringIO.new
|
187
|
+
lookup.run_command
|
188
|
+
output = $stdout.string
|
189
|
+
ensure
|
190
|
+
$stdout = save_stdout
|
191
|
+
end
|
192
|
+
expect(JSON.parse(output)).to eq(expected_json_hash)
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|