puppet 4.3.2-x64-mingw32 → 4.4.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/COMMITTERS.md +2 -2
- data/CONTRIBUTING.md +6 -6
- data/LICENSE +1 -1
- data/README.md +8 -9
- data/conf/auth.conf +2 -2
- data/ext/README.environment +1 -1
- data/ext/debian/README.source +1 -1
- data/ext/debian/control +1 -1
- data/ext/debian/copyright +4 -4
- data/ext/debian/puppetmaster.README.debian +11 -9
- data/ext/emacs/puppet-mode.el +1 -1
- data/ext/envpuppet +2 -2
- data/ext/ips/puppetagent.xml +1 -1
- data/ext/ips/puppetmaster.xml +1 -1
- data/ext/project_data.yaml +8 -0
- data/ext/puppet-test +3 -3
- data/ext/rack/example-passenger-vhost.conf +1 -1
- data/ext/redhat/puppet.spec.erb +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +1 -1
- data/ext/solaris/pkginfo +1 -1
- data/ext/solaris/smf/puppet.xml +1 -1
- data/ext/suse/puppet.spec +2 -2
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/puppet_interactive.bat +6 -0
- data/ext/windows/puppet_shell.bat +9 -0
- data/ext/windows/run_puppet_interactive.bat +9 -0
- data/ext/yaml_nodes.rb +1 -1
- data/install.rb +30 -20
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/agent.rb +4 -2
- data/lib/puppet/application/apply.rb +7 -4
- data/lib/puppet/application/cert.rb +1 -1
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +1 -1
- data/lib/puppet/application/lookup.rb +4 -4
- data/lib/puppet/application/master.rb +2 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/configurer.rb +100 -22
- data/lib/puppet/data_providers/hiera_config.rb +28 -3
- data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
- data/lib/puppet/data_providers/hiera_support.rb +1 -1
- data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +65 -19
- data/lib/puppet/environments.rb +3 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/epp.rb +1 -1
- data/lib/puppet/face/help/man.erb +1 -1
- data/lib/puppet/face/module/install.rb +6 -6
- data/lib/puppet/face/parser.rb +12 -9
- data/lib/puppet/face/status.rb +2 -1
- data/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/lib/puppet/feature/telnet.rb +9 -0
- data/lib/puppet/file_serving/http_metadata.rb +46 -0
- data/lib/puppet/file_serving/metadata.rb +18 -2
- data/lib/puppet/file_serving/terminus_selector.rb +2 -0
- data/lib/puppet/file_system.rb +2 -2
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/functions.rb +45 -6
- data/lib/puppet/functions/assert_type.rb +9 -9
- data/lib/puppet/functions/each.rb +5 -13
- data/lib/puppet/functions/filter.rb +5 -14
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/reduce.rb +5 -13
- data/lib/puppet/functions/reverse_each.rb +82 -0
- data/lib/puppet/functions/scanf.rb +15 -18
- data/lib/puppet/functions/slice.rb +22 -36
- data/lib/puppet/functions/split.rb +2 -2
- data/lib/puppet/functions/step.rb +88 -0
- data/lib/puppet/functions/type.rb +70 -0
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/file_content/http.rb +15 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -0
- data/lib/puppet/indirector/generic_http.rb +16 -0
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/info_service/class_information_service.rb +13 -12
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/module.rb +3 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/network/http/pool.rb +9 -0
- data/lib/puppet/node.rb +1 -1
- data/lib/puppet/node/environment.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +3 -3
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- data/lib/puppet/parser/functions.rb +28 -16
- data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/scanf.rb +15 -26
- data/lib/puppet/parser/functions/slice.rb +17 -24
- data/lib/puppet/parser/functions/split.rb +1 -1
- data/lib/puppet/parser/resource.rb +19 -17
- data/lib/puppet/parser/scope.rb +176 -5
- data/lib/puppet/plugins/data_providers/data_provider.rb +54 -13
- data/lib/puppet/pops.rb +0 -8
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +38 -13
- data/lib/puppet/pops/binder/binder.rb +21 -17
- data/lib/puppet/pops/binder/binder_issues.rb +8 -6
- data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
- data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
- data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
- data/lib/puppet/pops/binder/bindings_model.rb +49 -47
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
- data/lib/puppet/pops/binder/injector.rb +53 -48
- data/lib/puppet/pops/binder/key_factory.rb +10 -6
- data/lib/puppet/pops/binder/producers.rb +67 -62
- data/lib/puppet/pops/evaluator/access_operator.rb +95 -93
- data/lib/puppet/pops/evaluator/closure.rb +84 -68
- data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -14
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +41 -45
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +34 -11
- data/lib/puppet/pops/loader/base_loader.rb +1 -1
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +15 -0
- data/lib/puppet/pops/loader/module_loaders.rb +17 -13
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +16 -12
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
- data/lib/puppet/pops/loaders.rb +51 -9
- data/lib/puppet/pops/lookup.rb +14 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +26 -2
- data/lib/puppet/pops/model/model.rb +8 -8
- data/lib/puppet/pops/model/model_label_provider.rb +13 -7
- data/lib/puppet/pops/model/model_meta.rb +17 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
- data/lib/puppet/pops/parser/egrammar.ra +38 -14
- data/lib/puppet/pops/parser/eparser.rb +1353 -1276
- data/lib/puppet/pops/parser/epp_support.rb +11 -7
- data/lib/puppet/pops/parser/evaluating_parser.rb +14 -10
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +26 -19
- data/lib/puppet/pops/parser/lexer_support.rb +85 -7
- data/lib/puppet/pops/parser/locator.rb +21 -0
- data/lib/puppet/pops/parser/parser_support.rb +19 -16
- data/lib/puppet/pops/parser/slurp_support.rb +11 -7
- data/lib/puppet/pops/types/class_loader.rb +23 -19
- data/lib/puppet/pops/types/enumeration.rb +9 -26
- data/lib/puppet/pops/types/iterable.rb +308 -0
- data/lib/puppet/pops/types/recursion_guard.rb +82 -0
- data/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/lib/puppet/pops/types/type_asserter.rb +10 -9
- data/lib/puppet/pops/types/type_calculator.rb +138 -381
- data/lib/puppet/pops/types/type_factory.rb +91 -57
- data/lib/puppet/pops/types/type_formatter.rb +334 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
- data/lib/puppet/pops/types/type_parser.rb +159 -112
- data/lib/puppet/pops/types/types.rb +2057 -1247
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops/validation/checker4_0.rb +83 -55
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/provider/aixobject.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
- data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
- data/lib/puppet/provider/package/appdmg.rb +3 -2
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +5 -8
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -2
- data/lib/puppet/provider/package/pkgng.rb +13 -4
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +2 -2
- data/lib/puppet/provider/service/launchd.rb +6 -18
- data/lib/puppet/provider/service/systemd.rb +9 -2
- data/lib/puppet/provider/sshkey/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +33 -58
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/resource/capability_finder.rb +20 -13
- data/lib/puppet/resource/catalog.rb +60 -3
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/resource/type.rb +28 -38
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/ssl/certificate_factory.rb +3 -3
- data/lib/puppet/ssl/certificate_request.rb +4 -4
- data/lib/puppet/ssl/certificate_signer.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +16 -4
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/transaction/additional_resource_generator.rb +6 -2
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/type.rb +11 -11
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- data/lib/puppet/type/file.rb +91 -39
- data/lib/puppet/type/file/checksum_value.rb +53 -0
- data/lib/puppet/type/file/content.rb +26 -111
- data/lib/puppet/type/file/data_sync.rb +84 -0
- data/lib/puppet/type/file/ensure.rb +17 -14
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +103 -18
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/interface.rb +8 -3
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/package.rb +6 -0
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/stage.rb +1 -1
- data/lib/puppet/type/user.rb +19 -17
- data/lib/puppet/type/yumrepo.rb +20 -0
- data/lib/puppet/util.rb +109 -22
- data/lib/puppet/util/autoload.rb +16 -11
- data/lib/puppet/util/checksums.rb +74 -31
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +72 -0
- data/lib/puppet/util/log.rb +2 -0
- data/lib/puppet/util/logging.rb +43 -1
- data/lib/puppet/util/monkey_patches.rb +2 -2
- data/lib/puppet/util/multi_match.rb +51 -0
- data/lib/puppet/util/network_device/cisco/device.rb +10 -2
- data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
- data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
- data/lib/puppet/util/plist.rb +130 -0
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/run_mode.rb +2 -2
- data/lib/puppet/util/skip_tags.rb +9 -0
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/access_control_list.rb +3 -3
- data/lib/puppet/util/windows/adsi.rb +4 -4
- data/lib/puppet/util/windows/api_types.rb +24 -18
- data/lib/puppet/util/windows/com.rb +3 -3
- data/lib/puppet/util/windows/error.rb +1 -1
- data/lib/puppet/util/windows/file.rb +8 -8
- data/lib/puppet/util/windows/principal.rb +23 -14
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +1 -1
- data/lib/puppet/util/windows/root_certs.rb +5 -5
- data/lib/puppet/util/windows/security.rb +33 -35
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +42 -4
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
- data/lib/puppet/vendor/pathspec/LICENSE +2 -2
- data/lib/puppet/vendor/pathspec/README.md +1 -1
- data/lib/puppet/vendor/rgen/README.rdoc +1 -1
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +17 -1
- data/man/man5/puppet.conf.5 +12 -12
- data/man/man8/extlookup2hiera.8 +1 -1
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +2 -2
- data/man/man8/puppet-catalog.8 +2 -2
- data/man/man8/puppet-cert.8 +2 -2
- data/man/man8/puppet-certificate.8 +2 -2
- data/man/man8/puppet-certificate_request.8 +2 -2
- data/man/man8/puppet-certificate_revocation_list.8 +2 -2
- data/man/man8/puppet-config.8 +3 -3
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +2 -2
- data/man/man8/puppet-facts.8 +2 -2
- data/man/man8/puppet-file.8 +2 -2
- data/man/man8/puppet-filebucket.8 +2 -2
- data/man/man8/puppet-help.8 +2 -2
- data/man/man8/puppet-inspect.8 +2 -2
- data/man/man8/puppet-key.8 +2 -2
- data/man/man8/puppet-man.8 +2 -2
- data/man/man8/puppet-master.8 +2 -2
- data/man/man8/puppet-module.8 +9 -9
- data/man/man8/puppet-node.8 +2 -2
- data/man/man8/puppet-parser.8 +2 -2
- data/man/man8/puppet-plugin.8 +2 -2
- data/man/man8/puppet-report.8 +2 -2
- data/man/man8/puppet-resource.8 +2 -2
- data/man/man8/puppet-resource_type.8 +2 -2
- data/man/man8/puppet-status.8 +3 -3
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/module.tar.gz +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
- data/spec/fixtures/unit/module/trailing-comma.json +1 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +3 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
- data/spec/integration/defaults_spec.rb +14 -2
- data/spec/integration/file_system/uniquefile_spec.rb +29 -0
- data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
- data/spec/integration/node/environment_spec.rb +13 -0
- data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
- data/spec/integration/parser/undef_param_spec.rb +8 -0
- data/spec/integration/provider/yumrepo_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +28 -0
- data/spec/integration/transaction/report_spec.rb +16 -0
- data/spec/integration/transaction_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +194 -4
- data/spec/integration/type/package_spec.rb +5 -1
- data/spec/integration/type/tidy_spec.rb +21 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/principal_spec.rb +90 -4
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/integration/util/windows/security_spec.rb +6 -6
- data/spec/integration/util/windows/user_spec.rb +1 -1
- data/spec/integration/util_spec.rb +49 -27
- data/spec/lib/puppet_spec/compiler.rb +17 -0
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/pops.rb +13 -0
- data/spec/shared_behaviours/iterative_functions.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +96 -0
- data/spec/unit/agent_spec.rb +1 -0
- data/spec/unit/application/agent_spec.rb +10 -0
- data/spec/unit/application/apply_spec.rb +9 -0
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
- data/spec/unit/defaults_spec.rb +15 -0
- data/spec/unit/environments_spec.rb +24 -4
- data/spec/unit/face/parser_spec.rb +43 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
- data/spec/unit/file_serving/metadata_spec.rb +50 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
- data/spec/unit/file_system_spec.rb +26 -0
- data/spec/unit/functions/assert_type_spec.rb +36 -2
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +11 -3
- data/spec/unit/functions/lookup_spec.rb +58 -13
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/reverse_each_spec.rb +108 -0
- data/spec/unit/functions/step_spec.rb +113 -0
- data/spec/unit/functions/type_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +61 -5
- data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +94 -32
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +1 -0
- data/spec/unit/network/http/pool_spec.rb +30 -0
- data/spec/unit/node_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +16 -0
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +7 -1
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
- data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +44 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +112 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_spec.rb +10 -0
- data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
- data/spec/unit/pops/types/iterable_spec.rb +262 -0
- data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
- data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +275 -373
- data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
- data/spec/unit/pops/types/type_parser_spec.rb +58 -13
- data/spec/unit/pops/types/types_spec.rb +241 -0
- data/spec/unit/pops/validator/validator_spec.rb +100 -43
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/macauthorization_spec.rb +5 -2
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
- data/spec/unit/provider/package/appdmg_spec.rb +3 -3
- data/spec/unit/provider/package/dnf_spec.rb +16 -0
- data/spec/unit/provider/package/pip3_spec.rb +60 -42
- data/spec/unit/provider/package/pip_spec.rb +47 -34
- data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
- data/spec/unit/provider/package/pkgng_spec.rb +4 -2
- data/spec/unit/provider/package/yum_spec.rb +11 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/launchd_spec.rb +17 -35
- data/spec/unit/provider/service/systemd_spec.rb +7 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/resource/capability_finder_spec.rb +28 -15
- data/spec/unit/resource/catalog_spec.rb +33 -1
- data/spec/unit/resource/type_spec.rb +149 -7
- data/spec/unit/resource_spec.rb +96 -57
- data/spec/unit/settings/environment_conf_spec.rb +18 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
- data/spec/unit/transaction/report_spec.rb +27 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -47
- data/spec/unit/transaction_spec.rb +5 -0
- data/spec/unit/type/file/checksum_spec.rb +6 -0
- data/spec/unit/type/file/checksum_value_spec.rb +286 -0
- data/spec/unit/type/file/content_spec.rb +12 -193
- data/spec/unit/type/file/source_spec.rb +211 -119
- data/spec/unit/type/file_spec.rb +133 -34
- data/spec/unit/type/interface_spec.rb +32 -0
- data/spec/unit/type/macauthorization_spec.rb +4 -1
- data/spec/unit/type/yumrepo_spec.rb +2 -2
- data/spec/unit/util/filetype_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +0 -2
- data/spec/unit/util/logging_spec.rb +69 -0
- data/spec/unit/util/multi_match_spec.rb +39 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
- data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
- data/spec/unit/util/plist_spec.rb +110 -0
- data/spec/unit/util/resource_template_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -3
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +42 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
- data/spec/unit/util/windows/sid_spec.rb +1 -1
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +114 -26
- data/lib/puppet/vendor/load_plist.rb +0 -1
- data/lib/puppet/vendor/plist/CHANGELOG +0 -82
- data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
- data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/plist/README +0 -36
- data/lib/puppet/vendor/plist/Rakefile +0 -144
- data/lib/puppet/vendor/plist/docs/USAGE +0 -104
- data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
- data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
- data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
- data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
- data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
- data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
- data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
- data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
- data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
- data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
- data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
@@ -31,4 +31,35 @@ describe "Puppet::Util::Windows::Process", :if => Puppet.features.microsoft_wind
|
|
31
31
|
expect { Puppet::Util::Windows::Process.lookup_privilege_value('foo') }.to raise_error(Puppet::Util::Windows::Error, fail_msg)
|
32
32
|
end
|
33
33
|
end
|
34
|
+
|
35
|
+
describe "when setting environment variables" do
|
36
|
+
it "can properly handle env var values with = in them" do
|
37
|
+
begin
|
38
|
+
name = SecureRandom.uuid
|
39
|
+
value = 'foo=bar'
|
40
|
+
|
41
|
+
Puppet::Util::Windows::Process.set_environment_variable(name, value)
|
42
|
+
|
43
|
+
env = Puppet::Util::Windows::Process.get_environment_strings
|
44
|
+
|
45
|
+
expect(env[name]).to eq(value)
|
46
|
+
ensure
|
47
|
+
Puppet::Util::Windows::Process.set_environment_variable(name, nil)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it "can properly handle empty env var values" do
|
52
|
+
begin
|
53
|
+
name = SecureRandom.uuid
|
54
|
+
|
55
|
+
Puppet::Util::Windows::Process.set_environment_variable(name, '')
|
56
|
+
|
57
|
+
env = Puppet::Util::Windows::Process.get_environment_strings
|
58
|
+
|
59
|
+
expect(env[name]).to eq('')
|
60
|
+
ensure
|
61
|
+
Puppet::Util::Windows::Process.set_environment_variable(name, nil)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
34
65
|
end
|
@@ -14,13 +14,13 @@ describe "Puppet::Util::Windows::Security", :if => Puppet.features.microsoft_win
|
|
14
14
|
before :all do
|
15
15
|
@sids = {
|
16
16
|
:current_user => Puppet::Util::Windows::SID.name_to_sid(Puppet::Util::Windows::ADSI::User.current_user_name),
|
17
|
-
:system =>
|
18
|
-
:administrators =>
|
17
|
+
:system => Puppet::Util::Windows::SID::LocalSystem,
|
18
|
+
:administrators => Puppet::Util::Windows::SID::BuiltinAdministrators,
|
19
19
|
:guest => Puppet::Util::Windows::SID.name_to_sid("Guest"),
|
20
|
-
:users =>
|
21
|
-
:power_users =>
|
22
|
-
:none =>
|
23
|
-
:everyone =>
|
20
|
+
:users => Puppet::Util::Windows::SID::BuiltinUsers,
|
21
|
+
:power_users => Puppet::Util::Windows::SID::PowerUsers,
|
22
|
+
:none => Puppet::Util::Windows::SID::Nobody,
|
23
|
+
:everyone => Puppet::Util::Windows::SID::Everyone
|
24
24
|
}
|
25
25
|
# The TCP/IP NetBIOS Helper service (aka 'lmhosts') has ended up
|
26
26
|
# disabled on some VMs for reasons we couldn't track down. This
|
@@ -67,7 +67,7 @@ describe "Puppet::Util::Windows::User", :if => Puppet.features.microsoft_windows
|
|
67
67
|
yield
|
68
68
|
}.to raise_error { |error|
|
69
69
|
expect(error).to be_a(Puppet::Util::Windows::Error)
|
70
|
-
#
|
70
|
+
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms681385(v=vs.85).aspx
|
71
71
|
# ERROR_LOGON_FAILURE 1326
|
72
72
|
expect(error.code).to eq(1326)
|
73
73
|
}
|
@@ -27,9 +27,10 @@ describe Puppet::Util do
|
|
27
27
|
expect { Puppet::Util::Execution.execute(command) }.to raise_error(Puppet::ExecutionFailure, /Execution of '#{command}' returned 43: /)
|
28
28
|
expect($CHILD_STATUS.exitstatus).to eq(43)
|
29
29
|
end
|
30
|
+
end
|
30
31
|
|
31
|
-
|
32
|
-
|
32
|
+
describe "#replace_file on Windows", :if => Puppet.features.microsoft_windows? do
|
33
|
+
it "replace_file should preserve original ACEs from existing replaced file on Windows" do
|
33
34
|
|
34
35
|
file = tmpfile("somefile")
|
35
36
|
FileUtils.touch(file)
|
@@ -54,8 +55,7 @@ describe Puppet::Util do
|
|
54
55
|
expect(replaced_sd.dacl).to eq(expected_sd.dacl)
|
55
56
|
end
|
56
57
|
|
57
|
-
it "replace_file should use reasonable default ACEs on a new file on Windows"
|
58
|
-
:if => Puppet.features.microsoft_windows? do
|
58
|
+
it "replace_file should use reasonable default ACEs on a new file on Windows" do
|
59
59
|
|
60
60
|
dir = tmpdir('DACL_playground')
|
61
61
|
protected_sd = Puppet::Util::Windows::Security.get_security_descriptor(dir)
|
@@ -76,36 +76,58 @@ describe Puppet::Util do
|
|
76
76
|
|
77
77
|
expect(new_sd.dacl).to eq(expected_sd.dacl)
|
78
78
|
end
|
79
|
-
end
|
80
79
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
80
|
+
it "replace_file should work with filenames that include - and . (PUP-1389)" do
|
81
|
+
expected_content = 'some content'
|
82
|
+
dir = tmpdir('ReplaceFile_playground')
|
83
|
+
destination_file = File.join(dir, 'some-file.xml')
|
84
|
+
|
85
|
+
Puppet::Util.replace_file(destination_file, nil) do |temp_file|
|
86
|
+
temp_file.open
|
87
|
+
temp_file.write(expected_content)
|
88
|
+
end
|
85
89
|
|
86
|
-
|
87
|
-
|
88
|
-
temp_file.write(expected_content)
|
90
|
+
actual_content = File.read(destination_file)
|
91
|
+
expect(actual_content).to eq(expected_content)
|
89
92
|
end
|
90
93
|
|
91
|
-
|
92
|
-
|
94
|
+
it "replace_file should work with filenames that include special characters (PUP-1389)" do
|
95
|
+
expected_content = 'some content'
|
96
|
+
dir = tmpdir('ReplaceFile_playground')
|
97
|
+
# http://www.fileformat.info/info/unicode/char/00e8/index.htm
|
98
|
+
# dest_name = "somèfile.xml"
|
99
|
+
dest_name = "som\u00E8file.xml"
|
100
|
+
destination_file = File.join(dir, dest_name)
|
101
|
+
|
102
|
+
Puppet::Util.replace_file(destination_file, nil) do |temp_file|
|
103
|
+
temp_file.open
|
104
|
+
temp_file.write(expected_content)
|
105
|
+
end
|
106
|
+
|
107
|
+
actual_content = File.read(destination_file)
|
108
|
+
expect(actual_content).to eq(expected_content)
|
109
|
+
end
|
93
110
|
end
|
94
111
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
112
|
+
describe "#which on Windows", :if => Puppet.features.microsoft_windows? do
|
113
|
+
let (:rune_utf8) { "\u16A0\u16C7\u16BB\u16EB\u16D2\u16E6\u16A6\u16EB\u16A0\u16B1\u16A9\u16A0\u16A2\u16B1\u16EB\u16A0\u16C1\u16B1\u16AA\u16EB\u16B7\u16D6\u16BB\u16B9\u16E6\u16DA\u16B3\u16A2\u16D7" }
|
114
|
+
let (:filename) { 'foo.exe' }
|
115
|
+
let (:filepath) { File.expand_path('C:\\' + rune_utf8 + '\\' + filename) }
|
116
|
+
|
117
|
+
before :each do
|
118
|
+
FileTest.stubs(:file?).returns false
|
119
|
+
FileTest.stubs(:file?).with(filepath).returns true
|
120
|
+
|
121
|
+
FileTest.stubs(:executable?).returns false
|
122
|
+
FileTest.stubs(:executable?).with(filepath).returns true
|
106
123
|
end
|
107
124
|
|
108
|
-
|
109
|
-
|
125
|
+
it "should be able to use UTF8 characters in the path" do
|
126
|
+
path = "C:\\" + rune_utf8 + "#{File::PATH_SEPARATOR}c:\\windows\\system32#{File::PATH_SEPARATOR}c:\\windows"
|
127
|
+
Puppet::Util.withenv( { "PATH" => path } , :windows) do
|
128
|
+
expect(Puppet::Util.which(filename)).to eq(filepath)
|
129
|
+
end
|
130
|
+
end
|
110
131
|
end
|
132
|
+
|
111
133
|
end
|
@@ -46,4 +46,21 @@ module PuppetSpec::Compiler
|
|
46
46
|
relationships.traverse { |resource| order_seen << resource.ref }
|
47
47
|
order_seen
|
48
48
|
end
|
49
|
+
|
50
|
+
def collect_notices(code, node = Puppet::Node.new('foonode'))
|
51
|
+
Puppet[:code] = code
|
52
|
+
compiler = Puppet::Parser::Compiler.new(node)
|
53
|
+
logs = []
|
54
|
+
Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
|
55
|
+
yield(compiler)
|
56
|
+
end
|
57
|
+
logs = logs.select { |log| log.level == :notice }.map { |log| log.message }
|
58
|
+
logs
|
59
|
+
end
|
60
|
+
|
61
|
+
def eval_and_collect_notices(code, node = Puppet::Node.new('foonode'))
|
62
|
+
collect_notices(code, node) do |compiler|
|
63
|
+
compiler.compile
|
64
|
+
end
|
65
|
+
end
|
49
66
|
end
|
@@ -28,7 +28,7 @@ module PuppetSpec::Files
|
|
28
28
|
def self.tmpfile(name, dir = nil)
|
29
29
|
# Generate a temporary file, just for the name...
|
30
30
|
source = dir ? Tempfile.new(name, dir) : Tempfile.new(name)
|
31
|
-
path = source.path
|
31
|
+
path = source.path.encode(Encoding::UTF_8)
|
32
32
|
source.close!
|
33
33
|
|
34
34
|
record_tmp(File.expand_path(path))
|
@@ -59,7 +59,7 @@ module PuppetSpec::Files
|
|
59
59
|
|
60
60
|
def tmpdir(name) PuppetSpec::Files.tmpdir(name) end
|
61
61
|
def self.tmpdir(name)
|
62
|
-
dir = Dir.mktmpdir(name)
|
62
|
+
dir = Dir.mktmpdir(name).encode!(Encoding::UTF_8)
|
63
63
|
|
64
64
|
record_tmp(dir)
|
65
65
|
|
@@ -13,4 +13,17 @@ module PuppetSpec::Pops
|
|
13
13
|
"expected Acceptor[#{actual.diagnostics.collect { |i| i.issue.issue_code }.join(',')}] to not contain issue #{expected.issue_code}"
|
14
14
|
end
|
15
15
|
end
|
16
|
+
|
17
|
+
# Checks if an Acceptor has any issues
|
18
|
+
matcher :have_any_issues do
|
19
|
+
match do |actual|
|
20
|
+
!actual.diagnostics.empty?
|
21
|
+
end
|
22
|
+
failure_message do |actual|
|
23
|
+
'expected Acceptor[] to contain at least one issue'
|
24
|
+
end
|
25
|
+
failure_message_when_negated do |actual|
|
26
|
+
"expected Acceptor[#{actual.diagnostics.collect { |i| i.issue.issue_code }.join(',')}] to not contain any issues"
|
27
|
+
end
|
28
|
+
end
|
16
29
|
end
|
@@ -16,7 +16,7 @@ shared_examples_for 'all iterative functions argument checks' do |func|
|
|
16
16
|
compile_to_catalog(<<-MANIFEST)
|
17
17
|
3.14.#{func} |$k, $v| { }
|
18
18
|
MANIFEST
|
19
|
-
end.to raise_error(Puppet::Error, /
|
19
|
+
end.to raise_error(Puppet::Error, /expects an Iterable value, got Float/)
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'raises an error when called with any parameters besides a block' do
|
@@ -0,0 +1,96 @@
|
|
1
|
+
shared_context 'types_setup' do
|
2
|
+
|
3
|
+
# Do not include the special type Unit in this list
|
4
|
+
def all_types
|
5
|
+
[ Puppet::Pops::Types::PAnyType,
|
6
|
+
Puppet::Pops::Types::PUndefType,
|
7
|
+
Puppet::Pops::Types::PNotUndefType,
|
8
|
+
Puppet::Pops::Types::PDataType,
|
9
|
+
Puppet::Pops::Types::PScalarType,
|
10
|
+
Puppet::Pops::Types::PStringType,
|
11
|
+
Puppet::Pops::Types::PNumericType,
|
12
|
+
Puppet::Pops::Types::PIntegerType,
|
13
|
+
Puppet::Pops::Types::PFloatType,
|
14
|
+
Puppet::Pops::Types::PRegexpType,
|
15
|
+
Puppet::Pops::Types::PBooleanType,
|
16
|
+
Puppet::Pops::Types::PCollectionType,
|
17
|
+
Puppet::Pops::Types::PArrayType,
|
18
|
+
Puppet::Pops::Types::PHashType,
|
19
|
+
Puppet::Pops::Types::PIterableType,
|
20
|
+
Puppet::Pops::Types::PIteratorType,
|
21
|
+
Puppet::Pops::Types::PRuntimeType,
|
22
|
+
Puppet::Pops::Types::PHostClassType,
|
23
|
+
Puppet::Pops::Types::PResourceType,
|
24
|
+
Puppet::Pops::Types::PPatternType,
|
25
|
+
Puppet::Pops::Types::PEnumType,
|
26
|
+
Puppet::Pops::Types::PVariantType,
|
27
|
+
Puppet::Pops::Types::PStructType,
|
28
|
+
Puppet::Pops::Types::PTupleType,
|
29
|
+
Puppet::Pops::Types::PCallableType,
|
30
|
+
Puppet::Pops::Types::PType,
|
31
|
+
Puppet::Pops::Types::POptionalType,
|
32
|
+
Puppet::Pops::Types::PDefaultType,
|
33
|
+
Puppet::Pops::Types::PTypeReferenceType,
|
34
|
+
Puppet::Pops::Types::PTypeAliasType,
|
35
|
+
]
|
36
|
+
end
|
37
|
+
|
38
|
+
def scalar_types
|
39
|
+
# PVariantType is also scalar, if its types are all Scalar
|
40
|
+
[
|
41
|
+
Puppet::Pops::Types::PScalarType,
|
42
|
+
Puppet::Pops::Types::PStringType,
|
43
|
+
Puppet::Pops::Types::PNumericType,
|
44
|
+
Puppet::Pops::Types::PIntegerType,
|
45
|
+
Puppet::Pops::Types::PFloatType,
|
46
|
+
Puppet::Pops::Types::PRegexpType,
|
47
|
+
Puppet::Pops::Types::PBooleanType,
|
48
|
+
Puppet::Pops::Types::PPatternType,
|
49
|
+
Puppet::Pops::Types::PEnumType,
|
50
|
+
]
|
51
|
+
end
|
52
|
+
|
53
|
+
def numeric_types
|
54
|
+
# PVariantType is also numeric, if its types are all numeric
|
55
|
+
[
|
56
|
+
Puppet::Pops::Types::PNumericType,
|
57
|
+
Puppet::Pops::Types::PIntegerType,
|
58
|
+
Puppet::Pops::Types::PFloatType,
|
59
|
+
]
|
60
|
+
end
|
61
|
+
|
62
|
+
def string_types
|
63
|
+
# PVariantType is also string type, if its types are all compatible
|
64
|
+
[
|
65
|
+
Puppet::Pops::Types::PStringType,
|
66
|
+
Puppet::Pops::Types::PPatternType,
|
67
|
+
Puppet::Pops::Types::PEnumType,
|
68
|
+
]
|
69
|
+
end
|
70
|
+
|
71
|
+
def collection_types
|
72
|
+
# PVariantType is also string type, if its types are all compatible
|
73
|
+
[
|
74
|
+
Puppet::Pops::Types::PCollectionType,
|
75
|
+
Puppet::Pops::Types::PHashType,
|
76
|
+
Puppet::Pops::Types::PArrayType,
|
77
|
+
Puppet::Pops::Types::PStructType,
|
78
|
+
Puppet::Pops::Types::PTupleType,
|
79
|
+
]
|
80
|
+
end
|
81
|
+
|
82
|
+
def data_compatible_types
|
83
|
+
result = scalar_types
|
84
|
+
result << Puppet::Pops::Types::PDataType
|
85
|
+
result << array_t(types::PDataType::DEFAULT)
|
86
|
+
result << types::TypeFactory.hash_of_data
|
87
|
+
result << Puppet::Pops::Types::PUndefType
|
88
|
+
result << not_undef_t(types::PDataType.new)
|
89
|
+
result << constrained_tuple_t(range_t(0, nil), types::PDataType::DEFAULT)
|
90
|
+
result
|
91
|
+
end
|
92
|
+
|
93
|
+
def type_from_class(c)
|
94
|
+
c.is_a?(Class) ? c::DEFAULT : c
|
95
|
+
end
|
96
|
+
end
|
data/spec/unit/agent_spec.rb
CHANGED
@@ -343,12 +343,22 @@ describe Puppet::Application::Agent do
|
|
343
343
|
|
344
344
|
it "should not set catalog cache class if :catalog_cache_terminus is explicitly nil" do
|
345
345
|
Puppet[:catalog_cache_terminus] = nil
|
346
|
+
Puppet::Resource::Catalog.indirection.unstub(:cache_class=)
|
346
347
|
Puppet::Resource::Catalog.indirection.expects(:cache_class=).never
|
347
348
|
|
348
349
|
@puppetd.initialize_app_defaults
|
349
350
|
@puppetd.setup
|
350
351
|
end
|
351
352
|
|
353
|
+
it "should set catalog cache class to nil during a noop run" do
|
354
|
+
Puppet[:catalog_cache_terminus] = "json"
|
355
|
+
Puppet[:noop] = true
|
356
|
+
Puppet::Resource::Catalog.indirection.expects(:cache_class=).with(nil)
|
357
|
+
|
358
|
+
@puppetd.initialize_app_defaults
|
359
|
+
@puppetd.setup
|
360
|
+
end
|
361
|
+
|
352
362
|
it "should default facts_terminus setting to 'facter'" do
|
353
363
|
@puppetd.initialize_app_defaults
|
354
364
|
expect(Puppet[:facts_terminus]).to eq(:facter)
|
@@ -478,4 +478,13 @@ describe Puppet::Application::Apply do
|
|
478
478
|
@apply.initialize_app_defaults
|
479
479
|
@apply.setup
|
480
480
|
end
|
481
|
+
|
482
|
+
it "should set catalog cache class to nil during a noop run" do
|
483
|
+
Puppet[:catalog_cache_terminus] = "json"
|
484
|
+
Puppet[:noop] = true
|
485
|
+
Puppet::Resource::Catalog.indirection.expects(:cache_class=).with(nil)
|
486
|
+
|
487
|
+
@apply.initialize_app_defaults
|
488
|
+
@apply.setup
|
489
|
+
end
|
481
490
|
end
|
@@ -82,13 +82,13 @@ describe Puppet::Configurer::Downloader do
|
|
82
82
|
expect(file[:source_permissions]).to eq(:ignore)
|
83
83
|
end
|
84
84
|
|
85
|
-
|
86
|
-
|
85
|
+
describe "on POSIX", :if => Puppet.features.posix? do
|
86
|
+
it "should allow source_permissions to be overridden" do
|
87
|
+
file = generate_file_resource(:source_permissions => :use)
|
87
88
|
|
88
|
-
|
89
|
-
|
89
|
+
expect(file[:source_permissions]).to eq(:use)
|
90
|
+
end
|
90
91
|
|
91
|
-
describe "on POSIX", :if => Puppet.features.posix? do
|
92
92
|
it "should always set the owner to the current UID" do
|
93
93
|
Process.expects(:uid).returns 51
|
94
94
|
|
@@ -369,12 +369,34 @@ describe Puppet::Configurer do
|
|
369
369
|
expect(report.environment).to eq("second_env")
|
370
370
|
end
|
371
371
|
|
372
|
-
it "
|
373
|
-
|
372
|
+
it "sends the transaction uuid in a catalog request" do
|
373
|
+
@agent.instance_variable_set(:@transaction_uuid, 'aaa')
|
374
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with(anything, has_entries(:transaction_uuid => 'aaa'))
|
375
|
+
@agent.run
|
376
|
+
end
|
377
|
+
|
378
|
+
it "sets the static_catalog query param to true in a catalog request" do
|
379
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with(anything, has_entries(:static_catalog => true))
|
380
|
+
@agent.run
|
381
|
+
end
|
374
382
|
|
383
|
+
it "sets the checksum_type query param to the default supported_checksum_types in a catalog request" do
|
384
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with(anything,
|
385
|
+
has_entries(:checksum_type => 'md5.sha256'))
|
375
386
|
@agent.run
|
387
|
+
end
|
388
|
+
|
389
|
+
it "sets the checksum_type query param to the supported_checksum_types setting in a catalog request" do
|
390
|
+
# Regenerate the agent to pick up the new setting
|
391
|
+
Puppet[:supported_checksum_types] = ['sha256']
|
392
|
+
@agent = Puppet::Configurer.new
|
393
|
+
@agent.stubs(:init_storage)
|
394
|
+
@agent.stubs(:download_plugins)
|
395
|
+
@agent.stubs(:send_report)
|
396
|
+
@agent.stubs(:save_last_run_summary)
|
376
397
|
|
377
|
-
|
398
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with(anything, has_entries(:checksum_type => 'sha256'))
|
399
|
+
@agent.run
|
378
400
|
end
|
379
401
|
|
380
402
|
describe "when not using a REST terminus for catalogs" do
|
@@ -544,17 +566,42 @@ describe Puppet::Configurer do
|
|
544
566
|
end
|
545
567
|
end
|
546
568
|
|
569
|
+
def expects_new_catalog_only(catalog)
|
570
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns catalog
|
571
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.never
|
572
|
+
end
|
573
|
+
|
574
|
+
def expects_cached_catalog_only(catalog)
|
575
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns catalog
|
576
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.never
|
577
|
+
end
|
578
|
+
|
579
|
+
def expects_fallback_to_cached_catalog(catalog)
|
580
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns nil
|
581
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns catalog
|
582
|
+
end
|
583
|
+
|
584
|
+
def expects_fallback_to_new_catalog(catalog)
|
585
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns nil
|
586
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns catalog
|
587
|
+
end
|
588
|
+
|
589
|
+
def expects_neither_new_or_cached_catalog
|
590
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns nil
|
591
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns nil
|
592
|
+
end
|
593
|
+
|
547
594
|
describe "when retrieving a catalog" do
|
548
595
|
before do
|
549
596
|
Puppet.settings.stubs(:use).returns(true)
|
550
597
|
@agent.stubs(:facts_for_uploading).returns({})
|
598
|
+
@agent.stubs(:download_plugins)
|
551
599
|
|
552
|
-
|
600
|
+
# retrieve a catalog in the current environment, so we don't try to converge unexpectedly
|
601
|
+
@catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote(Puppet[:environment].to_sym))
|
553
602
|
|
554
603
|
# this is the default when using a Configurer instance
|
555
604
|
Puppet::Resource::Catalog.indirection.stubs(:terminus_class).returns :rest
|
556
|
-
|
557
|
-
@agent.stubs(:convert_catalog).returns @catalog
|
558
605
|
end
|
559
606
|
|
560
607
|
describe "and configured to only retrieve a catalog from the cache" do
|
@@ -563,18 +610,123 @@ describe Puppet::Configurer do
|
|
563
610
|
end
|
564
611
|
|
565
612
|
it "should first look in the cache for a catalog" do
|
566
|
-
|
567
|
-
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.never
|
613
|
+
expects_cached_catalog_only(@catalog)
|
568
614
|
|
569
615
|
expect(@agent.retrieve_catalog({})).to eq(@catalog)
|
570
616
|
end
|
571
617
|
|
618
|
+
it "should not make a node request or pluginsync when a cached catalog is successfully retrieved" do
|
619
|
+
Puppet::Node.indirection.expects(:find).never
|
620
|
+
expects_cached_catalog_only(@catalog)
|
621
|
+
@agent.expects(:download_plugins).never
|
622
|
+
|
623
|
+
@agent.run
|
624
|
+
end
|
625
|
+
|
626
|
+
it "should make a node request and pluginsync when a cached catalog cannot be retrieved" do
|
627
|
+
Puppet::Node.indirection.expects(:find).returns nil
|
628
|
+
expects_fallback_to_new_catalog(@catalog)
|
629
|
+
@agent.expects(:download_plugins)
|
630
|
+
|
631
|
+
@agent.run
|
632
|
+
end
|
633
|
+
|
634
|
+
it "should set its cached_catalog_status to 'explicitly_requested'" do
|
635
|
+
expects_cached_catalog_only(@catalog)
|
636
|
+
|
637
|
+
@agent.retrieve_catalog({})
|
638
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('explicitly_requested')
|
639
|
+
end
|
640
|
+
|
641
|
+
it "should set its cached_catalog_status to 'explicitly requested' if the cached catalog is from a different environment" do
|
642
|
+
cached_catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote('second_env'))
|
643
|
+
expects_cached_catalog_only(cached_catalog)
|
644
|
+
|
645
|
+
@agent.retrieve_catalog({})
|
646
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('explicitly_requested')
|
647
|
+
end
|
648
|
+
|
572
649
|
it "should compile a new catalog if none is found in the cache" do
|
573
|
-
|
574
|
-
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns @catalog
|
650
|
+
expects_fallback_to_new_catalog(@catalog)
|
575
651
|
|
576
652
|
expect(@agent.retrieve_catalog({})).to eq(@catalog)
|
577
653
|
end
|
654
|
+
|
655
|
+
it "should set its cached_catalog_status to 'not_used' if no catalog is found in the cache" do
|
656
|
+
expects_fallback_to_new_catalog(@catalog)
|
657
|
+
|
658
|
+
@agent.retrieve_catalog({})
|
659
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('not_used')
|
660
|
+
end
|
661
|
+
|
662
|
+
it "should not attempt to retrieve a cached catalog again if the first attempt failed" do
|
663
|
+
Puppet::Node.indirection.expects(:find).returns(nil)
|
664
|
+
expects_neither_new_or_cached_catalog
|
665
|
+
|
666
|
+
@agent.run
|
667
|
+
end
|
668
|
+
|
669
|
+
it "should return the cached catalog when the environment doesn't match" do
|
670
|
+
cached_catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote('second_env'))
|
671
|
+
expects_cached_catalog_only(cached_catalog)
|
672
|
+
|
673
|
+
Puppet.expects(:info).with("Using cached catalog from environment 'second_env'")
|
674
|
+
expect(@agent.retrieve_catalog({})).to eq(cached_catalog)
|
675
|
+
end
|
676
|
+
end
|
677
|
+
|
678
|
+
describe "and strict environment mode is set" do
|
679
|
+
before do
|
680
|
+
@catalog.stubs(:to_ral).returns(@catalog)
|
681
|
+
@catalog.stubs(:write_class_file)
|
682
|
+
@catalog.stubs(:write_resource_file)
|
683
|
+
@agent.stubs(:send_report)
|
684
|
+
@agent.stubs(:save_last_run_summary)
|
685
|
+
Puppet.settings[:strict_environment_mode] = true
|
686
|
+
end
|
687
|
+
|
688
|
+
it "should not make a node request" do
|
689
|
+
Puppet::Node.indirection.expects(:find).never
|
690
|
+
|
691
|
+
@agent.run
|
692
|
+
end
|
693
|
+
|
694
|
+
it "should return nil when the catalog's environment doesn't match the agent specified environment" do
|
695
|
+
@agent.instance_variable_set(:@environment, 'second_env')
|
696
|
+
expects_new_catalog_only(@catalog)
|
697
|
+
|
698
|
+
Puppet.expects(:err).with("Not using catalog because its environment 'production' does not match agent specified environment 'second_env' and strict_environment_mode is set")
|
699
|
+
expect(@agent.run).to be_nil
|
700
|
+
end
|
701
|
+
|
702
|
+
it "should not return nil when the catalog's environment matches the agent specified environment" do
|
703
|
+
@agent.instance_variable_set(:@environment, 'production')
|
704
|
+
expects_new_catalog_only(@catalog)
|
705
|
+
|
706
|
+
expect(@agent.run).to eq(0)
|
707
|
+
end
|
708
|
+
|
709
|
+
describe "and a cached catalog is explicitly requested" do
|
710
|
+
before do
|
711
|
+
Puppet.settings[:use_cached_catalog] = true
|
712
|
+
end
|
713
|
+
|
714
|
+
it "should return nil when the cached catalog's environment doesn't match the agent specified environment" do
|
715
|
+
@agent.instance_variable_set(:@environment, 'second_env')
|
716
|
+
expects_cached_catalog_only(@catalog)
|
717
|
+
|
718
|
+
Puppet.expects(:err).with("Not using catalog because its environment 'production' does not match agent specified environment 'second_env' and strict_environment_mode is set")
|
719
|
+
expect(@agent.run).to be_nil
|
720
|
+
end
|
721
|
+
|
722
|
+
it "should proceed with the cached catalog if its environment matchs the local environment" do
|
723
|
+
Puppet.settings[:use_cached_catalog] = true
|
724
|
+
@agent.instance_variable_set(:@environment, 'production')
|
725
|
+
expects_cached_catalog_only(@catalog)
|
726
|
+
|
727
|
+
expect(@agent.run).to eq(0)
|
728
|
+
end
|
729
|
+
end
|
578
730
|
end
|
579
731
|
|
580
732
|
it "should use the Catalog class to get its catalog" do
|
@@ -583,6 +735,13 @@ describe Puppet::Configurer do
|
|
583
735
|
@agent.retrieve_catalog({})
|
584
736
|
end
|
585
737
|
|
738
|
+
it "should set its cached_catalog_status to 'not_used' when downloading a new catalog" do
|
739
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns @catalog
|
740
|
+
|
741
|
+
@agent.retrieve_catalog({})
|
742
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('not_used')
|
743
|
+
end
|
744
|
+
|
586
745
|
it "should use its node_name_value to retrieve the catalog" do
|
587
746
|
Facter.stubs(:value).returns "eh"
|
588
747
|
Puppet.settings[:node_name_value] = "myhost.domain.com"
|
@@ -598,17 +757,21 @@ describe Puppet::Configurer do
|
|
598
757
|
end
|
599
758
|
|
600
759
|
it "should log and return the cached catalog when no catalog can be retrieved from the server" do
|
601
|
-
|
602
|
-
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns @catalog
|
603
|
-
|
604
|
-
Puppet.expects(:notice)
|
760
|
+
expects_fallback_to_cached_catalog(@catalog)
|
605
761
|
|
762
|
+
Puppet.expects(:info).with("Using cached catalog from environment 'production'")
|
606
763
|
expect(@agent.retrieve_catalog({})).to eq(@catalog)
|
607
764
|
end
|
608
765
|
|
766
|
+
it "should set its cached_catalog_status to 'on_failure' when no catalog can be retrieved from the server" do
|
767
|
+
expects_fallback_to_cached_catalog(@catalog)
|
768
|
+
|
769
|
+
@agent.retrieve_catalog({})
|
770
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('on_failure')
|
771
|
+
end
|
772
|
+
|
609
773
|
it "should not look in the cache for a catalog if one is returned from the server" do
|
610
|
-
|
611
|
-
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.never
|
774
|
+
expects_new_catalog_only(@catalog)
|
612
775
|
|
613
776
|
expect(@agent.retrieve_catalog({})).to eq(@catalog)
|
614
777
|
end
|
@@ -620,72 +783,141 @@ describe Puppet::Configurer do
|
|
620
783
|
expect(@agent.retrieve_catalog({})).to eq(@catalog)
|
621
784
|
end
|
622
785
|
|
786
|
+
it "should set its cached_catalog_status to 'on_failure' when retrieving the remote catalog throws an exception" do
|
787
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.raises "eh"
|
788
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns @catalog
|
789
|
+
|
790
|
+
@agent.retrieve_catalog({})
|
791
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('on_failure')
|
792
|
+
end
|
793
|
+
|
623
794
|
it "should log and return nil if no catalog can be retrieved from the server and :usecacheonfailure is disabled" do
|
624
795
|
Puppet[:usecacheonfailure] = false
|
625
796
|
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns nil
|
626
797
|
|
627
|
-
Puppet.expects(:warning)
|
798
|
+
Puppet.expects(:warning).with('Not using cache on failed catalog')
|
628
799
|
|
629
800
|
expect(@agent.retrieve_catalog({})).to be_nil
|
630
801
|
end
|
631
802
|
|
632
|
-
it "should
|
803
|
+
it "should set its cached_catalog_status to 'not_used' if no catalog can be retrieved from the server and :usecacheonfailure is disabled or fails to retrieve a catalog" do
|
804
|
+
Puppet[:usecacheonfailure] = false
|
633
805
|
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns nil
|
634
|
-
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns nil
|
635
806
|
|
636
|
-
|
807
|
+
@agent.retrieve_catalog({})
|
808
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('not_used')
|
637
809
|
end
|
638
810
|
|
639
|
-
it "should
|
640
|
-
|
811
|
+
it "should return nil if no cached catalog is available and no catalog can be retrieved from the server" do
|
812
|
+
expects_neither_new_or_cached_catalog
|
641
813
|
|
642
|
-
@agent.
|
643
|
-
expect(@agent.retrieve_catalog({})).to eq("converted catalog")
|
814
|
+
expect(@agent.retrieve_catalog({})).to be_nil
|
644
815
|
end
|
645
816
|
|
646
|
-
it "should return nil if
|
647
|
-
Puppet::Resource::Catalog.
|
817
|
+
it "should return nil if its cached catalog environment doesn't match server-specified environment" do
|
818
|
+
cached_catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote('second_env'))
|
819
|
+
@agent.instance_variable_set(:@node_environment, 'production')
|
820
|
+
|
821
|
+
expects_fallback_to_cached_catalog(cached_catalog)
|
648
822
|
|
823
|
+
Puppet.expects(:err).with("Not using cached catalog because its environment 'second_env' does not match 'production'")
|
649
824
|
expect(@agent.retrieve_catalog({})).to be_nil
|
650
825
|
end
|
826
|
+
|
827
|
+
it "should set its cached_catalog_status to 'not_used' if the cached catalog environment doesn't match server-specified environment" do
|
828
|
+
cached_catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote('second_env'))
|
829
|
+
@agent.instance_variable_set(:@node_environment, 'production')
|
830
|
+
|
831
|
+
expects_fallback_to_cached_catalog(cached_catalog)
|
832
|
+
|
833
|
+
@agent.retrieve_catalog({})
|
834
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('not_used')
|
835
|
+
end
|
836
|
+
|
837
|
+
it "should return its cached catalog if the environment matches the server-specified environment" do
|
838
|
+
cached_catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote(Puppet[:environment]))
|
839
|
+
@agent.instance_variable_set(:@node_environment, cached_catalog.environment)
|
840
|
+
|
841
|
+
expects_fallback_to_cached_catalog(cached_catalog)
|
842
|
+
|
843
|
+
expect(@agent.retrieve_catalog({})).to eq(cached_catalog)
|
844
|
+
end
|
845
|
+
|
846
|
+
it "should set its cached_catalog_status to 'on_failure' if the cached catalog environment matches server-specified environment" do
|
847
|
+
cached_catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote(Puppet[:environment]))
|
848
|
+
@agent.instance_variable_set(:@node_environment, cached_catalog.environment)
|
849
|
+
|
850
|
+
expects_fallback_to_cached_catalog(cached_catalog)
|
851
|
+
|
852
|
+
@agent.retrieve_catalog({})
|
853
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('on_failure')
|
854
|
+
end
|
651
855
|
end
|
652
856
|
|
653
857
|
describe "when converting the catalog" do
|
654
858
|
before do
|
655
859
|
Puppet.settings.stubs(:use).returns(true)
|
656
860
|
|
657
|
-
|
658
|
-
@oldcatalog = stub 'old_catalog', :to_ral => @catalog
|
861
|
+
catalog.stubs(:to_ral).returns ral_catalog
|
659
862
|
end
|
660
863
|
|
661
|
-
|
662
|
-
|
864
|
+
let (:catalog) { Puppet::Resource::Catalog.new('tester', Puppet::Node::Environment.remote(Puppet[:environment].to_sym)) }
|
865
|
+
let (:ral_catalog) { Puppet::Resource::Catalog.new('tester', Puppet::Node::Environment.remote(Puppet[:environment].to_sym)) }
|
663
866
|
|
664
|
-
|
867
|
+
it "should convert the catalog to a RAL-formed catalog" do
|
868
|
+
expect(@agent.convert_catalog(catalog, 10)).to equal(ral_catalog)
|
665
869
|
end
|
666
870
|
|
667
871
|
it "should finalize the catalog" do
|
668
|
-
|
872
|
+
ral_catalog.expects(:finalize)
|
669
873
|
|
670
|
-
@agent.convert_catalog(
|
874
|
+
@agent.convert_catalog(catalog, 10)
|
671
875
|
end
|
672
876
|
|
673
877
|
it "should record the passed retrieval time with the RAL catalog" do
|
674
|
-
|
878
|
+
ral_catalog.expects(:retrieval_duration=).with 10
|
675
879
|
|
676
|
-
@agent.convert_catalog(
|
880
|
+
@agent.convert_catalog(catalog, 10)
|
677
881
|
end
|
678
882
|
|
679
883
|
it "should write the RAL catalog's class file" do
|
680
|
-
|
884
|
+
ral_catalog.expects(:write_class_file)
|
681
885
|
|
682
|
-
@agent.convert_catalog(
|
886
|
+
@agent.convert_catalog(catalog, 10)
|
683
887
|
end
|
684
888
|
|
685
889
|
it "should write the RAL catalog's resource file" do
|
686
|
-
|
890
|
+
ral_catalog.expects(:write_resource_file)
|
891
|
+
|
892
|
+
@agent.convert_catalog(catalog, 10)
|
893
|
+
end
|
894
|
+
end
|
895
|
+
|
896
|
+
describe "when determining whether to pluginsync" do
|
897
|
+
it "should default to Puppet[:pluginsync] when explicitly set by the commandline" do
|
898
|
+
Puppet.settings[:pluginsync] = false
|
899
|
+
Puppet.settings.expects(:set_by_cli?).returns(true)
|
900
|
+
|
901
|
+
expect(described_class).not_to be_should_pluginsync
|
902
|
+
end
|
903
|
+
|
904
|
+
it "should default to Puppet[:pluginsync] when explicitly set by config" do
|
905
|
+
Puppet.settings[:pluginsync] = false
|
906
|
+
Puppet.settings.expects(:set_by_config?).returns(true)
|
907
|
+
|
908
|
+
expect(described_class).not_to be_should_pluginsync
|
909
|
+
end
|
910
|
+
|
911
|
+
it "should be true if use_cached_catalog is false" do
|
912
|
+
Puppet.settings[:use_cached_catalog] = false
|
913
|
+
|
914
|
+
expect(described_class).to be_should_pluginsync
|
915
|
+
end
|
916
|
+
|
917
|
+
it "should be false if use_cached_catalog is true" do
|
918
|
+
Puppet.settings[:use_cached_catalog] = true
|
687
919
|
|
688
|
-
|
920
|
+
expect(described_class).not_to be_should_pluginsync
|
689
921
|
end
|
690
922
|
end
|
691
923
|
end
|