puppet 4.2.0 → 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.
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +5 -7
- data/README.md +1 -1
- data/Rakefile +20 -0
- data/ext/debian/puppet.init +0 -1
- data/ext/debian/puppet.logrotate +14 -5
- data/ext/osx/puppet.plist +2 -4
- data/ext/project_data.yaml +1 -1
- data/ext/redhat/client.init +65 -12
- data/ext/redhat/logrotate +15 -3
- data/ext/redhat/puppet.spec.erb +5 -1
- data/ext/redhat/server.init +1 -1
- data/ext/solaris/smf/puppet +44 -0
- data/ext/solaris/smf/puppet.xml +44 -0
- data/ext/suse/client.init +27 -27
- data/ext/suse/server.init +2 -2
- data/ext/systemd/puppet.service +1 -0
- data/install.rb +21 -39
- data/lib/hiera/puppet_function.rb +5 -5
- data/lib/puppet/agent/locker.rb +11 -2
- data/lib/puppet/agent.rb +4 -4
- data/lib/puppet/application/agent.rb +28 -14
- data/lib/puppet/application/apply.rb +17 -4
- data/lib/puppet/application/cert.rb +16 -0
- data/lib/puppet/application/filebucket.rb +78 -4
- data/lib/puppet/application/lookup.rb +356 -0
- data/lib/puppet/application/master.rb +5 -1
- data/lib/puppet/configurer.rb +9 -5
- data/lib/puppet/context/trusted_information.rb +21 -1
- data/lib/puppet/context.rb +16 -1
- data/lib/puppet/daemon.rb +17 -13
- data/lib/puppet/data_binding.rb +4 -2
- 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/data_providers.rb +12 -13
- data/lib/puppet/defaults.rb +14 -3
- data/lib/puppet/environments.rb +94 -6
- 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/file_system/windows.rb +3 -1
- 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/epp.rb +29 -37
- data/lib/puppet/functions/filter.rb +60 -25
- 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 +77 -4
- data/lib/puppet/functions/inline_epp.rb +44 -71
- 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/functions.rb +2 -4
- 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/indirection.rb +6 -1
- 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/class_information_service.rb +111 -0
- data/lib/puppet/info_service.rb +7 -0
- data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
- 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/module_tool/skeleton/templates/generator/manifests/init.pp.erb +25 -18
- data/lib/puppet/network/authconfig.rb +21 -1
- data/lib/puppet/network/authorization.rb +8 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +59 -0
- data/lib/puppet/network/http/api/master/v3.rb +7 -1
- data/lib/puppet/node/environment.rb +9 -2
- data/lib/puppet/node.rb +11 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +39 -1
- 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/compiler/catalog_validator.rb +33 -0
- data/lib/puppet/parser/compiler.rb +300 -12
- 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/epp.rb +29 -37
- 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/inline_epp.rb +35 -60
- data/lib/puppet/parser/functions/inline_template.rb +2 -2
- 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 +103 -21
- data/lib/puppet/parser.rb +3 -0
- data/lib/puppet/plugins/configuration.rb +3 -2
- data/lib/puppet/plugins/data_providers/data_provider.rb +283 -0
- data/lib/puppet/plugins/data_providers/registry.rb +84 -0
- data/lib/puppet/plugins/data_providers.rb +12 -60
- 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 +10 -6
- 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 +11 -3
- data/lib/puppet/pops/label_provider.rb +1 -1
- data/lib/puppet/pops/lookup/explainer.rb +402 -0
- data/lib/puppet/pops/lookup/invocation.rb +117 -0
- data/lib/puppet/pops/lookup.rb +25 -47
- data/lib/puppet/pops/merge_strategy.rb +73 -5
- data/lib/puppet/pops/model/factory.rb +38 -3
- data/lib/puppet/pops/model/model_label_provider.rb +10 -1
- data/lib/puppet/pops/model/model_meta.rb +19 -1
- 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 +65 -2
- data/lib/puppet/pops/parser/eparser.rb +1569 -1241
- data/lib/puppet/pops/parser/lexer2.rb +32 -1
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/parser_support.rb +25 -13
- data/lib/puppet/pops/patterns.rb +3 -0
- 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 +118 -129
- data/lib/puppet/pops/types/types.rb +1394 -255
- data/lib/puppet/pops/types/types_meta.rb +0 -234
- data/lib/puppet/pops/validation/checker4_0.rb +49 -1
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +3 -1
- data/lib/puppet/pops/validation.rb +7 -2
- data/lib/puppet/pops.rb +19 -17
- data/lib/puppet/provider/augeas/augeas.rb +50 -0
- data/lib/puppet/provider/exec.rb +6 -1
- 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/nim.rb +1 -1
- 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 +20 -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/launchd.rb +36 -7
- 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 +25 -5
- data/lib/puppet/provider/sshkey/parsed.rb +19 -9
- data/lib/puppet/provider/zone/solaris.rb +2 -2
- data/lib/puppet/reference/configuration.rb +10 -4
- data/lib/puppet/reference/report.rb +9 -12
- data/lib/puppet/reports.rb +5 -1
- 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/resource.rb +50 -73
- data/lib/puppet/settings/file_setting.rb +10 -9
- 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/additional_resource_generator.rb +71 -8
- data/lib/puppet/transaction/resource_harness.rb +9 -4
- data/lib/puppet/transaction.rb +8 -1
- data/lib/puppet/type/augeas.rb +8 -0
- data/lib/puppet/type/file/source.rb +14 -12
- data/lib/puppet/type/package.rb +9 -6
- data/lib/puppet/type/user.rb +4 -2
- data/lib/puppet/type.rb +78 -7
- data/lib/puppet/util/command_line.rb +4 -0
- data/lib/puppet/util/execution.rb +18 -2
- data/lib/puppet/util/tagging.rb +7 -1
- data/lib/puppet/util/windows/adsi.rb +5 -2
- data/lib/puppet/util/windows/security.rb +4 -1
- data/lib/puppet/util/windows/taskscheduler.rb +1 -1
- data/lib/puppet/util.rb +9 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +12 -0
- 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 +30 -24
- data/spec/integration/parser/resource_expressions_spec.rb +4 -4
- data/spec/integration/parser/undef_param_spec.rb +1 -1
- data/spec/integration/provider/package_spec.rb +3 -1
- data/spec/integration/resource/catalog_spec.rb +1 -1
- data/spec/integration/ssl/certificate_authority_spec.rb +0 -1
- data/spec/integration/ssl/certificate_request_spec.rb +0 -1
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -1
- data/spec/integration/ssl/host_spec.rb +0 -1
- data/spec/integration/type/package_spec.rb +2 -0
- data/spec/integration/util/rdoc/parser_spec.rb +1 -1
- 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 +9 -1
- data/spec/unit/application/filebucket_spec.rb +88 -2
- data/spec/unit/application/lookup_spec.rb +195 -0
- data/spec/unit/application/master_spec.rb +2 -2
- data/spec/unit/application_spec.rb +3 -3
- 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/environments_spec.rb +2 -0
- data/spec/unit/face/node_spec.rb +1 -1
- data/spec/unit/file_bucket/dipper_spec.rb +210 -1
- data/spec/unit/file_serving/configuration_spec.rb +1 -1
- data/spec/unit/file_system_spec.rb +20 -0
- 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/filter_spec.rb +18 -0
- data/spec/unit/functions/hiera_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/graph/sequential_prioritizer_spec.rb +1 -1
- 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/indirection_spec.rb +13 -2
- data/spec/unit/indirector/request_spec.rb +8 -8
- data/spec/unit/indirector/ssl_file_spec.rb +1 -1
- data/spec/unit/indirector/yaml_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +236 -0
- data/spec/unit/module_tool/application_spec.rb +1 -1
- data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
- 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/authstore_spec.rb +1 -1
- data/spec/unit/network/http/compression_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +14 -19
- data/spec/unit/network/http/handler_spec.rb +0 -5
- data/spec/unit/network/rights_spec.rb +3 -3
- data/spec/unit/node_spec.rb +27 -0
- data/spec/unit/parser/ast/leaf_spec.rb +1 -1
- 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 +20 -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 +39 -0
- 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 +15 -12
- data/spec/unit/pops/validator/validator_spec.rb +68 -0
- data/spec/unit/property_spec.rb +1 -1
- 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/nim_spec.rb +6 -6
- 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 +35 -12
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +10 -0
- data/spec/unit/provider/service/debian_spec.rb +28 -0
- data/spec/unit/provider/service/gentoo_spec.rb +1 -0
- data/spec/unit/provider/service/init_spec.rb +6 -0
- data/spec/unit/provider/service/launchd_spec.rb +85 -10
- data/spec/unit/provider/service/openrc_spec.rb +1 -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 +20 -4
- data/spec/unit/provider/service/systemd_spec.rb +79 -29
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +1 -1
- data/spec/unit/provider/sshkey/parsed_spec.rb +23 -0
- data/spec/unit/provider/user/windows_adsi_spec.rb +2 -1
- data/spec/unit/provider/zone/solaris_spec.rb +19 -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 +23 -5
- data/spec/unit/settings/file_setting_spec.rb +31 -0
- data/spec/unit/settings_spec.rb +91 -2
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +4 -3
- data/spec/unit/ssl/certificate_authority_spec.rb +5 -3
- data/spec/unit/ssl/host_spec.rb +2 -2
- 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/transaction_spec.rb +7 -0
- data/spec/unit/type/exec_spec.rb +16 -8
- data/spec/unit/type/host_spec.rb +4 -4
- data/spec/unit/type/package_spec.rb +1 -0
- data/spec/unit/type/tidy_spec.rb +4 -4
- data/spec/unit/type/user_spec.rb +14 -7
- data/spec/unit/type/vlan_spec.rb +1 -1
- data/spec/unit/type_spec.rb +1 -1
- data/spec/unit/util/ldap/generator_spec.rb +1 -1
- data/spec/unit/util/network_device/cisco/device_spec.rb +1 -1
- data/spec/unit/util/network_device/transport/ssh_spec.rb +1 -1
- data/spec/unit/util/network_device_spec.rb +1 -1
- data/spec/unit/util/storage_spec.rb +5 -1
- data/spec/unit/util/windows/adsi_spec.rb +13 -0
- data/spec/unit/util_spec.rb +21 -2
- metadata +173 -7
- data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +0 -175
- data/spec/integration/data_binding.rb +0 -104
|
@@ -49,6 +49,10 @@ class CompilerTestResource
|
|
|
49
49
|
def line
|
|
50
50
|
"42"
|
|
51
51
|
end
|
|
52
|
+
|
|
53
|
+
def resource_type
|
|
54
|
+
self.class
|
|
55
|
+
end
|
|
52
56
|
end
|
|
53
57
|
|
|
54
58
|
describe Puppet::Parser::Compiler do
|
|
@@ -655,7 +659,7 @@ describe Puppet::Parser::Compiler do
|
|
|
655
659
|
@node.classes = klass
|
|
656
660
|
klass = Puppet::Resource::Type.new(:hostclass, 'foo', :arguments => {'a' => nil, 'b' => nil})
|
|
657
661
|
@compiler.topscope.known_resource_types.add klass
|
|
658
|
-
expect { @compiler.compile }.to raise_error(Puppet::
|
|
662
|
+
expect { @compiler.compile }.to raise_error(Puppet::PreformattedError, /Class\[Foo\]: expects a value for parameter 'b'/)
|
|
659
663
|
end
|
|
660
664
|
|
|
661
665
|
it "should fail if invalid parameters are passed" do
|
|
@@ -663,7 +667,7 @@ describe Puppet::Parser::Compiler do
|
|
|
663
667
|
@node.classes = klass
|
|
664
668
|
klass = Puppet::Resource::Type.new(:hostclass, 'foo', :arguments => {})
|
|
665
669
|
@compiler.topscope.known_resource_types.add klass
|
|
666
|
-
expect { @compiler.compile }.to raise_error(Puppet::
|
|
670
|
+
expect { @compiler.compile }.to raise_error(Puppet::PreformattedError, /Class\[Foo\]: has no parameter named '3'/)
|
|
667
671
|
end
|
|
668
672
|
|
|
669
673
|
it "should ensure class is in catalog without params" do
|
|
@@ -1202,13 +1206,15 @@ describe Puppet::Parser::Compiler do
|
|
|
1202
1206
|
|
|
1203
1207
|
it 'should recompute the version after input files are re-parsed' do
|
|
1204
1208
|
Puppet[:code] = 'class foo { }'
|
|
1205
|
-
Time.
|
|
1209
|
+
first_time = Time.at(1)
|
|
1210
|
+
second_time = Time.at(200)
|
|
1211
|
+
Time.stubs(:now).returns(first_time)
|
|
1206
1212
|
node = Puppet::Node.new('mynode')
|
|
1207
|
-
expect(Puppet::Parser::Compiler.compile(node).version).to eq(
|
|
1208
|
-
Time.stubs(:now).returns(
|
|
1209
|
-
expect(Puppet::Parser::Compiler.compile(node).version).to eq(
|
|
1213
|
+
expect(Puppet::Parser::Compiler.compile(node).version).to eq(first_time.to_i)
|
|
1214
|
+
Time.stubs(:now).returns(second_time)
|
|
1215
|
+
expect(Puppet::Parser::Compiler.compile(node).version).to eq(first_time.to_i) # no change because files didn't change
|
|
1210
1216
|
Puppet[:code] = nil
|
|
1211
|
-
expect(Puppet::Parser::Compiler.compile(node).version).to eq(
|
|
1217
|
+
expect(Puppet::Parser::Compiler.compile(node).version).to eq(second_time.to_i)
|
|
1212
1218
|
end
|
|
1213
1219
|
|
|
1214
1220
|
['define', 'class', 'node'].each do |thing|
|
|
@@ -1450,7 +1456,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1450
1456
|
define foo(Integer $x) { }
|
|
1451
1457
|
foo { 'test': x =>'say friend' }
|
|
1452
1458
|
MANIFEST
|
|
1453
|
-
end.to raise_error(/
|
|
1459
|
+
end.to raise_error(/Foo\[test\]: parameter 'x' expects an Integer value, got String/)
|
|
1454
1460
|
end
|
|
1455
1461
|
|
|
1456
1462
|
it 'denies undef for a non-optional type' do
|
|
@@ -1459,7 +1465,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1459
1465
|
define foo(Integer $x) { }
|
|
1460
1466
|
foo { 'test': x => undef }
|
|
1461
1467
|
MANIFEST
|
|
1462
|
-
end.to raise_error(/
|
|
1468
|
+
end.to raise_error(/Foo\[test\]: parameter 'x' expects an Integer value, got Undef/)
|
|
1463
1469
|
end
|
|
1464
1470
|
|
|
1465
1471
|
it 'denies non type compliant default argument' do
|
|
@@ -1468,7 +1474,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1468
1474
|
define foo(Integer $x = 'pow') { }
|
|
1469
1475
|
foo { 'test': }
|
|
1470
1476
|
MANIFEST
|
|
1471
|
-
end.to raise_error(/
|
|
1477
|
+
end.to raise_error(/Foo\[test\]: parameter 'x' expects an Integer value, got String/)
|
|
1472
1478
|
end
|
|
1473
1479
|
|
|
1474
1480
|
it 'denies undef as the default for a non-optional type' do
|
|
@@ -1477,7 +1483,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1477
1483
|
define foo(Integer $x = undef) { }
|
|
1478
1484
|
foo { 'test': }
|
|
1479
1485
|
MANIFEST
|
|
1480
|
-
end.to raise_error(/
|
|
1486
|
+
end.to raise_error(/Foo\[test\]: parameter 'x' expects an Integer value, got Undef/)
|
|
1481
1487
|
end
|
|
1482
1488
|
|
|
1483
1489
|
it 'accepts a Resource as a Type' do
|
|
@@ -1498,7 +1504,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1498
1504
|
define foo(Struct[{b => Integer, d=>String}] $a) { }
|
|
1499
1505
|
foo{ bar: a => {b => 5, c => 'stuff'}}
|
|
1500
1506
|
MANIFEST
|
|
1501
|
-
end.to raise_error(/
|
|
1507
|
+
end.to raise_error(/Foo\[bar\]:\s+parameter 'a' expects a value for key 'd'\s+parameter 'a' has no 'c' key/m)
|
|
1502
1508
|
end
|
|
1503
1509
|
end
|
|
1504
1510
|
|
|
@@ -1536,7 +1542,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1536
1542
|
class foo(Integer $x) { }
|
|
1537
1543
|
class { 'foo': x =>'say friend' }
|
|
1538
1544
|
MANIFEST
|
|
1539
|
-
end.to raise_error(/
|
|
1545
|
+
end.to raise_error(/Class\[Foo\]: parameter 'x' expects an Integer value, got String/)
|
|
1540
1546
|
end
|
|
1541
1547
|
|
|
1542
1548
|
it 'denies undef for a non-optional type' do
|
|
@@ -1545,7 +1551,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1545
1551
|
class foo(Integer $x) { }
|
|
1546
1552
|
class { 'foo': x => undef }
|
|
1547
1553
|
MANIFEST
|
|
1548
|
-
end.to raise_error(/
|
|
1554
|
+
end.to raise_error(/Class\[Foo\]: parameter 'x' expects an Integer value, got Undef/)
|
|
1549
1555
|
end
|
|
1550
1556
|
|
|
1551
1557
|
it 'denies non type compliant default argument' do
|
|
@@ -1554,7 +1560,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1554
1560
|
class foo(Integer $x = 'pow') { }
|
|
1555
1561
|
class { 'foo': }
|
|
1556
1562
|
MANIFEST
|
|
1557
|
-
end.to raise_error(/
|
|
1563
|
+
end.to raise_error(/Class\[Foo\]: parameter 'x' expects an Integer value, got String/)
|
|
1558
1564
|
end
|
|
1559
1565
|
|
|
1560
1566
|
it 'denies undef as the default for a non-optional type' do
|
|
@@ -1563,7 +1569,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1563
1569
|
class foo(Integer $x = undef) { }
|
|
1564
1570
|
class { 'foo': }
|
|
1565
1571
|
MANIFEST
|
|
1566
|
-
end.to raise_error(/
|
|
1572
|
+
end.to raise_error(/Class\[Foo\]: parameter 'x' expects an Integer value, got Undef/)
|
|
1567
1573
|
end
|
|
1568
1574
|
|
|
1569
1575
|
it 'accepts a Resource as a Type' do
|
|
@@ -1630,7 +1636,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1630
1636
|
compile_to_catalog(<<-MANIFEST)
|
|
1631
1637
|
with(1) |String $x| { }
|
|
1632
1638
|
MANIFEST
|
|
1633
|
-
end.to raise_error(/
|
|
1639
|
+
end.to raise_error(/block parameter 'x' expects a String value, got Integer/m)
|
|
1634
1640
|
end
|
|
1635
1641
|
|
|
1636
1642
|
it 'denies non-type-compliant, slurped arguments' do
|
|
@@ -1638,7 +1644,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1638
1644
|
compile_to_catalog(<<-MANIFEST)
|
|
1639
1645
|
with(1, "hello") |Integer *$x| { }
|
|
1640
1646
|
MANIFEST
|
|
1641
|
-
end.to raise_error(/
|
|
1647
|
+
end.to raise_error(/block parameter 'x' expects an Integer value, got String/m)
|
|
1642
1648
|
end
|
|
1643
1649
|
|
|
1644
1650
|
it 'denies non-type-compliant default argument' do
|
|
@@ -1646,7 +1652,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1646
1652
|
compile_to_catalog(<<-MANIFEST)
|
|
1647
1653
|
with(1) |$x, String $defaulted = 1| { notify { "${$x + $defaulted}": }}
|
|
1648
1654
|
MANIFEST
|
|
1649
|
-
end.to raise_error(/
|
|
1655
|
+
end.to raise_error(/block parameter 'defaulted' expects a String value, got Integer/m)
|
|
1650
1656
|
end
|
|
1651
1657
|
|
|
1652
1658
|
it 'raises an error when a default argument value is an incorrect type and there are no arguments passed' do
|
|
@@ -1654,7 +1660,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1654
1660
|
compile_to_catalog(<<-MANIFEST)
|
|
1655
1661
|
with() |String $defaulted = 1| {}
|
|
1656
1662
|
MANIFEST
|
|
1657
|
-
end.to raise_error(/
|
|
1663
|
+
end.to raise_error(/block parameter 'defaulted' expects a String value, got Integer/m)
|
|
1658
1664
|
end
|
|
1659
1665
|
|
|
1660
1666
|
it 'raises an error when the default argument for a slurped parameter is an incorrect type' do
|
|
@@ -1662,7 +1668,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1662
1668
|
compile_to_catalog(<<-MANIFEST)
|
|
1663
1669
|
with() |String *$defaulted = 1| {}
|
|
1664
1670
|
MANIFEST
|
|
1665
|
-
end.to raise_error(/
|
|
1671
|
+
end.to raise_error(/block parameter 'defaulted' expects a String value, got Integer/m)
|
|
1666
1672
|
end
|
|
1667
1673
|
|
|
1668
1674
|
it 'allows using an array as the default slurped value' do
|
|
@@ -1694,7 +1700,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1694
1700
|
compile_to_catalog(<<-MANIFEST)
|
|
1695
1701
|
with() |Array[String, 2] *$defaulted = hi| { }
|
|
1696
1702
|
MANIFEST
|
|
1697
|
-
end.to raise_error(/
|
|
1703
|
+
end.to raise_error(/block expects at least 2 arguments, got 1/m)
|
|
1698
1704
|
end
|
|
1699
1705
|
|
|
1700
1706
|
it 'raises an error when the number of passed values does not match the parameter\'s size specification' do
|
|
@@ -1702,7 +1708,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1702
1708
|
compile_to_catalog(<<-MANIFEST)
|
|
1703
1709
|
with(hi) |Array[String, 2] *$passed| { }
|
|
1704
1710
|
MANIFEST
|
|
1705
|
-
end.to raise_error(/
|
|
1711
|
+
end.to raise_error(/block expects at least 2 arguments, got 1/m)
|
|
1706
1712
|
end
|
|
1707
1713
|
|
|
1708
1714
|
it 'matches when the number of arguments passed for a slurp parameter match the size specification' do
|
|
@@ -1721,7 +1727,7 @@ describe Puppet::Parser::Compiler do
|
|
|
1721
1727
|
compile_to_catalog(<<-MANIFEST)
|
|
1722
1728
|
with(hi, bye) |Array[String, 1, 1] *$passed| { }
|
|
1723
1729
|
MANIFEST
|
|
1724
|
-
end.to raise_error(/
|
|
1730
|
+
end.to raise_error(/block expects 1 argument, got 2/m)
|
|
1725
1731
|
end
|
|
1726
1732
|
|
|
1727
1733
|
it 'allows passing slurped arrays by specifying an array of arrays' do
|
|
@@ -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
|
|
@@ -12,7 +12,9 @@ describe "Package provider" do
|
|
|
12
12
|
options = {:name => "nosuch#{provider.name}", :provider => provider.name}
|
|
13
13
|
|
|
14
14
|
pkg = Puppet::Type.newpackage(options)
|
|
15
|
-
expect { pkg.provider.install }.to raise_error
|
|
15
|
+
expect { pkg.provider.install }.to raise_error { |error|
|
|
16
|
+
expect(error).not_to eq("")
|
|
17
|
+
}
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
it "should be able to get a list of existing packages" do
|
|
@@ -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
|
|
@@ -359,7 +359,7 @@ describe Puppet::Application::Apply do
|
|
|
359
359
|
it "should raise an error if we can't find the facts" do
|
|
360
360
|
Puppet::Node::Facts.indirection.expects(:find).returns(nil)
|
|
361
361
|
|
|
362
|
-
expect { @apply.main }.to raise_error
|
|
362
|
+
expect { @apply.main }.to raise_error(RuntimeError, /Could not find facts/)
|
|
363
363
|
end
|
|
364
364
|
end
|
|
365
365
|
|
|
@@ -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
|
|
@@ -173,7 +181,7 @@ describe Puppet::Application::Filebucket do
|
|
|
173
181
|
describe "the command backup" do
|
|
174
182
|
it "should fail if no arguments are specified" do
|
|
175
183
|
@filebucket.stubs(:args).returns([])
|
|
176
|
-
expect { @filebucket.backup }.to raise_error
|
|
184
|
+
expect { @filebucket.backup }.to raise_error(RuntimeError, /You must specify a file to back up/)
|
|
177
185
|
end
|
|
178
186
|
|
|
179
187
|
it "should call the client backup method for each given parameter" do
|
|
@@ -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
|
|