puppet 6.15.0-x64-mingw32 → 6.19.1-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/CODEOWNERS +2 -7
- data/Gemfile +4 -2
- data/Gemfile.lock +29 -27
- data/README.md +3 -4
- data/Rakefile +4 -12
- data/lib/puppet.rb +32 -8
- data/lib/puppet/agent.rb +18 -4
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application/agent.rb +23 -8
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/configurer.rb +61 -21
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +119 -39
- data/lib/puppet/environments.rb +51 -10
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +46 -16
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help.rb +29 -3
- data/lib/puppet/face/module/search.rb +5 -0
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/plugin.rb +1 -1
- data/lib/puppet/face/status.rb +1 -1
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +14 -2
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +4 -4
- data/lib/puppet/file_system/uniquefile.rb +12 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +4 -7
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +1 -0
- data/lib/puppet/http/client.rb +28 -12
- data/lib/puppet/http/external_client.rb +0 -6
- data/lib/puppet/http/redirector.rb +9 -7
- data/lib/puppet/http/resolver.rb +5 -8
- data/lib/puppet/http/resolver/server_list.rb +18 -36
- data/lib/puppet/http/resolver/settings.rb +4 -4
- data/lib/puppet/http/resolver/srv.rb +5 -5
- data/lib/puppet/http/response.rb +19 -0
- data/lib/puppet/http/service.rb +3 -1
- data/lib/puppet/http/service/compiler.rb +1 -1
- data/lib/puppet/http/service/file_server.rb +1 -1
- data/lib/puppet/http/service/puppetserver.rb +39 -0
- data/lib/puppet/http/session.rb +5 -4
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/yaml.rb +1 -1
- data/lib/puppet/indirector/file_content/http.rb +5 -0
- data/lib/puppet/indirector/file_content/rest.rb +1 -1
- data/lib/puppet/indirector/file_metadata/http.rb +28 -8
- data/lib/puppet/indirector/file_metadata/rest.rb +2 -2
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/request.rb +5 -5
- data/lib/puppet/indirector/rest.rb +7 -1
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/compression.rb +7 -0
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/connection_adapter.rb +184 -0
- data/lib/puppet/network/http/nocache_pool.rb +1 -0
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +2 -2
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +31 -4
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
- data/lib/puppet/parser/compiler.rb +29 -26
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +4 -1
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/functions/filter.rb +1 -0
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +18 -11
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/validation/checker4_0.rb +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +38 -1
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +24 -4
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/pip.rb +60 -37
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/portage.rb +2 -2
- data/lib/puppet/provider/package/puppet_gem.rb +5 -0
- data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/yum.rb +9 -1
- data/lib/puppet/provider/package/zypper.rb +62 -1
- data/lib/puppet/provider/service/systemd.rb +21 -4
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +16 -5
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reports/http.rb +7 -3
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +10 -1
- data/lib/puppet/rest/route.rb +2 -2
- data/lib/puppet/runtime.rb +25 -2
- data/lib/puppet/settings.rb +43 -6
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/ssl/state_machine.rb +33 -8
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/ssl/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +19 -14
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +12 -8
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +15 -7
- data/lib/puppet/type/file.rb +40 -15
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +33 -13
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +16 -1
- data/lib/puppet/type/service.rb +59 -8
- data/lib/puppet/type/user.rb +19 -10
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/autoload.rb +10 -25
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/connection.rb +8 -8
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/log/destinations.rb +1 -10
- data/lib/puppet/util/package/version/range.rb +4 -1
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/run_mode.rb +5 -1
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/api_types.rb +60 -33
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +541 -427
- data/man/man5/puppet.conf.5 +84 -19
- data/man/man8/puppet-agent.8 +7 -4
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +6 -6
- 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 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +6 -3
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +4 -1
- data/man/man8/puppet-node.8 +4 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet-status.8 +2 -2
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-enabled.txt → dnf-module-list.txt} +6 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
- data/spec/integration/application/agent_spec.rb +202 -52
- data/spec/integration/application/apply_spec.rb +149 -149
- data/spec/integration/application/config_spec.rb +74 -0
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +70 -21
- data/spec/integration/application/help_spec.rb +42 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +75 -2
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +27 -3
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/http/client_spec.rb +6 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/network/http_pool_spec.rb +73 -0
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +7 -2
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/https.rb +6 -0
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +8 -0
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/unit/agent_spec.rb +47 -1
- data/spec/unit/application/agent_spec.rb +7 -8
- data/spec/unit/application/doc_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +41 -10
- data/spec/unit/application/man_spec.rb +52 -0
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +15 -2
- data/spec/unit/application_spec.rb +9 -4
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer_spec.rb +86 -37
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +25 -2
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/environments_spec.rb +99 -32
- data/spec/unit/face/config_spec.rb +59 -1
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/node_spec.rb +2 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +29 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/http/client_spec.rb +74 -19
- data/spec/unit/http/external_client_spec.rb +9 -9
- data/spec/unit/http/resolver_spec.rb +24 -5
- data/spec/unit/http/response_spec.rb +6 -0
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +2 -3
- data/spec/unit/http/service/file_server_spec.rb +2 -3
- data/spec/unit/http/service/puppetserver_spec.rb +82 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +0 -1
- data/spec/unit/http/session_spec.rb +8 -21
- data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +15 -14
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/unit/indirector/request_spec.rb +5 -5
- data/spec/unit/indirector/rest_spec.rb +14 -1
- data/spec/unit/indirector/status/rest_spec.rb +1 -1
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/connection_spec.rb +552 -190
- data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
- data/spec/unit/network/http_pool_spec.rb +63 -57
- data/spec/unit/network/http_spec.rb +1 -1
- data/spec/unit/node/environment_spec.rb +18 -1
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +77 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +25 -5
- data/spec/unit/provider/package/dpkg_spec.rb +22 -7
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/pip_spec.rb +42 -16
- data/spec/unit/provider/package/portage_spec.rb +5 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
- data/spec/unit/provider/package/yum_spec.rb +47 -8
- data/spec/unit/provider/package/zypper_spec.rb +98 -0
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/bsd_spec.rb +5 -1
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +3 -5
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +4 -5
- data/spec/unit/provider/service/init_spec.rb +46 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +2 -1
- data/spec/unit/provider/service/redhat_spec.rb +10 -1
- data/spec/unit/provider/service/runit_spec.rb +2 -1
- data/spec/unit/provider/service/smf_spec.rb +1 -1
- data/spec/unit/provider/service/src_spec.rb +3 -5
- data/spec/unit/provider/service/systemd_spec.rb +87 -19
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- data/spec/unit/provider/service/windows_spec.rb +50 -14
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +30 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
- data/spec/unit/puppet_spec.rb +33 -0
- data/spec/unit/reports/http_spec.rb +1 -1
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource_spec.rb +3 -3
- data/spec/unit/rest/route_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +182 -22
- data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
- data/spec/unit/ssl/state_machine_spec.rb +52 -8
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +3 -1
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/file_spec.rb +122 -96
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/service_spec.rb +218 -8
- data/spec/unit/type/user_spec.rb +32 -3
- data/spec/unit/type_spec.rb +50 -0
- data/spec/unit/util/autoload_spec.rb +2 -1
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/log/destinations_spec.rb +1 -29
- data/spec/unit/util/package/version/range_spec.rb +22 -1
- data/spec/unit/util/run_mode_spec.rb +6 -6
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util_spec.rb +3 -3
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- data/tasks/manpages.rake +5 -35
- metadata +43 -49
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -51
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/integration/test/test_helper_spec.rb +0 -31
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/man_spec.rb +0 -31
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Dir, :if => Puppet::Util::Platform.windows? do
|
4
|
+
it "should always have the PERSONAL constant defined" do
|
5
|
+
expect(described_class).to be_const_defined(:PERSONAL)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should not raise any errors when accessing the PERSONAL constant" do
|
9
|
+
expect { described_class::PERSONAL }.not_to raise_error
|
10
|
+
end
|
11
|
+
end
|
@@ -33,17 +33,7 @@ describe "Puppet::Util::Windows::Process", :if => Puppet::Util::Platform.windows
|
|
33
33
|
end
|
34
34
|
|
35
35
|
describe "when reading environment variables" do
|
36
|
-
after :each do
|
37
|
-
# spec\integration\test\test_helper_spec.rb calls set_environment_strings
|
38
|
-
# after :all and thus needs access to the real APIs once again
|
39
|
-
allow(Puppet::Util::Windows::Process).to receive(:GetEnvironmentStringsW).and_call_original
|
40
|
-
allow(Puppet::Util::Windows::Process).to receive(:FreeEnvironmentStringsW).and_call_original
|
41
|
-
end
|
42
|
-
|
43
36
|
it "will ignore only keys or values with corrupt byte sequences" do
|
44
|
-
arraydest = []
|
45
|
-
Puppet::Util::Log.newdestination(Puppet::Test::LogCollector.new(arraydest))
|
46
|
-
|
47
37
|
env_vars = {}
|
48
38
|
|
49
39
|
# Create a UTF-16LE version of the below null separated environment string
|
@@ -61,9 +51,9 @@ describe "Puppet::Util::Windows::Process", :if => Puppet::Util::Platform.windows
|
|
61
51
|
ptr.put_array_of_uchar(0, env_var_block_bytes)
|
62
52
|
|
63
53
|
# stub the block of memory that the Win32 API would typically return via pointer
|
64
|
-
|
54
|
+
allow(Puppet::Util::Windows::Process).to receive(:GetEnvironmentStringsW).and_return(ptr)
|
65
55
|
# stub out the real API call to free memory, else process crashes
|
66
|
-
|
56
|
+
allow(Puppet::Util::Windows::Process).to receive(:FreeEnvironmentStringsW)
|
67
57
|
|
68
58
|
env_vars = Puppet::Util::Windows::Process.get_environment_strings
|
69
59
|
end
|
@@ -72,39 +62,43 @@ describe "Puppet::Util::Windows::Process", :if => Puppet::Util::Platform.windows
|
|
72
62
|
expect(env_vars).to eq({'a' => 'b', 'c' => 'd', 'f' => 'g'})
|
73
63
|
|
74
64
|
# and Puppet should emit a warning about it
|
75
|
-
expect(
|
76
|
-
expect(
|
65
|
+
expect(@logs.last.level).to eq(:warning)
|
66
|
+
expect(@logs.last.message).to eq("Discarding environment variable e=\uFFFD which contains invalid bytes")
|
77
67
|
end
|
78
68
|
end
|
79
69
|
|
80
70
|
describe "when setting environment variables" do
|
81
|
-
|
82
|
-
begin
|
83
|
-
name = SecureRandom.uuid
|
84
|
-
value = 'foo=bar'
|
71
|
+
let(:name) { SecureRandom.uuid }
|
85
72
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
expect(env[name]).to eq(value)
|
73
|
+
around :each do |example|
|
74
|
+
begin
|
75
|
+
example.run
|
91
76
|
ensure
|
92
77
|
Puppet::Util::Windows::Process.set_environment_variable(name, nil)
|
93
78
|
end
|
94
79
|
end
|
95
80
|
|
96
|
-
it "
|
97
|
-
|
98
|
-
|
81
|
+
it "sets environment variables containing '='" do
|
82
|
+
value = 'foo=bar'
|
83
|
+
Puppet::Util::Windows::Process.set_environment_variable(name, value)
|
84
|
+
env = Puppet::Util::Windows::Process.get_environment_strings
|
99
85
|
|
100
|
-
|
86
|
+
expect(env[name]).to eq(value)
|
87
|
+
end
|
101
88
|
|
102
|
-
|
89
|
+
it "sets environment variables contains spaces" do
|
90
|
+
Puppet::Util::Windows::Process.set_environment_variable(name, '')
|
91
|
+
env = Puppet::Util::Windows::Process.get_environment_strings
|
103
92
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
93
|
+
expect(env[name]).to eq('')
|
94
|
+
end
|
95
|
+
|
96
|
+
it "sets environment variables containing UTF-8" do
|
97
|
+
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"
|
98
|
+
Puppet::Util::Windows::Process.set_environment_variable(name, rune_utf8)
|
99
|
+
env = Puppet::Util::Windows::Process.get_environment_strings
|
100
|
+
|
101
|
+
expect(env[name]).to eq(rune_utf8)
|
108
102
|
end
|
109
103
|
end
|
110
104
|
end
|
@@ -259,23 +259,23 @@ describe Puppet::Util::Windows::Registry do
|
|
259
259
|
{
|
260
260
|
name: 'REG_SZ',
|
261
261
|
type: Win32::Registry::REG_SZ,
|
262
|
-
value: "reg sz\u0000 string",
|
263
|
-
expected_value: "reg sz
|
262
|
+
value: "reg sz\u0000\u0000 string",
|
263
|
+
expected_value: "reg sz"
|
264
264
|
},
|
265
265
|
{
|
266
266
|
name: 'REG_SZ_2',
|
267
267
|
type: Win32::Registry::REG_SZ,
|
268
|
-
value: "reg sz\x00 string",
|
269
|
-
expected_value: "reg sz
|
268
|
+
value: "reg sz 2\x00\x00 string",
|
269
|
+
expected_value: "reg sz 2"
|
270
270
|
},
|
271
271
|
{
|
272
272
|
name: 'REG_EXPAND_SZ',
|
273
273
|
type: Win32::Registry::REG_EXPAND_SZ,
|
274
|
-
value: "\0reg expand string",
|
275
|
-
expected_value: "
|
274
|
+
value: "\0\0\0reg expand string",
|
275
|
+
expected_value: ""
|
276
276
|
}
|
277
277
|
].each do |pair|
|
278
|
-
it '
|
278
|
+
it 'reads up to the first wide null' do
|
279
279
|
hklm.create("#{puppet_key}\\#{subkey_name}", Win32::Registry::KEY_ALL_ACCESS) do |reg|
|
280
280
|
reg.write(value_name, pair[:type], pair[:value])
|
281
281
|
end
|
@@ -125,19 +125,16 @@ describe "Puppet::Util::Windows::User", :if => Puppet::Util::Platform.windows? d
|
|
125
125
|
end
|
126
126
|
|
127
127
|
it 'should raise error given that logon returns false' do
|
128
|
-
|
129
128
|
allow(Puppet::Util::Windows::User).to receive(:logon_user_by_logon_type).with(
|
130
|
-
user, passwd, fLOGON32_LOGON_NETWORK, fLOGON32_PROVIDER_DEFAULT, anything).and_return (0)
|
129
|
+
user, '.', passwd, fLOGON32_LOGON_NETWORK, fLOGON32_PROVIDER_DEFAULT, anything).and_return (0)
|
131
130
|
allow(Puppet::Util::Windows::User).to receive(:logon_user_by_logon_type).with(
|
132
|
-
user, passwd, fLOGON32_LOGON_INTERACTIVE, fLOGON32_PROVIDER_DEFAULT, anything).and_return(0)
|
131
|
+
user, '.', passwd, fLOGON32_LOGON_INTERACTIVE, fLOGON32_PROVIDER_DEFAULT, anything).and_return(0)
|
133
132
|
|
134
133
|
expect {Puppet::Util::Windows::User.logon_user(user, passwd) {}}
|
135
134
|
.to raise_error(Puppet::Util::Windows::Error, /Failed to logon user/)
|
136
|
-
|
137
135
|
end
|
138
136
|
end
|
139
137
|
|
140
|
-
|
141
138
|
describe "password_is?" do
|
142
139
|
it "should return false given an incorrect username and password" do
|
143
140
|
expect(Puppet::Util::Windows::User.password_is?(username, bad_password)).to be_falsey
|
@@ -180,5 +177,50 @@ describe "Puppet::Util::Windows::User", :if => Puppet::Util::Platform.windows? d
|
|
180
177
|
expect { Puppet::Util::Windows::User.check_token_membership }.not_to raise_error
|
181
178
|
end
|
182
179
|
end
|
180
|
+
|
181
|
+
describe "default_system_account?" do
|
182
|
+
it "should succesfully identify 'SYSTEM' user as a default system account" do
|
183
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_sid).with('SYSTEM').and_return(Puppet::Util::Windows::SID::LocalSystem)
|
184
|
+
expect(Puppet::Util::Windows::User.default_system_account?('SYSTEM')).to eq(true)
|
185
|
+
end
|
186
|
+
|
187
|
+
it "should succesfully identify 'NETWORK SERVICE' user as a default system account" do
|
188
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_sid).with('NETWORK SERVICE').and_return(Puppet::Util::Windows::SID::NtNetwork)
|
189
|
+
expect(Puppet::Util::Windows::User.default_system_account?('NETWORK SERVICE')).to eq(true)
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should succesfully identify 'LOCAL SERVICE' user as a default system account" do
|
193
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_sid).with('LOCAL SERVICE').and_return(Puppet::Util::Windows::SID::NtLocal)
|
194
|
+
expect(Puppet::Util::Windows::User.default_system_account?('LOCAL SERVICE')).to eq(true)
|
195
|
+
end
|
196
|
+
|
197
|
+
it "should not identify user with unknown sid as a default system account" do
|
198
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_sid).with('UnknownUser').and_return(Puppet::Util::Windows::SID::Null)
|
199
|
+
expect(Puppet::Util::Windows::User.default_system_account?('UnknownUser')).to eq(false)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
describe "localsystem?" do
|
204
|
+
before do
|
205
|
+
allow(Puppet::Util::Windows::ADSI).to receive(:computer_name).and_return("myPC")
|
206
|
+
end
|
207
|
+
|
208
|
+
['LocalSystem', '.\LocalSystem', 'myPC\LocalSystem', 'lOcALsysTem'].each do |input|
|
209
|
+
it "should succesfully identify #{input} as the 'LocalSystem' account" do
|
210
|
+
expect(Puppet::Util::Windows::User.localsystem?(input)).to eq(true)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
it "should not identify any other user as the 'LocalSystem' account" do
|
215
|
+
expect(Puppet::Util::Windows::User.localsystem?('OtherUser')).to eq(false)
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
describe "get_rights" do
|
220
|
+
it "should be empty when given user does not exist" do
|
221
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).with('NonExistingUser').and_return(nil)
|
222
|
+
expect(Puppet::Util::Windows::User.get_rights('NonExistingUser')).to eq("")
|
223
|
+
end
|
224
|
+
end
|
183
225
|
end
|
184
226
|
end
|
@@ -1,32 +1,9 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
describe Puppet::Util do
|
4
5
|
include PuppetSpec::Files
|
5
6
|
|
6
|
-
describe "#execute", unless: Puppet::Util::Platform.jruby? do
|
7
|
-
it "should properly allow stdout and stderr to share a file" do
|
8
|
-
command = "ruby -e '(1..10).each {|i| (i%2==0) ? $stdout.puts(i) : $stderr.puts(i)}'"
|
9
|
-
|
10
|
-
expect(Puppet::Util::Execution.execute(command, :combine => true).split).to match_array([*'1'..'10'])
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should return output and set $CHILD_STATUS" do
|
14
|
-
command = "ruby -e 'puts \"foo\"; exit 42'"
|
15
|
-
|
16
|
-
output = Puppet::Util::Execution.execute(command, {:failonfail => false})
|
17
|
-
|
18
|
-
expect(output).to eq("foo\n")
|
19
|
-
expect($CHILD_STATUS.exitstatus).to eq(42)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should raise an error if non-zero exit status is returned" do
|
23
|
-
command = "ruby -e 'exit 43'"
|
24
|
-
|
25
|
-
expect { Puppet::Util::Execution.execute(command) }.to raise_error(Puppet::ExecutionFailure, /Execution of '#{command}' returned 43: /)
|
26
|
-
expect($CHILD_STATUS.exitstatus).to eq(43)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
7
|
describe "#replace_file on Windows", :if => Puppet::Util::Platform.windows? do
|
31
8
|
it "replace_file should preserve original ACEs from existing replaced file on Windows" do
|
32
9
|
|
@@ -110,18 +87,15 @@ describe Puppet::Util do
|
|
110
87
|
describe "#which on Windows", :if => Puppet::Util::Platform.windows? do
|
111
88
|
let (:rune_utf8) { "\u16A0\u16C7\u16BB\u16EB\u16D2\u16E6\u16A6\u16EB\u16A0\u16B1\u16A9\u16A0\u16A2\u16B1\u16EB\u16A0\u16C1\u16B1\u16AA\u16EB\u16B7\u16D6\u16BB\u16B9\u16E6\u16DA\u16B3\u16A2\u16D7" }
|
112
89
|
let (:filename) { 'foo.exe' }
|
113
|
-
let (:filepath) { File.expand_path('C:\\' + rune_utf8 + '\\' + filename) }
|
114
90
|
|
115
|
-
|
116
|
-
|
117
|
-
|
91
|
+
it "should be able to use UTF8 characters in the path" do
|
92
|
+
utf8 = tmpdir(rune_utf8)
|
93
|
+
Puppet::FileSystem.mkpath(utf8)
|
118
94
|
|
119
|
-
|
120
|
-
|
121
|
-
end
|
95
|
+
filepath = File.join(utf8, filename)
|
96
|
+
Puppet::FileSystem.touch(filepath)
|
122
97
|
|
123
|
-
|
124
|
-
path = "C:\\" + rune_utf8 + "#{File::PATH_SEPARATOR}c:\\windows\\system32#{File::PATH_SEPARATOR}c:\\windows"
|
98
|
+
path = [utf8, "c:\\windows\\system32", "c:\\windows"].join(File::PATH_SEPARATOR)
|
125
99
|
Puppet::Util.withenv( { "PATH" => path } , :windows) do
|
126
100
|
expect(Puppet::Util.which(filename)).to eq(filepath)
|
127
101
|
end
|
@@ -24,6 +24,12 @@ class PuppetSpec::HTTPSServer
|
|
24
24
|
res = WEBrick::HTTPResponse.new(@config)
|
25
25
|
res.status = 200
|
26
26
|
res.body = 'OK'
|
27
|
+
# The server explicitly closes the connection after handling it,
|
28
|
+
# so explicitly tell the client we're not going to keep it open.
|
29
|
+
# Without this, ruby will add `Connection: Keep-Alive`, which
|
30
|
+
# confuses the client when it tries to reuse the half-closed
|
31
|
+
# connection.
|
32
|
+
res['Connection'] = 'close'
|
27
33
|
response_proc.call(req, res) if response_proc
|
28
34
|
|
29
35
|
res.send_response(ssl)
|
@@ -41,86 +41,6 @@ RSpec::Matchers.define :exit_with do |expected|
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
|
45
|
-
RSpec::Matchers.define :have_printed do |expected|
|
46
|
-
|
47
|
-
case expected
|
48
|
-
when String, Regexp, Proc
|
49
|
-
expected = expected
|
50
|
-
else
|
51
|
-
expected = expected.to_s
|
52
|
-
end
|
53
|
-
|
54
|
-
chain :and_exit_with do |code|
|
55
|
-
@expected_exit_code = code
|
56
|
-
end
|
57
|
-
|
58
|
-
define_method :matches_exit_code? do |actual|
|
59
|
-
@expected_exit_code.nil? || @expected_exit_code == actual
|
60
|
-
end
|
61
|
-
|
62
|
-
define_method :matches_output? do |actual|
|
63
|
-
return false unless actual
|
64
|
-
case expected
|
65
|
-
when String
|
66
|
-
actual.include?(expected)
|
67
|
-
when Regexp
|
68
|
-
expected.match(actual)
|
69
|
-
when Proc
|
70
|
-
expected.call(actual)
|
71
|
-
else
|
72
|
-
raise ArgumentError, "No idea how to match a #{actual.class.name}"
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
match do |block|
|
77
|
-
$stderr = $stdout = StringIO.new
|
78
|
-
$stdout.set_encoding('UTF-8') if $stdout.respond_to?(:set_encoding)
|
79
|
-
|
80
|
-
begin
|
81
|
-
block.call
|
82
|
-
rescue SystemExit => e
|
83
|
-
raise unless @expected_exit_code
|
84
|
-
@actual_exit_code = e.status
|
85
|
-
ensure
|
86
|
-
$stdout.rewind
|
87
|
-
@actual = $stdout.read
|
88
|
-
|
89
|
-
$stdout = STDOUT
|
90
|
-
$stderr = STDERR
|
91
|
-
end
|
92
|
-
|
93
|
-
matches_output?(@actual) && matches_exit_code?(@actual_exit_code)
|
94
|
-
end
|
95
|
-
|
96
|
-
supports_block_expectations
|
97
|
-
|
98
|
-
failure_message do |actual|
|
99
|
-
if actual.nil? then
|
100
|
-
"expected #{expected.inspect}, but nothing was printed"
|
101
|
-
else
|
102
|
-
if !@expected_exit_code.nil? && matches_output?(actual)
|
103
|
-
"expected exit with code #{@expected_exit_code} but " +
|
104
|
-
(@actual_exit_code.nil? ? " exit was not called" : "exited with #{@actual_exit_code} instead")
|
105
|
-
else
|
106
|
-
"expected #{expected.inspect} to be printed; got:\n#{actual}"
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
failure_message_when_negated do |actual|
|
112
|
-
if @expected_exit_code && matches_exit_code?(@actual_exit_code)
|
113
|
-
"expected exit code to not be #{@actual_exit_code}"
|
114
|
-
else
|
115
|
-
"expected #{expected.inspect} to not be printed; got:\n#{actual}"
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
description do
|
120
|
-
"expect #{expected.inspect} to be printed" + (@expected_exit_code.nil ? '' : " with exit code #{@expected_exit_code}")
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
44
|
RSpec::Matchers.define :equal_attributes_of do |expected|
|
125
45
|
match do |actual|
|
126
46
|
actual.instance_variables.all? do |attr|
|
@@ -47,9 +47,13 @@ class PuppetSpec::Puppetserver
|
|
47
47
|
class FilebucketServlet < WEBrick::HTTPServlet::AbstractServlet
|
48
48
|
def do_GET request, response
|
49
49
|
end
|
50
|
+
|
50
51
|
def do_PUT request, response
|
52
|
+
upload = File.join(@config.config[:TempDir], 'filebucket')
|
53
|
+
File.open(upload, 'wb') { |f| f.write(request.body) }
|
51
54
|
response['Content-Type'] = 'application/octet-stream'
|
52
55
|
end
|
56
|
+
|
53
57
|
def do_HEAD request, response
|
54
58
|
response.status = 404
|
55
59
|
end
|
@@ -116,4 +120,8 @@ class PuppetSpec::Puppetserver
|
|
116
120
|
end
|
117
121
|
@https.mount(path, handler)
|
118
122
|
end
|
123
|
+
|
124
|
+
def upload_directory
|
125
|
+
@https.config[:TempDir]
|
126
|
+
end
|
119
127
|
end
|
@@ -187,6 +187,8 @@ shared_context 'types_setup' do
|
|
187
187
|
result << Puppet::Pops::Types::PURIType
|
188
188
|
result << Puppet::Pops::Types::PTupleType.new([tf.rich_data])
|
189
189
|
result << Puppet::Pops::Types::PObjectType
|
190
|
+
result << Puppet::Pops::Types::PTypeType
|
191
|
+
result << Puppet::Pops::Types::PTypeSetType
|
190
192
|
result
|
191
193
|
end
|
192
194
|
def rich_data_compatible_types
|
data/spec/unit/agent_spec.rb
CHANGED
@@ -179,6 +179,52 @@ describe Puppet::Agent do
|
|
179
179
|
expect(@agent.run).to eq(:result)
|
180
180
|
end
|
181
181
|
|
182
|
+
describe "and a puppet agent is already running" do
|
183
|
+
before(:each) do
|
184
|
+
allow_any_instance_of(Object).to receive(:sleep)
|
185
|
+
lockfile = double('lockfile')
|
186
|
+
expect(@agent).to receive(:lockfile).and_return(lockfile).at_least(:once)
|
187
|
+
# so the lock method raises Puppet::LockError
|
188
|
+
allow(lockfile).to receive(:lock).and_return(false)
|
189
|
+
end
|
190
|
+
|
191
|
+
it "should notify that a run is already in progres" do
|
192
|
+
client = AgentTestClient.new
|
193
|
+
expect(AgentTestClient).to receive(:new).and_return(client)
|
194
|
+
expect(Puppet).to receive(:notice).with(/Run of .* already in progress; skipping .* exists/)
|
195
|
+
@agent.run
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should inform that a run is already in progres and try to run every X seconds if waitforlock is used" do
|
199
|
+
# so the locked file exists
|
200
|
+
allow(File).to receive(:file?).and_return(true)
|
201
|
+
# so we don't have to wait again for the run to exit (default maxwaitforcert is 60)
|
202
|
+
# first 0 is to get the time, second 0 is to inform user, then 1000 so the time expires
|
203
|
+
allow(Time).to receive(:now).and_return(0, 0, 1000)
|
204
|
+
allow(Puppet).to receive(:info)
|
205
|
+
client = AgentTestClient.new
|
206
|
+
expect(AgentTestClient).to receive(:new).and_return(client)
|
207
|
+
|
208
|
+
Puppet[:waitforlock] = 1
|
209
|
+
Puppet[:maxwaitforlock] = 2
|
210
|
+
expect(Puppet).to receive(:info).with(/Another puppet instance is already running; --waitforlock flag used, waiting for running instance to finish./)
|
211
|
+
expect(Puppet).to receive(:info).with(/Will try again in #{Puppet[:waitforlock]} seconds./)
|
212
|
+
@agent.run
|
213
|
+
end
|
214
|
+
|
215
|
+
it "should notify that the run is exiting if waitforlock is used and maxwaitforlock is exceeded" do
|
216
|
+
# so we don't have to wait again for the run to exit (default maxwaitforcert is 60)
|
217
|
+
# first 0 is to get the time, then 1000 so that the time expires
|
218
|
+
allow(Time).to receive(:now).and_return(0, 1000)
|
219
|
+
client = AgentTestClient.new
|
220
|
+
expect(AgentTestClient).to receive(:new).and_return(client)
|
221
|
+
|
222
|
+
Puppet[:waitforlock] = 1
|
223
|
+
expect(Puppet).to receive(:notice).with(/Exiting now because the maxwaitforlock timeout has been exceeded./)
|
224
|
+
@agent.run
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
182
228
|
describe "when should_fork is true", :if => Puppet.features.posix? && RUBY_PLATFORM != 'java' do
|
183
229
|
before do
|
184
230
|
@agent = Puppet::Agent.new(AgentTestClient, true)
|
@@ -291,7 +337,7 @@ describe Puppet::Agent do
|
|
291
337
|
expect(client).not_to receive(:handling)
|
292
338
|
expect(Puppet).to receive(:log_exception).with(be_an_instance_of(Puppet::Agent::RunTimeoutError), anything)
|
293
339
|
|
294
|
-
expect(@agent.run).to eq(
|
340
|
+
expect(@agent.run).to eq(nil)
|
295
341
|
end
|
296
342
|
end
|
297
343
|
end
|