puppet 6.20.0-x64-mingw32 → 7.4.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +1 -4
- data/Gemfile.lock +13 -13
- data/README.md +1 -1
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -2
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +2 -14
- data/ext/redhat/puppet.spec.erb +0 -1
- data/ext/windows/service/daemon.rb +6 -5
- data/install.rb +21 -17
- data/lib/puppet.rb +11 -20
- data/lib/puppet/application.rb +172 -98
- data/lib/puppet/application/device.rb +100 -104
- data/lib/puppet/application/filebucket.rb +13 -9
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/configurer.rb +27 -29
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/defaults.rb +57 -162
- data/lib/puppet/environments.rb +8 -23
- data/lib/puppet/face/facts.rb +73 -49
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node/clean.rb +8 -0
- data/lib/puppet/face/plugin.rb +5 -8
- data/lib/puppet/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +6 -32
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/forge/repository.rb +0 -1
- data/lib/puppet/generate/models/type/type.rb +4 -1
- data/lib/puppet/http.rb +22 -13
- data/lib/puppet/http/client.rb +164 -114
- data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
- data/lib/puppet/http/errors.rb +16 -0
- data/lib/puppet/http/external_client.rb +5 -7
- data/lib/puppet/{network/http → http}/factory.rb +8 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +4 -12
- data/lib/puppet/http/resolver.rb +5 -15
- data/lib/puppet/http/resolver/server_list.rb +6 -10
- data/lib/puppet/http/resolver/settings.rb +4 -7
- data/lib/puppet/http/resolver/srv.rb +7 -11
- data/lib/puppet/http/response.rb +36 -54
- data/lib/puppet/http/response_converter.rb +24 -0
- data/lib/puppet/http/response_net_http.rb +42 -0
- data/lib/puppet/http/retry_after_handler.rb +4 -13
- data/lib/puppet/http/service.rb +12 -26
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +22 -69
- data/lib/puppet/http/service/file_server.rb +18 -27
- data/lib/puppet/http/service/puppetserver.rb +26 -12
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +11 -20
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/facts/facter.rb +25 -3
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +2 -6
- data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- data/lib/puppet/indirector/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +0 -101
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/formats.rb +67 -0
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +3 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
- data/lib/puppet/parser/compiler.rb +0 -198
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/resource.rb +0 -69
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/issues.rb +0 -5
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- data/lib/puppet/pops/model/ast.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
- data/lib/puppet/pops/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +9 -37
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
- data/lib/puppet/property/list.rb +1 -1
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/group/groupadd.rb +13 -8
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +30 -2
- data/lib/puppet/provider/package/aptitude.rb +6 -0
- data/lib/puppet/provider/package/dpkg.rb +0 -10
- data/lib/puppet/provider/package/gem.rb +23 -3
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pkg.rb +0 -4
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +1 -4
- data/lib/puppet/provider/service/debian.rb +2 -0
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/provider/user/useradd.rb +55 -8
- data/lib/puppet/reference/configuration.rb +7 -5
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +1 -89
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +3 -119
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +45 -33
- data/lib/puppet/settings/integer_setting.rb +17 -0
- data/lib/puppet/settings/port_setting.rb +15 -0
- data/lib/puppet/settings/priority_setting.rb +5 -4
- data/lib/puppet/ssl.rb +10 -6
- data/lib/puppet/ssl/base.rb +3 -5
- data/lib/puppet/ssl/certificate.rb +0 -6
- data/lib/puppet/ssl/certificate_request.rb +1 -12
- data/lib/puppet/ssl/certificate_signer.rb +6 -0
- data/lib/puppet/ssl/oids.rb +3 -1
- data/lib/puppet/ssl/ssl_provider.rb +17 -0
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +1 -3
- data/lib/puppet/transaction.rb +1 -7
- data/lib/puppet/transaction/report.rb +2 -4
- data/lib/puppet/type.rb +0 -76
- data/lib/puppet/type/file.rb +5 -7
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/source.rb +1 -1
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/package.rb +8 -16
- data/lib/puppet/type/user.rb +1 -1
- data/lib/puppet/util/execution.rb +0 -11
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/run_mode.rb +9 -1
- data/lib/puppet/util/windows.rb +3 -8
- data/lib/puppet/util/windows/daemon.rb +360 -0
- data/lib/puppet/util/windows/error.rb +1 -0
- data/lib/puppet/util/windows/eventlog.rb +4 -9
- data/lib/puppet/util/windows/file.rb +8 -242
- data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/service.rb +9 -460
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/yaml.rb +0 -22
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +5 -1
- data/lib/puppet/x509/cert_provider.rb +29 -1
- data/locales/puppet.pot +521 -1226
- data/man/man5/puppet.conf.5 +35 -95
- 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 +57 -36
- data/man/man8/puppet-filebucket.8 +4 -4
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -58
- 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.8 +2 -2
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/integration/application/agent_spec.rb +57 -11
- data/spec/integration/application/apply_spec.rb +1 -1
- data/spec/integration/application/filebucket_spec.rb +16 -16
- data/spec/integration/application/help_spec.rb +2 -0
- data/spec/integration/application/plugin_spec.rb +23 -1
- data/spec/integration/defaults_spec.rb +7 -3
- data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
- data/spec/integration/network/http_pool_spec.rb +3 -21
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/type/file_spec.rb +5 -4
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/lib/puppet_spec/puppetserver.rb +1 -1
- data/spec/lib/puppet_spec/settings.rb +1 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/agent_spec.rb +0 -2
- data/spec/unit/application/facts_spec.rb +86 -0
- data/spec/unit/application/filebucket_spec.rb +41 -39
- data/spec/unit/application/ssl_spec.rb +2 -2
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +6 -2
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +12 -9
- data/spec/unit/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +22 -47
- data/spec/unit/environments_spec.rb +0 -3
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +14 -2
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +22 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- data/spec/unit/functions/camelcase_spec.rb +1 -1
- data/spec/unit/functions/capitalize_spec.rb +1 -1
- data/spec/unit/functions/downcase_spec.rb +1 -1
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/http/client_spec.rb +7 -8
- data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
- data/spec/unit/http/external_client_spec.rb +4 -4
- data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +13 -13
- data/spec/unit/http/service/compiler_spec.rb +0 -62
- data/spec/unit/http/service/file_server_spec.rb +3 -3
- data/spec/unit/http/service/puppetserver_spec.rb +34 -4
- data/spec/unit/http/service_spec.rb +0 -1
- data/spec/unit/http/session_spec.rb +16 -14
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- data/spec/unit/indirector/facts/facter_spec.rb +113 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/report/rest_spec.rb +2 -17
- data/spec/unit/indirector/request_spec.rb +0 -264
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/network/authconfig_spec.rb +2 -129
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/formats_spec.rb +45 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -92
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +19 -41
- data/spec/unit/network/http/handler_spec.rb +0 -1
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +33 -21
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
- data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
- data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
- data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -46
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/provider/group/groupadd_spec.rb +5 -2
- data/spec/unit/provider/nameservice_spec.rb +0 -57
- data/spec/unit/provider/package/apt_spec.rb +24 -15
- data/spec/unit/provider/package/aptitude_spec.rb +1 -1
- data/spec/unit/provider/package/dpkg_spec.rb +0 -48
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
- data/spec/unit/provider/service/smf_spec.rb +401 -165
- data/spec/unit/provider/service/windows_spec.rb +0 -1
- data/spec/unit/provider/user/useradd_spec.rb +55 -3
- data/spec/unit/provider_spec.rb +0 -12
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource_spec.rb +0 -56
- data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
- data/spec/unit/settings/integer_setting_spec.rb +42 -0
- data/spec/unit/settings/port_setting_spec.rb +31 -0
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +17 -0
- data/spec/unit/ssl/base_spec.rb +36 -3
- data/spec/unit/ssl/certificate_request_spec.rb +19 -55
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/transaction/report_spec.rb +0 -2
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +45 -79
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +1 -1
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +12 -6
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type_spec.rb +20 -0
- data/spec/unit/util/backups_spec.rb +0 -2
- data/spec/unit/util/execution_spec.rb +0 -29
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/run_mode_spec.rb +21 -121
- data/spec/unit/util/windows/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +0 -18
- metadata +48 -219
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
- data/lib/puppet/network/http/base_pool.rb +0 -36
- data/lib/puppet/network/http/compression.rb +0 -127
- data/lib/puppet/network/http/connection_adapter.rb +0 -184
- data/lib/puppet/network/http/nocache_pool.rb +0 -28
- data/lib/puppet/network/rest_controller.rb +0 -2
- data/lib/puppet/network/rights.rb +0 -210
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
- data/lib/puppet/parser/environment_compiler.rb +0 -202
- data/lib/puppet/pops/types/enumeration.rb +0 -16
- data/lib/puppet/resource/capability_finder.rb +0 -154
- data/lib/puppet/rest/errors.rb +0 -15
- data/lib/puppet/rest/response.rb +0 -35
- data/lib/puppet/rest/route.rb +0 -85
- data/lib/puppet/rest/routes.rb +0 -135
- data/lib/puppet/ssl/host.rb +0 -505
- data/lib/puppet/ssl/key.rb +0 -61
- data/lib/puppet/ssl/validator.rb +0 -61
- data/lib/puppet/ssl/validator/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/verifier_adapter.rb +0 -58
- data/lib/puppet/status.rb +0 -40
- data/lib/puppet/util/connection.rb +0 -88
- data/lib/puppet/util/fact_dif.rb +0 -62
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -309
- data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- data/spec/integration/network/authconfig_spec.rb +0 -256
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
- data/spec/unit/application/man_spec.rb +0 -52
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/status_spec.rb +0 -9
- data/spec/unit/indirector/certificate/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
- data/spec/unit/indirector/key/file_spec.rb +0 -78
- data/spec/unit/indirector/ssl_file_spec.rb +0 -305
- data/spec/unit/indirector/status/local_spec.rb +0 -10
- data/spec/unit/indirector/status/rest_spec.rb +0 -50
- data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -730
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -148
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -645
- data/spec/unit/ssl/key_spec.rb +0 -173
- data/spec/unit/ssl/validator_spec.rb +0 -278
- data/spec/unit/status_spec.rb +0 -45
- data/spec/unit/util/ssl_spec.rb +0 -91
@@ -9,7 +9,8 @@ describe "puppet plugin" do
|
|
9
9
|
let(:plugin) { Puppet::Application[:plugin] }
|
10
10
|
let(:response_body) { "[{\"path\":\"/etc/puppetlabs/code/environments/production/modules\",\"relative_path\":\".\",\"links\":\"follow\",\"owner\":0,\"group\":0,\"mode\":493,\"checksum\":{\"type\":\"ctime\",\"value\":\"{ctime}2020-03-06 20:14:25 UTC\"},\"type\":\"directory\",\"destination\":null}]" }
|
11
11
|
|
12
|
-
it "downloads from plugins, pluginsfacts and locales mounts" do
|
12
|
+
it "downloads from plugins, pluginsfacts and locales mounts when i18n is enabled" do
|
13
|
+
Puppet[:disable_i18n] = false
|
13
14
|
current_version_handler = -> (req, res) {
|
14
15
|
res['X-Puppet-Version'] = Puppet.version
|
15
16
|
res['Content-Type'] = 'application/json'
|
@@ -28,6 +29,27 @@ describe "puppet plugin" do
|
|
28
29
|
end
|
29
30
|
end
|
30
31
|
|
32
|
+
it "downloads from plugins, pluginsfacts but no locales mounts when i18n is disabled" do
|
33
|
+
Puppet[:disable_i18n] = true
|
34
|
+
|
35
|
+
current_version_handler = -> (req, res) {
|
36
|
+
res['X-Puppet-Version'] = Puppet.version
|
37
|
+
res['Content-Type'] = 'application/json'
|
38
|
+
res.body = response_body
|
39
|
+
}
|
40
|
+
|
41
|
+
server.start_server(mounts: {file_metadatas: current_version_handler}) do |port|
|
42
|
+
Puppet[:serverport] = port
|
43
|
+
expect {
|
44
|
+
plugin.command_line.args << 'download'
|
45
|
+
plugin.run
|
46
|
+
}.to exit_with(0)
|
47
|
+
.and output(matching(
|
48
|
+
"Downloaded these plugins: #{Regexp.escape(Puppet[:pluginfactdest])}, #{Regexp.escape(Puppet[:plugindest])}"
|
49
|
+
)).to_stdout
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
31
53
|
it "downloads from plugins and pluginsfacts from older puppetservers" do
|
32
54
|
no_locales_handler = -> (req, res) {
|
33
55
|
res['X-Puppet-Version'] = '5.3.3' # locales mount was added in 5.3.4
|
@@ -152,6 +152,10 @@ describe "Puppet defaults" do
|
|
152
152
|
expect(Puppet.settings.value(:preferred_serialization_format)).to eq("json")
|
153
153
|
end
|
154
154
|
|
155
|
+
it "should default to true the disable_i18n setting" do
|
156
|
+
expect(Puppet.settings.value(:disable_i18n)).to eq(true)
|
157
|
+
end
|
158
|
+
|
155
159
|
it "should have a setting for determining the configuration version and should default to an empty string" do
|
156
160
|
expect(Puppet.settings[:config_version]).to eq("")
|
157
161
|
end
|
@@ -164,18 +168,18 @@ describe "Puppet defaults" do
|
|
164
168
|
|
165
169
|
it "should use the default serverport value when report port is unspecified" do
|
166
170
|
Puppet.settings[:serverport] = "1234"
|
167
|
-
expect(Puppet.settings[:report_port]).to eq(
|
171
|
+
expect(Puppet.settings[:report_port]).to eq(1234)
|
168
172
|
end
|
169
173
|
|
170
174
|
it "should use the default masterport value when report port is unspecified" do
|
171
175
|
Puppet.settings[:masterport] = "1234"
|
172
|
-
expect(Puppet.settings[:report_port]).to eq(
|
176
|
+
expect(Puppet.settings[:report_port]).to eq(1234)
|
173
177
|
end
|
174
178
|
|
175
179
|
it "should use report_port when set" do
|
176
180
|
Puppet.settings[:serverport] = "1234"
|
177
181
|
Puppet.settings[:report_port] = "5678"
|
178
|
-
expect(Puppet.settings[:report_port]).to eq(
|
182
|
+
expect(Puppet.settings[:report_port]).to eq(5678)
|
179
183
|
end
|
180
184
|
end
|
181
185
|
|
@@ -86,8 +86,6 @@ describe Puppet::Indirector::FileContent::FileServer, " when finding files" do
|
|
86
86
|
|
87
87
|
# Use a real mount, so the integration is a bit deeper.
|
88
88
|
mount1 = Puppet::FileServing::Configuration::Mount::File.new("one")
|
89
|
-
allow(mount1).to receive(:globalallow?).and_return(true)
|
90
|
-
allow(mount1).to receive(:allowed?).and_return(true)
|
91
89
|
mount1.path = File.join(path, "%h")
|
92
90
|
|
93
91
|
parser = double('parser', :changed? => false)
|
@@ -59,8 +59,6 @@ describe Puppet::Indirector::FileMetadata::FileServer, " when finding files" do
|
|
59
59
|
|
60
60
|
# Use a real mount, so the integration is a bit deeper.
|
61
61
|
mount1 = Puppet::FileServing::Configuration::Mount::File.new("one")
|
62
|
-
allow(mount1).to receive(:globalallow?).and_return(true)
|
63
|
-
allow(mount1).to receive(:allowed?).and_return(true)
|
64
62
|
mount1.path = File.join(env_path, "%h")
|
65
63
|
|
66
64
|
parser = double('parser', :changed? => false)
|
@@ -81,16 +81,6 @@ describe Puppet::Network::HttpPool, unless: Puppet::Util::Platform.jruby? do
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
-
it "doesn't generate a Puppet::SSL::Host deprecation warning" do
|
85
|
-
server.start_server do |port|
|
86
|
-
http = connection(hostname, port)
|
87
|
-
res = http.get('/')
|
88
|
-
expect(res.code).to eq('200')
|
89
|
-
end
|
90
|
-
|
91
|
-
expect(@logs).to eq([])
|
92
|
-
end
|
93
|
-
|
94
84
|
it "detects when the server has closed the connection and reconnects" do
|
95
85
|
server.start_server do |port|
|
96
86
|
http = connection(hostname, port)
|
@@ -101,17 +91,13 @@ describe Puppet::Network::HttpPool, unless: Puppet::Util::Platform.jruby? do
|
|
101
91
|
end
|
102
92
|
end
|
103
93
|
|
104
|
-
context "when using single use HTTPS connections" do
|
105
|
-
include_examples 'HTTPS client'
|
106
|
-
end
|
107
|
-
|
108
94
|
context "when using persistent HTTPS connections" do
|
109
95
|
around :each do |example|
|
110
|
-
|
111
|
-
Puppet.override(:http_pool => pool) do
|
96
|
+
begin
|
112
97
|
example.run
|
98
|
+
ensure
|
99
|
+
Puppet.runtime[:http].close
|
113
100
|
end
|
114
|
-
pool.close
|
115
101
|
end
|
116
102
|
|
117
103
|
include_examples 'HTTPS client'
|
@@ -183,10 +169,6 @@ describe Puppet::Network::HttpPool, unless: Puppet::Util::Platform.jruby? do
|
|
183
169
|
end
|
184
170
|
|
185
171
|
describe Puppet::Network::HTTP::Connection do
|
186
|
-
it_behaves_like "an HttpPool connection", described_class, true
|
187
|
-
end
|
188
|
-
|
189
|
-
describe Puppet::Network::HTTP::ConnectionAdapter do
|
190
172
|
it_behaves_like "an HttpPool connection", described_class, false
|
191
173
|
end
|
192
174
|
end
|
@@ -48,44 +48,6 @@ describe "A catalog" do
|
|
48
48
|
expect(resources_in(agent_catalog)).
|
49
49
|
to include_in_order(*resources_in_declaration_order)
|
50
50
|
end
|
51
|
-
|
52
|
-
it "does not contain unrealized, virtual resources" do
|
53
|
-
virtual_resources = ["Unrealized[unreal]", "Class[Unreal]"]
|
54
|
-
|
55
|
-
master_catalog, agent_catalog = master_and_agent_catalogs_for(<<-EOM)
|
56
|
-
class unreal { }
|
57
|
-
define unrealized() { }
|
58
|
-
|
59
|
-
class real {
|
60
|
-
@unrealized { "unreal": }
|
61
|
-
@class { "unreal": }
|
62
|
-
}
|
63
|
-
|
64
|
-
include real
|
65
|
-
EOM
|
66
|
-
|
67
|
-
expect(resources_in(master_catalog)).to_not include(*virtual_resources)
|
68
|
-
expect(resources_in(agent_catalog)).to_not include(*virtual_resources)
|
69
|
-
end
|
70
|
-
|
71
|
-
it "does not contain unrealized, exported resources" do
|
72
|
-
exported_resources = ["Unrealized[unreal]", "Class[Unreal]"]
|
73
|
-
|
74
|
-
master_catalog, agent_catalog = master_and_agent_catalogs_for(<<-EOM)
|
75
|
-
class unreal { }
|
76
|
-
define unrealized() { }
|
77
|
-
|
78
|
-
class real {
|
79
|
-
@@unrealized { "unreal": }
|
80
|
-
@@class { "unreal": }
|
81
|
-
}
|
82
|
-
|
83
|
-
include real
|
84
|
-
EOM
|
85
|
-
|
86
|
-
expect(resources_in(master_catalog)).to_not include(*exported_resources)
|
87
|
-
expect(resources_in(agent_catalog)).to_not include(*exported_resources)
|
88
|
-
end
|
89
51
|
end
|
90
52
|
end
|
91
53
|
|
@@ -117,15 +117,6 @@ describe 'node statements' do
|
|
117
117
|
expect(catalog).to have_resource('Notify[matched]')
|
118
118
|
end
|
119
119
|
|
120
|
-
it 'selects a node that is a prefix of the agent name' do
|
121
|
-
Puppet[:strict_hostname_checking] = false
|
122
|
-
catalog = compile_to_catalog(<<-MANIFEST, Puppet::Node.new("node.name.com"))
|
123
|
-
node 'node.name' { notify { matched: } }
|
124
|
-
MANIFEST
|
125
|
-
|
126
|
-
expect(catalog).to have_resource('Notify[matched]')
|
127
|
-
end
|
128
|
-
|
129
120
|
it 'does not treat regex symbols as a regex inside a string literal' do
|
130
121
|
catalog = compile_to_catalog(<<-MANIFEST, Puppet::Node.new("nodexname"))
|
131
122
|
node 'node.name' { notify { 'not matched': } }
|
@@ -68,16 +68,6 @@ describe 'when pcore described resources types are in use' do
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
RUBY
|
71
|
-
'cap.rb' => <<-EOF
|
72
|
-
module Puppet
|
73
|
-
Type.newtype(:cap, :is_capability => true) do
|
74
|
-
@doc = "Docs for capability"
|
75
|
-
@isomorphic = false
|
76
|
-
newproperty(:message) do
|
77
|
-
desc "Docs for 'message' property"
|
78
|
-
end
|
79
|
-
end;end
|
80
|
-
EOF
|
81
71
|
} } },
|
82
72
|
}
|
83
73
|
}}})
|
@@ -126,14 +116,10 @@ describe 'when pcore described resources types are in use' do
|
|
126
116
|
test3 { 'x/y':
|
127
117
|
message => 'x/y works'
|
128
118
|
}
|
129
|
-
cap { 'c':
|
130
|
-
message => 'c works'
|
131
|
-
}
|
132
119
|
MANIFEST
|
133
120
|
expect(catalog.resource(:test1, "a")['message']).to eq('a works')
|
134
121
|
expect(catalog.resource(:test2, "b")['message']).to eq('b works')
|
135
122
|
expect(catalog.resource(:test3, "x/y")['message']).to eq('x/y works')
|
136
|
-
expect(catalog.resource(:cap, "c")['message']).to eq('c works')
|
137
123
|
end
|
138
124
|
|
139
125
|
it 'the validity of attribute names are checked' do
|
@@ -158,20 +144,6 @@ describe 'when pcore described resources types are in use' do
|
|
158
144
|
expect(catalog.resource(:test1, "a")['noop']).to eq(true)
|
159
145
|
end
|
160
146
|
|
161
|
-
it 'capability is propagated to the catalog' do
|
162
|
-
genface.types
|
163
|
-
catalog = compile_to_catalog(<<-MANIFEST)
|
164
|
-
test2 { 'r':
|
165
|
-
message => 'a resource'
|
166
|
-
}
|
167
|
-
cap { 'c':
|
168
|
-
message => 'a cap'
|
169
|
-
}
|
170
|
-
MANIFEST
|
171
|
-
expect(catalog.resource(:test2, "r").is_capability?).to eq(false)
|
172
|
-
expect(catalog.resource(:cap, "c").is_capability?).to eq(true)
|
173
|
-
end
|
174
|
-
|
175
147
|
it 'a generated type describes if it is isomorphic' do
|
176
148
|
generate_and_in_a_compilers_context do |compiler|
|
177
149
|
t1 = find_resource_type(compiler.topscope, 'test1')
|
@@ -181,15 +153,6 @@ describe 'when pcore described resources types are in use' do
|
|
181
153
|
end
|
182
154
|
end
|
183
155
|
|
184
|
-
it 'a generated type describes if it is a capability' do
|
185
|
-
generate_and_in_a_compilers_context do |compiler|
|
186
|
-
t1 = find_resource_type(compiler.topscope, 'test1')
|
187
|
-
expect(t1.is_capability?).to be(false)
|
188
|
-
t2 = find_resource_type(compiler.topscope, 'cap')
|
189
|
-
expect(t2.is_capability?).to be(true)
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
156
|
it 'a generated type returns parameters defined in pcore' do
|
194
157
|
generate_and_in_a_compilers_context do |compiler|
|
195
158
|
t1 = find_resource_type(compiler.topscope, 'test1')
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
require 'puppet_spec/files'
|
@@ -657,9 +658,9 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
657
658
|
|
658
659
|
CHECKSUM_TYPES_TO_TRY.each do |checksum_type, checksum|
|
659
660
|
describe "when checksum_type is #{checksum_type}" do
|
660
|
-
# FileBucket uses the globally configured default for lookup by digest, which right now is
|
661
|
+
# FileBucket uses the globally configured default for lookup by digest, which right now is SHA256.
|
661
662
|
it_should_behave_like "files are backed up", {:checksum => checksum_type} do
|
662
|
-
let(:filebucket_digest) { Proc.new {|x| Puppet::Util::Checksums.
|
663
|
+
let(:filebucket_digest) { Proc.new {|x| Puppet::Util::Checksums.sha256(x)} }
|
663
664
|
end
|
664
665
|
end
|
665
666
|
end
|
@@ -1727,7 +1728,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1727
1728
|
#{test_cmd} "644" == "$(#{stat_cmd} ^)"
|
1728
1729
|
}))
|
1729
1730
|
report = catalog.apply.report
|
1730
|
-
expect(report.resource_statuses["File[#{path}]"].events.first.message).to match(/defined content as '{
|
1731
|
+
expect(report.resource_statuses["File[#{path}]"].events.first.message).to match(/defined content as '{sha256}/)
|
1731
1732
|
expect(report.resource_statuses["File[#{path}]"]).not_to be_failed
|
1732
1733
|
expect(Puppet::FileSystem.exist?(path)).to be_truthy
|
1733
1734
|
end
|
@@ -1741,7 +1742,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1741
1742
|
#{test_cmd} "555" == "$(#{stat_cmd} ^)"
|
1742
1743
|
}))
|
1743
1744
|
report = catalog.apply.report
|
1744
|
-
expect(report.resource_statuses["File[#{path}]"].events.first.message).to match(/defined content as '{
|
1745
|
+
expect(report.resource_statuses["File[#{path}]"].events.first.message).to match(/defined content as '{sha256}/)
|
1745
1746
|
expect(report.resource_statuses["File[#{path}]"]).not_to be_failed
|
1746
1747
|
expect(Puppet::FileSystem.exist?(path)).to be_truthy
|
1747
1748
|
end
|
@@ -0,0 +1,231 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe 'Process', if: Puppet::Util::Platform.windows? do
|
6
|
+
describe '.create' do
|
7
|
+
context 'with common flags' do
|
8
|
+
it do
|
9
|
+
Process.create(
|
10
|
+
app_name: 'cmd.exe /c echo 123',
|
11
|
+
creation_flags: 0x00000008,
|
12
|
+
process_inherit: false,
|
13
|
+
thread_inherit: false,
|
14
|
+
cwd: 'C:\\'
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'when FFI call fails' do
|
19
|
+
before do
|
20
|
+
allow(Process).to receive(:CreateProcessW).and_return(false)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'raises SystemCallError' do
|
24
|
+
expect do
|
25
|
+
Process.create(
|
26
|
+
app_name: 'cmd.exe /c echo 123',
|
27
|
+
creation_flags: 0x00000008
|
28
|
+
)
|
29
|
+
end.to raise_error(SystemCallError)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'with logon' do
|
35
|
+
context 'without password' do
|
36
|
+
it 'raises error' do
|
37
|
+
expect do
|
38
|
+
Process.create(
|
39
|
+
app_name: 'cmd.exe /c echo 123',
|
40
|
+
creation_flags: 0x00000008,
|
41
|
+
with_logon: 'test'
|
42
|
+
)
|
43
|
+
end.to raise_error(ArgumentError, 'password must be specified if with_logon is used')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'with common flags' do
|
48
|
+
before do
|
49
|
+
allow(Process).to receive(:CreateProcessWithLogonW).and_return(true)
|
50
|
+
end
|
51
|
+
|
52
|
+
it do
|
53
|
+
Process.create(
|
54
|
+
app_name: 'cmd.exe /c echo 123',
|
55
|
+
creation_flags: 0x00000008,
|
56
|
+
process_inherit: false,
|
57
|
+
thread_inherit: false,
|
58
|
+
with_logon: 'test',
|
59
|
+
password: 'password',
|
60
|
+
cwd: 'C:\\'
|
61
|
+
)
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'when FFI call fails' do
|
65
|
+
before do
|
66
|
+
allow(Process).to receive(:CreateProcessWithLogonW).and_return(false)
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'raises SystemCallError' do
|
70
|
+
expect do
|
71
|
+
Process.create(
|
72
|
+
app_name: 'cmd.exe /c echo 123',
|
73
|
+
creation_flags: 0x00000008,
|
74
|
+
with_logon: 'test',
|
75
|
+
password: 'password'
|
76
|
+
)
|
77
|
+
end.to raise_error(SystemCallError)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe 'validations' do
|
84
|
+
context 'when args is not a hash' do
|
85
|
+
it 'raises TypeError' do
|
86
|
+
expect do
|
87
|
+
Process.create('test')
|
88
|
+
end.to raise_error(TypeError, 'hash keyword arguments expected')
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context 'when args key is invalid' do
|
93
|
+
it 'raises ArgumentError' do
|
94
|
+
expect do
|
95
|
+
Process.create(invalid_key: 'test')
|
96
|
+
end.to raise_error(ArgumentError, "invalid key 'invalid_key'")
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context 'when startup_info is invalid' do
|
101
|
+
it 'raises ArgumentError' do
|
102
|
+
expect do
|
103
|
+
Process.create(startup_info: { invalid_key: 'test' })
|
104
|
+
end.to raise_error(ArgumentError, "invalid startup_info key 'invalid_key'")
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
context 'when app_name and command_line are missing' do
|
109
|
+
it 'raises ArgumentError' do
|
110
|
+
expect do
|
111
|
+
Process.create(creation_flags: 0)
|
112
|
+
end.to raise_error(ArgumentError, 'command_line or app_name must be specified')
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
context 'when executable is not found' do
|
117
|
+
it 'raises Errno::ENOENT' do
|
118
|
+
expect do
|
119
|
+
Process.create(app_name: 'non_existent')
|
120
|
+
end.to raise_error(Errno::ENOENT)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
context 'when environment is not specified' do
|
126
|
+
it 'passes local environment' do
|
127
|
+
stdout_read, stdout_write = IO.pipe
|
128
|
+
ENV['TEST_ENV'] = 'B'
|
129
|
+
|
130
|
+
Process.create(
|
131
|
+
app_name: 'cmd.exe /c echo %TEST_ENV%',
|
132
|
+
creation_flags: 0x00000008,
|
133
|
+
startup_info: { stdout: stdout_write }
|
134
|
+
)
|
135
|
+
|
136
|
+
stdout_write.close
|
137
|
+
expect(stdout_read.read.chomp).to eql('B')
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
context 'when environment is specified' do
|
142
|
+
it 'does not pass local environment' do
|
143
|
+
stdout_read, stdout_write = IO.pipe
|
144
|
+
ENV['TEST_ENV'] = 'B'
|
145
|
+
|
146
|
+
Process.create(
|
147
|
+
app_name: 'cmd.exe /c echo %TEST_ENV%',
|
148
|
+
creation_flags: 0x00000008,
|
149
|
+
environment: '',
|
150
|
+
startup_info: { stdout: stdout_write }
|
151
|
+
)
|
152
|
+
|
153
|
+
stdout_write.close
|
154
|
+
expect(stdout_read.read.chomp).to eql('%TEST_ENV%')
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'supports :environment as a string' do
|
158
|
+
stdout_read, stdout_write = IO.pipe
|
159
|
+
|
160
|
+
Process.create(
|
161
|
+
app_name: 'cmd.exe /c echo %A% %B%',
|
162
|
+
creation_flags: 0x00000008,
|
163
|
+
environment: 'A=C;B=D',
|
164
|
+
startup_info: { stdout: stdout_write }
|
165
|
+
)
|
166
|
+
|
167
|
+
stdout_write.close
|
168
|
+
expect(stdout_read.read.chomp).to eql('C D')
|
169
|
+
end
|
170
|
+
|
171
|
+
it 'supports :environment as a string' do
|
172
|
+
stdout_read, stdout_write = IO.pipe
|
173
|
+
|
174
|
+
Process.create(
|
175
|
+
app_name: 'cmd.exe /c echo %A% %C%',
|
176
|
+
creation_flags: 0x00000008,
|
177
|
+
environment: ['A=B;X;', 'C=;D;Y'],
|
178
|
+
startup_info: { stdout: stdout_write }
|
179
|
+
)
|
180
|
+
|
181
|
+
stdout_write.close
|
182
|
+
expect(stdout_read.read.chomp).to eql('B;X; ;D;Y')
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
describe '.setpriority' do
|
188
|
+
let(:priority) { Process::BELOW_NORMAL_PRIORITY_CLASS }
|
189
|
+
|
190
|
+
context 'when success' do
|
191
|
+
it 'returns 0' do
|
192
|
+
expect(Process.setpriority(0, Process.pid, priority)).to eql(0)
|
193
|
+
end
|
194
|
+
|
195
|
+
it 'treats an int argument of zero as the current process' do
|
196
|
+
expect(Process.setpriority(0, 0, priority)).to eql(0)
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
context 'when invalid arguments are sent' do
|
201
|
+
it 'raises TypeError' do
|
202
|
+
expect {
|
203
|
+
Process.setpriority('test', 0, priority)
|
204
|
+
}.to raise_error(TypeError)
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
context 'when process is not found' do
|
209
|
+
before do
|
210
|
+
allow(Process).to receive(:OpenProcess).and_return(0)
|
211
|
+
end
|
212
|
+
it 'raises SystemCallError' do
|
213
|
+
expect {
|
214
|
+
Process.setpriority(0, 0, priority)
|
215
|
+
}.to raise_error(SystemCallError)
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
context 'when priority is not set' do
|
220
|
+
before do
|
221
|
+
allow(Process).to receive(:SetPriorityClass).and_return(false)
|
222
|
+
end
|
223
|
+
|
224
|
+
it 'raises SystemCallError' do
|
225
|
+
expect {
|
226
|
+
Process.setpriority(0, 0, priority)
|
227
|
+
}.to raise_error(SystemCallError)
|
228
|
+
end
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|