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