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
@@ -1,5 +1,7 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
require 'spec_helper'
|
3
|
+
require 'puppet_spec/compiler'
|
4
|
+
require 'matchers/resource'
|
3
5
|
|
4
6
|
require 'puppet/indirector/catalog/compiler'
|
5
7
|
|
@@ -46,7 +48,7 @@ describe Puppet::Resource::Catalog::Compiler do
|
|
46
48
|
|
47
49
|
it "should directly use provided nodes for a local request" do
|
48
50
|
Puppet::Node.indirection.expects(:find).never
|
49
|
-
@compiler.expects(:compile).with(@node,
|
51
|
+
@compiler.expects(:compile).with(@node, anything)
|
50
52
|
@request.stubs(:options).returns(:use_node => @node)
|
51
53
|
@request.stubs(:remote?).returns(false)
|
52
54
|
@compiler.find(@request)
|
@@ -63,7 +65,7 @@ describe Puppet::Resource::Catalog::Compiler do
|
|
63
65
|
it "should use the authenticated node name if no request key is provided" do
|
64
66
|
@request.stubs(:key).returns(nil)
|
65
67
|
Puppet::Node.indirection.expects(:find).with(@name, anything).returns(@node)
|
66
|
-
@compiler.expects(:compile).with(@node,
|
68
|
+
@compiler.expects(:compile).with(@node, anything)
|
67
69
|
@compiler.find(@request)
|
68
70
|
end
|
69
71
|
|
@@ -71,7 +73,7 @@ describe Puppet::Resource::Catalog::Compiler do
|
|
71
73
|
@request.expects(:key).returns "my_node"
|
72
74
|
|
73
75
|
Puppet::Node.indirection.expects(:find).with("my_node", anything).returns @node
|
74
|
-
@compiler.expects(:compile).with(@node,
|
76
|
+
@compiler.expects(:compile).with(@node, anything)
|
75
77
|
@compiler.find(@request)
|
76
78
|
end
|
77
79
|
|
@@ -88,7 +90,7 @@ describe Puppet::Resource::Catalog::Compiler do
|
|
88
90
|
it "should pass the found node to the compiler for compiling" do
|
89
91
|
Puppet::Node.indirection.expects(:find).with(@name, anything).returns(@node)
|
90
92
|
config = mock 'config'
|
91
|
-
Puppet::Parser::Compiler.expects(:compile).with(@node,
|
93
|
+
Puppet::Parser::Compiler.expects(:compile).with(@node, anything)
|
92
94
|
@compiler.find(@request)
|
93
95
|
end
|
94
96
|
|
@@ -145,6 +147,96 @@ describe Puppet::Resource::Catalog::Compiler do
|
|
145
147
|
|
146
148
|
expect(@compiler.find(@request).code_id).to eq(code_id)
|
147
149
|
end
|
150
|
+
|
151
|
+
it "does not inline metadata when the static_catalog option is false" do
|
152
|
+
Puppet::Node.indirection.stubs(:find).returns(@node)
|
153
|
+
@request.options[:static_catalog] = false
|
154
|
+
@request.options[:code_id] = 'some_code_id'
|
155
|
+
@node.environment.stubs(:static_catalogs?).returns true
|
156
|
+
|
157
|
+
catalog = Puppet::Resource::Catalog.new(@node.name, @node.environment)
|
158
|
+
Puppet::Parser::Compiler.stubs(:compile).returns catalog
|
159
|
+
|
160
|
+
@compiler.expects(:inline_metadata).never
|
161
|
+
@compiler.find(@request)
|
162
|
+
end
|
163
|
+
|
164
|
+
it "does not inline metadata when static_catalogs are disabled" do
|
165
|
+
Puppet::Node.indirection.stubs(:find).returns(@node)
|
166
|
+
@request.options[:static_catalog] = true
|
167
|
+
@request.options[:checksum_type] = 'md5'
|
168
|
+
@request.options[:code_id] = 'some_code_id'
|
169
|
+
@node.environment.stubs(:static_catalogs?).returns false
|
170
|
+
|
171
|
+
catalog = Puppet::Resource::Catalog.new(@node.name, @node.environment)
|
172
|
+
Puppet::Parser::Compiler.stubs(:compile).returns catalog
|
173
|
+
|
174
|
+
@compiler.expects(:inline_metadata).never
|
175
|
+
@compiler.find(@request)
|
176
|
+
end
|
177
|
+
|
178
|
+
it "does not inline metadata when code_id is not specified" do
|
179
|
+
Puppet::Node.indirection.stubs(:find).returns(@node)
|
180
|
+
@request.options[:static_catalog] = true
|
181
|
+
@request.options[:checksum_type] = 'md5'
|
182
|
+
@node.environment.stubs(:static_catalogs?).returns true
|
183
|
+
|
184
|
+
catalog = Puppet::Resource::Catalog.new(@node.name, @node.environment)
|
185
|
+
Puppet::Parser::Compiler.stubs(:compile).returns catalog
|
186
|
+
|
187
|
+
@compiler.expects(:inline_metadata).never
|
188
|
+
expect(@compiler.find(@request)).to eq(catalog)
|
189
|
+
end
|
190
|
+
|
191
|
+
it "inlines metadata when the static_catalog option is true, static_catalogs are enabled, and a code_id is provided" do
|
192
|
+
Puppet::Node.indirection.stubs(:find).returns(@node)
|
193
|
+
@request.options[:static_catalog] = true
|
194
|
+
@request.options[:checksum_type] = 'sha256'
|
195
|
+
@request.options[:code_id] = 'some_code_id'
|
196
|
+
@node.environment.stubs(:static_catalogs?).returns true
|
197
|
+
|
198
|
+
catalog = Puppet::Resource::Catalog.new(@node.name, @node.environment)
|
199
|
+
Puppet::Parser::Compiler.stubs(:compile).returns catalog
|
200
|
+
|
201
|
+
@compiler.expects(:inline_metadata).with(catalog, :sha256).returns catalog
|
202
|
+
@compiler.find(@request)
|
203
|
+
end
|
204
|
+
|
205
|
+
it "inlines metadata with the first common checksum type" do
|
206
|
+
Puppet::Node.indirection.stubs(:find).returns(@node)
|
207
|
+
@request.options[:static_catalog] = true
|
208
|
+
@request.options[:checksum_type] = 'atime.md5.sha256.mtime'
|
209
|
+
@request.options[:code_id] = 'some_code_id'
|
210
|
+
@node.environment.stubs(:static_catalogs?).returns true
|
211
|
+
|
212
|
+
catalog = Puppet::Resource::Catalog.new(@node.name, @node.environment)
|
213
|
+
Puppet::Parser::Compiler.stubs(:compile).returns catalog
|
214
|
+
|
215
|
+
@compiler.expects(:inline_metadata).with(catalog, :md5).returns catalog
|
216
|
+
@compiler.find(@request)
|
217
|
+
end
|
218
|
+
|
219
|
+
it "errors if checksum_type contains no shared checksum types" do
|
220
|
+
Puppet::Node.indirection.stubs(:find).returns(@node)
|
221
|
+
@request.options[:static_catalog] = true
|
222
|
+
@request.options[:checksum_type] = 'atime.sha512'
|
223
|
+
@request.options[:code_id] = 'some_code_id'
|
224
|
+
@node.environment.stubs(:static_catalogs?).returns true
|
225
|
+
|
226
|
+
expect { @compiler.find(@request) }.to raise_error Puppet::Error,
|
227
|
+
"Unable to find a common checksum type between agent 'atime.sha512' and master '[:sha256, :sha256lite, :md5, :md5lite, :sha1, :sha1lite, :mtime, :ctime, :none]'."
|
228
|
+
end
|
229
|
+
|
230
|
+
it "errors if checksum_type contains no shared checksum types" do
|
231
|
+
Puppet::Node.indirection.stubs(:find).returns(@node)
|
232
|
+
@request.options[:static_catalog] = true
|
233
|
+
@request.options[:checksum_type] = nil
|
234
|
+
@request.options[:code_id] = 'some_code_id'
|
235
|
+
@node.environment.stubs(:static_catalogs?).returns true
|
236
|
+
|
237
|
+
expect { @compiler.find(@request) }.to raise_error Puppet::Error,
|
238
|
+
"Unable to find a common checksum type between agent '' and master '[:sha256, :sha256lite, :md5, :md5lite, :sha1, :sha1lite, :mtime, :ctime, :none]'."
|
239
|
+
end
|
148
240
|
end
|
149
241
|
|
150
242
|
describe "when extracting facts from the request" do
|
@@ -300,4 +392,613 @@ describe Puppet::Resource::Catalog::Compiler do
|
|
300
392
|
end
|
301
393
|
|
302
394
|
end
|
395
|
+
|
396
|
+
describe "when inlining metadata" do
|
397
|
+
include PuppetSpec::Compiler
|
398
|
+
|
399
|
+
let(:node) { Puppet::Node.new 'me' }
|
400
|
+
let(:checksum_type) { 'md5' }
|
401
|
+
let(:checksum_value) { 'b1946ac92492d2347c6235b4d2611184' }
|
402
|
+
let(:path) { File.expand_path('/foo') }
|
403
|
+
let(:source) { 'puppet:///modules/mymodule/config_file.txt' }
|
404
|
+
|
405
|
+
before :each do
|
406
|
+
@compiler = Puppet::Resource::Catalog::Compiler.new
|
407
|
+
end
|
408
|
+
|
409
|
+
def stubs_resource_metadata(ftype, relative_path, full_path = nil)
|
410
|
+
full_path ||= File.join(Puppet[:environmentpath], 'production', relative_path)
|
411
|
+
|
412
|
+
metadata = stub 'metadata'
|
413
|
+
metadata.stubs(:ftype).returns(ftype)
|
414
|
+
metadata.stubs(:full_path).returns(full_path)
|
415
|
+
metadata.stubs(:relative_path).returns(relative_path)
|
416
|
+
metadata.stubs(:source).returns("puppet:///#{relative_path}")
|
417
|
+
metadata.stubs(:source=)
|
418
|
+
metadata.stubs(:content_uri=)
|
419
|
+
|
420
|
+
metadata
|
421
|
+
end
|
422
|
+
|
423
|
+
def stubs_file_metadata(checksum_type, sha, relative_path, full_path = nil)
|
424
|
+
metadata = stubs_resource_metadata('file', relative_path, full_path)
|
425
|
+
metadata.stubs(:checksum).returns("{#{checksum_type}}#{sha}")
|
426
|
+
metadata.stubs(:checksum_type).returns(checksum_type)
|
427
|
+
metadata
|
428
|
+
end
|
429
|
+
|
430
|
+
def stubs_link_metadata(relative_path, destination)
|
431
|
+
metadata = stubs_resource_metadata('link', relative_path)
|
432
|
+
metadata.stubs(:destination).returns(destination)
|
433
|
+
metadata
|
434
|
+
end
|
435
|
+
|
436
|
+
def stubs_directory_metadata(relative_path)
|
437
|
+
metadata = stubs_resource_metadata('directory', relative_path)
|
438
|
+
metadata.stubs(:relative_path).returns('.')
|
439
|
+
metadata
|
440
|
+
end
|
441
|
+
|
442
|
+
it "inlines metadata for a file" do
|
443
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
444
|
+
file { '#{path}':
|
445
|
+
ensure => file,
|
446
|
+
source => '#{source}'
|
447
|
+
}
|
448
|
+
MANIFEST
|
449
|
+
|
450
|
+
metadata = stubs_file_metadata(checksum_type, checksum_value, 'modules/mymodule/files/config_file.txt')
|
451
|
+
metadata.expects(:source=).with(source)
|
452
|
+
metadata.expects(:content_uri=).with('puppet:///modules/mymodule/files/config_file.txt')
|
453
|
+
|
454
|
+
options = {
|
455
|
+
:environment => catalog.environment_instance,
|
456
|
+
:links => :manage,
|
457
|
+
:checksum_type => checksum_type.to_sym,
|
458
|
+
:source_permissions => :ignore
|
459
|
+
}
|
460
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, options).returns(metadata)
|
461
|
+
|
462
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
463
|
+
|
464
|
+
expect(catalog.metadata[path]).to eq(metadata)
|
465
|
+
expect(catalog.recursive_metadata).to be_empty
|
466
|
+
end
|
467
|
+
|
468
|
+
it "uses resource parameters when inlining metadata" do
|
469
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
470
|
+
file { '#{path}':
|
471
|
+
ensure => link,
|
472
|
+
source => '#{source}',
|
473
|
+
links => follow,
|
474
|
+
source_permissions => use,
|
475
|
+
}
|
476
|
+
MANIFEST
|
477
|
+
|
478
|
+
metadata = stubs_link_metadata('modules/mymodule/files/config_file.txt', '/tmp/some/absolute/path')
|
479
|
+
metadata.expects(:source=).with(source)
|
480
|
+
metadata.expects(:content_uri=).with('puppet:///modules/mymodule/files/config_file.txt')
|
481
|
+
|
482
|
+
options = {
|
483
|
+
:environment => catalog.environment_instance,
|
484
|
+
:links => :follow,
|
485
|
+
:checksum_type => checksum_type.to_sym,
|
486
|
+
:source_permissions => :use
|
487
|
+
}
|
488
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, options).returns(metadata)
|
489
|
+
|
490
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
491
|
+
|
492
|
+
expect(catalog.metadata[path]).to eq(metadata)
|
493
|
+
expect(catalog.recursive_metadata).to be_empty
|
494
|
+
end
|
495
|
+
|
496
|
+
it "uses file parameters which match the true file type defaults" do
|
497
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
498
|
+
file { '#{path}':
|
499
|
+
ensure => file,
|
500
|
+
source => '#{source}'
|
501
|
+
}
|
502
|
+
MANIFEST
|
503
|
+
|
504
|
+
if Puppet::Util::Platform.windows?
|
505
|
+
default_file = Puppet::Type.type(:file).new(:name => 'C:\defaults')
|
506
|
+
else
|
507
|
+
default_file = Puppet::Type.type(:file).new(:name => '/defaults')
|
508
|
+
end
|
509
|
+
|
510
|
+
metadata = stubs_file_metadata(checksum_type, checksum_value, 'modules/mymodule/files/config_file.txt')
|
511
|
+
|
512
|
+
options = {
|
513
|
+
:environment => catalog.environment_instance,
|
514
|
+
:links => default_file[:links],
|
515
|
+
:checksum_type => checksum_type.to_sym,
|
516
|
+
:source_permissions => default_file[:source_permissions]
|
517
|
+
}
|
518
|
+
|
519
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, options).returns(metadata)
|
520
|
+
|
521
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
522
|
+
end
|
523
|
+
|
524
|
+
it "inlines metadata for the first source found" do
|
525
|
+
alt_source = 'puppet:///modules/files/other.txt'
|
526
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
527
|
+
file { '#{path}':
|
528
|
+
ensure => file,
|
529
|
+
source => ['#{alt_source}', '#{source}'],
|
530
|
+
}
|
531
|
+
MANIFEST
|
532
|
+
|
533
|
+
metadata = stubs_file_metadata(checksum_type, checksum_value, 'modules/mymodule/files/config_file.txt')
|
534
|
+
metadata.expects(:source=).with(source)
|
535
|
+
metadata.expects(:content_uri=).with('puppet:///modules/mymodule/files/config_file.txt')
|
536
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, anything).returns(metadata)
|
537
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(alt_source, anything).returns(nil)
|
538
|
+
|
539
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
540
|
+
|
541
|
+
expect(catalog.metadata[path]).to eq(metadata)
|
542
|
+
expect(catalog.recursive_metadata).to be_empty
|
543
|
+
end
|
544
|
+
|
545
|
+
[['md5', 'b1946ac92492d2347c6235b4d2611184'],
|
546
|
+
['sha256', '5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03']].each do |checksum_type, sha|
|
547
|
+
describe "with agent requesting checksum_type #{checksum_type}" do
|
548
|
+
it "sets checksum and checksum_value for resources with puppet:// source URIs" do
|
549
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
550
|
+
file { '#{path}':
|
551
|
+
ensure => file,
|
552
|
+
source => '#{source}'
|
553
|
+
}
|
554
|
+
MANIFEST
|
555
|
+
|
556
|
+
metadata = stubs_file_metadata(checksum_type, sha, 'modules/mymodule/files/config_file.txt')
|
557
|
+
|
558
|
+
options = {
|
559
|
+
:environment => catalog.environment_instance,
|
560
|
+
:links => :manage,
|
561
|
+
:checksum_type => checksum_type.to_sym,
|
562
|
+
:source_permissions => :ignore
|
563
|
+
}
|
564
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, options).returns(metadata)
|
565
|
+
|
566
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
567
|
+
|
568
|
+
expect(catalog.metadata[path]).to eq(metadata)
|
569
|
+
expect(catalog.recursive_metadata).to be_empty
|
570
|
+
end
|
571
|
+
end
|
572
|
+
end
|
573
|
+
|
574
|
+
it "preserves source host and port in the content_uri" do
|
575
|
+
source = 'puppet://myhost:8888/modules/mymodule/config_file.txt'
|
576
|
+
|
577
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
578
|
+
file { '#{path}':
|
579
|
+
ensure => file,
|
580
|
+
source => '#{source}'
|
581
|
+
}
|
582
|
+
MANIFEST
|
583
|
+
|
584
|
+
metadata = stubs_file_metadata(checksum_type, checksum_value, 'modules/mymodule/files/config_file.txt')
|
585
|
+
metadata.stubs(:source).returns(source)
|
586
|
+
|
587
|
+
metadata.expects(:content_uri=).with('puppet://myhost:8888/modules/mymodule/files/config_file.txt')
|
588
|
+
|
589
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, anything).returns(metadata)
|
590
|
+
|
591
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
592
|
+
end
|
593
|
+
|
594
|
+
it "skips absent resources" do
|
595
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
596
|
+
file { '#{path}':
|
597
|
+
ensure => absent,
|
598
|
+
}
|
599
|
+
MANIFEST
|
600
|
+
|
601
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
602
|
+
expect(catalog.metadata).to be_empty
|
603
|
+
expect(catalog.recursive_metadata).to be_empty
|
604
|
+
end
|
605
|
+
|
606
|
+
it "skips resources without a source" do
|
607
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
608
|
+
file { '#{path}':
|
609
|
+
ensure => file,
|
610
|
+
}
|
611
|
+
MANIFEST
|
612
|
+
|
613
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
614
|
+
expect(catalog.metadata).to be_empty
|
615
|
+
expect(catalog.recursive_metadata).to be_empty
|
616
|
+
end
|
617
|
+
|
618
|
+
it "skips resources with a local source" do
|
619
|
+
local_source = File.expand_path('/tmp/source')
|
620
|
+
|
621
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
622
|
+
file { '#{path}':
|
623
|
+
ensure => file,
|
624
|
+
source => '#{local_source}',
|
625
|
+
}
|
626
|
+
MANIFEST
|
627
|
+
|
628
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
629
|
+
expect(catalog.metadata).to be_empty
|
630
|
+
expect(catalog.recursive_metadata).to be_empty
|
631
|
+
end
|
632
|
+
|
633
|
+
it "skips resources with a http source" do
|
634
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
635
|
+
file { '#{path}':
|
636
|
+
ensure => file,
|
637
|
+
source => ['http://foo.source.io', 'https://foo.source.io']
|
638
|
+
}
|
639
|
+
MANIFEST
|
640
|
+
|
641
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
642
|
+
expect(catalog.metadata).to be_empty
|
643
|
+
expect(catalog.recursive_metadata).to be_empty
|
644
|
+
end
|
645
|
+
|
646
|
+
it "skips resources with a source outside the environment path" do
|
647
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
648
|
+
file { '#{path}':
|
649
|
+
ensure => file,
|
650
|
+
source => '#{source}'
|
651
|
+
}
|
652
|
+
MANIFEST
|
653
|
+
|
654
|
+
full_path = File.join(Puppet[:codedir], "modules/mymodule/files/config_file.txt")
|
655
|
+
metadata = stubs_file_metadata(checksum_type, checksum_value, 'modules/mymodule/files/config_file.txt', full_path)
|
656
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, anything).returns(metadata)
|
657
|
+
|
658
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
659
|
+
expect(catalog.metadata).to be_empty
|
660
|
+
expect(catalog.recursive_metadata).to be_empty
|
661
|
+
end
|
662
|
+
|
663
|
+
it "skips resources whose mount point is not 'modules'" do
|
664
|
+
source = 'puppet:///secure/data'
|
665
|
+
|
666
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
667
|
+
file { '#{path}':
|
668
|
+
ensure => file,
|
669
|
+
source => '#{source}',
|
670
|
+
}
|
671
|
+
MANIFEST
|
672
|
+
|
673
|
+
metadata = stubs_file_metadata(checksum_type, checksum_value, 'secure/files/data.txt')
|
674
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, anything).returns(metadata)
|
675
|
+
|
676
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
677
|
+
expect(catalog.metadata).to be_empty
|
678
|
+
expect(catalog.recursive_metadata).to be_empty
|
679
|
+
end
|
680
|
+
|
681
|
+
it "skips resources with 'modules' mount point resolving to a path not in 'modules/*/files'" do
|
682
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
683
|
+
file { '#{path}':
|
684
|
+
ensure => file,
|
685
|
+
source => '#{source}',
|
686
|
+
}
|
687
|
+
MANIFEST
|
688
|
+
|
689
|
+
metadata = stubs_file_metadata(checksum_type, checksum_value, 'modules/mymodule/not_in_files/config_file.txt')
|
690
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, anything).returns(metadata)
|
691
|
+
|
692
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
693
|
+
expect(catalog.metadata).to be_empty
|
694
|
+
expect(catalog.recursive_metadata).to be_empty
|
695
|
+
end
|
696
|
+
|
697
|
+
it "skips resources with 'modules' mount point resolving to a path with an empty module name" do
|
698
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
699
|
+
file { '#{path}':
|
700
|
+
ensure => file,
|
701
|
+
source => '#{source}',
|
702
|
+
}
|
703
|
+
MANIFEST
|
704
|
+
|
705
|
+
# note empty module name "modules//files"
|
706
|
+
metadata = stubs_file_metadata(checksum_type, checksum_value, 'modules//files/config_file.txt')
|
707
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, anything).returns(metadata)
|
708
|
+
|
709
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
710
|
+
expect(catalog.metadata).to be_empty
|
711
|
+
expect(catalog.recursive_metadata).to be_empty
|
712
|
+
end
|
713
|
+
|
714
|
+
it "inlines resources in 'modules' mount point resolving to a 'site' directory within the per-environment codedir" do
|
715
|
+
# example taken from https://github.com/puppetlabs/control-repo/blob/508b9cc/site/profile/manifests/puppetmaster.pp#L45-L49
|
716
|
+
source = 'puppet:///modules/profile/puppetmaster/update-classes.sh'
|
717
|
+
|
718
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
719
|
+
file { '#{path}':
|
720
|
+
ensure => file,
|
721
|
+
source => '#{source}'
|
722
|
+
}
|
723
|
+
MANIFEST
|
724
|
+
|
725
|
+
# See https://github.com/puppetlabs/control-repo/blob/508b9cc/site/profile/files/puppetmaster/update-classes.sh
|
726
|
+
metadata = stubs_file_metadata(checksum_type, checksum_value, 'site/profile/files/puppetmaster/update-classes.sh')
|
727
|
+
metadata.stubs(:source).returns(source)
|
728
|
+
|
729
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, anything).returns(metadata)
|
730
|
+
|
731
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
732
|
+
expect(catalog.metadata[path]).to eq(metadata)
|
733
|
+
expect(catalog.recursive_metadata).to be_empty
|
734
|
+
end
|
735
|
+
|
736
|
+
# It's bizarre to strip trailing slashes for a file, but it's how
|
737
|
+
# puppet currently behaves, so match that.
|
738
|
+
it "inlines resources with a trailing slash" do
|
739
|
+
source = 'puppet:///modules/mymodule/myfile'
|
740
|
+
|
741
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
742
|
+
file { '#{path}':
|
743
|
+
ensure => file,
|
744
|
+
source => '#{source}/'
|
745
|
+
}
|
746
|
+
MANIFEST
|
747
|
+
|
748
|
+
metadata = stubs_file_metadata(checksum_type, checksum_value, 'modules/mymodule/files/myfile')
|
749
|
+
metadata.stubs(:source).returns(source)
|
750
|
+
|
751
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, anything).returns(metadata)
|
752
|
+
|
753
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
754
|
+
expect(catalog.metadata[path]).to eq(metadata)
|
755
|
+
expect(catalog.recursive_metadata).to be_empty
|
756
|
+
end
|
757
|
+
|
758
|
+
describe "when inlining directories" do
|
759
|
+
let(:source_dir) { 'puppet:///modules/mymodule/directory' }
|
760
|
+
let(:metadata) { stubs_directory_metadata('modules/mymodule/files/directory') }
|
761
|
+
|
762
|
+
describe "when recurse is false" do
|
763
|
+
it "skips children" do
|
764
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
765
|
+
file { '#{path}':
|
766
|
+
ensure => directory,
|
767
|
+
source => '#{source_dir}'
|
768
|
+
}
|
769
|
+
MANIFEST
|
770
|
+
|
771
|
+
metadata.expects(:content_uri=).with('puppet:///modules/mymodule/files/directory')
|
772
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source_dir, anything).returns(metadata)
|
773
|
+
|
774
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
775
|
+
|
776
|
+
expect(catalog.metadata[path]).to eq(metadata)
|
777
|
+
expect(catalog.recursive_metadata).to be_empty
|
778
|
+
end
|
779
|
+
end
|
780
|
+
|
781
|
+
describe "when recurse is true" do
|
782
|
+
let(:child_metadata) { stubs_file_metadata(checksum_type, checksum_value, 'myfile.txt') }
|
783
|
+
|
784
|
+
it "inlines child metadata" do
|
785
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
786
|
+
file { '#{path}':
|
787
|
+
ensure => directory,
|
788
|
+
recurse => true,
|
789
|
+
source => '#{source_dir}'
|
790
|
+
}
|
791
|
+
MANIFEST
|
792
|
+
|
793
|
+
metadata.expects(:content_uri=).with('puppet:///modules/mymodule/files/directory')
|
794
|
+
child_metadata.expects(:content_uri=).with('puppet:///modules/mymodule/files/directory/myfile.txt')
|
795
|
+
|
796
|
+
options = {
|
797
|
+
:environment => catalog.environment_instance,
|
798
|
+
:links => :manage,
|
799
|
+
:checksum_type => checksum_type.to_sym,
|
800
|
+
:source_permissions => :ignore,
|
801
|
+
:recurse => true,
|
802
|
+
:recurselimit => nil,
|
803
|
+
:ignore => nil,
|
804
|
+
}
|
805
|
+
Puppet::FileServing::Metadata.indirection.expects(:search).with(source_dir, options).returns([metadata, child_metadata])
|
806
|
+
|
807
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
808
|
+
|
809
|
+
expect(catalog.metadata[path]).to be_nil
|
810
|
+
expect(catalog.recursive_metadata[path][source_dir]).to eq([metadata, child_metadata])
|
811
|
+
end
|
812
|
+
|
813
|
+
it "uses resource parameters when inlining metadata" do
|
814
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
815
|
+
file { '#{path}':
|
816
|
+
ensure => directory,
|
817
|
+
recurse => true,
|
818
|
+
source => '#{source_dir}',
|
819
|
+
checksum => sha256,
|
820
|
+
source_permissions => use_when_creating,
|
821
|
+
recurselimit => 2,
|
822
|
+
ignore => 'foo.+',
|
823
|
+
links => follow,
|
824
|
+
}
|
825
|
+
MANIFEST
|
826
|
+
|
827
|
+
options = {
|
828
|
+
:environment => catalog.environment_instance,
|
829
|
+
:links => :follow,
|
830
|
+
:checksum_type => :sha256,
|
831
|
+
:source_permissions => :use_when_creating,
|
832
|
+
:recurse => true,
|
833
|
+
:recurselimit => 2,
|
834
|
+
:ignore => 'foo.+',
|
835
|
+
}
|
836
|
+
Puppet::FileServing::Metadata.indirection.expects(:search).with(source_dir, options).returns([metadata, child_metadata])
|
837
|
+
|
838
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
839
|
+
|
840
|
+
expect(catalog.metadata[path]).to be_nil
|
841
|
+
expect(catalog.recursive_metadata[path][source_dir]).to eq([metadata, child_metadata])
|
842
|
+
end
|
843
|
+
|
844
|
+
it "inlines metadata for all sources if source_select is all" do
|
845
|
+
alt_source_dir = 'puppet:///modules/mymodule/other_directory'
|
846
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
847
|
+
file { '#{path}':
|
848
|
+
ensure => directory,
|
849
|
+
recurse => true,
|
850
|
+
source => ['#{source_dir}', '#{alt_source_dir}'],
|
851
|
+
sourceselect => all,
|
852
|
+
}
|
853
|
+
MANIFEST
|
854
|
+
|
855
|
+
Puppet::FileServing::Metadata.indirection.expects(:search).with(source_dir, anything).returns([metadata, child_metadata])
|
856
|
+
Puppet::FileServing::Metadata.indirection.expects(:search).with(alt_source_dir, anything).returns([metadata, child_metadata])
|
857
|
+
|
858
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
859
|
+
|
860
|
+
expect(catalog.metadata[path]).to be_nil
|
861
|
+
expect(catalog.recursive_metadata[path][source_dir]).to eq([metadata, child_metadata])
|
862
|
+
expect(catalog.recursive_metadata[path][alt_source_dir]).to eq([metadata, child_metadata])
|
863
|
+
end
|
864
|
+
|
865
|
+
it "inlines metadata for the first valid source if source_select is first" do
|
866
|
+
alt_source_dir = 'puppet:///modules/mymodule/other_directory'
|
867
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
868
|
+
file { '#{path}':
|
869
|
+
ensure => directory,
|
870
|
+
recurse => true,
|
871
|
+
source => ['#{source_dir}', '#{alt_source_dir}'],
|
872
|
+
}
|
873
|
+
MANIFEST
|
874
|
+
|
875
|
+
Puppet::FileServing::Metadata.indirection.expects(:search).with(source_dir, anything).returns(nil)
|
876
|
+
Puppet::FileServing::Metadata.indirection.expects(:search).with(alt_source_dir, anything).returns([metadata, child_metadata])
|
877
|
+
|
878
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
879
|
+
|
880
|
+
expect(catalog.metadata[path]).to be_nil
|
881
|
+
expect(catalog.recursive_metadata[path][source_dir]).to be_nil
|
882
|
+
expect(catalog.recursive_metadata[path][alt_source_dir]).to eq([metadata, child_metadata])
|
883
|
+
end
|
884
|
+
|
885
|
+
it "skips resources whose mount point is not 'modules'" do
|
886
|
+
source = 'puppet:///secure/data'
|
887
|
+
|
888
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
889
|
+
file { '#{path}':
|
890
|
+
ensure => directory,
|
891
|
+
recurse => true,
|
892
|
+
source => '#{source}',
|
893
|
+
}
|
894
|
+
MANIFEST
|
895
|
+
|
896
|
+
metadata = stubs_directory_metadata('secure/files/data')
|
897
|
+
metadata.stubs(:source).returns(source)
|
898
|
+
|
899
|
+
Puppet::FileServing::Metadata.indirection.expects(:search).with(source, anything).returns([metadata])
|
900
|
+
|
901
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
902
|
+
expect(catalog.metadata).to be_empty
|
903
|
+
expect(catalog.recursive_metadata).to be_empty
|
904
|
+
end
|
905
|
+
|
906
|
+
it "skips resources with 'modules' mount point resolving to a path not in 'modules/*/files'" do
|
907
|
+
source = 'puppet:///modules/mymodule/directory'
|
908
|
+
|
909
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
910
|
+
file { '#{path}':
|
911
|
+
ensure => directory,
|
912
|
+
recurse => true,
|
913
|
+
source => '#{source}',
|
914
|
+
}
|
915
|
+
MANIFEST
|
916
|
+
|
917
|
+
metadata = stubs_directory_metadata('modules/mymodule/not_in_files/directory')
|
918
|
+
Puppet::FileServing::Metadata.indirection.expects(:search).with(source, anything).returns([metadata])
|
919
|
+
|
920
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
921
|
+
expect(catalog.metadata).to be_empty
|
922
|
+
expect(catalog.recursive_metadata).to be_empty
|
923
|
+
end
|
924
|
+
|
925
|
+
it "inlines resources in 'modules' mount point resolving to a 'site' directory within the per-environment codedir" do
|
926
|
+
# example adopted from https://github.com/puppetlabs/control-repo/blob/508b9cc/site/profile/manifests/puppetmaster.pp#L45-L49
|
927
|
+
source = 'puppet:///modules/profile/puppetmaster'
|
928
|
+
|
929
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
930
|
+
file { '#{path}':
|
931
|
+
ensure => file,
|
932
|
+
recurse => true,
|
933
|
+
source => '#{source}'
|
934
|
+
}
|
935
|
+
MANIFEST
|
936
|
+
|
937
|
+
# See https://github.com/puppetlabs/control-repo/blob/508b9cc/site/profile/files/puppetmaster/update-classes.sh
|
938
|
+
dir_metadata = stubs_directory_metadata('site/profile/files/puppetmaster')
|
939
|
+
dir_metadata.stubs(:source).returns(source)
|
940
|
+
|
941
|
+
child_metadata = stubs_file_metadata(checksum_type, checksum_value, './update-classes.sh')
|
942
|
+
child_metadata.stubs(:source).returns("#{source}/update-classes.sh")
|
943
|
+
|
944
|
+
Puppet::FileServing::Metadata.indirection.expects(:search).with(source, anything).returns([dir_metadata, child_metadata])
|
945
|
+
|
946
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
947
|
+
expect(catalog.metadata).to be_empty
|
948
|
+
expect(catalog.recursive_metadata[path][source]).to eq([dir_metadata, child_metadata])
|
949
|
+
end
|
950
|
+
|
951
|
+
it "inlines resources with a trailing slash" do
|
952
|
+
source = 'puppet:///modules/mymodule/directory'
|
953
|
+
|
954
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
955
|
+
file { '#{path}':
|
956
|
+
ensure => directory,
|
957
|
+
recurse => true,
|
958
|
+
source => '#{source}/'
|
959
|
+
}
|
960
|
+
MANIFEST
|
961
|
+
|
962
|
+
dir_metadata = stubs_directory_metadata('modules/mymodule/files/directory')
|
963
|
+
dir_metadata.stubs(:source).returns(source)
|
964
|
+
|
965
|
+
child_metadata = stubs_file_metadata(checksum_type, checksum_value, './file')
|
966
|
+
child_metadata.stubs(:source).returns("#{source}/file")
|
967
|
+
|
968
|
+
Puppet::FileServing::Metadata.indirection.expects(:search).with(source, anything).returns([dir_metadata, child_metadata])
|
969
|
+
|
970
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
971
|
+
|
972
|
+
expect(catalog.metadata).to be_empty
|
973
|
+
expect(catalog.recursive_metadata[path][source]).to eq([dir_metadata, child_metadata])
|
974
|
+
end
|
975
|
+
end
|
976
|
+
end
|
977
|
+
|
978
|
+
it "skips non-file resources" do
|
979
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
980
|
+
notify { 'hi': }
|
981
|
+
MANIFEST
|
982
|
+
|
983
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
984
|
+
expect(catalog.metadata).to be_empty
|
985
|
+
expect(catalog.recursive_metadata).to be_empty
|
986
|
+
end
|
987
|
+
|
988
|
+
it "inlines windows file paths", :if => Puppet.features.posix? do
|
989
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
990
|
+
file { 'c:/foo':
|
991
|
+
ensure => file,
|
992
|
+
source => '#{source}'
|
993
|
+
}
|
994
|
+
MANIFEST
|
995
|
+
|
996
|
+
metadata = stubs_file_metadata(checksum_type, checksum_value, 'modules/mymodule/files/config_file.txt')
|
997
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(source, anything).returns(metadata)
|
998
|
+
|
999
|
+
@compiler.send(:inline_metadata, catalog, checksum_type)
|
1000
|
+
expect(catalog.metadata['c:/foo']).to eq(metadata)
|
1001
|
+
expect(catalog.recursive_metadata).to be_empty
|
1002
|
+
end
|
1003
|
+
end
|
303
1004
|
end
|