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
@@ -84,4 +84,12 @@ describe "Parameter passing" do
|
|
84
84
|
MANIFEST
|
85
85
|
end
|
86
86
|
end
|
87
|
+
|
88
|
+
it "uses a given undef and do not require a default expression" do
|
89
|
+
expect_the_message_to_be(true) do <<-MANIFEST
|
90
|
+
define a(Optional[Integer] $x) { notify { 'something': message => $x == undef}}
|
91
|
+
a {'a': x => undef }
|
92
|
+
MANIFEST
|
93
|
+
end
|
94
|
+
end
|
87
95
|
end
|
@@ -87,7 +87,7 @@ describe Puppet::Type.type(:yumrepo).provider(:inifile), '(integration)',
|
|
87
87
|
properties = {"bandwidth" => "42M",
|
88
88
|
"baseurl" => "http://er0ck",
|
89
89
|
"cost" => "42",
|
90
|
-
"enabled" => "
|
90
|
+
"enabled" => "Yes",
|
91
91
|
"exclude" => "er0ckSet2.0",
|
92
92
|
"failovermethod" => "roundrobin",
|
93
93
|
"include" => "https://er0ck",
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe "Windows UTF8 environment variables", :if => Puppet.features.microsoft_windows? do
|
5
|
+
# The Puppet::Util::Windows::Process class is used to manipulate environment variables as it is known to handle UTF8 characters. Where as the implementation of ENV in ruby does not.
|
6
|
+
# before and end all are used to inject environment variables before the test helper 'before_each_test' function is called
|
7
|
+
# Do not use before and after hooks in these tests as it may have unintended consequences
|
8
|
+
|
9
|
+
before(:all) {
|
10
|
+
@varname = 'test-helper-foo'
|
11
|
+
@rune_utf8 = "\u16A0\u16C7\u16BB\u16EB\u16D2\u16E6\u16A6\u16EB\u16A0\u16B1\u16A9\u16A0\u16A2\u16B1\u16EB\u16A0\u16C1\u16B1\u16AA\u16EB\u16B7\u16D6\u16BB\u16B9\u16E6\u16DA\u16B3\u16A2\u16D7"
|
12
|
+
|
13
|
+
Puppet::Util::Windows::Process.set_environment_variable(@varname, @rune_utf8)
|
14
|
+
}
|
15
|
+
|
16
|
+
it "#after_each_test should preserve UTF8 environment variables" do
|
17
|
+
envhash = Puppet::Util::Windows::Process.get_environment_strings
|
18
|
+
expect(envhash[@varname]).to eq(@rune_utf8)
|
19
|
+
# Change the value in the test to force test_helper to restore the environment
|
20
|
+
ENV[@varname] = 'bad foo'
|
21
|
+
|
22
|
+
# Prematurely trigger the after_each_test method
|
23
|
+
Puppet::Test::TestHelper.after_each_test
|
24
|
+
|
25
|
+
envhash = Puppet::Util::Windows::Process.get_environment_strings
|
26
|
+
expect(envhash[@varname]).to eq(@rune_utf8)
|
27
|
+
end
|
28
|
+
end
|
@@ -21,4 +21,20 @@ describe Puppet::Transaction::Report do
|
|
21
21
|
Puppet::Transaction::Report.indirection.save(report)
|
22
22
|
end
|
23
23
|
end
|
24
|
+
|
25
|
+
describe "when dumping to YAML" do
|
26
|
+
it "should not contain TagSet objects" do
|
27
|
+
resource = Puppet::Resource.new(:notify, "Hello")
|
28
|
+
ral_resource = resource.to_ral
|
29
|
+
status = Puppet::Resource::Status.new(ral_resource)
|
30
|
+
|
31
|
+
log = Puppet::Util::Log.new(:level => :info, :message => "foo")
|
32
|
+
|
33
|
+
report = Puppet::Transaction::Report.new("apply")
|
34
|
+
report.add_resource_status(status)
|
35
|
+
report << log
|
36
|
+
|
37
|
+
expect(YAML.dump(report)).to_not match('Puppet::Util::TagSet')
|
38
|
+
end
|
39
|
+
end
|
24
40
|
end
|
@@ -319,6 +319,17 @@ describe Puppet::Transaction do
|
|
319
319
|
expect(Puppet::FileSystem.exist?(fname)).to be_falsey
|
320
320
|
end
|
321
321
|
|
322
|
+
it "does not trigger skip-tagged resources" do
|
323
|
+
catalog = mk_catalog
|
324
|
+
|
325
|
+
Puppet[:skip_tags] = "skipme"
|
326
|
+
exec.tag("skipme")
|
327
|
+
|
328
|
+
catalog.add_resource(file, exec)
|
329
|
+
catalog.apply
|
330
|
+
expect(Puppet::FileSystem.exist?(fname)).to be_falsey
|
331
|
+
end
|
332
|
+
|
322
333
|
it "does not trigger resources with failed dependencies" do
|
323
334
|
catalog = mk_catalog
|
324
335
|
file[:path] = make_absolute("/foo/bar/baz")
|
@@ -1226,6 +1226,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1226
1226
|
:backup => false
|
1227
1227
|
}
|
1228
1228
|
end
|
1229
|
+
|
1229
1230
|
describe "on POSIX systems", :if => Puppet.features.posix? do
|
1230
1231
|
it "should apply the source metadata values" do
|
1231
1232
|
@options[:source_permissions] = :use
|
@@ -1260,6 +1261,102 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1260
1261
|
end
|
1261
1262
|
|
1262
1263
|
let(:source) { tmpfile_with_contents("source_default_values", "yay") }
|
1264
|
+
|
1265
|
+
describe "from http" do
|
1266
|
+
let(:http_source) { "http://my-server/file" }
|
1267
|
+
let(:httppath) { "#{path}http" }
|
1268
|
+
|
1269
|
+
context "using mtime", :vcr => true do
|
1270
|
+
let(:resource) do
|
1271
|
+
described_class.new(
|
1272
|
+
:path => httppath,
|
1273
|
+
:ensure => :file,
|
1274
|
+
:source => http_source,
|
1275
|
+
:backup => false,
|
1276
|
+
:checksum => :mtime
|
1277
|
+
)
|
1278
|
+
end
|
1279
|
+
|
1280
|
+
it "should fetch if not on the local disk" do
|
1281
|
+
catalog.add_resource resource
|
1282
|
+
catalog.apply
|
1283
|
+
expect(Puppet::FileSystem.exist?(httppath)).to be_truthy
|
1284
|
+
expect(File.read(httppath)).to eq "Content via HTTP\n"
|
1285
|
+
end
|
1286
|
+
|
1287
|
+
# The fixture has neither last-modified nor content-checksum headers.
|
1288
|
+
# Such upstream ressources are treated as "really fresh" and get
|
1289
|
+
# downloaded during every run.
|
1290
|
+
it "should fetch if no header specified" do
|
1291
|
+
File.open(httppath, "wb") { |f| f.puts "Content originally on disk\n" }
|
1292
|
+
# make sure the mtime is not "right now", lest we get a race
|
1293
|
+
FileUtils.touch httppath, :mtime => Time.parse("Sun, 22 Mar 2015 22:57:43 GMT")
|
1294
|
+
catalog.add_resource resource
|
1295
|
+
catalog.apply
|
1296
|
+
expect(Puppet::FileSystem.exist?(httppath)).to be_truthy
|
1297
|
+
expect(File.read(httppath)).to eq "Content via HTTP\n"
|
1298
|
+
end
|
1299
|
+
|
1300
|
+
it "should fetch if mtime is older on disk" do
|
1301
|
+
File.open(httppath, "wb") { |f| f.puts "Content originally on disk\n" }
|
1302
|
+
# fixture has Last-Modified: Sun, 22 Mar 2015 22:25:34 GMT
|
1303
|
+
FileUtils.touch httppath, :mtime => Time.parse("Sun, 22 Mar 2015 22:22:34 GMT")
|
1304
|
+
catalog.add_resource resource
|
1305
|
+
catalog.apply
|
1306
|
+
expect(Puppet::FileSystem.exist?(httppath)).to be_truthy
|
1307
|
+
expect(File.read(httppath)).to eq "Content via HTTP\n"
|
1308
|
+
end
|
1309
|
+
|
1310
|
+
it "should not update if mtime is newer on disk" do
|
1311
|
+
File.open(httppath, "wb") { |f| f.puts "Content via HTTP\n" }
|
1312
|
+
mtime = File.stat(httppath).mtime
|
1313
|
+
catalog.add_resource resource
|
1314
|
+
catalog.apply
|
1315
|
+
expect(Puppet::FileSystem.exist?(httppath)).to be_truthy
|
1316
|
+
expect(File.read(httppath)).to eq "Content via HTTP\n"
|
1317
|
+
expect(File.stat(httppath).mtime).to eq mtime
|
1318
|
+
end
|
1319
|
+
end
|
1320
|
+
|
1321
|
+
context "using md5", :vcr => true do
|
1322
|
+
let(:resource) do
|
1323
|
+
described_class.new(
|
1324
|
+
:path => httppath,
|
1325
|
+
:ensure => :file,
|
1326
|
+
:source => http_source,
|
1327
|
+
:backup => false,
|
1328
|
+
)
|
1329
|
+
end
|
1330
|
+
|
1331
|
+
it "should fetch if not on the local disk" do
|
1332
|
+
catalog.add_resource resource
|
1333
|
+
catalog.apply
|
1334
|
+
expect(Puppet::FileSystem.exist?(httppath)).to be_truthy
|
1335
|
+
expect(File.read(httppath)).to eq "Content via HTTP\n"
|
1336
|
+
end
|
1337
|
+
|
1338
|
+
it "should update if content differs on disk" do
|
1339
|
+
File.open(httppath, "wb") { |f| f.puts "Content originally on disk\n" }
|
1340
|
+
catalog.add_resource resource
|
1341
|
+
catalog.apply
|
1342
|
+
expect(Puppet::FileSystem.exist?(httppath)).to be_truthy
|
1343
|
+
expect(File.read(httppath)).to eq "Content via HTTP\n"
|
1344
|
+
end
|
1345
|
+
|
1346
|
+
it "should not update if content on disk is up-to-date" do
|
1347
|
+
File.open(httppath, "wb") { |f| f.puts "Content via HTTP\n" }
|
1348
|
+
disk_mtime = Time.parse("Sun, 22 Mar 2015 22:22:34 GMT")
|
1349
|
+
FileUtils.touch httppath, :mtime => disk_mtime
|
1350
|
+
catalog.add_resource resource
|
1351
|
+
catalog.apply
|
1352
|
+
expect(Puppet::FileSystem.exist?(httppath)).to be_truthy
|
1353
|
+
expect(File.read(httppath)).to eq "Content via HTTP\n"
|
1354
|
+
expect(File.stat(httppath).mtime).to eq disk_mtime
|
1355
|
+
end
|
1356
|
+
|
1357
|
+
end
|
1358
|
+
end
|
1359
|
+
|
1263
1360
|
describe "on Windows systems", :if => Puppet.features.microsoft_windows? do
|
1264
1361
|
def expects_sid_granted_full_access_explicitly(path, sid)
|
1265
1362
|
inherited_ace = Puppet::Util::Windows::AccessControlEntry::INHERITED_ACE
|
@@ -1297,11 +1394,11 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1297
1394
|
before do
|
1298
1395
|
@sids = {
|
1299
1396
|
:current_user => Puppet::Util::Windows::SID.name_to_sid(Puppet::Util::Windows::ADSI::User.current_user_name),
|
1300
|
-
:system =>
|
1397
|
+
:system => Puppet::Util::Windows::SID::LocalSystem,
|
1301
1398
|
:guest => Puppet::Util::Windows::SID.name_to_sid("Guest"),
|
1302
|
-
:users =>
|
1303
|
-
:power_users =>
|
1304
|
-
:none =>
|
1399
|
+
:users => Puppet::Util::Windows::SID::BuiltinUsers,
|
1400
|
+
:power_users => Puppet::Util::Windows::SID::PowerUsers,
|
1401
|
+
:none => Puppet::Util::Windows::SID::Nobody
|
1305
1402
|
}
|
1306
1403
|
end
|
1307
1404
|
|
@@ -1690,4 +1787,97 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1690
1787
|
end
|
1691
1788
|
end
|
1692
1789
|
end
|
1790
|
+
|
1791
|
+
[:md5, :sha256, :md5lite, :sha256lite].each do |checksum|
|
1792
|
+
describe "setting checksum_value explicitly with checksum #{checksum}" do
|
1793
|
+
let(:path) { tmpfile('target') }
|
1794
|
+
let(:contents) { 'yay' }
|
1795
|
+
|
1796
|
+
before :each do
|
1797
|
+
@options = {
|
1798
|
+
:path => path,
|
1799
|
+
:ensure => :file,
|
1800
|
+
:checksum => checksum,
|
1801
|
+
:checksum_value => Puppet::Util::Checksums.send(checksum, contents)
|
1802
|
+
}
|
1803
|
+
end
|
1804
|
+
|
1805
|
+
def verify_file(transaction)
|
1806
|
+
status = transaction.report.resource_statuses["File[#{path}]"]
|
1807
|
+
expect(status).not_to be_failed
|
1808
|
+
expect(Puppet::FileSystem).to be_file(path)
|
1809
|
+
expect(File.read(path)).to eq(contents)
|
1810
|
+
status
|
1811
|
+
end
|
1812
|
+
|
1813
|
+
[:source, :content].each do |prop|
|
1814
|
+
context "from #{prop}" do
|
1815
|
+
let(:source) { tmpfile_with_contents("source_default_values", contents) }
|
1816
|
+
|
1817
|
+
before :each do
|
1818
|
+
@options[prop] = {:source => source, :content => contents}[prop]
|
1819
|
+
end
|
1820
|
+
|
1821
|
+
it "should create a new file" do
|
1822
|
+
catalog.add_resource described_class.new(@options)
|
1823
|
+
status = verify_file catalog.apply
|
1824
|
+
expect(status).to be_changed
|
1825
|
+
end
|
1826
|
+
|
1827
|
+
it "should overwrite an existing file" do
|
1828
|
+
File.open(path, "w") { |f| f.write('bar') }
|
1829
|
+
catalog.add_resource described_class.new(@options)
|
1830
|
+
status = verify_file catalog.apply
|
1831
|
+
expect(status).to be_changed
|
1832
|
+
end
|
1833
|
+
|
1834
|
+
it "should not overwrite the same file" do
|
1835
|
+
File.open(path, "w") { |f| f.write(contents) }
|
1836
|
+
catalog.add_resource described_class.new(@options)
|
1837
|
+
status = verify_file catalog.apply
|
1838
|
+
expect(status).to_not be_changed
|
1839
|
+
end
|
1840
|
+
|
1841
|
+
it "should not create a file when ensuring absent" do
|
1842
|
+
@options[:ensure] = :absent
|
1843
|
+
catalog.add_resource described_class.new(@options)
|
1844
|
+
catalog.apply
|
1845
|
+
expect(Puppet::FileSystem).to_not be_file(path)
|
1846
|
+
end
|
1847
|
+
end
|
1848
|
+
end
|
1849
|
+
end
|
1850
|
+
end
|
1851
|
+
|
1852
|
+
describe "setting checksum_value explicitly with checksum mtime" do
|
1853
|
+
let(:path) { tmpfile('target_dir') }
|
1854
|
+
let(:time) { Time.now }
|
1855
|
+
|
1856
|
+
before :each do
|
1857
|
+
@options = {
|
1858
|
+
:path => path,
|
1859
|
+
:ensure => :directory,
|
1860
|
+
:checksum => :mtime,
|
1861
|
+
:checksum_value => time
|
1862
|
+
}
|
1863
|
+
end
|
1864
|
+
|
1865
|
+
it "should create a new directory" do
|
1866
|
+
catalog.add_resource described_class.new(@options)
|
1867
|
+
status = catalog.apply.report.resource_statuses["File[#{path}]"]
|
1868
|
+
expect(status).not_to be_failed
|
1869
|
+
expect(status).to be_changed
|
1870
|
+
expect(Puppet::FileSystem).to be_directory(path)
|
1871
|
+
end
|
1872
|
+
|
1873
|
+
it "should not update mtime on an old directory" do
|
1874
|
+
disk_mtime = Time.parse("Sun, 22 Mar 2015 22:22:34 GMT")
|
1875
|
+
FileUtils.mkdir_p path
|
1876
|
+
FileUtils.touch path, :mtime => disk_mtime
|
1877
|
+
status = catalog.apply.report.resource_statuses["File[#{path}]"]
|
1878
|
+
expect(status).to be_nil
|
1879
|
+
expect(Puppet::FileSystem).to be_directory(path)
|
1880
|
+
expect(File.stat(path).mtime).to eq(disk_mtime)
|
1881
|
+
end
|
1882
|
+
end
|
1693
1883
|
end
|
@@ -28,7 +28,11 @@ describe Puppet::Type.type(:package), "when choosing a default package provider"
|
|
28
28
|
:yum
|
29
29
|
end
|
30
30
|
when 'Fedora'
|
31
|
-
:
|
31
|
+
if Puppet::Util::Package.versioncmp(Facter.value(:operatingsystemmajrelease), '22') >= 0
|
32
|
+
:dnf
|
33
|
+
else
|
34
|
+
:yum
|
35
|
+
end
|
32
36
|
when 'FreeBSD'
|
33
37
|
:ports
|
34
38
|
when 'OpenBSD'
|
@@ -1,16 +1,32 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
|
+
require 'puppet_spec/compiler'
|
4
5
|
require 'puppet_spec/files'
|
5
6
|
require 'puppet/file_bucket/dipper'
|
6
7
|
|
7
8
|
describe Puppet::Type.type(:tidy) do
|
8
9
|
include PuppetSpec::Files
|
10
|
+
include PuppetSpec::Compiler
|
9
11
|
|
10
12
|
before do
|
11
13
|
Puppet::Util::Storage.stubs(:store)
|
12
14
|
end
|
13
15
|
|
16
|
+
it "should be able to recursively remove directories" do
|
17
|
+
dir = tmpfile("tidy_testing")
|
18
|
+
FileUtils.mkdir_p(File.join(dir, "foo", "bar"))
|
19
|
+
|
20
|
+
apply_compiled_manifest(<<-MANIFEST)
|
21
|
+
tidy { '#{dir}':
|
22
|
+
recurse => true,
|
23
|
+
rmdirs => true,
|
24
|
+
}
|
25
|
+
MANIFEST
|
26
|
+
|
27
|
+
expect(Puppet::FileSystem.directory?(dir)).to be_falsey
|
28
|
+
end
|
29
|
+
|
14
30
|
# Testing #355.
|
15
31
|
it "should be able to remove dead links", :if => Puppet.features.manages_symlinks? do
|
16
32
|
dir = tmpfile("tidy_link_testing")
|
@@ -19,15 +35,11 @@ describe Puppet::Type.type(:tidy) do
|
|
19
35
|
Dir.mkdir(dir)
|
20
36
|
Puppet::FileSystem.symlink(target, link)
|
21
37
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
# from implicit containment and lacking containers
|
28
|
-
catalog.stubs(:container_of).returns tidy
|
29
|
-
|
30
|
-
catalog.apply
|
38
|
+
apply_compiled_manifest(<<-MANIFEST)
|
39
|
+
tidy { '#{dir}':
|
40
|
+
recurse => true,
|
41
|
+
}
|
42
|
+
MANIFEST
|
31
43
|
|
32
44
|
expect(Puppet::FileSystem.symlink?(link)).to be_falsey
|
33
45
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Puppet::Util::Execution do
|
4
|
+
include PuppetSpec::Files
|
5
|
+
|
4
6
|
describe "#execpipe" do
|
5
7
|
it "should set LANG to C avoid localized output", :if => !Puppet.features.microsoft_windows? do
|
6
8
|
out = ""
|
@@ -14,4 +16,24 @@ describe Puppet::Util::Execution do
|
|
14
16
|
expect(out).to eq("C")
|
15
17
|
end
|
16
18
|
end
|
19
|
+
|
20
|
+
describe "#execute (Windows)", :if => Puppet.features.microsoft_windows? do
|
21
|
+
let(:utf8text) do
|
22
|
+
# Japanese Lorem Ipsum snippet
|
23
|
+
"utf8testfile" + [227, 131, 171, 227, 131, 147, 227, 131, 179, 227, 131, 132, 227,
|
24
|
+
130, 162, 227, 130, 166, 227, 130, 167, 227, 131, 150, 227, 130,
|
25
|
+
162, 227, 129, 181, 227, 129, 185, 227, 129, 139, 227, 130, 137,
|
26
|
+
227, 129, 154, 227, 130, 187, 227, 130, 183, 227, 131, 147, 227,
|
27
|
+
131, 170, 227, 131, 134].pack('c*').force_encoding(Encoding::UTF_8)
|
28
|
+
end
|
29
|
+
let(:temputf8filename) do
|
30
|
+
script_containing(utf8text, :windows => "@ECHO OFF\nECHO #{utf8text}\nEXIT 100")
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should execute with non-english characters in command line" do
|
34
|
+
result = Puppet::Util::Execution.execute("cmd /c \"#{temputf8filename}\"", :failonfail => false)
|
35
|
+
expect(temputf8filename.encoding.name).to eq('UTF-8')
|
36
|
+
expect(result.exitstatus).to eq(100)
|
37
|
+
end
|
38
|
+
end
|
17
39
|
end
|
@@ -15,7 +15,15 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
15
15
|
expect(principal.sid).to eq('S-1-5-18')
|
16
16
|
expect(principal.domain).to eq('NT AUTHORITY')
|
17
17
|
expect(principal.domain_account).to eq('NT AUTHORITY\\SYSTEM')
|
18
|
-
|
18
|
+
|
19
|
+
# Windows API LookupAccountSid behaves differently if current user is SYSTEM
|
20
|
+
if Puppet::Util::Windows::ADSI::User.current_user_name != 'SYSTEM'
|
21
|
+
account_type = :SidTypeWellKnownGroup
|
22
|
+
else
|
23
|
+
account_type = :SidTypeUser
|
24
|
+
end
|
25
|
+
|
26
|
+
expect(principal.account_type).to eq(account_type)
|
19
27
|
end
|
20
28
|
|
21
29
|
it "should create an instance from a well-known account prefixed with NT AUTHORITY" do
|
@@ -25,7 +33,15 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
25
33
|
expect(principal.sid).to eq('S-1-5-18')
|
26
34
|
expect(principal.domain).to eq('NT AUTHORITY')
|
27
35
|
expect(principal.domain_account).to eq('NT AUTHORITY\\SYSTEM')
|
28
|
-
|
36
|
+
|
37
|
+
# Windows API LookupAccountSid behaves differently if current user is SYSTEM
|
38
|
+
if Puppet::Util::Windows::ADSI::User.current_user_name != 'SYSTEM'
|
39
|
+
account_type = :SidTypeWellKnownGroup
|
40
|
+
else
|
41
|
+
account_type = :SidTypeUser
|
42
|
+
end
|
43
|
+
|
44
|
+
expect(principal.account_type).to eq(account_type)
|
29
45
|
end
|
30
46
|
|
31
47
|
it "should create an instance from a local account prefixed with hostname" do
|
@@ -65,6 +81,25 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
65
81
|
principal.lookup_account_name('ConanTheBarbarian')
|
66
82
|
}.to raise_error(Puppet::Util::Windows::Error, /Failed to call LookupAccountNameW/)
|
67
83
|
end
|
84
|
+
|
85
|
+
it "should return a BUILTIN domain principal for empty account names" do
|
86
|
+
principal = Puppet::Util::Windows::SID::Principal.lookup_account_name('')
|
87
|
+
expect(principal.account_type).to eq(:SidTypeDomain)
|
88
|
+
expect(principal.sid).to eq('S-1-5-32')
|
89
|
+
expect(principal.account).to eq('BUILTIN')
|
90
|
+
expect(principal.domain).to eq('BUILTIN')
|
91
|
+
expect(principal.domain_account).to eq('BUILTIN')
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should return a BUILTIN domain principal for BUILTIN account names" do
|
95
|
+
principal = Puppet::Util::Windows::SID::Principal.lookup_account_name('BUILTIN')
|
96
|
+
expect(principal.account_type).to eq(:SidTypeDomain)
|
97
|
+
expect(principal.sid).to eq('S-1-5-32')
|
98
|
+
expect(principal.account).to eq('BUILTIN')
|
99
|
+
expect(principal.domain).to eq('BUILTIN')
|
100
|
+
expect(principal.domain_account).to eq('BUILTIN')
|
101
|
+
end
|
102
|
+
|
68
103
|
end
|
69
104
|
|
70
105
|
describe ".lookup_account_sid" do
|
@@ -77,7 +112,6 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
77
112
|
expect(principal.domain_account).to eq('NT AUTHORITY\\SYSTEM')
|
78
113
|
|
79
114
|
# Windows API LookupAccountSid behaves differently if current user is SYSTEM
|
80
|
-
# even though LookupAccountName does not demonstrate same behavior
|
81
115
|
if Puppet::Util::Windows::ADSI::User.current_user_name != 'SYSTEM'
|
82
116
|
account_type = :SidTypeWellKnownGroup
|
83
117
|
else
|
@@ -97,10 +131,34 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
97
131
|
expect(principal.account_type).to eq(:SidTypeAlias)
|
98
132
|
end
|
99
133
|
|
100
|
-
it "should raise an error when trying to lookup
|
134
|
+
it "should raise an error when trying to lookup nil" do
|
135
|
+
principal = Puppet::Util::Windows::SID::Principal
|
136
|
+
expect {
|
137
|
+
principal.lookup_account_sid(nil)
|
138
|
+
}.to raise_error(Puppet::Util::Windows::Error, /must not be nil/)
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should raise an error when trying to lookup non-byte array" do
|
142
|
+
principal = Puppet::Util::Windows::SID::Principal
|
143
|
+
expect {
|
144
|
+
principal.lookup_account_sid('ConanTheBarbarian')
|
145
|
+
}.to raise_error(Puppet::Util::Windows::Error, /array/)
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should raise an error when trying to lookup an empty array" do
|
101
149
|
principal = Puppet::Util::Windows::SID::Principal
|
102
150
|
expect {
|
103
151
|
principal.lookup_account_sid([])
|
152
|
+
}.to raise_error(Puppet::Util::Windows::Error, /at least 1 byte long/)
|
153
|
+
end
|
154
|
+
|
155
|
+
# https://technet.microsoft.com/en-us/library/cc962011.aspx
|
156
|
+
# "... The structure used in all SIDs created by Windows NT and Windows 2000 is revision level 1. ..."
|
157
|
+
# Therefore a value of zero for the revision, is not a valid SID
|
158
|
+
it "should raise an error when trying to lookup completely invalid SID bytes" do
|
159
|
+
principal = Puppet::Util::Windows::SID::Principal
|
160
|
+
expect {
|
161
|
+
principal.lookup_account_sid([0])
|
104
162
|
}.to raise_error(Puppet::Util::Windows::Error, /Failed to call LookupAccountSidW: The parameter is incorrect/)
|
105
163
|
end
|
106
164
|
|
@@ -111,5 +169,33 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
111
169
|
principal.lookup_account_sid([1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0])
|
112
170
|
}.to raise_error(Puppet::Util::Windows::Error, /Failed to call LookupAccountSidW: No mapping between account names and security IDs was done/)
|
113
171
|
end
|
172
|
+
|
173
|
+
it "should return a domain principal for BUILTIN SID S-1-5-32" do
|
174
|
+
principal = Puppet::Util::Windows::SID::Principal.lookup_account_sid([1, 1, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0])
|
175
|
+
expect(principal.account_type).to eq(:SidTypeDomain)
|
176
|
+
expect(principal.sid).to eq('S-1-5-32')
|
177
|
+
expect(principal.account).to eq('BUILTIN')
|
178
|
+
expect(principal.domain).to eq('BUILTIN')
|
179
|
+
expect(principal.domain_account).to eq('BUILTIN')
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
describe "it should create matching Principal objects" do
|
184
|
+
let(:builtin_sid) { [1, 1, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0] }
|
185
|
+
let(:sid_principal) { Puppet::Util::Windows::SID::Principal.lookup_account_sid(builtin_sid) }
|
186
|
+
|
187
|
+
['.', 'builtin', ''].each do |name|
|
188
|
+
it "when comparing the one looked up via SID S-1-5-32 to one looked up via non-canonical name #{name} for the BUILTIN domain" do
|
189
|
+
name_principal = Puppet::Util::Windows::SID::Principal.lookup_account_name(name)
|
190
|
+
|
191
|
+
# compares canonical sid
|
192
|
+
expect(sid_principal).to eq(name_principal)
|
193
|
+
|
194
|
+
# compare all properties that have public accessors
|
195
|
+
sid_principal.public_methods(false).reject { |m| m == :== }.each do |method|
|
196
|
+
expect(sid_principal.send(method)).to eq(name_principal.send(method))
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
114
200
|
end
|
115
201
|
end
|