puppet 6.0.10-x86-mingw32 → 6.1.0-x86-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/Gemfile +1 -0
- data/Gemfile.lock +31 -27
- data/Guardfile.example +76 -0
- data/LICENSE +189 -4
- data/MAINTAINERS +47 -0
- data/README.md +3 -3
- data/lib/hiera/scope.rb +0 -7
- data/lib/puppet.rb +6 -5
- data/lib/puppet/application.rb +3 -3
- data/lib/puppet/application/cert.rb +2 -2
- data/lib/puppet/application/device.rb +83 -109
- data/lib/puppet/application/filebucket.rb +1 -10
- data/lib/puppet/application/ssl.rb +0 -2
- data/lib/puppet/configurer.rb +9 -10
- data/lib/puppet/confine/false.rb +1 -7
- data/lib/puppet/confine/true.rb +1 -7
- data/lib/puppet/defaults.rb +39 -51
- data/lib/puppet/forge.rb +1 -4
- data/lib/puppet/functions/abs.rb +1 -1
- data/lib/puppet/functions/call.rb +1 -2
- data/lib/puppet/functions/new.rb +1 -1
- data/lib/puppet/indirector/request.rb +15 -26
- data/lib/puppet/network/http/connection.rb +12 -32
- data/lib/puppet/network/http/factory.rb +0 -5
- data/lib/puppet/pal/catalog_compiler.rb +96 -0
- data/lib/puppet/pal/compiler.rb +221 -0
- data/lib/puppet/pal/function_signature.rb +52 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +67 -0
- data/lib/puppet/pal/pal_api.rb +15 -0
- data/lib/puppet/pal/pal_impl.rb +523 -0
- data/lib/puppet/pal/plan_signature.rb +71 -0
- data/lib/puppet/pal/script_compiler.rb +71 -0
- data/lib/puppet/pal/task_signature.rb +58 -0
- data/lib/puppet/parser/functions/generate.rb +7 -6
- data/lib/puppet/plugins/configuration.rb +5 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -3
- data/lib/puppet/pops/issues.rb +0 -4
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +4 -60
- data/lib/puppet/pops/model/factory.rb +4 -38
- data/lib/puppet/pops/model/pn_transformer.rb +0 -5
- data/lib/puppet/pops/parser/egrammar.ra +2 -2
- data/lib/puppet/pops/parser/heredoc_support.rb +7 -17
- data/lib/puppet/pops/parser/lexer2.rb +1 -6
- data/lib/puppet/pops/parser/locator.rb +86 -106
- data/lib/puppet/pops/parser/parser_support.rb +2 -11
- data/lib/puppet/pops/types/string_converter.rb +7 -2
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/types.rb +3 -5
- data/lib/puppet/pops/validation/checker4_0.rb +13 -0
- data/lib/puppet/provider.rb +2 -1
- data/lib/puppet/provider/exec.rb +6 -1
- data/lib/puppet/provider/file/windows.rb +1 -49
- data/lib/puppet/provider/group/windows_adsi.rb +1 -4
- data/lib/puppet/provider/package.rb +0 -2
- data/lib/puppet/provider/package/dpkg.rb +2 -15
- data/lib/puppet/provider/package/gem.rb +42 -102
- data/lib/puppet/provider/package/pip.rb +111 -135
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +37 -21
- data/lib/puppet/provider/package/puppet_gem.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +16 -27
- data/lib/puppet/provider/package/windows.rb +1 -5
- data/lib/puppet/provider/package/yum.rb +1 -2
- data/lib/puppet/provider/service/systemd.rb +17 -0
- data/lib/puppet/provider/service/upstart.rb +5 -17
- data/lib/puppet/provider/service/windows.rb +8 -3
- data/lib/puppet/provider/user/directoryservice.rb +4 -16
- data/lib/puppet/provider/user/useradd.rb +13 -16
- data/lib/puppet/resource.rb +3 -1
- data/lib/puppet/rest/client.rb +83 -0
- data/lib/puppet/rest/route.rb +1 -1
- data/lib/puppet/settings.rb +5 -10
- data/lib/puppet/settings/server_list_setting.rb +0 -9
- data/lib/puppet/ssl/host.rb +11 -0
- data/lib/puppet/ssl/validator/default_validator.rb +0 -31
- data/lib/puppet/syntax_checkers/epp.rb +34 -0
- data/lib/puppet/syntax_checkers/pp.rb +34 -0
- data/lib/puppet/transaction.rb +7 -12
- data/lib/puppet/transaction/event_manager.rb +5 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -1
- data/lib/puppet/type.rb +6 -0
- data/lib/puppet/type/exec.rb +5 -27
- data/lib/puppet/type/file/mode.rb +1 -6
- data/lib/puppet/type/file/source.rb +1 -0
- data/lib/puppet/type/filebucket.rb +8 -12
- data/lib/puppet/type/package.rb +11 -44
- data/lib/puppet/type/schedule.rb +0 -4
- data/lib/puppet/type/service.rb +12 -0
- data/lib/puppet/type/user.rb +1 -1
- data/lib/puppet/util/command_line.rb +1 -5
- data/lib/puppet/util/connection.rb +6 -15
- data/lib/puppet/util/http_proxy.rb +2 -3
- data/lib/puppet/util/log.rb +2 -7
- data/lib/puppet/util/pidlock.rb +1 -15
- data/lib/puppet/util/windows/process.rb +5 -73
- data/lib/puppet/util/windows/registry.rb +1 -7
- data/lib/puppet/util/windows/security.rb +8 -29
- data/lib/puppet/util/windows/service.rb +33 -27
- data/lib/puppet/util/windows/user.rb +4 -14
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +5 -1132
- data/locales/ja/puppet.po +297 -363
- data/locales/puppet.pot +445 -517
- data/man/man5/puppet.conf.5 +12 -20
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- 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 +2 -6
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- 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 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query +7 -1
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +1 -0
- data/spec/integration/agent/logging_spec.rb +7 -5
- data/spec/integration/application/apply_spec.rb +16 -18
- data/spec/integration/application/doc_spec.rb +2 -1
- data/spec/integration/application/lookup_spec.rb +5 -5
- data/spec/integration/configurer_spec.rb +6 -5
- data/spec/integration/defaults_spec.rb +6 -5
- data/spec/integration/directory_environments_spec.rb +1 -1
- data/spec/integration/faces/config_spec.rb +4 -3
- data/spec/integration/faces/documentation_spec.rb +1 -0
- data/spec/integration/faces/plugin_spec.rb +1 -1
- data/spec/integration/file_bucket/file_spec.rb +4 -2
- data/spec/integration/file_serving/content_spec.rb +1 -0
- data/spec/integration/file_serving/fileset_spec.rb +1 -0
- data/spec/integration/file_serving/metadata_spec.rb +1 -0
- data/spec/integration/file_serving/terminus_helper_spec.rb +1 -0
- data/spec/integration/indirector/catalog/compiler_spec.rb +11 -10
- data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +5 -4
- data/spec/integration/indirector/file_content/file_server_spec.rb +8 -7
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +8 -7
- data/spec/integration/network/authconfig_spec.rb +24 -23
- data/spec/integration/network/formats_spec.rb +1 -0
- data/spec/integration/node/environment_spec.rb +1 -0
- data/spec/integration/node/facts_spec.rb +10 -9
- data/spec/integration/node_spec.rb +7 -6
- data/spec/integration/parser/catalog_spec.rb +5 -1
- data/spec/integration/parser/collection_spec.rb +2 -1
- data/spec/integration/parser/compiler_spec.rb +6 -6
- data/spec/integration/parser/scope_spec.rb +1 -1
- data/spec/integration/parser/undef_param_spec.rb +1 -1
- data/spec/integration/provider/service/init_spec.rb +5 -4
- data/spec/integration/provider/service/systemd_spec.rb +2 -0
- data/spec/integration/provider/service/windows_spec.rb +2 -1
- data/spec/integration/reference/providers_spec.rb +2 -1
- data/spec/integration/reports_spec.rb +2 -1
- data/spec/integration/resource/catalog_spec.rb +17 -14
- data/spec/integration/resource/type_collection_spec.rb +5 -4
- data/spec/integration/ssl/certificate_request_spec.rb +1 -0
- data/spec/integration/ssl/host_spec.rb +2 -1
- data/spec/integration/ssl/key_spec.rb +1 -0
- data/spec/integration/test/test_helper_spec.rb +1 -0
- data/spec/integration/transaction/report_spec.rb +11 -6
- data/spec/integration/transaction_spec.rb +19 -18
- data/spec/integration/type/exec_spec.rb +1 -0
- data/spec/integration/type/file_spec.rb +33 -13
- data/spec/integration/type/package_spec.rb +24 -20
- data/spec/integration/type/tidy_spec.rb +2 -1
- data/spec/integration/type_spec.rb +1 -0
- data/spec/integration/util/autoload_spec.rb +2 -1
- data/spec/integration/util/rdoc/parser_spec.rb +1 -0
- data/spec/integration/util/settings_spec.rb +1 -0
- data/spec/integration/util/windows/adsi_spec.rb +5 -3
- data/spec/integration/util/windows/principal_spec.rb +1 -0
- data/spec/integration/util/windows/process_spec.rb +6 -4
- data/spec/integration/util/windows/registry_spec.rb +51 -93
- data/spec/integration/util/windows/security_spec.rb +4 -2
- data/spec/integration/util/windows/user_spec.rb +20 -37
- data/spec/integration/util_spec.rb +7 -4
- data/spec/lib/puppet_spec/compiler.rb +1 -1
- data/spec/lib/puppet_spec/files.rb +1 -0
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +1 -1
- data/spec/lib/puppet_spec/scope.rb +2 -1
- data/spec/shared_behaviours/all_parsedfile_providers.rb +1 -1
- data/spec/shared_behaviours/file_server_terminus.rb +9 -8
- data/spec/shared_behaviours/file_serving.rb +8 -6
- data/spec/shared_behaviours/file_serving_model.rb +5 -3
- data/spec/shared_behaviours/hiera_indirections.rb +4 -3
- data/spec/shared_behaviours/iterative_functions.rb +1 -0
- data/spec/shared_behaviours/memory_terminus.rb +2 -2
- data/spec/shared_examples/rhel_package_provider.rb +70 -112
- data/spec/spec_helper.rb +2 -11
- data/spec/unit/agent/disabler_spec.rb +5 -4
- data/spec/unit/agent/locker_spec.rb +13 -12
- data/spec/unit/agent_spec.rb +85 -80
- data/spec/unit/application/agent_spec.rb +93 -88
- data/spec/unit/application/apply_spec.rb +83 -82
- data/spec/unit/application/config_spec.rb +1 -0
- data/spec/unit/application/describe_spec.rb +7 -6
- data/spec/unit/application/device_spec.rb +419 -395
- data/spec/unit/application/doc_spec.rb +46 -44
- data/spec/unit/application/face_base_spec.rb +62 -61
- data/spec/unit/application/facts_spec.rb +4 -3
- data/spec/unit/application/filebucket_spec.rb +74 -66
- data/spec/unit/application/indirection_base_spec.rb +6 -8
- data/spec/unit/application/lookup_spec.rb +26 -26
- data/spec/unit/application/resource_spec.rb +48 -42
- data/spec/unit/application/ssl_spec.rb +3 -8
- data/spec/unit/application_spec.rb +98 -86
- data/spec/unit/capability_spec.rb +6 -6
- data/spec/unit/certificate_factory_spec.rb +5 -3
- data/spec/unit/configurer/downloader_spec.rb +21 -20
- data/spec/unit/configurer/fact_handler_spec.rb +3 -2
- data/spec/unit/configurer/plugin_handler_spec.rb +8 -41
- data/spec/unit/configurer_spec.rb +198 -194
- data/spec/unit/confine/exists_spec.rb +15 -17
- data/spec/unit/confine/false_spec.rb +6 -32
- data/spec/unit/confine/feature_spec.rb +5 -7
- data/spec/unit/confine/true_spec.rb +6 -32
- data/spec/unit/confine/variable_spec.rb +15 -14
- data/spec/unit/confine_collection_spec.rb +29 -28
- data/spec/unit/confine_spec.rb +14 -13
- data/spec/unit/confiner_spec.rb +11 -10
- data/spec/unit/context/trusted_information_spec.rb +1 -1
- data/spec/unit/daemon_spec.rb +36 -35
- data/spec/unit/data_providers/function_data_provider_spec.rb +1 -0
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +1 -0
- data/spec/unit/datatypes_spec.rb +4 -3
- data/spec/unit/defaults_spec.rb +27 -18
- data/spec/unit/environments_spec.rb +7 -7
- data/spec/unit/etc_spec.rb +32 -30
- data/spec/unit/external/pson_spec.rb +1 -0
- data/spec/unit/face/catalog_spec.rb +1 -0
- data/spec/unit/face/config_spec.rb +35 -31
- data/spec/unit/face/epp_face_spec.rb +4 -3
- data/spec/unit/face/facts_spec.rb +6 -5
- data/spec/unit/face/generate_spec.rb +5 -4
- data/spec/unit/face/help_spec.rb +8 -7
- data/spec/unit/face/key_spec.rb +1 -0
- data/spec/unit/face/man_spec.rb +2 -1
- data/spec/unit/face/module/install_spec.rb +5 -3
- data/spec/unit/face/module/list_spec.rb +12 -2
- data/spec/unit/face/module/search_spec.rb +9 -11
- data/spec/unit/face/module/uninstall_spec.rb +8 -4
- data/spec/unit/face/node_spec.rb +24 -23
- data/spec/unit/face/parser_spec.rb +18 -3
- data/spec/unit/face/plugin_spec.rb +9 -36
- data/spec/unit/face/status_spec.rb +1 -0
- data/spec/unit/file_bucket/dipper_spec.rb +20 -24
- data/spec/unit/file_bucket/file_spec.rb +2 -0
- data/spec/unit/file_serving/base_spec.rb +15 -14
- data/spec/unit/file_serving/configuration/parser_spec.rb +28 -27
- data/spec/unit/file_serving/configuration_spec.rb +66 -63
- data/spec/unit/file_serving/content_spec.rb +11 -10
- data/spec/unit/file_serving/fileset_spec.rb +58 -63
- data/spec/unit/file_serving/http_metadata_spec.rb +7 -8
- data/spec/unit/file_serving/metadata_spec.rb +36 -36
- data/spec/unit/file_serving/mount/file_spec.rb +32 -31
- data/spec/unit/file_serving/mount/locales_spec.rb +24 -23
- data/spec/unit/file_serving/mount/modules_spec.rb +15 -14
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +24 -23
- data/spec/unit/file_serving/mount/plugins_spec.rb +24 -23
- data/spec/unit/file_serving/mount/tasks_spec.rb +15 -14
- data/spec/unit/file_serving/mount_spec.rb +1 -0
- data/spec/unit/file_serving/terminus_helper_spec.rb +42 -37
- data/spec/unit/file_serving/terminus_selector_spec.rb +13 -12
- data/spec/unit/file_system/uniquefile_spec.rb +4 -4
- data/spec/unit/file_system_spec.rb +2 -2
- data/spec/unit/forge/errors_spec.rb +1 -1
- data/spec/unit/forge/forge_spec.rb +16 -17
- data/spec/unit/forge/module_release_spec.rb +18 -18
- data/spec/unit/forge/repository_spec.rb +30 -29
- data/spec/unit/forge_spec.rb +11 -15
- data/spec/unit/functions/binary_file_spec.rb +3 -3
- data/spec/unit/functions/contain_spec.rb +2 -0
- data/spec/unit/functions/defined_spec.rb +1 -0
- data/spec/unit/functions/epp_spec.rb +2 -2
- data/spec/unit/functions/find_file_spec.rb +7 -7
- data/spec/unit/functions/include_spec.rb +4 -0
- data/spec/unit/functions/lookup_fixture_spec.rb +1 -0
- data/spec/unit/functions/lookup_spec.rb +2 -1
- data/spec/unit/functions/module_directory_spec.rb +12 -12
- data/spec/unit/functions/new_spec.rb +0 -15
- data/spec/unit/functions/require_spec.rb +3 -0
- data/spec/unit/functions/shared.rb +8 -5
- data/spec/unit/functions/versioncmp_spec.rb +2 -1
- data/spec/unit/functions4_spec.rb +10 -9
- data/spec/unit/gettext/config_spec.rb +4 -4
- data/spec/unit/gettext/module_loading_spec.rb +7 -7
- data/spec/unit/graph/rb_tree_map_spec.rb +2 -0
- data/spec/unit/graph/relationship_graph_spec.rb +2 -1
- data/spec/unit/graph/simple_graph_spec.rb +10 -9
- data/spec/unit/hiera/scope_spec.rb +0 -7
- data/spec/unit/hiera_puppet_spec.rb +20 -20
- data/spec/unit/indirector/catalog/compiler_spec.rb +149 -147
- data/spec/unit/indirector/catalog/json_spec.rb +2 -1
- data/spec/unit/indirector/catalog/msgpack_spec.rb +1 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -0
- data/spec/unit/indirector/catalog/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/catalog/yaml_spec.rb +1 -0
- data/spec/unit/indirector/certificate/file_spec.rb +1 -0
- data/spec/unit/indirector/certificate/rest_spec.rb +10 -8
- data/spec/unit/indirector/certificate_request/file_spec.rb +1 -0
- data/spec/unit/indirector/certificate_request/rest_spec.rb +1 -0
- data/spec/unit/indirector/direct_file_server_spec.rb +18 -17
- data/spec/unit/indirector/envelope_spec.rb +2 -1
- data/spec/unit/indirector/exec_spec.rb +5 -4
- data/spec/unit/indirector/face_spec.rb +9 -9
- data/spec/unit/indirector/facts/facter_spec.rb +43 -37
- data/spec/unit/indirector/facts/network_device_spec.rb +9 -8
- data/spec/unit/indirector/facts/rest_spec.rb +8 -7
- data/spec/unit/indirector/facts/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/facts/yaml_spec.rb +1 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -3
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +1 -0
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +5 -4
- data/spec/unit/indirector/file_content/file_server_spec.rb +1 -0
- data/spec/unit/indirector/file_content/file_spec.rb +1 -0
- data/spec/unit/indirector/file_content/rest_spec.rb +1 -0
- data/spec/unit/indirector/file_content/selector_spec.rb +1 -0
- data/spec/unit/indirector/file_metadata/file_server_spec.rb +1 -0
- data/spec/unit/indirector/file_metadata/file_spec.rb +13 -12
- data/spec/unit/indirector/file_metadata/rest_spec.rb +1 -0
- data/spec/unit/indirector/file_metadata/selector_spec.rb +1 -0
- data/spec/unit/indirector/file_server_spec.rb +87 -87
- data/spec/unit/indirector/indirection_spec.rb +226 -242
- data/spec/unit/indirector/json_spec.rb +9 -7
- data/spec/unit/indirector/key/file_spec.rb +22 -21
- data/spec/unit/indirector/memory_spec.rb +7 -6
- data/spec/unit/indirector/msgpack_spec.rb +9 -7
- data/spec/unit/indirector/node/exec_spec.rb +3 -2
- data/spec/unit/indirector/node/memory_spec.rb +4 -2
- data/spec/unit/indirector/node/msgpack_spec.rb +1 -0
- data/spec/unit/indirector/node/plain_spec.rb +4 -2
- data/spec/unit/indirector/node/rest_spec.rb +1 -0
- data/spec/unit/indirector/node/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/node/yaml_spec.rb +1 -0
- data/spec/unit/indirector/none_spec.rb +5 -5
- data/spec/unit/indirector/plain_spec.rb +8 -7
- data/spec/unit/indirector/report/msgpack_spec.rb +1 -0
- data/spec/unit/indirector/report/processor_spec.rb +22 -21
- data/spec/unit/indirector/report/rest_spec.rb +12 -11
- data/spec/unit/indirector/report/yaml_spec.rb +1 -0
- data/spec/unit/indirector/request_spec.rb +12 -11
- data/spec/unit/indirector/resource/ral_spec.rb +54 -47
- data/spec/unit/indirector/resource/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/rest_spec.rb +110 -113
- data/spec/unit/indirector/ssl_file_spec.rb +65 -64
- data/spec/unit/indirector/status/local_spec.rb +1 -0
- data/spec/unit/indirector/status/rest_spec.rb +1 -0
- data/spec/unit/indirector/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/terminus_spec.rb +27 -27
- data/spec/unit/indirector/yaml_spec.rb +6 -5
- data/spec/unit/indirector_spec.rb +2 -1
- data/spec/unit/info_service_spec.rb +1 -1
- data/spec/unit/interface/action_builder_spec.rb +1 -0
- data/spec/unit/interface/action_manager_spec.rb +1 -0
- data/spec/unit/interface/action_spec.rb +3 -2
- data/spec/unit/interface/documentation_spec.rb +1 -0
- data/spec/unit/interface/face_collection_spec.rb +12 -19
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/man_spec.rb +4 -3
- data/spec/unit/module_spec.rb +51 -46
- data/spec/unit/module_tool/applications/installer_spec.rb +11 -10
- data/spec/unit/module_tool/applications/searcher_spec.rb +3 -3
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +2 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +13 -13
- data/spec/unit/module_tool/applications/upgrader_spec.rb +5 -5
- data/spec/unit/module_tool/install_directory_spec.rb +8 -8
- data/spec/unit/module_tool/installed_modules_spec.rb +3 -3
- data/spec/unit/module_tool/tar/gnu_spec.rb +6 -6
- data/spec/unit/module_tool/tar/mini_spec.rb +12 -12
- data/spec/unit/module_tool/tar_spec.rb +13 -12
- data/spec/unit/module_tool_spec.rb +12 -7
- data/spec/unit/network/auth_config_parser_spec.rb +13 -11
- data/spec/unit/network/authconfig_spec.rb +18 -17
- data/spec/unit/network/authorization_spec.rb +5 -4
- data/spec/unit/network/authstore_spec.rb +1 -0
- data/spec/unit/network/format_handler_spec.rb +1 -0
- data/spec/unit/network/format_spec.rb +10 -9
- data/spec/unit/network/format_support_spec.rb +29 -28
- data/spec/unit/network/formats_spec.rb +5 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +29 -24
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +2 -2
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +1 -1
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +7 -6
- data/spec/unit/network/http/api_spec.rb +2 -0
- data/spec/unit/network/http/compression_spec.rb +22 -21
- data/spec/unit/network/http/connection_spec.rb +121 -30
- data/spec/unit/network/http/factory_spec.rb +6 -11
- data/spec/unit/network/http/handler_spec.rb +18 -9
- data/spec/unit/network/http/nocache_pool_spec.rb +7 -6
- data/spec/unit/network/http/pool_spec.rb +29 -28
- data/spec/unit/network/http/request_spec.rb +2 -0
- data/spec/unit/network/http/response_spec.rb +13 -11
- data/spec/unit/network/http/route_spec.rb +1 -0
- data/spec/unit/network/http/session_spec.rb +2 -1
- data/spec/unit/network/http/site_spec.rb +1 -0
- data/spec/unit/network/http_pool_spec.rb +9 -18
- data/spec/unit/network/http_spec.rb +1 -0
- data/spec/unit/network/resolver_spec.rb +26 -25
- data/spec/unit/network/rights_spec.rb +53 -52
- data/spec/unit/node/environment_spec.rb +15 -14
- data/spec/unit/node/facts_spec.rb +7 -5
- data/spec/unit/node_spec.rb +10 -4
- data/spec/unit/other/selinux_spec.rb +1 -0
- data/spec/unit/parameter/boolean_spec.rb +2 -1
- data/spec/unit/parameter/package_options_spec.rb +2 -1
- data/spec/unit/parameter/path_spec.rb +1 -0
- data/spec/unit/parameter/value_collection_spec.rb +1 -0
- data/spec/unit/parameter/value_spec.rb +1 -0
- data/spec/unit/parameter_spec.rb +9 -9
- data/spec/unit/parser/ast/block_expression_spec.rb +8 -6
- data/spec/unit/parser/ast/leaf_spec.rb +21 -20
- data/spec/unit/parser/compiler_spec.rb +96 -84
- data/spec/unit/parser/environment_compiler_spec.rb +8 -7
- data/spec/unit/parser/files_spec.rb +1 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/functions/digest_spec.rb +1 -0
- data/spec/unit/parser/functions/fail_spec.rb +2 -1
- data/spec/unit/parser/functions/file_spec.rb +14 -13
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -5
- data/spec/unit/parser/functions/generate_spec.rb +8 -7
- data/spec/unit/parser/functions/inline_template_spec.rb +1 -0
- data/spec/unit/parser/functions/regsubst_spec.rb +1 -0
- data/spec/unit/parser/functions/scanf_spec.rb +1 -0
- data/spec/unit/parser/functions/shellquote_spec.rb +1 -0
- data/spec/unit/parser/functions/split_spec.rb +1 -0
- data/spec/unit/parser/functions/sprintf_spec.rb +1 -0
- data/spec/unit/parser/functions/tag_spec.rb +2 -1
- data/spec/unit/parser/functions/tagged_spec.rb +3 -2
- data/spec/unit/parser/functions/template_spec.rb +13 -13
- data/spec/unit/parser/functions/versioncmp_spec.rb +2 -1
- data/spec/unit/parser/functions_spec.rb +7 -6
- data/spec/unit/parser/relationship_spec.rb +1 -0
- data/spec/unit/parser/resource_spec.rb +42 -42
- data/spec/unit/parser/scope_spec.rb +35 -39
- data/spec/unit/parser/templatewrapper_spec.rb +12 -11
- data/spec/unit/parser/type_loader_spec.rb +19 -17
- data/spec/unit/pops/adaptable_spec.rb +1 -0
- data/spec/unit/pops/benchmark_spec.rb +1 -0
- data/spec/unit/pops/evaluator/access_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -0
- data/spec/unit/pops/evaluator/collections_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +47 -10
- data/spec/unit/pops/evaluator/logical_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +1 -0
- data/spec/unit/pops/evaluator/string_interpolation_spec.rb +1 -0
- data/spec/unit/pops/evaluator/variables_spec.rb +1 -0
- data/spec/unit/pops/factory_spec.rb +4 -3
- data/spec/unit/pops/issues_spec.rb +20 -19
- data/spec/unit/pops/loaders/loader_spec.rb +4 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +31 -101
- data/spec/unit/pops/lookup/context_spec.rb +1 -0
- data/spec/unit/pops/lookup/interpolation_spec.rb +3 -2
- data/spec/unit/pops/merge_strategy_spec.rb +1 -0
- data/spec/unit/pops/migration_spec.rb +5 -3
- data/spec/unit/pops/model/model_spec.rb +1 -0
- data/spec/unit/pops/model/pn_transformer_spec.rb +1 -4
- data/spec/unit/pops/parser/locator_spec.rb +6 -48
- data/spec/unit/pops/parser/parse_application_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_containers_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +15 -111
- data/spec/unit/pops/parser/parse_plan_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_resource_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_site_spec.rb +1 -0
- data/spec/unit/pops/parser/pn_parser_spec.rb +1 -0
- data/spec/unit/pops/pn_spec.rb +1 -0
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -0
- data/spec/unit/pops/serialization/serialization_spec.rb +1 -1
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/recursion_guard_spec.rb +10 -10
- data/spec/unit/pops/types/ruby_generator_spec.rb +2 -2
- data/spec/unit/pops/types/string_converter_spec.rb +5 -1
- data/spec/unit/pops/types/type_asserter_spec.rb +2 -2
- data/spec/unit/pops/types/type_calculator_spec.rb +30 -30
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -9
- data/spec/unit/pops/types/type_parser_spec.rb +13 -13
- data/spec/unit/pops/validator/validator_spec.rb +2 -1
- data/spec/unit/pops/visitor_spec.rb +1 -0
- data/spec/unit/property/boolean_spec.rb +1 -1
- data/spec/unit/property/ensure_spec.rb +1 -0
- data/spec/unit/property/keyvalue_spec.rb +34 -32
- data/spec/unit/property/list_spec.rb +27 -26
- data/spec/unit/property/ordered_list_spec.rb +14 -10
- data/spec/unit/property_spec.rb +43 -42
- data/spec/unit/provider/aix_object_spec.rb +45 -47
- data/spec/unit/provider/command_spec.rb +9 -9
- data/spec/unit/provider/exec/posix_spec.rb +31 -6
- data/spec/unit/provider/exec/shell_spec.rb +1 -0
- data/spec/unit/provider/exec/windows_spec.rb +4 -2
- data/spec/unit/provider/exec_spec.rb +1 -0
- data/spec/unit/provider/file/posix_spec.rb +24 -22
- data/spec/unit/provider/file/windows_spec.rb +17 -15
- data/spec/unit/provider/group/aix_spec.rb +2 -3
- data/spec/unit/provider/group/groupadd_spec.rb +26 -30
- data/spec/unit/provider/group/ldap_spec.rb +18 -18
- data/spec/unit/provider/group/pw_spec.rb +11 -11
- data/spec/unit/provider/group/windows_adsi_spec.rb +53 -59
- data/spec/unit/provider/ldap_spec.rb +62 -61
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +36 -35
- data/spec/unit/provider/nameservice_spec.rb +40 -38
- data/spec/unit/provider/package/aix_spec.rb +15 -15
- data/spec/unit/provider/package/appdmg_spec.rb +13 -13
- data/spec/unit/provider/package/apt_spec.rb +27 -44
- data/spec/unit/provider/package/aptitude_spec.rb +7 -6
- data/spec/unit/provider/package/aptrpm_spec.rb +12 -7
- data/spec/unit/provider/package/base_spec.rb +4 -4
- data/spec/unit/provider/package/dnf_spec.rb +20 -18
- data/spec/unit/provider/package/dpkg_spec.rb +53 -70
- data/spec/unit/provider/package/freebsd_spec.rb +11 -11
- data/spec/unit/provider/package/gem_spec.rb +55 -132
- data/spec/unit/provider/package/hpux_spec.rb +8 -8
- data/spec/unit/provider/package/macports_spec.rb +42 -46
- data/spec/unit/provider/package/nim_spec.rb +39 -30
- data/spec/unit/provider/package/openbsd_spec.rb +39 -36
- data/spec/unit/provider/package/opkg_spec.rb +26 -23
- data/spec/unit/provider/package/pacman_spec.rb +118 -97
- data/spec/unit/provider/package/pip3_spec.rb +0 -17
- data/spec/unit/provider/package/pip_spec.rb +106 -95
- data/spec/unit/provider/package/pkg_spec.rb +109 -109
- data/spec/unit/provider/package/pkgdmg_spec.rb +63 -65
- data/spec/unit/provider/package/pkgin_spec.rb +8 -10
- data/spec/unit/provider/package/pkgng_spec.rb +31 -22
- data/spec/unit/provider/package/pkgutil_spec.rb +49 -45
- data/spec/unit/provider/package/portage_spec.rb +74 -70
- data/spec/unit/provider/package/puppet_gem_spec.rb +13 -37
- data/spec/unit/provider/package/rpm_spec.rb +76 -154
- data/spec/unit/provider/package/sun_spec.rb +18 -16
- data/spec/unit/provider/package/tdnf_spec.rb +2 -2
- data/spec/unit/provider/package/up2date_spec.rb +4 -2
- data/spec/unit/provider/package/urpmi_spec.rb +17 -15
- data/spec/unit/provider/package/windows/exe_package_spec.rb +15 -12
- data/spec/unit/provider/package/windows/msi_package_spec.rb +22 -19
- data/spec/unit/provider/package/windows/package_spec.rb +42 -37
- data/spec/unit/provider/package/windows_spec.rb +32 -47
- data/spec/unit/provider/package/yum_spec.rb +7 -7
- data/spec/unit/provider/package/zypper_spec.rb +87 -87
- data/spec/unit/provider/parsedfile_spec.rb +45 -44
- data/spec/unit/provider/service/base_spec.rb +5 -4
- data/spec/unit/provider/service/bsd_spec.rb +29 -27
- data/spec/unit/provider/service/daemontools_spec.rb +35 -35
- data/spec/unit/provider/service/debian_spec.rb +38 -38
- data/spec/unit/provider/service/freebsd_spec.rb +18 -18
- data/spec/unit/provider/service/gentoo_spec.rb +55 -50
- data/spec/unit/provider/service/init_spec.rb +52 -53
- data/spec/unit/provider/service/launchd_spec.rb +116 -138
- data/spec/unit/provider/service/openbsd_spec.rb +50 -50
- data/spec/unit/provider/service/openrc_spec.rb +45 -43
- data/spec/unit/provider/service/openwrt_spec.rb +31 -26
- data/spec/unit/provider/service/rcng_spec.rb +14 -14
- data/spec/unit/provider/service/redhat_spec.rb +43 -45
- data/spec/unit/provider/service/runit_spec.rb +27 -29
- data/spec/unit/provider/service/smf_spec.rb +66 -74
- data/spec/unit/provider/service/src_spec.rb +47 -46
- data/spec/unit/provider/service/systemd_spec.rb +136 -109
- data/spec/unit/provider/service/upstart_spec.rb +93 -77
- data/spec/unit/provider/service/windows_spec.rb +41 -33
- data/spec/unit/provider/user/aix_spec.rb +31 -31
- data/spec/unit/provider/user/directoryservice_spec.rb +114 -146
- data/spec/unit/provider/user/hpux_spec.rb +16 -16
- data/spec/unit/provider/user/ldap_spec.rb +57 -57
- data/spec/unit/provider/user/openbsd_spec.rb +12 -10
- data/spec/unit/provider/user/pw_spec.rb +35 -37
- data/spec/unit/provider/user/user_role_add_spec.rb +93 -93
- data/spec/unit/provider/user/useradd_spec.rb +92 -93
- data/spec/unit/provider/user/windows_adsi_spec.rb +60 -59
- data/spec/unit/provider_spec.rb +35 -35
- data/spec/unit/puppet_pal_2pec.rb +5 -4
- data/spec/unit/puppet_pal_spec.rb +1 -0
- data/spec/unit/puppet_spec.rb +7 -6
- data/spec/unit/relationship_spec.rb +1 -0
- data/spec/unit/reports/http_spec.rb +23 -21
- data/spec/unit/reports/store_spec.rb +4 -3
- data/spec/unit/reports_spec.rb +14 -12
- data/spec/unit/resource/capability_finder_spec.rb +17 -15
- data/spec/unit/resource/catalog_spec.rb +68 -72
- data/spec/unit/resource/status_spec.rb +8 -6
- data/spec/unit/resource/type_collection_spec.rb +18 -17
- data/spec/unit/resource/type_spec.rb +35 -34
- data/spec/unit/resource_spec.rb +63 -36
- data/spec/unit/rest/client_spec.rb +135 -0
- data/spec/unit/rest/route_spec.rb +6 -6
- data/spec/unit/scheduler/job_spec.rb +1 -0
- data/spec/unit/scheduler/scheduler_spec.rb +1 -0
- data/spec/unit/scheduler/splay_job_spec.rb +2 -1
- data/spec/unit/settings/array_setting_spec.rb +1 -1
- data/spec/unit/settings/autosign_setting_spec.rb +9 -9
- data/spec/unit/settings/certificate_revocation_setting_spec.rb +1 -1
- data/spec/unit/settings/config_file_spec.rb +1 -0
- data/spec/unit/settings/directory_setting_spec.rb +7 -2
- data/spec/unit/settings/duration_setting_spec.rb +2 -1
- data/spec/unit/settings/enum_setting_spec.rb +1 -1
- data/spec/unit/settings/environment_conf_spec.rb +6 -4
- data/spec/unit/settings/file_setting_spec.rb +46 -44
- data/spec/unit/settings/path_setting_spec.rb +2 -1
- data/spec/unit/settings/priority_setting_spec.rb +2 -1
- data/spec/unit/settings/string_setting_spec.rb +15 -14
- data/spec/unit/settings/terminus_setting_spec.rb +2 -1
- data/spec/unit/settings/value_translator_spec.rb +1 -0
- data/spec/unit/settings_spec.rb +224 -253
- data/spec/unit/ssl/base_spec.rb +15 -14
- data/spec/unit/ssl/certificate_request_spec.rb +58 -62
- data/spec/unit/ssl/certificate_spec.rb +25 -23
- data/spec/unit/ssl/digest_spec.rb +1 -0
- data/spec/unit/ssl/host_spec.rb +149 -166
- data/spec/unit/ssl/key_spec.rb +31 -30
- data/spec/unit/ssl/validator_spec.rb +39 -40
- data/spec/unit/task_spec.rb +45 -44
- data/spec/unit/transaction/additional_resource_generator_spec.rb +5 -3
- data/spec/unit/transaction/event_manager_spec.rb +88 -87
- data/spec/unit/transaction/event_spec.rb +15 -16
- data/spec/unit/transaction/persistence_spec.rb +17 -16
- data/spec/unit/transaction/report_spec.rb +12 -11
- data/spec/unit/transaction/resource_harness_spec.rb +31 -52
- data/spec/unit/transaction_spec.rb +87 -140
- data/spec/unit/type/component_spec.rb +1 -0
- data/spec/unit/type/exec_spec.rb +50 -101
- data/spec/unit/type/file/checksum_spec.rb +10 -9
- data/spec/unit/type/file/checksum_value_spec.rb +32 -31
- data/spec/unit/type/file/content_spec.rb +61 -58
- data/spec/unit/type/file/ctime_spec.rb +1 -0
- data/spec/unit/type/file/ensure_spec.rb +13 -12
- data/spec/unit/type/file/group_spec.rb +7 -5
- data/spec/unit/type/file/mode_spec.rb +6 -4
- data/spec/unit/type/file/mtime_spec.rb +1 -0
- data/spec/unit/type/file/owner_spec.rb +8 -6
- data/spec/unit/type/file/selinux_spec.rb +19 -17
- data/spec/unit/type/file/source_spec.rb +101 -104
- data/spec/unit/type/file/type_spec.rb +1 -0
- data/spec/unit/type/file_spec.rb +185 -195
- data/spec/unit/type/filebucket_spec.rb +10 -11
- data/spec/unit/type/group_spec.rb +8 -6
- data/spec/unit/type/noop_metaparam_spec.rb +2 -1
- data/spec/unit/type/package/package_settings_spec.rb +23 -44
- data/spec/unit/type/package_spec.rb +57 -56
- data/spec/unit/type/resources_spec.rb +74 -72
- data/spec/unit/type/schedule_spec.rb +26 -24
- data/spec/unit/type/service_spec.rb +75 -49
- data/spec/unit/type/stage_spec.rb +1 -0
- data/spec/unit/type/tidy_spec.rb +62 -61
- data/spec/unit/type/user_spec.rb +25 -24
- data/spec/unit/type/whit_spec.rb +1 -0
- data/spec/unit/type_spec.rb +54 -55
- data/spec/unit/util/at_fork_spec.rb +19 -18
- data/spec/unit/util/autoload_spec.rb +56 -55
- data/spec/unit/util/backups_spec.rb +35 -34
- data/spec/unit/util/character_encoding_spec.rb +5 -5
- data/spec/unit/util/checksums_spec.rb +39 -38
- data/spec/unit/util/colors_spec.rb +2 -1
- data/spec/unit/util/command_line_spec.rb +20 -40
- data/spec/unit/util/constant_inflector_spec.rb +1 -0
- data/spec/unit/util/diff_spec.rb +8 -7
- data/spec/unit/util/errors_spec.rb +1 -0
- data/spec/unit/util/execution_spec.rb +163 -187
- data/spec/unit/util/execution_stub_spec.rb +1 -0
- data/spec/unit/util/feature_spec.rb +14 -21
- data/spec/unit/util/filetype_spec.rb +49 -49
- data/spec/unit/util/http_proxy_spec.rb +12 -12
- data/spec/unit/util/inifile_spec.rb +31 -26
- data/spec/unit/util/json_lockfile_spec.rb +5 -3
- data/spec/unit/util/ldap/connection_spec.rb +25 -26
- data/spec/unit/util/ldap/generator_spec.rb +1 -0
- data/spec/unit/util/ldap/manager_spec.rb +101 -102
- data/spec/unit/util/lockfile_spec.rb +1 -0
- data/spec/unit/util/log/destinations_spec.rb +33 -30
- data/spec/unit/util/log_spec.rb +34 -48
- data/spec/unit/util/logging_spec.rb +72 -58
- data/spec/unit/util/metric_spec.rb +1 -0
- data/spec/unit/util/monkey_patches_spec.rb +9 -7
- data/spec/unit/util/multi_match_spec.rb +1 -0
- data/spec/unit/util/network_device/config_spec.rb +1 -0
- data/spec/unit/util/network_device/transport/base_spec.rb +6 -5
- data/spec/unit/util/network_device_spec.rb +9 -7
- data/spec/unit/util/package_spec.rb +1 -0
- data/spec/unit/util/pidlock_spec.rb +15 -60
- data/spec/unit/util/plist_spec.rb +33 -40
- data/spec/unit/util/posix_spec.rb +51 -54
- data/spec/unit/util/rdoc_spec.rb +10 -9
- data/spec/unit/util/reference_spec.rb +1 -0
- data/spec/unit/util/resource_template_spec.rb +20 -20
- data/spec/unit/util/retry_action_spec.rb +8 -7
- data/spec/unit/util/rubygems_spec.rb +8 -7
- data/spec/unit/util/run_mode_spec.rb +4 -3
- data/spec/unit/util/selinux_spec.rb +72 -79
- data/spec/unit/util/splayer_spec.rb +9 -8
- data/spec/unit/util/ssl_spec.rb +1 -0
- data/spec/unit/util/storage_spec.rb +23 -22
- data/spec/unit/util/suidmanager_spec.rb +54 -45
- data/spec/unit/util/symbolic_file_mode_spec.rb +1 -0
- data/spec/unit/util/tag_set_spec.rb +1 -0
- data/spec/unit/util/tagging_spec.rb +1 -0
- data/spec/unit/util/terminal_spec.rb +10 -9
- data/spec/unit/util/user_attr_spec.rb +2 -1
- data/spec/unit/util/warnings_spec.rb +4 -3
- data/spec/unit/util/watcher/periodic_watcher_spec.rb +2 -2
- data/spec/unit/util/watcher_spec.rb +21 -51
- data/spec/unit/util/windows/access_control_entry_spec.rb +1 -0
- data/spec/unit/util/windows/access_control_list_spec.rb +1 -0
- data/spec/unit/util/windows/adsi_spec.rb +138 -136
- data/spec/unit/util/windows/api_types_spec.rb +1 -0
- data/spec/unit/util/windows/eventlog_spec.rb +12 -9
- data/spec/unit/util/windows/file_spec.rb +1 -0
- data/spec/unit/util/windows/root_certs_spec.rb +1 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +2 -0
- data/spec/unit/util/windows/service_spec.rb +103 -100
- data/spec/unit/util/windows/sid_spec.rb +13 -11
- data/spec/unit/util/windows/string_spec.rb +1 -0
- data/spec/unit/util_spec.rb +57 -55
- data/spec/unit/version_spec.rb +6 -6
- metadata +20 -32
- data/CODEOWNERS +0 -30
- data/ext/autotest/Rakefile +0 -8
- data/ext/autotest/config +0 -43
- data/ext/autotest/readme.rst +0 -16
- data/lib/puppet/confine/boolean.rb +0 -45
- data/lib/puppet/provider/package_targetable.rb +0 -68
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb +0 -11
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb +0 -11
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb +0 -11
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb +0 -12
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb +0 -9
- data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -7
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +0 -1
- data/spec/integration/network/http_pool_spec.rb +0 -120
- data/spec/integration/provider/file/windows_spec.rb +0 -162
- data/spec/lib/puppet_spec/https.rb +0 -166
- data/spec/unit/settings/server_list_setting_spec.rb +0 -21
- data/spec/watchr.rb +0 -137
@@ -1,3 +1,4 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
1
2
|
require 'spec_helper'
|
2
3
|
require 'puppet/util/character_encoding'
|
3
4
|
require 'puppet_spec/character_encoding'
|
@@ -21,7 +22,7 @@ describe Puppet::Util::CharacterEncoding do
|
|
21
22
|
let(:invalid_utf8_string) { "\xfd\xf1".force_encoding(Encoding::UTF_8) }
|
22
23
|
|
23
24
|
it "should issue a debug message" do
|
24
|
-
|
25
|
+
Puppet.expects(:debug).with(regexp_matches(/encoding is invalid/))
|
25
26
|
Puppet::Util::CharacterEncoding.convert_to_utf_8(invalid_utf8_string)
|
26
27
|
end
|
27
28
|
|
@@ -80,7 +81,7 @@ describe Puppet::Util::CharacterEncoding do
|
|
80
81
|
end
|
81
82
|
|
82
83
|
it "should issue a debug message that the string was not transcodable" do
|
83
|
-
|
84
|
+
Puppet.expects(:debug).with(regexp_matches(/cannot be transcoded/))
|
84
85
|
PuppetSpec::CharacterEncoding.with_external_encoding(Encoding::Windows_31J) do
|
85
86
|
Puppet::Util::CharacterEncoding.convert_to_utf_8(invalid_win_31j)
|
86
87
|
end
|
@@ -124,7 +125,7 @@ describe Puppet::Util::CharacterEncoding do
|
|
124
125
|
let(:euc_kr) { [253, 241].pack('C*').force_encoding(Encoding::ASCII) }
|
125
126
|
|
126
127
|
it "should issue a debug message" do
|
127
|
-
|
128
|
+
Puppet.expects(:debug).with(regexp_matches(/cannot be transcoded/))
|
128
129
|
Puppet::Util::CharacterEncoding.convert_to_utf_8(euc_kr)
|
129
130
|
end
|
130
131
|
|
@@ -166,9 +167,8 @@ describe Puppet::Util::CharacterEncoding do
|
|
166
167
|
# Invalid in UTF-8 without transcoding
|
167
168
|
let(:oslash) { [216].pack('C*').force_encoding(Encoding::ISO_8859_1) }
|
168
169
|
let(:foo) { 'foo' }
|
169
|
-
|
170
170
|
it "should issue a debug message" do
|
171
|
-
|
171
|
+
Puppet.expects(:debug).with(regexp_matches(/not valid UTF-8/))
|
172
172
|
Puppet::Util::CharacterEncoding.override_encoding_to_utf_8(oslash)
|
173
173
|
end
|
174
174
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
require 'puppet/util/checksums'
|
@@ -68,34 +69,34 @@ describe Puppet::Util::Checksums do
|
|
68
69
|
{:md5 => Digest::MD5, :sha1 => Digest::SHA1, :sha256 => Digest::SHA256, :sha512 => Digest::SHA512, :sha384 => Digest::SHA384}.each do |sum, klass|
|
69
70
|
describe("when using #{sum}") do
|
70
71
|
it "should use #{klass} to calculate string checksums" do
|
71
|
-
|
72
|
+
klass.expects(:hexdigest).with("mycontent").returns "whatever"
|
72
73
|
expect(@summer.send(sum, "mycontent")).to eq("whatever")
|
73
74
|
end
|
74
75
|
|
75
76
|
it "should use incremental #{klass} sums to calculate file checksums" do
|
76
|
-
digest =
|
77
|
-
|
77
|
+
digest = mock 'digest'
|
78
|
+
klass.expects(:new).returns digest
|
78
79
|
|
79
80
|
file = "/path/to/my/file"
|
80
81
|
|
81
|
-
fh =
|
82
|
-
|
82
|
+
fh = mock 'filehandle'
|
83
|
+
fh.expects(:read).with(4096).times(3).returns("firstline").then.returns("secondline").then.returns(nil)
|
83
84
|
|
84
|
-
|
85
|
+
File.expects(:open).with(file, "rb").yields(fh)
|
85
86
|
|
86
|
-
|
87
|
-
|
88
|
-
|
87
|
+
digest.expects(:<<).with "firstline"
|
88
|
+
digest.expects(:<<).with "secondline"
|
89
|
+
digest.expects(:hexdigest).returns :mydigest
|
89
90
|
|
90
91
|
expect(@summer.send(sum.to_s + "_file", file)).to eq(:mydigest)
|
91
92
|
end
|
92
93
|
|
93
94
|
it "should behave like #{klass} to calculate stream checksums" do
|
94
|
-
digest =
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
95
|
+
digest = mock 'digest'
|
96
|
+
klass.expects(:new).returns digest
|
97
|
+
digest.expects(:<<).with "firstline"
|
98
|
+
digest.expects(:<<).with "secondline"
|
99
|
+
digest.expects(:hexdigest).returns :mydigest
|
99
100
|
|
100
101
|
expect(@summer.send(sum.to_s + "_stream") do |checksum|
|
101
102
|
checksum << "firstline"
|
@@ -109,33 +110,33 @@ describe Puppet::Util::Checksums do
|
|
109
110
|
describe("when using #{sum}") do
|
110
111
|
it "should use #{klass} to calculate string checksums from the first 512 characters of the string" do
|
111
112
|
content = "this is a test" * 100
|
112
|
-
|
113
|
+
klass.expects(:hexdigest).with(content[0..511]).returns "whatever"
|
113
114
|
expect(@summer.send(sum, content)).to eq("whatever")
|
114
115
|
end
|
115
116
|
|
116
117
|
it "should use #{klass} to calculate a sum from the first 512 characters in the file" do
|
117
|
-
digest =
|
118
|
-
|
118
|
+
digest = mock 'digest'
|
119
|
+
klass.expects(:new).returns digest
|
119
120
|
|
120
121
|
file = "/path/to/my/file"
|
121
122
|
|
122
|
-
fh =
|
123
|
-
|
123
|
+
fh = mock 'filehandle'
|
124
|
+
fh.expects(:read).with(512).returns('my content')
|
124
125
|
|
125
|
-
|
126
|
+
File.expects(:open).with(file, "rb").yields(fh)
|
126
127
|
|
127
|
-
|
128
|
-
|
128
|
+
digest.expects(:<<).with "my content"
|
129
|
+
digest.expects(:hexdigest).returns :mydigest
|
129
130
|
|
130
131
|
expect(@summer.send(sum.to_s + "_file", file)).to eq(:mydigest)
|
131
132
|
end
|
132
133
|
|
133
134
|
it "should use #{klass} to calculate a sum from the first 512 characters in a stream" do
|
134
|
-
digest =
|
135
|
+
digest = mock 'digest'
|
135
136
|
content = "this is a test" * 100
|
136
|
-
|
137
|
-
|
138
|
-
|
137
|
+
klass.expects(:new).returns digest
|
138
|
+
digest.expects(:<<).with content[0..511]
|
139
|
+
digest.expects(:hexdigest).returns :mydigest
|
139
140
|
|
140
141
|
expect(@summer.send(sum.to_s + "_stream") do |checksum|
|
141
142
|
checksum << content
|
@@ -143,13 +144,13 @@ describe Puppet::Util::Checksums do
|
|
143
144
|
end
|
144
145
|
|
145
146
|
it "should use #{klass} to calculate a sum from the first 512 characters in a multi-part stream" do
|
146
|
-
digest =
|
147
|
+
digest = mock 'digest'
|
147
148
|
content = "this is a test" * 100
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
149
|
+
klass.expects(:new).returns digest
|
150
|
+
digest.expects(:<<).with content[0..5]
|
151
|
+
digest.expects(:<<).with content[6..510]
|
152
|
+
digest.expects(:<<).with content[511..511]
|
153
|
+
digest.expects(:hexdigest).returns :mydigest
|
153
154
|
|
154
155
|
expect(@summer.send(sum.to_s + "_stream") do |checksum|
|
155
156
|
checksum << content[0..5]
|
@@ -164,15 +165,15 @@ describe Puppet::Util::Checksums do
|
|
164
165
|
describe("when using #{sum}") do
|
165
166
|
it "should use the '#{sum}' on the file to determine the ctime" do
|
166
167
|
file = "/my/file"
|
167
|
-
stat =
|
168
|
-
|
168
|
+
stat = mock 'stat', sum => "mysum"
|
169
|
+
Puppet::FileSystem.expects(:stat).with(file).returns(stat)
|
169
170
|
|
170
171
|
expect(@summer.send(sum.to_s + "_file", file)).to eq("mysum")
|
171
172
|
end
|
172
173
|
|
173
174
|
it "should return nil for streams" do
|
174
|
-
expectation =
|
175
|
-
|
175
|
+
expectation = stub "expectation"
|
176
|
+
expectation.expects(:do_something!).at_least_once
|
176
177
|
expect(@summer.send(sum.to_s + "_stream"){ |checksum| checksum << "anything" ; expectation.do_something! }).to be_nil
|
177
178
|
end
|
178
179
|
end
|
@@ -184,8 +185,8 @@ describe Puppet::Util::Checksums do
|
|
184
185
|
end
|
185
186
|
|
186
187
|
it "should return an empty string for streams" do
|
187
|
-
expectation =
|
188
|
-
|
188
|
+
expectation = stub "expectation"
|
189
|
+
expectation.expects(:do_something!).at_least_once
|
189
190
|
expect(@summer.none_stream{ |checksum| checksum << "anything" ; expectation.do_something! }).to eq("")
|
190
191
|
end
|
191
192
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
describe Puppet::Util::Colors do
|
@@ -30,7 +31,7 @@ describe Puppet::Util::Colors do
|
|
30
31
|
it "should colorize console output" do
|
31
32
|
Puppet[:color] = true
|
32
33
|
|
33
|
-
|
34
|
+
subject.expects(:console_color).with(color, message)
|
34
35
|
subject.colorize(:black, message)
|
35
36
|
end
|
36
37
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
require 'puppet/face'
|
@@ -66,37 +67,16 @@ describe Puppet::Util::CommandLine do
|
|
66
67
|
end
|
67
68
|
end
|
68
69
|
|
69
|
-
%w{--help -h
|
70
|
-
it "should print help
|
70
|
+
%w{--help -h}.each do|arg|
|
71
|
+
it "should print help" do
|
71
72
|
commandline = Puppet::Util::CommandLine.new("puppet", [arg])
|
72
|
-
|
73
|
+
commandline.expects(:exec).never
|
73
74
|
|
74
75
|
expect {
|
75
76
|
commandline.execute
|
76
77
|
}.to have_printed(/Usage: puppet <subcommand> \[options\] <action> \[options\]/).and_exit_with(0)
|
77
78
|
end
|
78
79
|
end
|
79
|
-
|
80
|
-
it "should fail if the config file isn't readable and we're running a subcommand that requires a readable config file" do
|
81
|
-
allow(Puppet::FileSystem).to receive(:exist?).with(Puppet[:config]).and_return(true)
|
82
|
-
allow_any_instance_of(Puppet::Settings).to receive(:read_file).and_return('')
|
83
|
-
expect_any_instance_of(Puppet::Settings).to receive(:read_file).with(Puppet[:config]).and_raise('Permission denied')
|
84
|
-
|
85
|
-
expect{ described_class.new("puppet", ['config']).execute }.to raise_error(SystemExit)
|
86
|
-
end
|
87
|
-
|
88
|
-
it "should not fail if the config file isn't readable and we're running a subcommand that does not require a readable config file" do
|
89
|
-
allow(Puppet::FileSystem).to receive(:exist?)
|
90
|
-
allow(Puppet::FileSystem).to receive(:exist?).with(Puppet[:config]).and_return(true)
|
91
|
-
allow_any_instance_of(Puppet::Settings).to receive(:read_file).and_return('')
|
92
|
-
expect_any_instance_of(Puppet::Settings).to receive(:read_file).with(Puppet[:config]).and_raise('Permission denied')
|
93
|
-
|
94
|
-
commandline = described_class.new("puppet", ['help'])
|
95
|
-
|
96
|
-
expect {
|
97
|
-
commandline.execute
|
98
|
-
}.to have_printed(/Usage: puppet <subcommand> \[options\] <action> \[options\]/).and_exit_with(0)
|
99
|
-
end
|
100
80
|
end
|
101
81
|
|
102
82
|
describe "when dealing with puppet commands" do
|
@@ -108,19 +88,19 @@ describe Puppet::Util::CommandLine do
|
|
108
88
|
describe "when the subcommand is not implemented" do
|
109
89
|
it "should find and invoke an executable with a hyphenated name" do
|
110
90
|
commandline = Puppet::Util::CommandLine.new("puppet", ['whatever', 'argument'])
|
111
|
-
|
112
|
-
|
91
|
+
Puppet::Util.expects(:which).with('puppet-whatever').
|
92
|
+
returns('/dev/null/puppet-whatever')
|
113
93
|
|
114
|
-
|
94
|
+
Kernel.expects(:exec).with('/dev/null/puppet-whatever', 'argument')
|
115
95
|
|
116
96
|
commandline.execute
|
117
97
|
end
|
118
98
|
|
119
99
|
describe "and an external implementation cannot be found" do
|
120
100
|
it "should abort and show the usage message" do
|
121
|
-
|
101
|
+
Puppet::Util.expects(:which).with('puppet-whatever').returns(nil)
|
122
102
|
commandline = Puppet::Util::CommandLine.new("puppet", ['whatever', 'argument'])
|
123
|
-
|
103
|
+
commandline.expects(:exec).never
|
124
104
|
|
125
105
|
expect {
|
126
106
|
commandline.execute
|
@@ -128,9 +108,9 @@ describe Puppet::Util::CommandLine do
|
|
128
108
|
end
|
129
109
|
|
130
110
|
it "should abort and show the help message" do
|
131
|
-
|
111
|
+
Puppet::Util.expects(:which).with('puppet-whatever').returns(nil)
|
132
112
|
commandline = Puppet::Util::CommandLine.new("puppet", ['whatever', 'argument'])
|
133
|
-
|
113
|
+
commandline.expects(:exec).never
|
134
114
|
|
135
115
|
expect {
|
136
116
|
commandline.execute
|
@@ -139,9 +119,9 @@ describe Puppet::Util::CommandLine do
|
|
139
119
|
|
140
120
|
%w{--version -V}.each do |arg|
|
141
121
|
it "should abort and display #{arg} information" do
|
142
|
-
|
122
|
+
Puppet::Util.expects(:which).with('puppet-whatever').returns(nil)
|
143
123
|
commandline = Puppet::Util::CommandLine.new("puppet", ['whatever', arg])
|
144
|
-
|
124
|
+
commandline.expects(:exec).never
|
145
125
|
|
146
126
|
expect {
|
147
127
|
commandline.execute
|
@@ -157,11 +137,11 @@ describe Puppet::Util::CommandLine do
|
|
157
137
|
end
|
158
138
|
|
159
139
|
before :each do
|
160
|
-
|
140
|
+
Puppet::Util::CommandLine::ApplicationSubcommand.any_instance.stubs(:run)
|
161
141
|
end
|
162
142
|
|
163
143
|
it 'should never set priority by default' do
|
164
|
-
|
144
|
+
Process.expects(:setpriority).never
|
165
145
|
|
166
146
|
command_line.execute
|
167
147
|
end
|
@@ -169,15 +149,15 @@ describe Puppet::Util::CommandLine do
|
|
169
149
|
it 'should lower the process priority if one has been specified' do
|
170
150
|
Puppet[:priority] = 10
|
171
151
|
|
172
|
-
|
152
|
+
Process.expects(:setpriority).with(0, Process.pid, 10)
|
173
153
|
command_line.execute
|
174
154
|
end
|
175
155
|
|
176
156
|
it 'should warn if trying to raise priority, but not privileged user' do
|
177
157
|
Puppet[:priority] = -10
|
178
158
|
|
179
|
-
|
180
|
-
|
159
|
+
Process.expects(:setpriority).raises(Errno::EACCES, 'Permission denied')
|
160
|
+
Puppet.expects(:warning).with("Failed to set process priority to '-10'")
|
181
161
|
|
182
162
|
command_line.execute
|
183
163
|
end
|
@@ -185,8 +165,8 @@ describe Puppet::Util::CommandLine do
|
|
185
165
|
it "should warn if the platform doesn't support `Process.setpriority`" do
|
186
166
|
Puppet[:priority] = 15
|
187
167
|
|
188
|
-
|
189
|
-
|
168
|
+
Process.expects(:setpriority).raises(NotImplementedError, 'NotImplementedError: setpriority() function is unimplemented on this machine')
|
169
|
+
Puppet.expects(:warning).with("Failed to set process priority to '15'")
|
190
170
|
|
191
171
|
command_line.execute
|
192
172
|
end
|
data/spec/unit/util/diff_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
1
2
|
require 'spec_helper'
|
2
3
|
require 'puppet/util/diff'
|
3
4
|
require 'puppet/util/execution'
|
@@ -10,9 +11,9 @@ describe Puppet::Util::Diff do
|
|
10
11
|
Puppet[:diff] = 'foo'
|
11
12
|
Puppet[:diff_args] = 'bar'
|
12
13
|
|
13
|
-
|
14
|
+
Puppet::Util::Execution.expects(:execute)
|
14
15
|
.with(['foo', 'bar', 'a', 'b'], {:failonfail => false, :combine => false})
|
15
|
-
.
|
16
|
+
.returns(baz_output)
|
16
17
|
expect(subject.diff('a', 'b')).to eq('baz')
|
17
18
|
end
|
18
19
|
|
@@ -20,9 +21,9 @@ describe Puppet::Util::Diff do
|
|
20
21
|
Puppet[:diff] = 'foo'
|
21
22
|
Puppet[:diff_args] = 'bar qux'
|
22
23
|
|
23
|
-
|
24
|
+
Puppet::Util::Execution.expects(:execute)
|
24
25
|
.with(['foo', 'bar', 'qux', 'a', 'b'], anything)
|
25
|
-
.
|
26
|
+
.returns(baz_output)
|
26
27
|
expect(subject.diff('a', 'b')).to eq('baz')
|
27
28
|
end
|
28
29
|
|
@@ -30,16 +31,16 @@ describe Puppet::Util::Diff do
|
|
30
31
|
Puppet[:diff] = 'foo'
|
31
32
|
Puppet[:diff_args] = ''
|
32
33
|
|
33
|
-
|
34
|
+
Puppet::Util::Execution.expects(:execute)
|
34
35
|
.with(['foo', 'a', 'b'], {:failonfail => false, :combine => false})
|
35
|
-
.
|
36
|
+
.returns(baz_output)
|
36
37
|
expect(subject.diff('a', 'b')).to eq('baz')
|
37
38
|
end
|
38
39
|
|
39
40
|
it "should return empty string if the diff command is empty" do
|
40
41
|
Puppet[:diff] = ''
|
41
42
|
|
42
|
-
|
43
|
+
Puppet::Util::Execution.expects(:execute).never
|
43
44
|
expect(subject.diff('a', 'b')).to eq('')
|
44
45
|
end
|
45
46
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
1
2
|
# encoding: UTF-8
|
2
3
|
require 'spec_helper'
|
3
4
|
require 'puppet/file_system/uniquefile'
|
@@ -5,12 +6,10 @@ require 'puppet_spec/character_encoding'
|
|
5
6
|
|
6
7
|
describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
7
8
|
include Puppet::Util::Execution
|
8
|
-
|
9
9
|
# utility methods to help us test some private methods without being quite so verbose
|
10
10
|
def call_exec_posix(command, arguments, stdin, stdout, stderr)
|
11
11
|
Puppet::Util::Execution.send(:execute_posix, command, arguments, stdin, stdout, stderr)
|
12
12
|
end
|
13
|
-
|
14
13
|
def call_exec_windows(command, arguments, stdin, stdout, stderr)
|
15
14
|
Puppet::Util::Execution.send(:execute_windows, command, arguments, stdin, stdout, stderr)
|
16
15
|
end
|
@@ -19,35 +18,36 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
19
18
|
let(:pid) { 5501 }
|
20
19
|
let(:process_handle) { 0xDEADBEEF }
|
21
20
|
let(:thread_handle) { 0xCAFEBEEF }
|
22
|
-
let(:proc_info_stub) {
|
21
|
+
let(:proc_info_stub) { stub 'processinfo', :process_handle => process_handle, :thread_handle => thread_handle, :process_id => pid}
|
23
22
|
let(:null_file) { Puppet::Util::Platform.windows? ? 'NUL' : '/dev/null' }
|
24
23
|
|
25
24
|
def stub_process_wait(exitstatus)
|
26
25
|
if Puppet::Util::Platform.windows?
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
Puppet::Util::Windows::Process.stubs(:wait_process).with(process_handle).returns(exitstatus)
|
27
|
+
FFI::WIN32.stubs(:CloseHandle).with(process_handle)
|
28
|
+
FFI::WIN32.stubs(:CloseHandle).with(thread_handle)
|
30
29
|
else
|
31
|
-
|
32
|
-
|
30
|
+
Process.stubs(:waitpid2).with(pid, Process::WNOHANG).returns(nil, [pid, stub('child_status', :exitstatus => exitstatus)])
|
31
|
+
Process.stubs(:waitpid2).with(pid).returns([pid, stub('child_status', :exitstatus => exitstatus)])
|
33
32
|
end
|
34
33
|
end
|
35
34
|
|
35
|
+
|
36
36
|
describe "#execute_posix (stubs)", :unless => Puppet::Util::Platform.windows? do
|
37
37
|
before :each do
|
38
38
|
# Most of the things this method does are bad to do during specs. :/
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
39
|
+
Kernel.stubs(:fork).returns(pid).yields
|
40
|
+
Process.stubs(:setsid)
|
41
|
+
Kernel.stubs(:exec)
|
42
|
+
Puppet::Util::SUIDManager.stubs(:change_user)
|
43
|
+
Puppet::Util::SUIDManager.stubs(:change_group)
|
44
44
|
|
45
45
|
# ensure that we don't really close anything!
|
46
|
-
|
46
|
+
(0..256).each {|n| IO.stubs(:new) }
|
47
47
|
|
48
|
-
|
49
|
-
|
50
|
-
|
48
|
+
$stdin.stubs(:reopen)
|
49
|
+
$stdout.stubs(:reopen)
|
50
|
+
$stderr.stubs(:reopen)
|
51
51
|
|
52
52
|
@stdin = File.open(null_file, 'r')
|
53
53
|
@stdout = Puppet::FileSystem::Uniquefile.new('stdout')
|
@@ -80,41 +80,41 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
80
80
|
|
81
81
|
|
82
82
|
it "should fork a child process to execute the command" do
|
83
|
-
|
84
|
-
|
83
|
+
Kernel.expects(:fork).returns(pid).yields
|
84
|
+
Kernel.expects(:exec).with('test command')
|
85
85
|
|
86
86
|
call_exec_posix('test command', {}, @stdin, @stdout, @stderr)
|
87
87
|
end
|
88
88
|
|
89
89
|
it "should start a new session group" do
|
90
|
-
|
90
|
+
Process.expects(:setsid)
|
91
91
|
|
92
92
|
call_exec_posix('test command', {}, @stdin, @stdout, @stderr)
|
93
93
|
end
|
94
94
|
|
95
95
|
it "should permanently change to the correct user and group if specified" do
|
96
|
-
|
97
|
-
|
96
|
+
Puppet::Util::SUIDManager.expects(:change_group).with(55, true)
|
97
|
+
Puppet::Util::SUIDManager.expects(:change_user).with(50, true)
|
98
98
|
|
99
99
|
call_exec_posix('test command', {:uid => 50, :gid => 55}, @stdin, @stdout, @stderr)
|
100
100
|
end
|
101
101
|
|
102
102
|
it "should exit failure if there is a problem execing the command" do
|
103
|
-
|
104
|
-
|
105
|
-
|
103
|
+
Kernel.expects(:exec).with('test command').raises("failed to execute!")
|
104
|
+
Puppet::Util::Execution.stubs(:puts)
|
105
|
+
Puppet::Util::Execution.expects(:exit!).with(1)
|
106
106
|
|
107
107
|
call_exec_posix('test command', {}, @stdin, @stdout, @stderr)
|
108
108
|
end
|
109
109
|
|
110
110
|
it "should properly execute commands specified as arrays" do
|
111
|
-
|
111
|
+
Kernel.expects(:exec).with('test command', 'with', 'arguments')
|
112
112
|
|
113
113
|
call_exec_posix(['test command', 'with', 'arguments'], {:uid => 50, :gid => 55}, @stdin, @stdout, @stderr)
|
114
114
|
end
|
115
115
|
|
116
116
|
it "should properly execute string commands with embedded newlines" do
|
117
|
-
|
117
|
+
Kernel.expects(:exec).with("/bin/echo 'foo' ; \n /bin/echo 'bar' ;")
|
118
118
|
|
119
119
|
call_exec_posix("/bin/echo 'foo' ; \n /bin/echo 'bar' ;", {:uid => 50, :gid => 55}, @stdin, @stdout, @stderr)
|
120
120
|
end
|
@@ -123,8 +123,8 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
123
123
|
let(:cwd) { 'cwd' }
|
124
124
|
|
125
125
|
it 'should run the command in the specified working directory' do
|
126
|
-
|
127
|
-
|
126
|
+
Dir.expects(:chdir).with(cwd)
|
127
|
+
Kernel.expects(:exec).with('test command')
|
128
128
|
|
129
129
|
call_exec_posix('test command', { :cwd => cwd }, @stdin, @stdout, @stderr)
|
130
130
|
end
|
@@ -137,7 +137,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
137
137
|
|
138
138
|
describe "#execute_windows (stubs)", :if => Puppet::Util::Platform.windows? do
|
139
139
|
before :each do
|
140
|
-
|
140
|
+
Process.stubs(:create).returns(proc_info_stub)
|
141
141
|
stub_process_wait(0)
|
142
142
|
|
143
143
|
@stdin = File.open(null_file, 'r')
|
@@ -146,11 +146,11 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
146
146
|
end
|
147
147
|
|
148
148
|
it "should create a new process for the command" do
|
149
|
-
|
149
|
+
Process.expects(:create).with(
|
150
150
|
:command_line => "test command",
|
151
151
|
:startup_info => {:stdin => @stdin, :stdout => @stdout, :stderr => @stderr},
|
152
152
|
:close_handles => false
|
153
|
-
).
|
153
|
+
).returns(proc_info_stub)
|
154
154
|
|
155
155
|
call_exec_windows('test command', {}, @stdin, @stdout, @stderr)
|
156
156
|
end
|
@@ -158,15 +158,15 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
158
158
|
context 'cwd option' do
|
159
159
|
let(:cwd) { 'cwd' }
|
160
160
|
it "should execute the command in the specified working directory" do
|
161
|
-
|
161
|
+
Dir.expects(:chdir).with(cwd).yields
|
162
|
+
Process.expects(:create).with(
|
162
163
|
:command_line => "test command",
|
163
164
|
:startup_info => {
|
164
165
|
:stdin => @stdin,
|
165
166
|
:stdout => @stdout,
|
166
167
|
:stderr => @stderr
|
167
168
|
},
|
168
|
-
:close_handles => false
|
169
|
-
:cwd => cwd
|
169
|
+
:close_handles => false
|
170
170
|
)
|
171
171
|
|
172
172
|
call_exec_windows('test command', { :cwd => cwd }, @stdin, @stdout, @stderr)
|
@@ -176,7 +176,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
176
176
|
context 'suppress_window option' do
|
177
177
|
let(:cwd) { 'cwd' }
|
178
178
|
it "should execute the command in the specified working directory" do
|
179
|
-
|
179
|
+
Process.expects(:create).with(
|
180
180
|
:command_line => "test command",
|
181
181
|
:startup_info => {
|
182
182
|
:stdin => @stdin,
|
@@ -196,7 +196,9 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
196
196
|
end
|
197
197
|
|
198
198
|
it "should quote arguments containing spaces if command is specified as an array" do
|
199
|
-
|
199
|
+
Process.expects(:create).with do |args|
|
200
|
+
args[:command_line] == '"test command" with some "arguments \"with spaces"'
|
201
|
+
end.returns(proc_info_stub)
|
200
202
|
|
201
203
|
call_exec_windows(['test command', 'with', 'some', 'arguments "with spaces'], {}, @stdin, @stdout, @stderr)
|
202
204
|
end
|
@@ -219,8 +221,8 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
219
221
|
end
|
220
222
|
|
221
223
|
it "should not actually execute anything" do
|
222
|
-
|
223
|
-
|
224
|
+
Puppet::Util::Execution.expects(:execute_posix).never
|
225
|
+
Puppet::Util::Execution.expects(:execute_windows).never
|
224
226
|
|
225
227
|
Puppet::Util::Execution.execute("/usr/bin/run_my_execute_stub")
|
226
228
|
end
|
@@ -232,37 +234,33 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
232
234
|
let(:rval) { Puppet::Util::Platform.windows? ? proc_info_stub : pid }
|
233
235
|
|
234
236
|
before :each do
|
235
|
-
|
237
|
+
Puppet::Util::Execution.stubs(:wait_for_output)
|
236
238
|
end
|
237
239
|
|
238
240
|
it "should set stdin to the stdinfile if specified" do
|
239
241
|
input = tmpfile('stdin')
|
240
242
|
FileUtils.touch(input)
|
241
243
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
end
|
244
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,stdin,_,_|
|
245
|
+
stdin.path == input
|
246
|
+
end.returns(rval)
|
246
247
|
|
247
248
|
Puppet::Util::Execution.execute('test command', :stdinfile => input)
|
248
249
|
end
|
249
250
|
|
250
251
|
it "should set stdin to the null file if not specified" do
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
end
|
252
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,stdin,_,_|
|
253
|
+
stdin.path == null_file
|
254
|
+
end.returns(rval)
|
255
255
|
|
256
256
|
Puppet::Util::Execution.execute('test command')
|
257
257
|
end
|
258
258
|
|
259
259
|
describe "when squelch is set" do
|
260
260
|
it "should set stdout and stderr to the null file" do
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
rval
|
265
|
-
end
|
261
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
|
262
|
+
stdout.path == null_file and stderr.path == null_file
|
263
|
+
end.returns(rval)
|
266
264
|
|
267
265
|
Puppet::Util::Execution.execute('test command', :squelch => true)
|
268
266
|
end
|
@@ -270,18 +268,18 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
270
268
|
|
271
269
|
describe "cwd option" do
|
272
270
|
def expect_cwd_to_be(cwd)
|
273
|
-
|
271
|
+
Puppet::Util::Execution.expects(executor).with(
|
274
272
|
anything,
|
275
|
-
|
273
|
+
has_entries(:cwd => cwd),
|
276
274
|
anything,
|
277
275
|
anything,
|
278
276
|
anything
|
279
|
-
).
|
277
|
+
).returns(rval)
|
280
278
|
end
|
281
279
|
|
282
280
|
it 'should raise an ArgumentError if the specified working directory does not exist' do
|
283
281
|
cwd = 'cwd'
|
284
|
-
|
282
|
+
Puppet::FileSystem.stubs(:directory?).with(cwd).returns(false)
|
285
283
|
|
286
284
|
expect {
|
287
285
|
Puppet::Util::Execution.execute('test command', cwd: cwd)
|
@@ -292,7 +290,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
292
290
|
end
|
293
291
|
|
294
292
|
it "should set the cwd to the user-specified one" do
|
295
|
-
|
293
|
+
Puppet::FileSystem.stubs(:directory?).with('cwd').returns(true)
|
296
294
|
expect_cwd_to_be('cwd')
|
297
295
|
Puppet::Util::Execution.execute('test command', cwd: 'cwd')
|
298
296
|
end
|
@@ -301,55 +299,49 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
301
299
|
describe "on POSIX", :if => Puppet.features.posix? do
|
302
300
|
describe "when squelch is not set" do
|
303
301
|
it "should set stdout to a pipe" do
|
304
|
-
|
302
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,_|
|
303
|
+
stdout.class == IO
|
304
|
+
end.returns(rval)
|
305
305
|
|
306
306
|
Puppet::Util::Execution.execute('test command', :squelch => false)
|
307
307
|
end
|
308
308
|
|
309
309
|
it "should set stderr to the same file as stdout if combine is true" do
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
end
|
310
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
|
311
|
+
stdout == stderr
|
312
|
+
end.returns(rval)
|
314
313
|
|
315
314
|
Puppet::Util::Execution.execute('test command', :squelch => false, :combine => true)
|
316
315
|
end
|
317
316
|
|
318
317
|
it "should set stderr to the null device if combine is false" do
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
rval
|
323
|
-
end
|
318
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
|
319
|
+
stdout.class == IO and stderr.path == null_file
|
320
|
+
end.returns(rval)
|
324
321
|
|
325
322
|
Puppet::Util::Execution.execute('test command', :squelch => false, :combine => false)
|
326
323
|
end
|
327
324
|
|
328
325
|
it "should default combine to true when no options are specified" do
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
end
|
326
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
|
327
|
+
stdout == stderr
|
328
|
+
end.returns(rval)
|
333
329
|
|
334
330
|
Puppet::Util::Execution.execute('test command')
|
335
331
|
end
|
336
332
|
|
337
333
|
it "should default combine to false when options are specified, but combine is not" do
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
rval
|
342
|
-
end
|
334
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
|
335
|
+
stdout.class == IO and stderr.path == null_file
|
336
|
+
end.returns(rval)
|
343
337
|
|
344
338
|
Puppet::Util::Execution.execute('test command', :failonfail => false)
|
345
339
|
end
|
346
340
|
|
347
341
|
it "should default combine to false when an empty hash of options is specified" do
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
rval
|
352
|
-
end
|
342
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
|
343
|
+
stdout.class == IO and stderr.path == null_file
|
344
|
+
end.returns(rval)
|
353
345
|
|
354
346
|
Puppet::Util::Execution.execute('test command', {})
|
355
347
|
end
|
@@ -360,90 +352,77 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
360
352
|
describe "when squelch is not set" do
|
361
353
|
it "should set stdout to a temporary output file" do
|
362
354
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
363
|
-
|
355
|
+
Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
|
364
356
|
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
end
|
357
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,_|
|
358
|
+
stdout.path == outfile.path
|
359
|
+
end.returns(rval)
|
369
360
|
|
370
361
|
Puppet::Util::Execution.execute('test command', :squelch => false)
|
371
362
|
end
|
372
363
|
|
373
364
|
it "should set stderr to the same file as stdout if combine is true" do
|
374
365
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
375
|
-
|
366
|
+
Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
|
376
367
|
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
rval
|
381
|
-
end
|
368
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
|
369
|
+
stdout.path == outfile.path and stderr.path == outfile.path
|
370
|
+
end.returns(rval)
|
382
371
|
|
383
372
|
Puppet::Util::Execution.execute('test command', :squelch => false, :combine => true)
|
384
373
|
end
|
385
374
|
|
386
375
|
it "should set stderr to the null device if combine is false" do
|
387
376
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
388
|
-
|
377
|
+
Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
|
389
378
|
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
rval
|
394
|
-
end
|
379
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
|
380
|
+
stdout.path == outfile.path and stderr.path == null_file
|
381
|
+
end.returns(rval)
|
395
382
|
|
396
383
|
Puppet::Util::Execution.execute('test command', :squelch => false, :combine => false)
|
397
384
|
end
|
398
385
|
|
399
386
|
it "should combine stdout and stderr if combine is true" do
|
400
387
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
401
|
-
|
388
|
+
Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
|
402
389
|
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
rval
|
407
|
-
end
|
390
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
|
391
|
+
stdout.path == outfile.path and stderr.path == outfile.path
|
392
|
+
end.returns(rval)
|
408
393
|
|
409
394
|
Puppet::Util::Execution.execute('test command', :combine => true)
|
410
395
|
end
|
411
396
|
|
412
397
|
it "should default combine to true when no options are specified" do
|
413
398
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
414
|
-
|
399
|
+
Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
|
415
400
|
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
rval
|
420
|
-
end
|
401
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
|
402
|
+
stdout.path == outfile.path and stderr.path == outfile.path
|
403
|
+
end.returns(rval)
|
421
404
|
|
422
405
|
Puppet::Util::Execution.execute('test command')
|
423
406
|
end
|
424
407
|
|
425
408
|
it "should default combine to false when options are specified, but combine is not" do
|
426
409
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
427
|
-
|
410
|
+
Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
|
428
411
|
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
rval
|
433
|
-
end
|
412
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
|
413
|
+
stdout.path == outfile.path and stderr.path == null_file
|
414
|
+
end.returns(rval)
|
434
415
|
|
435
416
|
Puppet::Util::Execution.execute('test command', :failonfail => false)
|
436
417
|
end
|
437
418
|
|
438
419
|
it "should default combine to false when an empty hash of options is specified" do
|
439
420
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
440
|
-
|
421
|
+
Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
|
441
422
|
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
rval
|
446
|
-
end
|
423
|
+
Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
|
424
|
+
stdout.path == outfile.path and stderr.path == null_file
|
425
|
+
end.returns(rval)
|
447
426
|
|
448
427
|
Puppet::Util::Execution.execute('test command', {})
|
449
428
|
end
|
@@ -453,11 +432,11 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
453
432
|
|
454
433
|
describe "on Windows", :if => Puppet::Util::Platform.windows? do
|
455
434
|
it "should always close the process and thread handles" do
|
456
|
-
|
435
|
+
Puppet::Util::Execution.stubs(:execute_windows).returns(proc_info_stub)
|
457
436
|
|
458
|
-
|
459
|
-
|
460
|
-
|
437
|
+
Puppet::Util::Windows::Process.expects(:wait_process).with(process_handle).raises('whatever')
|
438
|
+
FFI::WIN32.expects(:CloseHandle).with(thread_handle)
|
439
|
+
FFI::WIN32.expects(:CloseHandle).with(process_handle)
|
461
440
|
|
462
441
|
expect { Puppet::Util::Execution.execute('test command') }.to raise_error(RuntimeError)
|
463
442
|
end
|
@@ -465,9 +444,9 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
465
444
|
it "should return the correct exit status even when exit status is greater than 256" do
|
466
445
|
real_exit_status = 3010
|
467
446
|
|
468
|
-
|
447
|
+
Puppet::Util::Execution.stubs(:execute_windows).returns(proc_info_stub)
|
469
448
|
stub_process_wait(real_exit_status)
|
470
|
-
|
449
|
+
Puppet::Util::Execution.stubs(:exitstatus).returns(real_exit_status % 256) # The exitstatus is changed to be mod 256 so that ruby can fit it into 8 bits.
|
471
450
|
|
472
451
|
expect(Puppet::Util::Execution.execute('test command', :failonfail => false).exitstatus).to eq(real_exit_status)
|
473
452
|
end
|
@@ -475,6 +454,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
475
454
|
end
|
476
455
|
|
477
456
|
describe "#execute (posix locale)", :unless => Puppet::Util::Platform.windows? do
|
457
|
+
|
478
458
|
before :each do
|
479
459
|
# there is a danger here that ENV will be modified by exec_posix. Normally it would only affect the ENV
|
480
460
|
# of a forked process, but, in some of the previous tests in this file we're stubbing Kernel.fork., which could
|
@@ -493,6 +473,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
493
473
|
expect(cur_env.keys - @saved_env.keys).to eq([])
|
494
474
|
end
|
495
475
|
|
476
|
+
|
496
477
|
# build up a printf-style string that contains a command to get the value of an environment variable
|
497
478
|
# from the operating system. We can substitute into this with the names of the desired environment variables later.
|
498
479
|
get_env_var_cmd = 'echo $%s'
|
@@ -593,6 +574,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
593
574
|
# ensure that after the exec, our temporary env is still intact
|
594
575
|
expect(ENV[var]).to eq(user_sentinel_env[var])
|
595
576
|
end
|
577
|
+
|
596
578
|
end
|
597
579
|
end
|
598
580
|
|
@@ -618,6 +600,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
618
600
|
expect(ENV[var]).to eq(user_sentinel_env[var])
|
619
601
|
end
|
620
602
|
end
|
603
|
+
|
621
604
|
end
|
622
605
|
end
|
623
606
|
|
@@ -626,54 +609,46 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
626
609
|
stub_process_wait(0)
|
627
610
|
|
628
611
|
if Puppet::Util::Platform.windows?
|
629
|
-
|
612
|
+
Puppet::Util::Execution.stubs(:execute_windows).returns(proc_info_stub)
|
630
613
|
else
|
631
|
-
|
614
|
+
Puppet::Util::Execution.stubs(:execute_posix).returns(pid)
|
632
615
|
end
|
633
616
|
end
|
634
617
|
|
635
618
|
it "should log if no uid or gid specified" do
|
636
|
-
|
619
|
+
Puppet::Util::Execution.expects(:debug).with("Executing: 'echo hello'")
|
637
620
|
Puppet::Util::Execution.execute('echo hello')
|
638
621
|
end
|
639
|
-
|
640
622
|
it "should log numeric uid if specified" do
|
641
|
-
|
623
|
+
Puppet::Util::Execution.expects(:debug).with("Executing with uid=100: 'echo hello'")
|
642
624
|
Puppet::Util::Execution.execute('echo hello', {:uid => 100})
|
643
625
|
end
|
644
|
-
|
645
626
|
it "should log numeric gid if specified" do
|
646
|
-
|
627
|
+
Puppet::Util::Execution.expects(:debug).with("Executing with gid=500: 'echo hello'")
|
647
628
|
Puppet::Util::Execution.execute('echo hello', {:gid => 500})
|
648
629
|
end
|
649
|
-
|
650
630
|
it "should log numeric uid and gid if specified" do
|
651
|
-
|
631
|
+
Puppet::Util::Execution.expects(:debug).with("Executing with uid=100 gid=500: 'echo hello'")
|
652
632
|
Puppet::Util::Execution.execute('echo hello', {:uid => 100, :gid => 500})
|
653
633
|
end
|
654
|
-
|
655
634
|
it "should log string uid if specified" do
|
656
|
-
|
635
|
+
Puppet::Util::Execution.expects(:debug).with("Executing with uid=myuser: 'echo hello'")
|
657
636
|
Puppet::Util::Execution.execute('echo hello', {:uid => 'myuser'})
|
658
637
|
end
|
659
|
-
|
660
638
|
it "should log string gid if specified" do
|
661
|
-
|
639
|
+
Puppet::Util::Execution.expects(:debug).with("Executing with gid=mygroup: 'echo hello'")
|
662
640
|
Puppet::Util::Execution.execute('echo hello', {:gid => 'mygroup'})
|
663
641
|
end
|
664
|
-
|
665
642
|
it "should log string uid and gid if specified" do
|
666
|
-
|
643
|
+
Puppet::Util::Execution.expects(:debug).with("Executing with uid=myuser gid=mygroup: 'echo hello'")
|
667
644
|
Puppet::Util::Execution.execute('echo hello', {:uid => 'myuser', :gid => 'mygroup'})
|
668
645
|
end
|
669
|
-
|
670
646
|
it "should log numeric uid and string gid if specified" do
|
671
|
-
|
647
|
+
Puppet::Util::Execution.expects(:debug).with("Executing with uid=100 gid=mygroup: 'echo hello'")
|
672
648
|
Puppet::Util::Execution.execute('echo hello', {:uid => 100, :gid => 'mygroup'})
|
673
649
|
end
|
674
|
-
|
675
650
|
it 'should redact commands in debug output when passed sensitive option' do
|
676
|
-
|
651
|
+
Puppet::Util::Execution.expects(:debug).with("Executing: '[redacted]'")
|
677
652
|
Puppet::Util::Execution.execute('echo hello', {:sensitive => true})
|
678
653
|
end
|
679
654
|
end
|
@@ -683,27 +658,29 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
683
658
|
stub_process_wait(0)
|
684
659
|
|
685
660
|
if Puppet::Util::Platform.windows?
|
686
|
-
|
661
|
+
Puppet::Util::Execution.stubs(:execute_windows).returns(proc_info_stub)
|
687
662
|
else
|
688
|
-
|
663
|
+
Puppet::Util::Execution.stubs(:execute_posix).returns(pid)
|
689
664
|
end
|
690
665
|
end
|
691
666
|
|
692
667
|
it "should wait for the child process to exit" do
|
693
|
-
|
668
|
+
Puppet::Util::Execution.stubs(:wait_for_output)
|
694
669
|
|
695
670
|
Puppet::Util::Execution.execute('test command')
|
696
671
|
end
|
697
672
|
|
698
673
|
it "should close the stdin/stdout/stderr files used by the child" do
|
699
|
-
stdin =
|
700
|
-
stdout =
|
701
|
-
stderr =
|
702
|
-
[stdin, stdout, stderr].each {|io|
|
674
|
+
stdin = mock 'file'
|
675
|
+
stdout = mock 'file'
|
676
|
+
stderr = mock 'file'
|
677
|
+
[stdin, stdout, stderr].each {|io| io.expects(:close).at_least_once}
|
703
678
|
|
704
|
-
|
705
|
-
|
706
|
-
|
679
|
+
File.expects(:open).
|
680
|
+
times(3).
|
681
|
+
returns(stdin).
|
682
|
+
then.returns(stdout).
|
683
|
+
then.returns(stderr)
|
707
684
|
|
708
685
|
Puppet::Util::Execution.execute('test command', {:squelch => true, :combine => false})
|
709
686
|
end
|
@@ -712,7 +689,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
712
689
|
context "reading the output" do
|
713
690
|
before :each do
|
714
691
|
r, w = IO.pipe
|
715
|
-
|
692
|
+
IO.expects(:pipe).returns([r, w])
|
716
693
|
w.write("My expected \u2744 command output")
|
717
694
|
end
|
718
695
|
|
@@ -734,14 +711,14 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
734
711
|
end
|
735
712
|
|
736
713
|
it "should not read the output if squelch is true" do
|
737
|
-
|
714
|
+
IO.expects(:pipe).never
|
738
715
|
|
739
716
|
expect(Puppet::Util::Execution.execute('test command', :squelch => true)).to eq('')
|
740
717
|
end
|
741
718
|
|
742
719
|
it "should close the pipe used for output if squelch is false" do
|
743
720
|
r, w = IO.pipe
|
744
|
-
|
721
|
+
IO.expects(:pipe).returns([r, w])
|
745
722
|
|
746
723
|
expect(Puppet::Util::Execution.execute('test command')).to eq("")
|
747
724
|
expect(r.closed?)
|
@@ -750,12 +727,12 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
750
727
|
|
751
728
|
it "should close the pipe used for output if squelch is false and an error is raised" do
|
752
729
|
r, w = IO.pipe
|
753
|
-
|
730
|
+
IO.expects(:pipe).returns([r, w])
|
754
731
|
|
755
732
|
if Puppet::Util::Platform.windows?
|
756
|
-
|
733
|
+
Puppet::Util::Execution.expects(:execute_windows).raises(Exception, 'execution failed')
|
757
734
|
else
|
758
|
-
|
735
|
+
Puppet::Util::Execution.expects(:execute_posix).raises(Exception, 'execution failed')
|
759
736
|
end
|
760
737
|
|
761
738
|
expect {
|
@@ -765,12 +742,11 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
765
742
|
expect(w.closed?)
|
766
743
|
end
|
767
744
|
end
|
768
|
-
|
769
745
|
describe "on Windows", :if => Puppet::Util::Platform.windows? do
|
770
746
|
context "reading the output" do
|
771
747
|
before :each do
|
772
748
|
stdout = Puppet::FileSystem::Uniquefile.new('test')
|
773
|
-
|
749
|
+
Puppet::FileSystem::Uniquefile.stubs(:new).returns(stdout)
|
774
750
|
stdout.write("My expected \u2744 command output")
|
775
751
|
end
|
776
752
|
|
@@ -793,7 +769,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
793
769
|
|
794
770
|
it "should not read the output if squelch is true" do
|
795
771
|
stdout = Puppet::FileSystem::Uniquefile.new('test')
|
796
|
-
|
772
|
+
Puppet::FileSystem::Uniquefile.stubs(:new).returns(stdout)
|
797
773
|
stdout.write("My expected command output")
|
798
774
|
|
799
775
|
expect(Puppet::Util::Execution.execute('test command', :squelch => true)).to eq('')
|
@@ -802,7 +778,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
802
778
|
it "should delete the file used for output if squelch is false" do
|
803
779
|
stdout = Puppet::FileSystem::Uniquefile.new('test')
|
804
780
|
path = stdout.path
|
805
|
-
|
781
|
+
Puppet::FileSystem::Uniquefile.stubs(:new).returns(stdout)
|
806
782
|
|
807
783
|
Puppet::Util::Execution.execute('test command')
|
808
784
|
|
@@ -811,7 +787,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
811
787
|
|
812
788
|
it "should not raise an error if the file is open" do
|
813
789
|
stdout = Puppet::FileSystem::Uniquefile.new('test')
|
814
|
-
|
790
|
+
Puppet::FileSystem::Uniquefile.stubs(:new).returns(stdout)
|
815
791
|
|
816
792
|
Puppet::Util::Execution.execute('test command')
|
817
793
|
end
|
@@ -881,68 +857,68 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
|
|
881
857
|
|
882
858
|
describe "#execpipe" do
|
883
859
|
it "should execute a string as a string" do
|
884
|
-
|
885
|
-
|
860
|
+
Puppet::Util::Execution.expects(:open).with('| echo hello 2>&1').returns('hello')
|
861
|
+
Puppet::Util::Execution.expects(:exitstatus).returns(0)
|
886
862
|
expect(Puppet::Util::Execution.execpipe('echo hello')).to eq('hello')
|
887
863
|
end
|
888
864
|
|
889
865
|
it "should print meaningful debug message for string argument" do
|
890
|
-
|
891
|
-
|
892
|
-
|
866
|
+
Puppet::Util::Execution.expects(:debug).with("Executing 'echo hello'")
|
867
|
+
Puppet::Util::Execution.expects(:open).with('| echo hello 2>&1').returns('hello')
|
868
|
+
Puppet::Util::Execution.expects(:exitstatus).returns(0)
|
893
869
|
Puppet::Util::Execution.execpipe('echo hello')
|
894
870
|
end
|
895
871
|
|
896
872
|
it "should print meaningful debug message for array argument" do
|
897
|
-
|
898
|
-
|
899
|
-
|
873
|
+
Puppet::Util::Execution.expects(:debug).with("Executing 'echo hello'")
|
874
|
+
Puppet::Util::Execution.expects(:open).with('| echo hello 2>&1').returns('hello')
|
875
|
+
Puppet::Util::Execution.expects(:exitstatus).returns(0)
|
900
876
|
Puppet::Util::Execution.execpipe(['echo','hello'])
|
901
877
|
end
|
902
878
|
|
903
879
|
it "should execute an array by pasting together with spaces" do
|
904
|
-
|
905
|
-
|
880
|
+
Puppet::Util::Execution.expects(:open).with('| echo hello 2>&1').returns('hello')
|
881
|
+
Puppet::Util::Execution.expects(:exitstatus).returns(0)
|
906
882
|
expect(Puppet::Util::Execution.execpipe(['echo', 'hello'])).to eq('hello')
|
907
883
|
end
|
908
884
|
|
909
885
|
it "should fail if asked to fail, and the child does" do
|
910
|
-
|
911
|
-
|
886
|
+
Puppet::Util::Execution.stubs(:open).with('| echo hello 2>&1').returns('error message')
|
887
|
+
Puppet::Util::Execution.expects(:exitstatus).returns(1)
|
912
888
|
expect {
|
913
889
|
Puppet::Util::Execution.execpipe('echo hello')
|
914
890
|
}.to raise_error Puppet::ExecutionFailure, /error message/
|
915
891
|
end
|
916
892
|
|
917
893
|
it "should not fail if asked not to fail, and the child does" do
|
918
|
-
|
894
|
+
Puppet::Util::Execution.stubs(:open).returns('error message')
|
919
895
|
expect(Puppet::Util::Execution.execpipe('echo hello', false)).to eq('error message')
|
920
896
|
end
|
921
897
|
end
|
922
898
|
|
923
899
|
describe "execfail" do
|
924
900
|
it "returns the executed command output" do
|
925
|
-
|
926
|
-
.
|
901
|
+
Puppet::Util::Execution.stubs(:execute)
|
902
|
+
.returns(Puppet::Util::Execution::ProcessOutput.new("process output", 0))
|
927
903
|
expect(Puppet::Util::Execution.execfail('echo hello', Puppet::Error)).to eq('process output')
|
928
904
|
end
|
929
905
|
|
930
906
|
it "raises a caller-specified exception on failure with the backtrace" do
|
931
|
-
|
907
|
+
Puppet::Util::Execution.stubs(:execute).raises(Puppet::ExecutionFailure, "failed to execute")
|
932
908
|
expect {
|
933
909
|
Puppet::Util::Execution.execfail("this will fail", Puppet::Error)
|
934
910
|
}.to raise_error(Puppet::Error, /failed to execute/)
|
935
911
|
end
|
936
912
|
|
937
913
|
it "raises exceptions that don't extend ExecutionFailure" do
|
938
|
-
|
914
|
+
Puppet::Util::Execution.stubs(:execute).raises(ArgumentError, "failed to execute")
|
939
915
|
expect {
|
940
916
|
Puppet::Util::Execution.execfail("this will fail", Puppet::Error)
|
941
917
|
}.to raise_error(ArgumentError, /failed to execute/)
|
942
918
|
end
|
943
919
|
|
944
920
|
it "raises a TypeError if the exception class is nil" do
|
945
|
-
|
921
|
+
Puppet::Util::Execution.stubs(:execute).raises(Puppet::ExecutionFailure, "failed to execute")
|
946
922
|
expect {
|
947
923
|
Puppet::Util::Execution.execfail('echo hello', nil)
|
948
924
|
}.to raise_error(TypeError, /exception class\/object expected/)
|