puppet 5.5.12-x86-mingw32 → 5.5.13-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 +0 -5
- data/Gemfile.lock +11 -11
- data/lib/puppet/application/filebucket.rb +4 -0
- data/lib/puppet/configurer.rb +9 -3
- data/lib/puppet/indirector/request.rb +26 -15
- data/lib/puppet/indirector/rest.rb +16 -7
- 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/http_proxy.rb +3 -2
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +108 -36
- data/man/man5/puppet.conf.5 +2 -2
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.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-master.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-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 +28 -26
- 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/ca_spec.rb +2 -3
- 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 +3 -5
- 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 +5 -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/indirector/node/ldap_spec.rb +2 -3
- data/spec/integration/network/authconfig_spec.rb +23 -24
- data/spec/integration/network/formats_spec.rb +0 -1
- data/spec/integration/network/http/api/indirected_routes_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 +4 -2
- 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/cron/crontab_spec.rb +8 -10
- data/spec/integration/provider/mailalias/aliases_spec.rb +0 -1
- data/spec/integration/provider/mount_spec.rb +9 -9
- 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/provider/ssh_authorized_key_spec.rb +6 -8
- data/spec/integration/provider/sshkey_spec.rb +6 -12
- data/spec/integration/provider/yumrepo_spec.rb +8 -12
- data/spec/integration/reference/providers_spec.rb +0 -1
- 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_authority_spec.rb +0 -1
- data/spec/integration/ssl/certificate_request_spec.rb +0 -1
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -1
- data/spec/integration/ssl/host_spec.rb +0 -1
- data/spec/integration/ssl/key_spec.rb +0 -1
- data/spec/integration/test/test_helper_spec.rb +1 -2
- 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/nagios_spec.rb +3 -5
- data/spec/integration/type/package_spec.rb +19 -23
- data/spec/integration/type/tidy_spec.rb +1 -2
- data/spec/integration/type/user_spec.rb +0 -1
- 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 +4 -6
- 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 +11 -2
- 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 +78 -79
- data/spec/unit/application/cert_spec.rb +42 -49
- data/spec/unit/application/certificate_spec.rb +2 -3
- 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 +175 -184
- 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/master_spec.rb +95 -95
- data/spec/unit/application/resource_spec.rb +42 -48
- data/spec/unit/application_spec.rb +74 -84
- data/spec/unit/capability_spec.rb +9 -6
- 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 +190 -193
- 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 +34 -35
- 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 +17 -12
- 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/ca_spec.rb +0 -1
- data/spec/unit/face/catalog_spec.rb +0 -1
- data/spec/unit/face/certificate_request_spec.rb +0 -1
- data/spec/unit/face/certificate_revocation_list_spec.rb +0 -1
- data/spec/unit/face/certificate_spec.rb +7 -10
- 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/build_spec.rb +17 -17
- 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 +33 -34
- 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 +16 -17
- 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 +7 -8
- 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 +8 -9
- 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/ca_spec.rb +2 -4
- data/spec/unit/indirector/certificate/disabled_ca_spec.rb +1 -2
- data/spec/unit/indirector/certificate/file_spec.rb +2 -3
- data/spec/unit/indirector/certificate/rest_spec.rb +8 -10
- data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -1
- data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +1 -2
- 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/certificate_revocation_list/ca_spec.rb +1 -2
- data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +1 -2
- data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +1 -2
- data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +2 -3
- data/spec/unit/indirector/certificate_status/file_spec.rb +2 -3
- data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -1
- data/spec/unit/indirector/code_spec.rb +5 -6
- data/spec/unit/indirector/direct_file_server_spec.rb +33 -27
- data/spec/unit/indirector/envelope_spec.rb +1 -2
- data/spec/unit/indirector/exec_spec.rb +15 -14
- 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 +2 -4
- 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 +99 -93
- data/spec/unit/indirector/indirection_spec.rb +242 -226
- data/spec/unit/indirector/json_spec.rb +7 -9
- data/spec/unit/indirector/key/ca_spec.rb +2 -3
- data/spec/unit/indirector/key/disabled_ca_spec.rb +1 -2
- data/spec/unit/indirector/key/file_spec.rb +25 -26
- data/spec/unit/indirector/ldap_spec.rb +34 -41
- 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 +6 -6
- data/spec/unit/indirector/node/ldap_spec.rb +74 -76
- 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/write_only_yaml_spec.rb +1 -2
- 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 +47 -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 +74 -77
- 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 +31 -29
- data/spec/unit/indirector/yaml_spec.rb +33 -32
- data/spec/unit/indirector_spec.rb +1 -2
- data/spec/unit/info_service_spec.rb +3 -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/builder_spec.rb +5 -5
- 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/ca/v1_spec.rb +1 -1
- data/spec/unit/network/http/api/indirected_routes_spec.rb +22 -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 +1 -3
- data/spec/unit/network/http/compression_spec.rb +21 -22
- data/spec/unit/network/http/connection_spec.rb +39 -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/rack/rest_spec.rb +24 -27
- data/spec/unit/network/http/rack_spec.rb +5 -6
- 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/webrick/rest_spec.rb +40 -41
- data/spec/unit/network/http/webrick_spec.rb +49 -52
- 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 +16 -17
- data/spec/unit/network/rights_spec.rb +52 -53
- data/spec/unit/network/server_spec.rb +12 -13
- data/spec/unit/node/environment_spec.rb +16 -14
- data/spec/unit/node/facts_spec.rb +5 -7
- data/spec/unit/node_spec.rb +4 -10
- data/spec/unit/other/selinux_spec.rb +2 -3
- 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 +11 -9
- 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 +3 -4
- 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 +6 -6
- 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 +30 -27
- 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 +36 -36
- 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/augeas/augeas_spec.rb +192 -192
- data/spec/unit/provider/cisco_spec.rb +1 -2
- data/spec/unit/provider/command_spec.rb +9 -9
- data/spec/unit/provider/cron/crontab_spec.rb +10 -11
- data/spec/unit/provider/cron/parsed_spec.rb +22 -24
- 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/host/parsed_spec.rb +6 -6
- data/spec/unit/provider/interface/cisco_spec.rb +20 -24
- data/spec/unit/provider/ldap_spec.rb +61 -62
- data/spec/unit/provider/macauthorization_spec.rb +26 -47
- data/spec/unit/provider/mcx/mcxcontent_spec.rb +45 -47
- data/spec/unit/provider/mount/parsed_spec.rb +18 -24
- data/spec/unit/provider/mount_spec.rb +57 -66
- data/spec/unit/provider/naginator_spec.rb +13 -14
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +35 -36
- data/spec/unit/provider/nameservice_spec.rb +38 -40
- data/spec/unit/provider/network_device_spec.rb +28 -28
- 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 +14 -16
- 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 +69 -71
- 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 +4 -4
- data/spec/unit/provider/package/zypper_spec.rb +87 -87
- data/spec/unit/provider/parsedfile_spec.rb +44 -45
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +120 -130
- data/spec/unit/provider/selboolean_spec.rb +9 -11
- data/spec/unit/provider/selmodule_spec.rb +20 -22
- 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 +37 -37
- data/spec/unit/provider/service/freebsd_spec.rb +18 -18
- data/spec/unit/provider/service/gentoo_spec.rb +50 -56
- data/spec/unit/provider/service/init_spec.rb +55 -55
- 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 -46
- data/spec/unit/provider/service/openwrt_spec.rb +26 -32
- 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 +93 -98
- data/spec/unit/provider/service/upstart_spec.rb +74 -72
- data/spec/unit/provider/service/windows_spec.rb +33 -41
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +54 -68
- data/spec/unit/provider/sshkey/parsed_spec.rb +7 -8
- 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 +15 -15
- 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/vlan/cisco_spec.rb +10 -12
- data/spec/unit/provider/yumrepo/inifile_spec.rb +75 -80
- data/spec/unit/provider/zfs/zfs_spec.rb +26 -21
- data/spec/unit/provider/zone/solaris_spec.rb +56 -42
- data/spec/unit/provider/zpool/zpool_spec.rb +19 -20
- data/spec/unit/provider_spec.rb +29 -29
- data/spec/unit/puppet_pal_2pec.rb +4 -5
- data/spec/unit/puppet_pal_spec.rb +0 -1
- data/spec/unit/puppet_spec.rb +7 -8
- 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 +18 -16
- 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/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 +226 -233
- data/spec/unit/ssl/base_spec.rb +14 -15
- data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +6 -7
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +116 -113
- data/spec/unit/ssl/certificate_authority_spec.rb +258 -268
- data/spec/unit/ssl/certificate_factory_spec.rb +3 -5
- data/spec/unit/ssl/certificate_request_attributes_spec.rb +2 -3
- data/spec/unit/ssl/certificate_request_spec.rb +66 -67
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -4
- data/spec/unit/ssl/certificate_spec.rb +23 -25
- data/spec/unit/ssl/configuration_spec.rb +1 -4
- data/spec/unit/ssl/digest_spec.rb +0 -1
- data/spec/unit/ssl/host_spec.rb +217 -188
- data/spec/unit/ssl/inventory_spec.rb +25 -21
- data/spec/unit/ssl/key_spec.rb +30 -31
- data/spec/unit/ssl/validator_spec.rb +40 -40
- data/spec/unit/task_spec.rb +6 -7
- data/spec/unit/transaction/additional_resource_generator_spec.rb +6 -5
- data/spec/unit/transaction/event_manager_spec.rb +88 -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 +98 -100
- data/spec/unit/type/augeas_spec.rb +11 -10
- data/spec/unit/type/component_spec.rb +0 -1
- data/spec/unit/type/computer_spec.rb +7 -10
- data/spec/unit/type/cron_spec.rb +3 -7
- 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/host_spec.rb +2 -3
- data/spec/unit/type/interface_spec.rb +2 -3
- data/spec/unit/type/k5login_spec.rb +3 -4
- data/spec/unit/type/macauthorization_spec.rb +6 -8
- data/spec/unit/type/mailalias_spec.rb +2 -3
- data/spec/unit/type/maillist_spec.rb +6 -9
- data/spec/unit/type/mcx_spec.rb +4 -8
- data/spec/unit/type/mount_spec.rb +26 -38
- data/spec/unit/type/nagios_spec.rb +0 -1
- 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 +53 -54
- data/spec/unit/type/resources_spec.rb +86 -88
- data/spec/unit/type/schedule_spec.rb +24 -26
- data/spec/unit/type/scheduled_task_spec.rb +1 -2
- data/spec/unit/type/selboolean_spec.rb +5 -6
- data/spec/unit/type/selmodule_spec.rb +0 -1
- data/spec/unit/type/service_spec.rb +47 -47
- data/spec/unit/type/ssh_authorized_key_spec.rb +5 -35
- data/spec/unit/type/sshkey_spec.rb +0 -2
- 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 +41 -27
- data/spec/unit/type/vlan_spec.rb +2 -4
- data/spec/unit/type/whit_spec.rb +0 -1
- data/spec/unit/type/zfs_spec.rb +6 -7
- data/spec/unit/type/zone_spec.rb +14 -4
- data/spec/unit/type/zpool_spec.rb +4 -5
- data/spec/unit/type_spec.rb +54 -53
- data/spec/unit/util/at_fork_spec.rb +18 -19
- data/spec/unit/util/autoload_spec.rb +53 -54
- data/spec/unit/util/backups_spec.rb +34 -35
- data/spec/unit/util/character_encoding_spec.rb +8 -8
- 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 +187 -162
- data/spec/unit/util/execution_stub_spec.rb +0 -1
- data/spec/unit/util/feature_spec.rb +13 -13
- 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 -66
- 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/nagios_maker_spec.rb +35 -36
- data/spec/unit/util/network_device/cisco/device_spec.rb +59 -50
- data/spec/unit/util/network_device/cisco/facts_spec.rb +4 -5
- data/spec/unit/util/network_device/cisco/interface_spec.rb +29 -20
- data/spec/unit/util/network_device/config_spec.rb +0 -1
- data/spec/unit/util/network_device/ipcalc_spec.rb +0 -1
- data/spec/unit/util/network_device/transport/base_spec.rb +5 -6
- data/spec/unit/util/network_device/transport/ssh_spec.rb +94 -60
- data/spec/unit/util/network_device/transport/telnet_spec.rb +18 -14
- 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 +13 -14
- 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 +14 -14
- 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 -59
- 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
|
|
@@ -205,13 +205,13 @@ describe Puppet::Util::CharacterEncoding do
|
|
205
205
|
|
206
206
|
context "when String#scrub is not defined" do
|
207
207
|
it "should still issue unicode replacement characters if the string is UTF-8" do
|
208
|
-
utf_8_string_to_scrub.
|
208
|
+
allow(utf_8_string_to_scrub).to receive(:respond_to?).with(:scrub).and_return(false)
|
209
209
|
result = Puppet::Util::CharacterEncoding.scrub(utf_8_string_to_scrub)
|
210
210
|
expect(result).to eq("\uFFFDfoo".force_encoding(Encoding::UTF_8))
|
211
211
|
end
|
212
212
|
|
213
213
|
it "should still issue unicode replacement characters if the string is UTF-16LE" do
|
214
|
-
utf_16LE_string_to_scrub.
|
214
|
+
allow(utf_16LE_string_to_scrub).to receive(:respond_to?).with(:scrub).and_return(false)
|
215
215
|
result = Puppet::Util::CharacterEncoding.scrub(utf_16LE_string_to_scrub)
|
216
216
|
# Bytes of replacement character on UTF_16LE are [253, 255]
|
217
217
|
# We just check for bytes because something (ruby?) interprets this array of bytes as:
|
@@ -220,7 +220,7 @@ describe Puppet::Util::CharacterEncoding do
|
|
220
220
|
end
|
221
221
|
|
222
222
|
it "should issue '?' characters if the string is not one of UTF_8 or UTF_16LE" do
|
223
|
-
invalid_non_utf.
|
223
|
+
allow(invalid_non_utf).to receive(:respond_to?).with(:scrub).and_return(false)
|
224
224
|
result = Puppet::Util::CharacterEncoding.scrub(invalid_non_utf)
|
225
225
|
expect(result).to eq("foo???".force_encoding(Encoding::EUC_KR))
|
226
226
|
end
|
@@ -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 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 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.features.microsoft_windows? ? 'NUL' : '/dev/null' }
|
23
24
|
|
24
25
|
def stub_process_wait(exitstatus)
|
25
26
|
if Puppet.features.microsoft_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.features.microsoft_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 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 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 do
|
|
137
137
|
|
138
138
|
describe "#execute_windows (stubs)", :if => Puppet.features.microsoft_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 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,8 +158,8 @@ describe Puppet::Util::Execution 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
|
-
Dir.
|
162
|
-
Process.
|
161
|
+
expect(Dir).to receive(:chdir).with(cwd).and_yield
|
162
|
+
expect(Process).to receive(:create).with(
|
163
163
|
:command_line => "test command",
|
164
164
|
:startup_info => {
|
165
165
|
:stdin => @stdin,
|
@@ -176,7 +176,7 @@ describe Puppet::Util::Execution 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 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 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
|
@@ -230,37 +228,42 @@ describe Puppet::Util::Execution do
|
|
230
228
|
|
231
229
|
describe "when setting up input and output files" do
|
232
230
|
include PuppetSpec::Files
|
231
|
+
|
233
232
|
let(:executor) { Puppet.features.microsoft_windows? ? 'execute_windows' : 'execute_posix' }
|
234
233
|
let(:rval) { Puppet.features.microsoft_windows? ? proc_info_stub : pid }
|
235
234
|
|
236
235
|
before :each do
|
237
|
-
Puppet::Util::Execution.
|
236
|
+
allow(Puppet::Util::Execution).to receive(:wait_for_output)
|
238
237
|
end
|
239
238
|
|
240
239
|
it "should set stdin to the stdinfile if specified" do
|
241
240
|
input = tmpfile('stdin')
|
242
241
|
FileUtils.touch(input)
|
243
242
|
|
244
|
-
Puppet::Util::Execution.
|
245
|
-
stdin.path
|
246
|
-
|
243
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,stdin,_,_|
|
244
|
+
expect(stdin.path).to eq(input)
|
245
|
+
rval
|
246
|
+
end
|
247
247
|
|
248
248
|
Puppet::Util::Execution.execute('test command', :stdinfile => input)
|
249
249
|
end
|
250
250
|
|
251
251
|
it "should set stdin to the null file if not specified" do
|
252
|
-
Puppet::Util::Execution.
|
253
|
-
stdin.path
|
254
|
-
|
252
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,stdin,_,_|
|
253
|
+
expect(stdin.path).to eq(null_file)
|
254
|
+
rval
|
255
|
+
end
|
255
256
|
|
256
257
|
Puppet::Util::Execution.execute('test command')
|
257
258
|
end
|
258
259
|
|
259
260
|
describe "when squelch is set" do
|
260
261
|
it "should set stdout and stderr to the null file" do
|
261
|
-
Puppet::Util::Execution.
|
262
|
-
stdout.path
|
263
|
-
|
262
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
|
263
|
+
expect(stdout.path).to eq(null_file)
|
264
|
+
expect(stderr.path).to eq(null_file)
|
265
|
+
rval
|
266
|
+
end
|
264
267
|
|
265
268
|
Puppet::Util::Execution.execute('test command', :squelch => true)
|
266
269
|
end
|
@@ -268,18 +271,18 @@ describe Puppet::Util::Execution do
|
|
268
271
|
|
269
272
|
describe "cwd option" do
|
270
273
|
def expect_cwd_to_be(cwd)
|
271
|
-
Puppet::Util::Execution.
|
274
|
+
expect(Puppet::Util::Execution).to receive(executor).with(
|
272
275
|
anything,
|
273
|
-
|
276
|
+
hash_including(cwd: cwd),
|
274
277
|
anything,
|
275
278
|
anything,
|
276
279
|
anything
|
277
|
-
).
|
280
|
+
).and_return(rval)
|
278
281
|
end
|
279
282
|
|
280
283
|
it 'should raise an ArgumentError if the specified working directory does not exist' do
|
281
284
|
cwd = 'cwd'
|
282
|
-
Puppet::FileSystem.
|
285
|
+
allow(Puppet::FileSystem).to receive(:directory?).with(cwd).and_return(false)
|
283
286
|
|
284
287
|
expect {
|
285
288
|
Puppet::Util::Execution.execute('test command', cwd: cwd)
|
@@ -290,7 +293,7 @@ describe Puppet::Util::Execution do
|
|
290
293
|
end
|
291
294
|
|
292
295
|
it "should set the cwd to the user-specified one" do
|
293
|
-
Puppet::FileSystem.
|
296
|
+
allow(Puppet::FileSystem).to receive(:directory?).with('cwd').and_return(true)
|
294
297
|
expect_cwd_to_be('cwd')
|
295
298
|
Puppet::Util::Execution.execute('test command', cwd: 'cwd')
|
296
299
|
end
|
@@ -299,49 +302,55 @@ describe Puppet::Util::Execution do
|
|
299
302
|
describe "on POSIX", :if => Puppet.features.posix? do
|
300
303
|
describe "when squelch is not set" do
|
301
304
|
it "should set stdout to a pipe" do
|
302
|
-
Puppet::Util::Execution.
|
303
|
-
stdout.class == IO
|
304
|
-
end.returns(rval)
|
305
|
+
expect(Puppet::Util::Execution).to receive(executor).with(anything, anything, anything, be_a(IO), anything).and_return(rval)
|
305
306
|
|
306
307
|
Puppet::Util::Execution.execute('test command', :squelch => false)
|
307
308
|
end
|
308
309
|
|
309
310
|
it "should set stderr to the same file as stdout if combine is true" do
|
310
|
-
Puppet::Util::Execution.
|
311
|
-
stdout
|
312
|
-
|
311
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
|
312
|
+
expect(stdout).to eq(stderr)
|
313
|
+
rval
|
314
|
+
end
|
313
315
|
|
314
316
|
Puppet::Util::Execution.execute('test command', :squelch => false, :combine => true)
|
315
317
|
end
|
316
318
|
|
317
319
|
it "should set stderr to the null device if combine is false" do
|
318
|
-
Puppet::Util::Execution.
|
319
|
-
stdout.class
|
320
|
-
|
320
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
|
321
|
+
expect(stdout.class).to eq(IO)
|
322
|
+
expect(stderr.path).to eq(null_file)
|
323
|
+
rval
|
324
|
+
end
|
321
325
|
|
322
326
|
Puppet::Util::Execution.execute('test command', :squelch => false, :combine => false)
|
323
327
|
end
|
324
328
|
|
325
329
|
it "should default combine to true when no options are specified" do
|
326
|
-
Puppet::Util::Execution.
|
327
|
-
stdout
|
328
|
-
|
330
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
|
331
|
+
expect(stdout).to eq(stderr)
|
332
|
+
rval
|
333
|
+
end
|
329
334
|
|
330
335
|
Puppet::Util::Execution.execute('test command')
|
331
336
|
end
|
332
337
|
|
333
338
|
it "should default combine to false when options are specified, but combine is not" do
|
334
|
-
Puppet::Util::Execution.
|
335
|
-
stdout.class
|
336
|
-
|
339
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
|
340
|
+
expect(stdout.class).to eq(IO)
|
341
|
+
expect(stderr.path).to eq(null_file)
|
342
|
+
rval
|
343
|
+
end
|
337
344
|
|
338
345
|
Puppet::Util::Execution.execute('test command', :failonfail => false)
|
339
346
|
end
|
340
347
|
|
341
348
|
it "should default combine to false when an empty hash of options is specified" do
|
342
|
-
Puppet::Util::Execution.
|
343
|
-
stdout.class
|
344
|
-
|
349
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
|
350
|
+
expect(stdout.class).to eq(IO)
|
351
|
+
expect(stderr.path).to eq(null_file)
|
352
|
+
rval
|
353
|
+
end
|
345
354
|
|
346
355
|
Puppet::Util::Execution.execute('test command', {})
|
347
356
|
end
|
@@ -352,77 +361,90 @@ describe Puppet::Util::Execution do
|
|
352
361
|
describe "when squelch is not set" do
|
353
362
|
it "should set stdout to a temporary output file" do
|
354
363
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
355
|
-
Puppet::FileSystem::Uniquefile.
|
364
|
+
allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
|
356
365
|
|
357
|
-
Puppet::Util::Execution.
|
358
|
-
stdout.path
|
359
|
-
|
366
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,_|
|
367
|
+
expect(stdout.path).to eq(outfile.path)
|
368
|
+
rval
|
369
|
+
end
|
360
370
|
|
361
371
|
Puppet::Util::Execution.execute('test command', :squelch => false)
|
362
372
|
end
|
363
373
|
|
364
374
|
it "should set stderr to the same file as stdout if combine is true" do
|
365
375
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
366
|
-
Puppet::FileSystem::Uniquefile.
|
376
|
+
allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
|
367
377
|
|
368
|
-
Puppet::Util::Execution.
|
369
|
-
stdout.path
|
370
|
-
|
378
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
|
379
|
+
expect(stdout.path).to eq(outfile.path)
|
380
|
+
expect(stderr.path).to eq(outfile.path)
|
381
|
+
rval
|
382
|
+
end
|
371
383
|
|
372
384
|
Puppet::Util::Execution.execute('test command', :squelch => false, :combine => true)
|
373
385
|
end
|
374
386
|
|
375
387
|
it "should set stderr to the null device if combine is false" do
|
376
388
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
377
|
-
Puppet::FileSystem::Uniquefile.
|
389
|
+
allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
|
378
390
|
|
379
|
-
Puppet::Util::Execution.
|
380
|
-
stdout.path
|
381
|
-
|
391
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
|
392
|
+
expect(stdout.path).to eq(outfile.path)
|
393
|
+
expect(stderr.path).to eq(null_file)
|
394
|
+
rval
|
395
|
+
end
|
382
396
|
|
383
397
|
Puppet::Util::Execution.execute('test command', :squelch => false, :combine => false)
|
384
398
|
end
|
385
399
|
|
386
400
|
it "should combine stdout and stderr if combine is true" do
|
387
401
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
388
|
-
Puppet::FileSystem::Uniquefile.
|
402
|
+
allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
|
389
403
|
|
390
|
-
Puppet::Util::Execution.
|
391
|
-
stdout.path
|
392
|
-
|
404
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
|
405
|
+
expect(stdout.path).to eq(outfile.path)
|
406
|
+
expect(stderr.path).to eq(outfile.path)
|
407
|
+
rval
|
408
|
+
end
|
393
409
|
|
394
410
|
Puppet::Util::Execution.execute('test command', :combine => true)
|
395
411
|
end
|
396
412
|
|
397
413
|
it "should default combine to true when no options are specified" do
|
398
414
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
399
|
-
Puppet::FileSystem::Uniquefile.
|
415
|
+
allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
|
400
416
|
|
401
|
-
Puppet::Util::Execution.
|
402
|
-
stdout.path
|
403
|
-
|
417
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
|
418
|
+
expect(stdout.path).to eq(outfile.path)
|
419
|
+
expect(stderr.path).to eq(outfile.path)
|
420
|
+
rval
|
421
|
+
end
|
404
422
|
|
405
423
|
Puppet::Util::Execution.execute('test command')
|
406
424
|
end
|
407
425
|
|
408
426
|
it "should default combine to false when options are specified, but combine is not" do
|
409
427
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
410
|
-
Puppet::FileSystem::Uniquefile.
|
428
|
+
allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
|
411
429
|
|
412
|
-
Puppet::Util::Execution.
|
413
|
-
stdout.path
|
414
|
-
|
430
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
|
431
|
+
expect(stdout.path).to eq(outfile.path)
|
432
|
+
expect(stderr.path).to eq(null_file)
|
433
|
+
rval
|
434
|
+
end
|
415
435
|
|
416
436
|
Puppet::Util::Execution.execute('test command', :failonfail => false)
|
417
437
|
end
|
418
438
|
|
419
439
|
it "should default combine to false when an empty hash of options is specified" do
|
420
440
|
outfile = Puppet::FileSystem::Uniquefile.new('stdout')
|
421
|
-
Puppet::FileSystem::Uniquefile.
|
441
|
+
allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
|
422
442
|
|
423
|
-
Puppet::Util::Execution.
|
424
|
-
stdout.path
|
425
|
-
|
443
|
+
expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
|
444
|
+
expect(stdout.path).to eq(outfile.path)
|
445
|
+
expect(stderr.path).to eq(null_file)
|
446
|
+
rval
|
447
|
+
end
|
426
448
|
|
427
449
|
Puppet::Util::Execution.execute('test command', {})
|
428
450
|
end
|
@@ -432,11 +454,11 @@ describe Puppet::Util::Execution do
|
|
432
454
|
|
433
455
|
describe "on Windows", :if => Puppet.features.microsoft_windows? do
|
434
456
|
it "should always close the process and thread handles" do
|
435
|
-
Puppet::Util::Execution.
|
457
|
+
allow(Puppet::Util::Execution).to receive(:execute_windows).and_return(proc_info_stub)
|
436
458
|
|
437
|
-
Puppet::Util::Windows::Process.
|
438
|
-
FFI::WIN32.
|
439
|
-
FFI::WIN32.
|
459
|
+
expect(Puppet::Util::Windows::Process).to receive(:wait_process).with(process_handle).and_raise('whatever')
|
460
|
+
expect(FFI::WIN32).to receive(:CloseHandle).with(thread_handle)
|
461
|
+
expect(FFI::WIN32).to receive(:CloseHandle).with(process_handle)
|
440
462
|
|
441
463
|
expect { Puppet::Util::Execution.execute('test command') }.to raise_error(RuntimeError)
|
442
464
|
end
|
@@ -444,9 +466,9 @@ describe Puppet::Util::Execution do
|
|
444
466
|
it "should return the correct exit status even when exit status is greater than 256" do
|
445
467
|
real_exit_status = 3010
|
446
468
|
|
447
|
-
Puppet::Util::Execution.
|
469
|
+
allow(Puppet::Util::Execution).to receive(:execute_windows).and_return(proc_info_stub)
|
448
470
|
stub_process_wait(real_exit_status)
|
449
|
-
Puppet::Util::Execution.
|
471
|
+
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
472
|
|
451
473
|
expect(Puppet::Util::Execution.execute('test command', :failonfail => false).exitstatus).to eq(real_exit_status)
|
452
474
|
end
|
@@ -454,7 +476,6 @@ describe Puppet::Util::Execution do
|
|
454
476
|
end
|
455
477
|
|
456
478
|
describe "#execute (posix locale)", :unless => Puppet.features.microsoft_windows? do
|
457
|
-
|
458
479
|
before :each do
|
459
480
|
# there is a danger here that ENV will be modified by exec_posix. Normally it would only affect the ENV
|
460
481
|
# of a forked process, but, in some of the previous tests in this file we're stubbing Kernel.fork., which could
|
@@ -473,7 +494,6 @@ describe Puppet::Util::Execution do
|
|
473
494
|
expect(cur_env.keys - @saved_env.keys).to eq([])
|
474
495
|
end
|
475
496
|
|
476
|
-
|
477
497
|
# build up a printf-style string that contains a command to get the value of an environment variable
|
478
498
|
# from the operating system. We can substitute into this with the names of the desired environment variables later.
|
479
499
|
get_env_var_cmd = 'echo $%s'
|
@@ -574,7 +594,6 @@ describe Puppet::Util::Execution do
|
|
574
594
|
# ensure that after the exec, our temporary env is still intact
|
575
595
|
expect(ENV[var]).to eq(user_sentinel_env[var])
|
576
596
|
end
|
577
|
-
|
578
597
|
end
|
579
598
|
end
|
580
599
|
|
@@ -600,7 +619,6 @@ describe Puppet::Util::Execution do
|
|
600
619
|
expect(ENV[var]).to eq(user_sentinel_env[var])
|
601
620
|
end
|
602
621
|
end
|
603
|
-
|
604
622
|
end
|
605
623
|
end
|
606
624
|
|
@@ -609,46 +627,54 @@ describe Puppet::Util::Execution do
|
|
609
627
|
stub_process_wait(0)
|
610
628
|
|
611
629
|
if Puppet.features.microsoft_windows?
|
612
|
-
Puppet::Util::Execution.
|
630
|
+
allow(Puppet::Util::Execution).to receive(:execute_windows).and_return(proc_info_stub)
|
613
631
|
else
|
614
|
-
Puppet::Util::Execution.
|
632
|
+
allow(Puppet::Util::Execution).to receive(:execute_posix).and_return(pid)
|
615
633
|
end
|
616
634
|
end
|
617
635
|
|
618
636
|
it "should log if no uid or gid specified" do
|
619
|
-
Puppet::Util::Execution.
|
637
|
+
expect(Puppet::Util::Execution).to receive(:debug).with("Executing: 'echo hello'")
|
620
638
|
Puppet::Util::Execution.execute('echo hello')
|
621
639
|
end
|
640
|
+
|
622
641
|
it "should log numeric uid if specified" do
|
623
|
-
Puppet::Util::Execution.
|
642
|
+
expect(Puppet::Util::Execution).to receive(:debug).with("Executing with uid=100: 'echo hello'")
|
624
643
|
Puppet::Util::Execution.execute('echo hello', {:uid => 100})
|
625
644
|
end
|
645
|
+
|
626
646
|
it "should log numeric gid if specified" do
|
627
|
-
Puppet::Util::Execution.
|
647
|
+
expect(Puppet::Util::Execution).to receive(:debug).with("Executing with gid=500: 'echo hello'")
|
628
648
|
Puppet::Util::Execution.execute('echo hello', {:gid => 500})
|
629
649
|
end
|
650
|
+
|
630
651
|
it "should log numeric uid and gid if specified" do
|
631
|
-
Puppet::Util::Execution.
|
652
|
+
expect(Puppet::Util::Execution).to receive(:debug).with("Executing with uid=100 gid=500: 'echo hello'")
|
632
653
|
Puppet::Util::Execution.execute('echo hello', {:uid => 100, :gid => 500})
|
633
654
|
end
|
655
|
+
|
634
656
|
it "should log string uid if specified" do
|
635
|
-
Puppet::Util::Execution.
|
657
|
+
expect(Puppet::Util::Execution).to receive(:debug).with("Executing with uid=myuser: 'echo hello'")
|
636
658
|
Puppet::Util::Execution.execute('echo hello', {:uid => 'myuser'})
|
637
659
|
end
|
660
|
+
|
638
661
|
it "should log string gid if specified" do
|
639
|
-
Puppet::Util::Execution.
|
662
|
+
expect(Puppet::Util::Execution).to receive(:debug).with("Executing with gid=mygroup: 'echo hello'")
|
640
663
|
Puppet::Util::Execution.execute('echo hello', {:gid => 'mygroup'})
|
641
664
|
end
|
665
|
+
|
642
666
|
it "should log string uid and gid if specified" do
|
643
|
-
Puppet::Util::Execution.
|
667
|
+
expect(Puppet::Util::Execution).to receive(:debug).with("Executing with uid=myuser gid=mygroup: 'echo hello'")
|
644
668
|
Puppet::Util::Execution.execute('echo hello', {:uid => 'myuser', :gid => 'mygroup'})
|
645
669
|
end
|
670
|
+
|
646
671
|
it "should log numeric uid and string gid if specified" do
|
647
|
-
Puppet::Util::Execution.
|
672
|
+
expect(Puppet::Util::Execution).to receive(:debug).with("Executing with uid=100 gid=mygroup: 'echo hello'")
|
648
673
|
Puppet::Util::Execution.execute('echo hello', {:uid => 100, :gid => 'mygroup'})
|
649
674
|
end
|
675
|
+
|
650
676
|
it 'should redact commands in debug output when passed sensitive option' do
|
651
|
-
Puppet::Util::Execution.
|
677
|
+
expect(Puppet::Util::Execution).to receive(:debug).with("Executing: '[redacted]'")
|
652
678
|
Puppet::Util::Execution.execute('echo hello', {:sensitive => true})
|
653
679
|
end
|
654
680
|
end
|
@@ -658,29 +684,27 @@ describe Puppet::Util::Execution do
|
|
658
684
|
stub_process_wait(0)
|
659
685
|
|
660
686
|
if Puppet.features.microsoft_windows?
|
661
|
-
Puppet::Util::Execution.
|
687
|
+
allow(Puppet::Util::Execution).to receive(:execute_windows).and_return(proc_info_stub)
|
662
688
|
else
|
663
|
-
Puppet::Util::Execution.
|
689
|
+
allow(Puppet::Util::Execution).to receive(:execute_posix).and_return(pid)
|
664
690
|
end
|
665
691
|
end
|
666
692
|
|
667
693
|
it "should wait for the child process to exit" do
|
668
|
-
Puppet::Util::Execution.
|
694
|
+
allow(Puppet::Util::Execution).to receive(:wait_for_output)
|
669
695
|
|
670
696
|
Puppet::Util::Execution.execute('test command')
|
671
697
|
end
|
672
698
|
|
673
699
|
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.
|
700
|
+
stdin = double('file')
|
701
|
+
stdout = double('file')
|
702
|
+
stderr = double('file')
|
703
|
+
[stdin, stdout, stderr].each {|io| expect(io).to receive(:close).at_least(:once)}
|
678
704
|
|
679
|
-
File.
|
680
|
-
|
681
|
-
|
682
|
-
then.returns(stdout).
|
683
|
-
then.returns(stderr)
|
705
|
+
expect(File).to receive(:open).
|
706
|
+
exactly(3).times().
|
707
|
+
and_return(stdin, stdout, stderr)
|
684
708
|
|
685
709
|
Puppet::Util::Execution.execute('test command', {:squelch => true, :combine => false})
|
686
710
|
end
|
@@ -689,7 +713,7 @@ describe Puppet::Util::Execution do
|
|
689
713
|
context "reading the output" do
|
690
714
|
before :each do
|
691
715
|
r, w = IO.pipe
|
692
|
-
IO.
|
716
|
+
expect(IO).to receive(:pipe).and_return([r, w])
|
693
717
|
w.write("My expected \u2744 command output")
|
694
718
|
end
|
695
719
|
|
@@ -711,14 +735,14 @@ describe Puppet::Util::Execution do
|
|
711
735
|
end
|
712
736
|
|
713
737
|
it "should not read the output if squelch is true" do
|
714
|
-
IO.
|
738
|
+
expect(IO).not_to receive(:pipe)
|
715
739
|
|
716
740
|
expect(Puppet::Util::Execution.execute('test command', :squelch => true)).to eq('')
|
717
741
|
end
|
718
742
|
|
719
743
|
it "should close the pipe used for output if squelch is false" do
|
720
744
|
r, w = IO.pipe
|
721
|
-
IO.
|
745
|
+
expect(IO).to receive(:pipe).and_return([r, w])
|
722
746
|
|
723
747
|
expect(Puppet::Util::Execution.execute('test command')).to eq("")
|
724
748
|
expect(r.closed?)
|
@@ -727,12 +751,12 @@ describe Puppet::Util::Execution do
|
|
727
751
|
|
728
752
|
it "should close the pipe used for output if squelch is false and an error is raised" do
|
729
753
|
r, w = IO.pipe
|
730
|
-
IO.
|
754
|
+
expect(IO).to receive(:pipe).and_return([r, w])
|
731
755
|
|
732
756
|
if Puppet.features.microsoft_windows?
|
733
|
-
Puppet::Util::Execution.
|
757
|
+
expect(Puppet::Util::Execution).to receive(:execute_windows).and_raise(Exception, 'execution failed')
|
734
758
|
else
|
735
|
-
Puppet::Util::Execution.
|
759
|
+
expect(Puppet::Util::Execution).to receive(:execute_posix).and_raise(Exception, 'execution failed')
|
736
760
|
end
|
737
761
|
|
738
762
|
expect {
|
@@ -742,11 +766,12 @@ describe Puppet::Util::Execution do
|
|
742
766
|
expect(w.closed?)
|
743
767
|
end
|
744
768
|
end
|
769
|
+
|
745
770
|
describe "on Windows", :if => Puppet.features.microsoft_windows? do
|
746
771
|
context "reading the output" do
|
747
772
|
before :each do
|
748
773
|
stdout = Puppet::FileSystem::Uniquefile.new('test')
|
749
|
-
Puppet::FileSystem::Uniquefile.
|
774
|
+
allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(stdout)
|
750
775
|
stdout.write("My expected \u2744 command output")
|
751
776
|
end
|
752
777
|
|
@@ -769,7 +794,7 @@ describe Puppet::Util::Execution do
|
|
769
794
|
|
770
795
|
it "should not read the output if squelch is true" do
|
771
796
|
stdout = Puppet::FileSystem::Uniquefile.new('test')
|
772
|
-
Puppet::FileSystem::Uniquefile.
|
797
|
+
allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(stdout)
|
773
798
|
stdout.write("My expected command output")
|
774
799
|
|
775
800
|
expect(Puppet::Util::Execution.execute('test command', :squelch => true)).to eq('')
|
@@ -778,7 +803,7 @@ describe Puppet::Util::Execution do
|
|
778
803
|
it "should delete the file used for output if squelch is false" do
|
779
804
|
stdout = Puppet::FileSystem::Uniquefile.new('test')
|
780
805
|
path = stdout.path
|
781
|
-
Puppet::FileSystem::Uniquefile.
|
806
|
+
allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(stdout)
|
782
807
|
|
783
808
|
Puppet::Util::Execution.execute('test command')
|
784
809
|
|
@@ -787,7 +812,7 @@ describe Puppet::Util::Execution do
|
|
787
812
|
|
788
813
|
it "should not raise an error if the file is open" do
|
789
814
|
stdout = Puppet::FileSystem::Uniquefile.new('test')
|
790
|
-
Puppet::FileSystem::Uniquefile.
|
815
|
+
allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(stdout)
|
791
816
|
|
792
817
|
Puppet::Util::Execution.execute('test command')
|
793
818
|
end
|
@@ -857,68 +882,68 @@ describe Puppet::Util::Execution do
|
|
857
882
|
|
858
883
|
describe "#execpipe" do
|
859
884
|
it "should execute a string as a string" do
|
860
|
-
Puppet::Util::Execution.
|
861
|
-
Puppet::Util::Execution.
|
885
|
+
expect(Puppet::Util::Execution).to receive(:open).with('| echo hello 2>&1').and_return('hello')
|
886
|
+
expect(Puppet::Util::Execution).to receive(:exitstatus).and_return(0)
|
862
887
|
expect(Puppet::Util::Execution.execpipe('echo hello')).to eq('hello')
|
863
888
|
end
|
864
889
|
|
865
890
|
it "should print meaningful debug message for string argument" do
|
866
|
-
Puppet::Util::Execution.
|
867
|
-
Puppet::Util::Execution.
|
868
|
-
Puppet::Util::Execution.
|
891
|
+
expect(Puppet::Util::Execution).to receive(:debug).with("Executing 'echo hello'")
|
892
|
+
expect(Puppet::Util::Execution).to receive(:open).with('| echo hello 2>&1').and_return('hello')
|
893
|
+
expect(Puppet::Util::Execution).to receive(:exitstatus).and_return(0)
|
869
894
|
Puppet::Util::Execution.execpipe('echo hello')
|
870
895
|
end
|
871
896
|
|
872
897
|
it "should print meaningful debug message for array argument" do
|
873
|
-
Puppet::Util::Execution.
|
874
|
-
Puppet::Util::Execution.
|
875
|
-
Puppet::Util::Execution.
|
898
|
+
expect(Puppet::Util::Execution).to receive(:debug).with("Executing 'echo hello'")
|
899
|
+
expect(Puppet::Util::Execution).to receive(:open).with('| echo hello 2>&1').and_return('hello')
|
900
|
+
expect(Puppet::Util::Execution).to receive(:exitstatus).and_return(0)
|
876
901
|
Puppet::Util::Execution.execpipe(['echo','hello'])
|
877
902
|
end
|
878
903
|
|
879
904
|
it "should execute an array by pasting together with spaces" do
|
880
|
-
Puppet::Util::Execution.
|
881
|
-
Puppet::Util::Execution.
|
905
|
+
expect(Puppet::Util::Execution).to receive(:open).with('| echo hello 2>&1').and_return('hello')
|
906
|
+
expect(Puppet::Util::Execution).to receive(:exitstatus).and_return(0)
|
882
907
|
expect(Puppet::Util::Execution.execpipe(['echo', 'hello'])).to eq('hello')
|
883
908
|
end
|
884
909
|
|
885
910
|
it "should fail if asked to fail, and the child does" do
|
886
|
-
Puppet::Util::Execution.
|
887
|
-
Puppet::Util::Execution.
|
911
|
+
allow(Puppet::Util::Execution).to receive(:open).with('| echo hello 2>&1').and_return('error message')
|
912
|
+
expect(Puppet::Util::Execution).to receive(:exitstatus).and_return(1)
|
888
913
|
expect {
|
889
914
|
Puppet::Util::Execution.execpipe('echo hello')
|
890
915
|
}.to raise_error Puppet::ExecutionFailure, /error message/
|
891
916
|
end
|
892
917
|
|
893
918
|
it "should not fail if asked not to fail, and the child does" do
|
894
|
-
Puppet::Util::Execution.
|
919
|
+
allow(Puppet::Util::Execution).to receive(:open).and_return('error message')
|
895
920
|
expect(Puppet::Util::Execution.execpipe('echo hello', false)).to eq('error message')
|
896
921
|
end
|
897
922
|
end
|
898
923
|
|
899
924
|
describe "execfail" do
|
900
925
|
it "returns the executed command output" do
|
901
|
-
Puppet::Util::Execution.
|
902
|
-
.
|
926
|
+
allow(Puppet::Util::Execution).to receive(:execute)
|
927
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new("process output", 0))
|
903
928
|
expect(Puppet::Util::Execution.execfail('echo hello', Puppet::Error)).to eq('process output')
|
904
929
|
end
|
905
930
|
|
906
931
|
it "raises a caller-specified exception on failure with the backtrace" do
|
907
|
-
Puppet::Util::Execution.
|
932
|
+
allow(Puppet::Util::Execution).to receive(:execute).and_raise(Puppet::ExecutionFailure, "failed to execute")
|
908
933
|
expect {
|
909
934
|
Puppet::Util::Execution.execfail("this will fail", Puppet::Error)
|
910
935
|
}.to raise_error(Puppet::Error, /failed to execute/)
|
911
936
|
end
|
912
937
|
|
913
938
|
it "raises exceptions that don't extend ExecutionFailure" do
|
914
|
-
Puppet::Util::Execution.
|
939
|
+
allow(Puppet::Util::Execution).to receive(:execute).and_raise(ArgumentError, "failed to execute")
|
915
940
|
expect {
|
916
941
|
Puppet::Util::Execution.execfail("this will fail", Puppet::Error)
|
917
942
|
}.to raise_error(ArgumentError, /failed to execute/)
|
918
943
|
end
|
919
944
|
|
920
945
|
it "raises a TypeError if the exception class is nil" do
|
921
|
-
Puppet::Util::Execution.
|
946
|
+
allow(Puppet::Util::Execution).to receive(:execute).and_raise(Puppet::ExecutionFailure, "failed to execute")
|
922
947
|
expect {
|
923
948
|
Puppet::Util::Execution.execfail('echo hello', nil)
|
924
949
|
}.to raise_error(TypeError, /exception class\/object expected/)
|