puppet 4.3.2 → 4.4.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- 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
@@ -39,6 +39,19 @@ describe Puppet::Settings::EnvironmentConf do
|
|
39
39
|
expect(envconf.environment_timeout).to eq(180)
|
40
40
|
end
|
41
41
|
|
42
|
+
it "reads a static_catalogs from config" do
|
43
|
+
setup_environment_conf(config, :static_catalogs => true)
|
44
|
+
|
45
|
+
expect(envconf.static_catalogs).to eq(true)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "can retrieve untruthy settings" do
|
49
|
+
Puppet[:static_catalogs] = true
|
50
|
+
setup_environment_conf(config, :static_catalogs => false)
|
51
|
+
|
52
|
+
expect(envconf.static_catalogs).to eq(false)
|
53
|
+
end
|
54
|
+
|
42
55
|
it "can retrieve raw settings" do
|
43
56
|
setup_environment_conf(config, :manifest => 'manifest.pp')
|
44
57
|
|
@@ -64,10 +77,14 @@ describe Puppet::Settings::EnvironmentConf do
|
|
64
77
|
expect(envconf.config_version).to be_nil
|
65
78
|
end
|
66
79
|
|
67
|
-
it "returns a
|
80
|
+
it "returns a default of 0 for environment_timeout when config has none" do
|
68
81
|
expect(envconf.environment_timeout).to eq(0)
|
69
82
|
end
|
70
83
|
|
84
|
+
it "returns default of true for static_catalogs when config has none" do
|
85
|
+
expect(envconf.static_catalogs).to eq(true)
|
86
|
+
end
|
87
|
+
|
71
88
|
it "can still retrieve raw setting" do
|
72
89
|
expect(envconf.raw_setting(:manifest)).to be_nil
|
73
90
|
end
|
@@ -105,14 +105,14 @@ describe Puppet::SSL::CertificateRevocationList do
|
|
105
105
|
end
|
106
106
|
|
107
107
|
it "returns the last update time in UTC" do
|
108
|
-
#
|
108
|
+
# https://tools.ietf.org/html/rfc5280#section-5.1.2.4
|
109
109
|
thisUpdate = @crl.generate(@cert, @key).last_update
|
110
110
|
expect(thisUpdate).to be_utc
|
111
111
|
expects_time_close_to_now(thisUpdate)
|
112
112
|
end
|
113
113
|
|
114
114
|
it "returns the next update time in UTC 5 years from now" do
|
115
|
-
#
|
115
|
+
# https://tools.ietf.org/html/rfc5280#section-5.1.2.5
|
116
116
|
nextUpdate = @crl.generate(@cert, @key).next_update
|
117
117
|
expect(nextUpdate).to be_utc
|
118
118
|
expects_time_close_to_five_years(nextUpdate)
|
@@ -179,7 +179,7 @@ describe Puppet::SSL::CertificateRevocationList do
|
|
179
179
|
end
|
180
180
|
|
181
181
|
it "adds a non-critical CRL reason specifying key compromise by default" do
|
182
|
-
#
|
182
|
+
# https://tools.ietf.org/html/rfc5280#section-5.3.1
|
183
183
|
serial = 1
|
184
184
|
@crl.revoke(serial, @key)
|
185
185
|
|
@@ -52,6 +52,24 @@ describe Puppet::Transaction::Report do
|
|
52
52
|
expect(report.transaction_uuid).to eq("some transaction uuid")
|
53
53
|
end
|
54
54
|
|
55
|
+
it "should be able to set code_id" do
|
56
|
+
report = Puppet::Transaction::Report.new("inspect")
|
57
|
+
report.code_id = "some code id"
|
58
|
+
expect(report.code_id).to eq("some code id")
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should be able to set catalog_uuid" do
|
62
|
+
report = Puppet::Transaction::Report.new("inspect")
|
63
|
+
report.catalog_uuid = "some catalog uuid"
|
64
|
+
expect(report.catalog_uuid).to eq("some catalog uuid")
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should be able to set cached_catalog_status" do
|
68
|
+
report = Puppet::Transaction::Report.new("inspect")
|
69
|
+
report.cached_catalog_status = "explicitly_requested"
|
70
|
+
expect(report.cached_catalog_status).to eq("explicitly_requested")
|
71
|
+
end
|
72
|
+
|
55
73
|
it "should take 'environment' as an argument" do
|
56
74
|
expect(Puppet::Transaction::Report.new("inspect", "some configuration version", "some environment").environment).to eq("some environment")
|
57
75
|
end
|
@@ -419,6 +437,9 @@ describe Puppet::Transaction::Report do
|
|
419
437
|
expect(tripped.time.to_i).to eq(report.time.to_i)
|
420
438
|
expect(tripped.configuration_version).to eq(report.configuration_version)
|
421
439
|
expect(tripped.transaction_uuid).to eq(report.transaction_uuid)
|
440
|
+
expect(tripped.code_id).to eq(report.code_id)
|
441
|
+
expect(tripped.catalog_uuid).to eq(report.catalog_uuid)
|
442
|
+
expect(tripped.cached_catalog_status).to eq(report.cached_catalog_status)
|
422
443
|
expect(tripped.report_format).to eq(report.report_format)
|
423
444
|
expect(tripped.puppet_version).to eq(report.puppet_version)
|
424
445
|
expect(tripped.kind).to eq(report.kind)
|
@@ -485,6 +506,9 @@ describe Puppet::Transaction::Report do
|
|
485
506
|
report = Puppet::Transaction::Report.new('apply', 1357986, 'test_environment', "df34516e-4050-402d-a166-05b03b940749")
|
486
507
|
report << Puppet::Util::Log.new(:level => :warning, :message => "log message")
|
487
508
|
report.add_times("timing", 4)
|
509
|
+
report.code_id = "some code id"
|
510
|
+
report.catalog_uuid = "some catalog uuid"
|
511
|
+
report.cached_catalog_status = "not_used"
|
488
512
|
report.add_resource_status(status)
|
489
513
|
report.finalize_report
|
490
514
|
report
|
@@ -498,6 +522,9 @@ describe Puppet::Transaction::Report do
|
|
498
522
|
report = Puppet::Transaction::Report.new('apply', 1357986, 'test_environment', "df34516e-4050-402d-a166-05b03b940749")
|
499
523
|
report << Puppet::Util::Log.new(:level => :warning, :message => "log message")
|
500
524
|
report.add_times("timing", 4)
|
525
|
+
report.code_id = "some code id"
|
526
|
+
report.catalog_uuid = "some catalog uuid"
|
527
|
+
report.cached_catalog_status = "not_used"
|
501
528
|
report.add_resource_status(status)
|
502
529
|
report.finalize_report
|
503
530
|
report
|
@@ -418,53 +418,6 @@ describe Puppet::Transaction::ResourceHarness do
|
|
418
418
|
end
|
419
419
|
end
|
420
420
|
|
421
|
-
describe "when applying changes" do
|
422
|
-
it "should not apply changes if allow_changes?() returns false" do
|
423
|
-
test_file = tmpfile('foo')
|
424
|
-
resource = Puppet::Type.type(:file).new :path => test_file, :backup => false, :ensure => :file
|
425
|
-
resource.expects(:err).never # make sure no exceptions get swallowed
|
426
|
-
@harness.expects(:allow_changes?).with(resource).returns false
|
427
|
-
status = @harness.evaluate(resource)
|
428
|
-
expect(Puppet::FileSystem.exist?(test_file)).to eq(false)
|
429
|
-
end
|
430
|
-
end
|
431
|
-
|
432
|
-
describe "when determining whether the resource can be changed" do
|
433
|
-
before do
|
434
|
-
@resource.stubs(:purging?).returns true
|
435
|
-
@resource.stubs(:deleting?).returns true
|
436
|
-
end
|
437
|
-
|
438
|
-
it "should be true if the resource is not being purged" do
|
439
|
-
@resource.expects(:purging?).returns false
|
440
|
-
expect(@harness).to be_allow_changes(@resource)
|
441
|
-
end
|
442
|
-
|
443
|
-
it "should be true if the resource is not being deleted" do
|
444
|
-
@resource.expects(:deleting?).returns false
|
445
|
-
expect(@harness).to be_allow_changes(@resource)
|
446
|
-
end
|
447
|
-
|
448
|
-
it "should be true if the resource has no dependents" do
|
449
|
-
@harness.relationship_graph.expects(:dependents).with(@resource).returns []
|
450
|
-
expect(@harness).to be_allow_changes(@resource)
|
451
|
-
end
|
452
|
-
|
453
|
-
it "should be true if all dependents are being deleted" do
|
454
|
-
dep = stub 'dependent', :deleting? => true
|
455
|
-
@harness.relationship_graph.expects(:dependents).with(@resource).returns [dep]
|
456
|
-
@resource.expects(:purging?).returns true
|
457
|
-
expect(@harness).to be_allow_changes(@resource)
|
458
|
-
end
|
459
|
-
|
460
|
-
it "should be false if the resource's dependents are not being deleted" do
|
461
|
-
dep = stub 'dependent', :deleting? => false, :ref => "myres"
|
462
|
-
@resource.expects(:warning)
|
463
|
-
@harness.relationship_graph.expects(:dependents).with(@resource).returns [dep]
|
464
|
-
expect(@harness).not_to be_allow_changes(@resource)
|
465
|
-
end
|
466
|
-
end
|
467
|
-
|
468
421
|
describe "when finding the schedule" do
|
469
422
|
before do
|
470
423
|
@catalog = Puppet::Resource::Catalog.new
|
@@ -365,6 +365,11 @@ describe Puppet::Transaction do
|
|
365
365
|
expect(@transaction).to be_skip(@resource)
|
366
366
|
end
|
367
367
|
|
368
|
+
it "should skip resources tagged with the skip tags" do
|
369
|
+
@transaction.stubs(:skip_tags?).returns(true)
|
370
|
+
expect(@transaction).to be_skip(@resource)
|
371
|
+
end
|
372
|
+
|
368
373
|
it "should skip unscheduled resources" do
|
369
374
|
@transaction.stubs(:scheduled?).returns(false)
|
370
375
|
expect(@transaction).to be_skip(@resource)
|
@@ -76,4 +76,10 @@ describe checksum do
|
|
76
76
|
expect(sum).to eq("something")
|
77
77
|
end
|
78
78
|
end
|
79
|
+
|
80
|
+
it 'should use values allowed by the supported_checksum_types setting' do
|
81
|
+
values = checksum.value_collection.values.reject {|v| v == :none}.map {|v| v.to_s}
|
82
|
+
Puppet.settings[:supported_checksum_types] = values
|
83
|
+
expect(Puppet.settings[:supported_checksum_types]).to eq(values)
|
84
|
+
end
|
79
85
|
end
|
@@ -0,0 +1,286 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Puppet::Type.type(:file).attrclass(:checksum_value), :uses_checksums => true do
|
5
|
+
include PuppetSpec::Files
|
6
|
+
include_context 'with supported checksum types'
|
7
|
+
|
8
|
+
let(:path) { tmpfile('foo_bar') }
|
9
|
+
let(:source_file) { file_containing('temp_foo', 'nothing at all') }
|
10
|
+
let(:environment) { Puppet::Node::Environment.create(:testing, []) }
|
11
|
+
let(:catalog) { Puppet::Resource::Catalog.new(:test, environment) }
|
12
|
+
let(:resource) { Puppet::Type.type(:file).new(:path => path, :catalog => catalog) }
|
13
|
+
|
14
|
+
it "should be a property" do
|
15
|
+
expect(described_class.superclass).to eq(Puppet::Property)
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "when retrieving the current checksum_value" do
|
19
|
+
let(:checksum_value) { described_class.new(:resource => resource) }
|
20
|
+
|
21
|
+
it "should not compute a checksum if source is absent" do
|
22
|
+
resource.expects(:stat).never
|
23
|
+
expect(checksum_value.retrieve).to be_nil
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "when using a source" do
|
27
|
+
before do
|
28
|
+
resource[:source] = source_file
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return :absent if the target does not exist" do
|
32
|
+
resource.expects(:stat).returns nil
|
33
|
+
|
34
|
+
expect(checksum_value.retrieve).to eq(:absent)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should not manage content on directories" do
|
38
|
+
stat = mock 'stat', :ftype => "directory"
|
39
|
+
resource.expects(:stat).returns stat
|
40
|
+
|
41
|
+
expect(checksum_value.retrieve).to be_nil
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should not manage content on links" do
|
45
|
+
stat = mock 'stat', :ftype => "link"
|
46
|
+
resource.expects(:stat).returns stat
|
47
|
+
|
48
|
+
expect(checksum_value.retrieve).to be_nil
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should always return the checksum as a string" do
|
52
|
+
resource[:checksum] = :mtime
|
53
|
+
|
54
|
+
stat = mock 'stat', :ftype => "file"
|
55
|
+
resource.expects(:stat).returns stat
|
56
|
+
|
57
|
+
time = Time.now
|
58
|
+
resource.parameter(:checksum).expects(:mtime_file).with(resource[:path]).returns time
|
59
|
+
|
60
|
+
expect(checksum_value.retrieve).to eq(time.to_s)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
with_digest_algorithms do
|
65
|
+
it "should return the checksum of the target if it exists and is a normal file" do
|
66
|
+
stat = mock 'stat', :ftype => "file"
|
67
|
+
resource.expects(:stat).returns stat
|
68
|
+
resource.parameter(:checksum).expects("#{digest_algorithm}_file".intern).with(resource[:path]).returns "mysum"
|
69
|
+
resource[:source] = source_file
|
70
|
+
|
71
|
+
expect(checksum_value.retrieve).to eq("mysum")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "when testing whether the checksum_value is in sync" do
|
77
|
+
let(:checksum_value) { described_class.new(:resource => resource) }
|
78
|
+
|
79
|
+
before do
|
80
|
+
resource[:ensure] = :file
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should return true if source is not specified" do
|
84
|
+
checksum_value.should = "foo"
|
85
|
+
expect(checksum_value).to be_safe_insync("whatever")
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "when a source is provided" do
|
89
|
+
before do
|
90
|
+
resource[:source] = source_file
|
91
|
+
end
|
92
|
+
|
93
|
+
with_digest_algorithms do
|
94
|
+
before(:each) do
|
95
|
+
resource[:checksum] = digest_algorithm
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should return true if the resource shouldn't be a regular file" do
|
99
|
+
resource.expects(:should_be_file?).returns false
|
100
|
+
checksum_value.should = "foo"
|
101
|
+
expect(checksum_value).to be_safe_insync("whatever")
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should return false if the current checksum_value is :absent" do
|
105
|
+
checksum_value.should = "foo"
|
106
|
+
expect(checksum_value).not_to be_safe_insync(:absent)
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should return false if the file should be a file but is not present" do
|
110
|
+
resource.expects(:should_be_file?).returns true
|
111
|
+
checksum_value.should = "foo"
|
112
|
+
|
113
|
+
expect(checksum_value).not_to be_safe_insync(:absent)
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "and the file exists" do
|
117
|
+
before do
|
118
|
+
resource.stubs(:stat).returns mock("stat")
|
119
|
+
checksum_value.should = "somechecksum"
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should return false if the current checksum_value is different from the desired checksum_value" do
|
123
|
+
expect(checksum_value).not_to be_safe_insync("otherchecksum")
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should return true if the current checksum_value is the same as the desired checksum_value" do
|
127
|
+
expect(checksum_value).to be_safe_insync("somechecksum")
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should include the diff module" do
|
131
|
+
expect(checksum_value.respond_to?("diff")).to eq(false)
|
132
|
+
end
|
133
|
+
|
134
|
+
[true, false].product([true, false]).each do |cfg, param|
|
135
|
+
describe "and Puppet[:show_diff] is #{cfg} and show_diff => #{param}" do
|
136
|
+
before do
|
137
|
+
Puppet[:show_diff] = cfg
|
138
|
+
resource.stubs(:show_diff?).returns param
|
139
|
+
resource[:loglevel] = "debug"
|
140
|
+
end
|
141
|
+
|
142
|
+
if cfg and param
|
143
|
+
it "should display a diff" do
|
144
|
+
checksum_value.expects(:diff).returns("my diff").once
|
145
|
+
checksum_value.expects(:debug).with("\nmy diff").once
|
146
|
+
expect(checksum_value).not_to be_safe_insync("otherchecksum")
|
147
|
+
end
|
148
|
+
else
|
149
|
+
it "should not display a diff" do
|
150
|
+
checksum_value.expects(:diff).never
|
151
|
+
expect(checksum_value).not_to be_safe_insync("otherchecksum")
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
let(:saved_time) { Time.now }
|
160
|
+
[:ctime, :mtime].each do |time_stat|
|
161
|
+
[["older", -1, false], ["same", 0, true], ["newer", 1, true]].each do
|
162
|
+
|compare, target_time, success|
|
163
|
+
describe "with #{compare} target #{time_stat} compared to source" do
|
164
|
+
before do
|
165
|
+
resource[:checksum] = time_stat
|
166
|
+
checksum_value.should = saved_time.to_s
|
167
|
+
end
|
168
|
+
|
169
|
+
it "should return #{success}" do
|
170
|
+
if success
|
171
|
+
expect(checksum_value).to be_safe_insync((saved_time+target_time).to_s)
|
172
|
+
else
|
173
|
+
expect(checksum_value).not_to be_safe_insync((saved_time+target_time).to_s)
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
describe "with #{time_stat}" do
|
180
|
+
before do
|
181
|
+
resource[:checksum] = time_stat
|
182
|
+
end
|
183
|
+
|
184
|
+
it "should not be insync if trying to create it" do
|
185
|
+
checksum_value.should = saved_time.to_s
|
186
|
+
expect(checksum_value).not_to be_safe_insync(:absent)
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should raise an error if checksum_value is not a checksum" do
|
190
|
+
checksum_value.should = "some content"
|
191
|
+
expect {
|
192
|
+
checksum_value.safe_insync?(saved_time.to_s)
|
193
|
+
}.to raise_error(/Resource with checksum_type #{time_stat} didn't contain a date in/)
|
194
|
+
end
|
195
|
+
|
196
|
+
it "should not be insync even if checksum_value is the absent symbol" do
|
197
|
+
checksum_value.should = :absent
|
198
|
+
expect(checksum_value).not_to be_safe_insync(:absent)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
describe "and :replace is false" do
|
204
|
+
before do
|
205
|
+
resource.stubs(:replace?).returns false
|
206
|
+
end
|
207
|
+
|
208
|
+
it "should be insync if the file exists and the checksum_value is different" do
|
209
|
+
resource.stubs(:stat).returns mock('stat')
|
210
|
+
|
211
|
+
expect(checksum_value).to be_safe_insync("whatever")
|
212
|
+
end
|
213
|
+
|
214
|
+
it "should be insync if the file exists and the checksum_value is right" do
|
215
|
+
resource.stubs(:stat).returns mock('stat')
|
216
|
+
|
217
|
+
expect(checksum_value).to be_safe_insync("something")
|
218
|
+
end
|
219
|
+
|
220
|
+
it "should not be insync if the file does not exist" do
|
221
|
+
checksum_value.should = "foo"
|
222
|
+
expect(checksum_value).not_to be_safe_insync(:absent)
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
describe "when testing whether the checksum_value is initialized in the resource and in sync" do
|
229
|
+
CHECKSUM_TYPES_TO_TRY.each do |checksum_type, checksum|
|
230
|
+
describe "sync with checksum type #{checksum_type} and the file exists" do
|
231
|
+
before do
|
232
|
+
@new_resource = Puppet::Type.type(:file).new :ensure => :file, :path => path, :catalog => catalog,
|
233
|
+
:checksum_value => checksum, :checksum => checksum_type, :source => source_file
|
234
|
+
@new_resource.stubs(:stat).returns mock('stat')
|
235
|
+
end
|
236
|
+
|
237
|
+
it "should return false if the current checksum_value is different from the desired checksum_value" do
|
238
|
+
expect(@new_resource.parameters[:checksum_value]).not_to be_safe_insync("abcdef")
|
239
|
+
end
|
240
|
+
|
241
|
+
it "should return true if the current checksum_value is the same as the desired checksum_value" do
|
242
|
+
expect(@new_resource.parameters[:checksum_value]).to be_safe_insync(checksum)
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
describe "when changing the checksum_value" do
|
249
|
+
let(:checksum_value) { described_class.new(:resource => resource) }
|
250
|
+
|
251
|
+
before do
|
252
|
+
resource.stubs(:[]).with(:path).returns "/boo"
|
253
|
+
resource.stubs(:stat).returns "eh"
|
254
|
+
end
|
255
|
+
|
256
|
+
it "should raise if source is absent" do
|
257
|
+
resource.expects(:write).never
|
258
|
+
|
259
|
+
expect { checksum_value.sync }.to raise_error "checksum_value#sync should not be called without a source parameter"
|
260
|
+
end
|
261
|
+
|
262
|
+
describe "when using a source" do
|
263
|
+
before do
|
264
|
+
resource[:source] = source_file
|
265
|
+
end
|
266
|
+
|
267
|
+
it "should use the file's :write method to write the checksum_value" do
|
268
|
+
resource.expects(:write).with(resource.parameter(:source))
|
269
|
+
|
270
|
+
checksum_value.sync
|
271
|
+
end
|
272
|
+
|
273
|
+
it "should return :file_changed if the file already existed" do
|
274
|
+
resource.expects(:stat).returns "something"
|
275
|
+
resource.stubs(:write)
|
276
|
+
expect(checksum_value.sync).to eq(:file_changed)
|
277
|
+
end
|
278
|
+
|
279
|
+
it "should return :file_created if the file did not exist" do
|
280
|
+
resource.expects(:stat).returns nil
|
281
|
+
resource.stubs(:write)
|
282
|
+
expect(checksum_value.sync).to eq(:file_created)
|
283
|
+
end
|
284
|
+
end
|
285
|
+
end
|
286
|
+
end
|