puppet 6.12.0-x64-mingw32 → 6.17.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/CODEOWNERS +2 -7
- data/CONTRIBUTING.md +7 -13
- data/Gemfile +4 -2
- data/Gemfile.lock +39 -36
- data/README.md +18 -25
- data/ext/project_data.yaml +1 -1
- data/ext/windows/service/daemon.rb +3 -3
- data/lib/puppet.rb +52 -13
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/application/agent.rb +26 -17
- data/lib/puppet/application/describe.rb +7 -5
- data/lib/puppet/application/device.rb +2 -2
- data/lib/puppet/application/filebucket.rb +19 -15
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/application/ssl.rb +4 -4
- data/lib/puppet/configurer.rb +65 -69
- data/lib/puppet/configurer/plugin_handler.rb +10 -1
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +154 -58
- data/lib/puppet/environments.rb +27 -20
- data/lib/puppet/face/facts.rb +8 -5
- data/lib/puppet/face/help.rb +29 -3
- data/lib/puppet/face/module/search.rb +5 -0
- data/lib/puppet/face/plugin.rb +2 -2
- data/lib/puppet/file_serving/http_metadata.rb +14 -2
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +14 -10
- data/lib/puppet/file_system/memory_file.rb +6 -0
- data/lib/puppet/file_system/memory_impl.rb +13 -0
- data/lib/puppet/file_system/uniquefile.rb +12 -16
- data/lib/puppet/file_system/windows.rb +7 -10
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +4 -7
- data/lib/puppet/functions/call.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/http.rb +5 -0
- data/lib/puppet/http/client.rb +293 -73
- data/lib/puppet/http/errors.rb +2 -0
- data/lib/puppet/http/external_client.rb +90 -0
- data/lib/puppet/http/redirector.rb +43 -7
- data/lib/puppet/http/resolver.rb +46 -3
- data/lib/puppet/http/resolver/server_list.rb +76 -16
- data/lib/puppet/http/resolver/settings.rb +23 -3
- data/lib/puppet/http/resolver/srv.rb +29 -3
- data/lib/puppet/http/response.rb +87 -1
- data/lib/puppet/http/retry_after_handler.rb +39 -0
- data/lib/puppet/http/service.rb +151 -7
- data/lib/puppet/http/service/ca.rb +76 -14
- data/lib/puppet/http/service/compiler.rb +319 -0
- data/lib/puppet/http/service/file_server.rb +206 -0
- data/lib/puppet/http/service/report.rb +49 -23
- data/lib/puppet/http/session.rb +103 -7
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +10 -0
- data/lib/puppet/indirector/catalog/rest.rb +34 -0
- data/lib/puppet/indirector/facts/rest.rb +42 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
- data/lib/puppet/indirector/file_content/http.rb +5 -0
- data/lib/puppet/indirector/file_content/rest.rb +30 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -8
- data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/rest.rb +24 -0
- data/lib/puppet/indirector/report/rest.rb +19 -0
- data/lib/puppet/indirector/report/yaml.rb +23 -0
- data/lib/puppet/indirector/request.rb +1 -1
- data/lib/puppet/indirector/rest.rb +12 -0
- data/lib/puppet/indirector/status/rest.rb +18 -0
- data/lib/puppet/loaders.rb +6 -0
- data/lib/puppet/metatype/manager.rb +80 -80
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/base_pool.rb +7 -2
- data/lib/puppet/network/http/compression.rb +7 -0
- data/lib/puppet/network/http/connection.rb +6 -0
- data/lib/puppet/network/http/connection_adapter.rb +184 -0
- data/lib/puppet/network/http/nocache_pool.rb +2 -0
- data/lib/puppet/network/http/pool.rb +13 -6
- data/lib/puppet/network/http_pool.rb +2 -1
- data/lib/puppet/node/environment.rb +11 -1
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +4 -29
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +6 -15
- data/lib/puppet/parser/compiler.rb +43 -33
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +4 -1
- data/lib/puppet/parser/functions.rb +18 -13
- data/lib/puppet/parser/functions/filter.rb +1 -0
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +6 -6
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +12 -3
- data/lib/puppet/pops/loaders.rb +7 -5
- data/lib/puppet/pops/parser/evaluating_parser.rb +5 -7
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/p_object_type_extension.rb +10 -0
- data/lib/puppet/pops/types/type_calculator.rb +24 -0
- data/lib/puppet/pops/validation/checker4_0.rb +11 -1
- data/lib/puppet/pops/validation/tasks_checker.rb +5 -1
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/provider/aix_object.rb +4 -2
- data/lib/puppet/provider/group/aix.rb +1 -0
- data/lib/puppet/provider/group/groupadd.rb +57 -24
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +78 -4
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +69 -15
- data/lib/puppet/provider/package/dpkg.rb +14 -7
- data/lib/puppet/provider/package/fink.rb +20 -3
- data/lib/puppet/provider/package/gem.rb +41 -7
- data/lib/puppet/provider/package/openbsd.rb +13 -1
- data/lib/puppet/provider/package/pacman.rb +2 -5
- data/lib/puppet/provider/package/pip.rb +143 -48
- data/lib/puppet/provider/package/pip3.rb +0 -2
- data/lib/puppet/provider/package/pkg.rb +18 -5
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +16 -4
- data/lib/puppet/provider/package/portage.rb +2 -2
- data/lib/puppet/provider/package/puppet_gem.rb +6 -2
- data/lib/puppet/provider/package/rpm.rb +6 -213
- data/lib/puppet/provider/package/yum.rb +109 -25
- data/lib/puppet/provider/package/zypper.rb +59 -1
- data/lib/puppet/provider/service/systemd.rb +22 -4
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -0
- data/lib/puppet/provider/user/directoryservice.rb +30 -5
- data/lib/puppet/provider/user/useradd.rb +22 -12
- data/lib/puppet/reports/http.rb +15 -9
- data/lib/puppet/reports/store.rb +1 -1
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +8 -0
- data/lib/puppet/resource/type_collection.rb +20 -16
- data/lib/puppet/runtime.rb +31 -1
- data/lib/puppet/settings.rb +4 -0
- data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/certificate.rb +2 -1
- data/lib/puppet/ssl/host.rb +4 -4
- data/lib/puppet/ssl/oids.rb +1 -0
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/ssl/state_machine.rb +81 -35
- data/lib/puppet/ssl/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +15 -11
- data/lib/puppet/transaction/report.rb +2 -2
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +18 -6
- data/lib/puppet/type/file.rb +51 -13
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +51 -60
- data/lib/puppet/type/group.rb +2 -2
- data/lib/puppet/type/package.rb +102 -10
- data/lib/puppet/type/service.rb +55 -8
- data/lib/puppet/type/user.rb +3 -28
- data/lib/puppet/util.rb +39 -15
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +4 -18
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +2 -11
- data/lib/puppet/util/package/version/debian.rb +175 -0
- data/lib/puppet/util/package/version/gem.rb +15 -0
- data/lib/puppet/util/package/version/pip.rb +167 -0
- data/lib/puppet/util/package/version/range.rb +53 -0
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/package/version/range/gt.rb +14 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/lt.rb +14 -0
- data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/min_max.rb +21 -0
- data/lib/puppet/util/package/version/range/simple.rb +11 -0
- data/lib/puppet/util/package/version/rpm.rb +73 -0
- data/lib/puppet/util/pidlock.rb +36 -10
- data/lib/puppet/util/platform.rb +5 -0
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/rpm_compare.rb +193 -0
- data/lib/puppet/util/storage.rb +0 -1
- data/lib/puppet/util/windows/adsi.rb +2 -2
- data/lib/puppet/util/windows/api_types.rb +45 -32
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +15 -14
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/util/windows/user.rb +23 -8
- data/lib/puppet/util/yaml.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +707 -574
- data/man/man5/puppet.conf.5 +74 -14
- data/man/man8/puppet-agent.8 +7 -7
- 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 +2 -2
- 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 +17 -2
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +6 -3
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +4 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +2 -2
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
- data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-ca.pem +59 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -102
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +1 -106
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -106
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -102
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -98
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -102
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -102
- data/spec/integration/application/agent_spec.rb +483 -0
- data/spec/integration/application/apply_spec.rb +132 -3
- data/spec/integration/application/filebucket_spec.rb +190 -0
- data/spec/integration/application/plugin_spec.rb +73 -0
- data/spec/integration/configurer_spec.rb +26 -7
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/http/client_spec.rb +47 -37
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/indirector/report/yaml.rb +83 -0
- data/spec/integration/module_tool/forge_spec.rb +2 -15
- data/spec/integration/network/http_pool_spec.rb +93 -20
- data/spec/integration/node/environment_spec.rb +15 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/user_spec.rb +40 -5
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +16 -7
- data/spec/lib/puppet_spec/puppetserver.rb +119 -0
- data/spec/shared_contexts/https.rb +29 -0
- data/spec/unit/agent_spec.rb +80 -26
- data/spec/unit/application/agent_spec.rb +9 -5
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/application/describe_spec.rb +88 -50
- data/spec/unit/application/device_spec.rb +2 -2
- data/spec/unit/application/filebucket_spec.rb +22 -2
- data/spec/unit/application/resource_spec.rb +2 -2
- data/spec/unit/configurer/fact_handler_spec.rb +4 -8
- data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
- data/spec/unit/configurer_spec.rb +17 -18
- data/spec/unit/context/trusted_information_spec.rb +25 -2
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/defaults_spec.rb +25 -2
- data/spec/unit/environments_spec.rb +65 -28
- data/spec/unit/face/facts_spec.rb +24 -20
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/plugin_spec.rb +12 -10
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +11 -0
- data/spec/unit/file_system_spec.rb +26 -2
- data/spec/unit/functions/lookup_spec.rb +13 -0
- data/spec/unit/http/client_spec.rb +327 -35
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +34 -2
- data/spec/unit/http/response_spec.rb +75 -0
- data/spec/unit/http/service/ca_spec.rb +53 -11
- data/spec/unit/http/service/compiler_spec.rb +627 -0
- data/spec/unit/http/service/file_server_spec.rb +308 -0
- data/spec/unit/http/service/report_spec.rb +27 -9
- data/spec/unit/http/service_spec.rb +98 -5
- data/spec/unit/http/session_spec.rb +190 -7
- data/spec/unit/indirector/catalog/compiler_spec.rb +47 -29
- data/spec/unit/indirector/catalog/rest_spec.rb +59 -2
- data/spec/unit/indirector/facts/rest_spec.rb +79 -24
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
- data/spec/unit/indirector/file_content/rest_spec.rb +53 -2
- data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -2
- data/spec/unit/indirector/node/rest_spec.rb +57 -2
- data/spec/unit/indirector/report/rest_spec.rb +58 -51
- data/spec/unit/indirector/request_spec.rb +1 -1
- data/spec/unit/indirector/resource/ral_spec.rb +7 -8
- data/spec/unit/indirector/rest_spec.rb +13 -0
- data/spec/unit/indirector/status/rest_spec.rb +43 -2
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +559 -175
- data/spec/unit/network/http/nocache_pool_spec.rb +25 -3
- data/spec/unit/network/http/pool_spec.rb +89 -11
- data/spec/unit/network/http_pool_spec.rb +63 -57
- data/spec/unit/network/http_spec.rb +1 -1
- data/spec/unit/node/environment_spec.rb +16 -0
- data/spec/unit/node/facts_spec.rb +2 -1
- data/spec/unit/node_spec.rb +7 -4
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +1 -1
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +6 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/pops/validator/validator_spec.rb +7 -2
- data/spec/unit/provider/aix_object_spec.rb +16 -2
- data/spec/unit/provider/group/groupadd_spec.rb +181 -56
- data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +43 -2
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +76 -15
- data/spec/unit/provider/package/dpkg_spec.rb +28 -6
- data/spec/unit/provider/package/gem_spec.rb +40 -0
- data/spec/unit/provider/package/openbsd_spec.rb +17 -0
- data/spec/unit/provider/package/pacman_spec.rb +6 -21
- data/spec/unit/provider/package/pip_spec.rb +68 -19
- data/spec/unit/provider/package/pkg_spec.rb +15 -1
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +38 -0
- data/spec/unit/provider/package/portage_spec.rb +5 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +8 -0
- data/spec/unit/provider/package/rpm_spec.rb +0 -212
- data/spec/unit/provider/package/yum_spec.rb +292 -0
- data/spec/unit/provider/package/zypper_spec.rb +84 -0
- data/spec/unit/provider/service/init_spec.rb +1 -0
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -0
- data/spec/unit/provider/service/redhat_spec.rb +9 -0
- data/spec/unit/provider/service/systemd_spec.rb +92 -12
- data/spec/unit/provider/service/windows_spec.rb +22 -14
- data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +43 -24
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +0 -26
- data/spec/unit/puppet_pal_catalog_spec.rb +46 -0
- data/spec/unit/puppet_spec.rb +47 -0
- data/spec/unit/reports/http_spec.rb +70 -52
- data/spec/unit/resource_spec.rb +3 -3
- data/spec/unit/settings/autosign_setting_spec.rb +1 -1
- data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
- data/spec/unit/ssl/certificate_spec.rb +7 -0
- data/spec/unit/ssl/host_spec.rb +4 -2
- data/spec/unit/ssl/oids_spec.rb +1 -0
- data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
- data/spec/unit/ssl/state_machine_spec.rb +99 -13
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +1 -10
- data/spec/unit/transaction/report_spec.rb +5 -1
- data/spec/unit/transaction_spec.rb +0 -2
- data/spec/unit/type/file/ensure_spec.rb +1 -2
- data/spec/unit/type/file/source_spec.rb +89 -38
- data/spec/unit/type/file_spec.rb +122 -96
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/service_spec.rb +185 -8
- data/spec/unit/type/user_spec.rb +1 -2
- data/spec/unit/type_spec.rb +50 -0
- data/spec/unit/util/at_fork_spec.rb +3 -2
- data/spec/unit/util/autoload_spec.rb +2 -1
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/log/destinations_spec.rb +1 -29
- data/spec/unit/util/package/version/debian_spec.rb +83 -0
- data/spec/unit/util/package/version/pip_spec.rb +464 -0
- data/spec/unit/util/package/version/range_spec.rb +175 -0
- data/spec/unit/util/package/version/rpm_spec.rb +121 -0
- data/spec/unit/util/pidlock_spec.rb +112 -42
- data/spec/unit/util/plist_spec.rb +20 -0
- data/spec/unit/util/rpm_compare_spec.rb +196 -0
- data/spec/unit/util/storage_spec.rb +1 -8
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/spec/unit/util_spec.rb +3 -3
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- data/tasks/generate_cert_fixtures.rake +15 -1
- data/tasks/manpages.rake +5 -35
- metadata +73 -12
- data/COMMITTERS.md +0 -244
- data/spec/integration/faces/plugin_spec.rb +0 -61
- data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -257,6 +257,26 @@ context Puppet::Type.type(:package).provider(:gem) do
|
|
257
257
|
resource[:ensure] = '3.6.2'
|
258
258
|
expect(provider).to_not be_insync(is)
|
259
259
|
end
|
260
|
+
|
261
|
+
it 'returns true for >2, <4' do
|
262
|
+
resource[:ensure] = '>2, <4'
|
263
|
+
expect(provider).to be_insync(is)
|
264
|
+
end
|
265
|
+
|
266
|
+
it 'returns false for >=4, <5' do
|
267
|
+
resource[:ensure] = '>=4, <5'
|
268
|
+
expect(provider).to_not be_insync(is)
|
269
|
+
end
|
270
|
+
|
271
|
+
it 'returns true for >2 <4' do
|
272
|
+
resource[:ensure] = '>2 <4'
|
273
|
+
expect(provider).to be_insync(is)
|
274
|
+
end
|
275
|
+
|
276
|
+
it 'returns false for >=4 <5' do
|
277
|
+
resource[:ensure] = '>=4 <5'
|
278
|
+
expect(provider).to_not be_insync(is)
|
279
|
+
end
|
260
280
|
end
|
261
281
|
|
262
282
|
context 'for string version' do
|
@@ -286,6 +306,26 @@ context Puppet::Type.type(:package).provider(:gem) do
|
|
286
306
|
resource[:ensure] = '3.6.1'
|
287
307
|
expect(provider).to_not be_insync(is)
|
288
308
|
end
|
309
|
+
|
310
|
+
it 'returns true for >=1.3, <2' do
|
311
|
+
resource[:ensure] = '>=1.3, <2'
|
312
|
+
expect(provider).to be_insync(is)
|
313
|
+
end
|
314
|
+
|
315
|
+
it 'returns false for >1, <=1.3' do
|
316
|
+
resource[:ensure] = '>1, <=1.3'
|
317
|
+
expect(provider).to_not be_insync(is)
|
318
|
+
end
|
319
|
+
|
320
|
+
it 'returns true for >=1.3 <2' do
|
321
|
+
resource[:ensure] = '>=1.3 <2'
|
322
|
+
expect(provider).to be_insync(is)
|
323
|
+
end
|
324
|
+
|
325
|
+
it 'returns false for >1 <=1.3' do
|
326
|
+
resource[:ensure] = '>1 <=1.3'
|
327
|
+
expect(provider).to_not be_insync(is)
|
328
|
+
end
|
289
329
|
end
|
290
330
|
|
291
331
|
it 'should return false for bad version specifiers' do
|
@@ -395,4 +395,21 @@ describe Puppet::Type.type(:package).provider(:openbsd) do
|
|
395
395
|
end
|
396
396
|
end
|
397
397
|
end
|
398
|
+
|
399
|
+
context "#flavor" do
|
400
|
+
before do
|
401
|
+
provider.instance_variable_get('@property_hash')[:flavor] = 'no_x11-python'
|
402
|
+
end
|
403
|
+
|
404
|
+
it 'should return the existing flavor' do
|
405
|
+
expect(provider.flavor).to eq('no_x11-python')
|
406
|
+
end
|
407
|
+
|
408
|
+
it 'should remove and install the new flavor if different' do
|
409
|
+
provider.resource[:flavor] = 'no_x11-ruby'
|
410
|
+
expect(provider).to receive(:uninstall).ordered
|
411
|
+
expect(provider).to receive(:install).ordered
|
412
|
+
provider.flavor = provider.resource[:flavor]
|
413
|
+
end
|
414
|
+
end
|
398
415
|
end
|
@@ -26,14 +26,14 @@ describe Puppet::Type.type(:package).provider(:pacman) do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should call pacman to install the right package quietly when yaourt is not installed" do
|
29
|
-
args = ['--noconfirm', '--needed', '--noprogressbar', '-
|
29
|
+
args = ['--noconfirm', '--needed', '--noprogressbar', '-S', resource[:name]]
|
30
30
|
expect(provider).to receive(:pacman).at_least(:once).with(*args).and_return('')
|
31
31
|
provider.install
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should call yaourt to install the right package quietly when yaourt is installed" do
|
35
35
|
allow(described_class).to receive(:yaourt?).and_return(true)
|
36
|
-
args = ['--noconfirm', '--needed', '--noprogressbar', '-
|
36
|
+
args = ['--noconfirm', '--needed', '--noprogressbar', '-S', resource[:name]]
|
37
37
|
expect(provider).to receive(:yaourt).at_least(:once).with(*args).and_return('')
|
38
38
|
provider.install
|
39
39
|
end
|
@@ -68,14 +68,14 @@ describe Puppet::Type.type(:package).provider(:pacman) do
|
|
68
68
|
end
|
69
69
|
|
70
70
|
it "should call pacman to install the right package quietly when yaourt is not installed" do
|
71
|
-
args = ['--noconfirm', '--needed', '--noprogressbar', '-x', '--arg=value', '-
|
71
|
+
args = ['--noconfirm', '--needed', '--noprogressbar', '-x', '--arg=value', '-S', resource[:name]]
|
72
72
|
expect(provider).to receive(:pacman).at_least(:once).with(*args).and_return('')
|
73
73
|
provider.install
|
74
74
|
end
|
75
75
|
|
76
76
|
it "should call yaourt to install the right package quietly when yaourt is installed" do
|
77
77
|
expect(described_class).to receive(:yaourt?).and_return(true)
|
78
|
-
args = ['--noconfirm', '--needed', '--noprogressbar', '-x', '--arg=value', '-
|
78
|
+
args = ['--noconfirm', '--needed', '--noprogressbar', '-x', '--arg=value', '-S', resource[:name]]
|
79
79
|
expect(provider).to receive(:yaourt).at_least(:once).with(*args).and_return('')
|
80
80
|
provider.install
|
81
81
|
end
|
@@ -94,7 +94,7 @@ describe Puppet::Type.type(:package).provider(:pacman) do
|
|
94
94
|
resource[:source] = source
|
95
95
|
|
96
96
|
expect(executor).to receive(:execute).
|
97
|
-
with(include("-
|
97
|
+
with(include("-S") & include("--noprogressbar"), no_extra_options).
|
98
98
|
ordered.
|
99
99
|
and_return("")
|
100
100
|
|
@@ -117,7 +117,7 @@ describe Puppet::Type.type(:package).provider(:pacman) do
|
|
117
117
|
|
118
118
|
it "should install from the path segment of the URL" do
|
119
119
|
expect(executor).to receive(:execute).
|
120
|
-
with(include("-
|
120
|
+
with(include("-S") & include("--noprogressbar") & include("--noconfirm"),
|
121
121
|
no_extra_options).
|
122
122
|
ordered.
|
123
123
|
and_return("")
|
@@ -348,21 +348,7 @@ EOF
|
|
348
348
|
end
|
349
349
|
|
350
350
|
describe "when determining the latest version" do
|
351
|
-
it "should refresh package list" do
|
352
|
-
expect(executor).to receive(:execute).
|
353
|
-
ordered.
|
354
|
-
with(['/usr/bin/pacman', '-Sy'], no_extra_options)
|
355
|
-
|
356
|
-
expect(executor).to receive(:execute).
|
357
|
-
ordered.
|
358
|
-
and_return("")
|
359
|
-
|
360
|
-
provider.latest
|
361
|
-
end
|
362
|
-
|
363
351
|
it "should get query pacman for the latest version" do
|
364
|
-
expect(executor).to receive(:execute).ordered
|
365
|
-
|
366
352
|
expect(executor).to receive(:execute).
|
367
353
|
ordered.
|
368
354
|
with(['/usr/bin/pacman', '-Sp', '--print-format', '%v', resource[:name]], no_extra_options).
|
@@ -379,7 +365,6 @@ EOF
|
|
379
365
|
|
380
366
|
it "should return a virtual group version when resource is a package group" do
|
381
367
|
allow(described_class).to receive(:group?).and_return(true)
|
382
|
-
expect(executor).to receive(:execute).with(['/usr/bin/pacman', '-Sy'], no_extra_options).ordered
|
383
368
|
expect(executor).to receive(:execute).with(['/usr/bin/pacman', '-Sp', '--print-format', '%n %v', resource[:name]], no_extra_options).ordered.
|
384
369
|
and_return(<<EOF)
|
385
370
|
package2 1.0.1
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
osfamilies = { 'windows' => ['pip.exe'], 'other' => ['pip', 'pip-python', 'pip2', 'pip-2'] }
|
4
|
+
pip_path_with_spaces = 'C:\Program Files (x86)\Python\Scripts\pip.exe'
|
4
5
|
|
5
6
|
describe Puppet::Type.type(:package).provider(:pip) do
|
6
7
|
|
@@ -10,6 +11,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
10
11
|
it { is_expected.to be_versionable }
|
11
12
|
it { is_expected.to be_install_options }
|
12
13
|
it { is_expected.to be_targetable }
|
14
|
+
it { is_expected.to be_version_ranges }
|
13
15
|
|
14
16
|
before do
|
15
17
|
@resource = Puppet::Resource.new(:package, "fake_package")
|
@@ -101,6 +103,16 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
101
103
|
expect(described_class.instances).to eq([])
|
102
104
|
end
|
103
105
|
end
|
106
|
+
|
107
|
+
context "when pip path location contains spaces" do
|
108
|
+
it "should quote the command before doing execpipe" do
|
109
|
+
allow(described_class).to receive(:which).and_return(pip_path_with_spaces)
|
110
|
+
allow(described_class).to receive(:pip_version).with(pip_path_with_spaces).and_return('8.0.1')
|
111
|
+
|
112
|
+
expect(described_class).to receive(:execpipe).with(["\"#{pip_path_with_spaces}\"", ["freeze"]])
|
113
|
+
described_class.instances
|
114
|
+
end
|
115
|
+
end
|
104
116
|
end
|
105
117
|
|
106
118
|
context "query" do
|
@@ -150,16 +162,27 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
150
162
|
end
|
151
163
|
end
|
152
164
|
|
165
|
+
context "when comparing versions" do
|
166
|
+
it "an abnormal version should still be compared (using default implementation) but a debug message should also be printed regarding it" do
|
167
|
+
expect(Puppet).to receive(:debug).with("Cannot compare 1.0 and abnormal-version.0.1. abnormal-version.0.1 is not a valid python package version. Please refer to https://www.python.org/dev/peps/pep-0440/. Falling through default comparison mechanism.")
|
168
|
+
expect(Puppet::Util::Package).to receive(:versioncmp).with('1.0', 'abnormal-version.0.1')
|
169
|
+
expect{ described_class.compare_pip_versions('1.0', 'abnormal-version.0.1') }.not_to raise_error
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
153
173
|
context "latest" do
|
174
|
+
before do
|
175
|
+
allow(described_class).to receive(:pip_version).with(pip_path).and_return(pip_version)
|
176
|
+
allow(described_class).to receive(:which).with('pip').and_return(pip_path)
|
177
|
+
allow(described_class).to receive(:which).with('pip-python').and_return(pip_path)
|
178
|
+
allow(described_class).to receive(:which).with('pip.exe').and_return(pip_path)
|
179
|
+
allow(described_class).to receive(:provider_command).and_return(pip_path)
|
180
|
+
allow(described_class).to receive(:validate_command).with(pip_path)
|
181
|
+
end
|
182
|
+
|
154
183
|
context "with pip version < 1.5.4" do
|
155
|
-
|
156
|
-
|
157
|
-
allow(described_class).to receive(:which).with('pip').and_return("/fake/bin/pip")
|
158
|
-
allow(described_class).to receive(:which).with('pip-python').and_return("/fake/bin/pip")
|
159
|
-
allow(described_class).to receive(:which).with('pip.exe').and_return("/fake/bin/pip")
|
160
|
-
allow(described_class).to receive(:provider_command).and_return('/fake/bin/pip')
|
161
|
-
allow(described_class).to receive(:validate_command).with('/fake/bin/pip')
|
162
|
-
end
|
184
|
+
let(:pip_version) { '1.0.1' }
|
185
|
+
let(:pip_path) { '/fake/bin/pip' }
|
163
186
|
|
164
187
|
it "should find a version number for new_pip_package" do
|
165
188
|
p = StringIO.new(
|
@@ -206,25 +229,43 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
206
229
|
expect(@provider.latest).to eq(nil)
|
207
230
|
end
|
208
231
|
|
232
|
+
it "should handle out-of-order version numbers for real_package" do
|
233
|
+
p = StringIO.new(
|
234
|
+
<<-EOS
|
235
|
+
Downloading/unpacking fake-package
|
236
|
+
Using version 2!2.3.4.alpha5.rev6.dev7+abc89 (newest of versions: 1.11, 13.0.3, 1.6, 1!1.2.rev33+123456, 1.9, 1.3.2, 14.0.1, 12.0.7, 13.0.3, 1.7.2, 1.8.4, 1.2+123abc456, 1.6.1, 0.9.2, 1.3, 1.8.3, 12.1.1, 1.1, 1.11.6, 1.2+123456, 1.4.8, 1.6.3, 1!1.0b2.post345.dev456, 1.10.1, 14.0.2, 1.11.3, 14.0.3, 1.4rc1, 1.0b2.post345.dev456, 0.8.4, 1.0, 1!1.0.post456, 12.0.5, 14.0.6, 1.11.5, 1.0rc2, 1.7.1.1, 1.11.4, 13.0.1, 13.1.2, 1.3.3, 0.8.2, 14.0.0, 12.0, 1.8, 1.3.4, 12.0, 1.2, 12.0.6, 0.9.1, 13.1.1, 2!2.3.4.alpha5.rev6.dev7+abc89, 14.0.5, 15.0.2, 15.0.0, 1.4.5, 1.4.3, 13.1.1, 1.11.2, 13.1.2, 1.2+abc123def, 1.3.1, 13.1.0, 12.0.2, 1.11.1, 12.0.1, 12.1.0, 0.9, 1.4.4, 1.2+abc123, 13.0.0, 1.4.9, 1.1.dev1, 12.1.0, 1.7.1, 1.4.2, 14.0.5, 0.8.1, 1.4.6, 0.8.3, 1.11.3, 1.5.1, 1.4.7, 13.0.2, 12.0.7, 1!13.0, 0!13.0, 1.9.1, 1.0.post456.dev34, 1.8.2, 14.0.1, 14.0.0, 1.2.rev33+123456, 14.0.4, 1.6.2, 15.0.1, 13.1.0, 0.8, 1.2+1234.abc, 1.7, 15.0.2, 12.0.5, 13.0.1, 1.8.1, 1.11.6, 15.0.1, 12.0.4, 1.2+123abc, 12.1.1, 13.0.2, 1.11.4, 1.10, 1.2.r32+123456, 14.0.4, 14.0.6, 1.4.1, 1.4, 1.5.2, 12.0.2, 12.0.1, 14.0.3, 14.0.2, 1.11.1, 1.7.1.2, 15.0.0, 12.0.4, 1.6.4, 1.11.2, 1.5, 0.1, 0.10, 0.10.1, 0.10.1.0.1, 1.0.dev456, 1.0a1, 1.0a2.dev456, 1.0a12.dev456, 1.0a12, 1.0b1.dev456, 1.0b2, 1.0b2.post345, 1.0b2-346, 1.0c1.dev456, 1.0c1, 1.0c3, 1.0, 1.0.post456, 1.2+abc, 1!1.0, 1!1.0.post456.dev34)
|
237
|
+
Downloading real-package-2!2.3.4.alpha5.rev6.dev7+abc89.tar.gz (544Kb): 544Kb downloaded
|
238
|
+
Saved ./foo/real-package-2!2.3.4.alpha5.rev6.dev7+abc89.tar.gz
|
239
|
+
Successfully downloaded real-package
|
240
|
+
EOS
|
241
|
+
)
|
242
|
+
expect(Puppet::Util::Execution).to receive(:execpipe).and_yield(p).once
|
243
|
+
@resource[:name] = "real_package"
|
244
|
+
expect(@provider.latest).to eq('2!2.3.4.alpha5.rev6.dev7+abc89')
|
245
|
+
end
|
246
|
+
|
209
247
|
it "should use 'install_options' when specified" do
|
210
248
|
expect(Puppet::Util::Execution).to receive(:execpipe).with(array_including([["--index=https://fake.example.com"]])).once
|
211
249
|
@resource[:name] = "fake_package"
|
212
250
|
@resource[:install_options] = ['--index' => 'https://fake.example.com']
|
213
251
|
expect(@provider.latest).to eq(nil)
|
214
252
|
end
|
253
|
+
|
254
|
+
context "when pip path location contains spaces" do
|
255
|
+
let(:pip_path) { pip_path_with_spaces }
|
256
|
+
|
257
|
+
it "should quote the command before doing execpipe" do
|
258
|
+
expect(Puppet::Util::Execution).to receive(:execpipe).with(array_including("\"#{pip_path}\""))
|
259
|
+
@provider.latest
|
260
|
+
end
|
261
|
+
end
|
215
262
|
end
|
216
263
|
|
217
264
|
context "with pip version >= 1.5.4" do
|
218
265
|
# For Pip 1.5.4 and above, you can get a version list from CLI - which allows for native pip behavior
|
219
266
|
# with regards to custom repositories, proxies and the like
|
220
|
-
|
221
|
-
|
222
|
-
allow(described_class).to receive(:which).with('pip').and_return("/fake/bin/pip")
|
223
|
-
allow(described_class).to receive(:which).with('pip-python').and_return("/fake/bin/pip")
|
224
|
-
allow(described_class).to receive(:which).with('pip.exe').and_return("/fake/bin/pip")
|
225
|
-
allow(described_class).to receive(:provider_command).and_return('/fake/bin/pip')
|
226
|
-
allow(described_class).to receive(:validate_command).with('/fake/bin/pip')
|
227
|
-
end
|
267
|
+
let(:pip_version) { '1.5.4' }
|
268
|
+
let(:pip_path) { '/fake/bin/pip' }
|
228
269
|
|
229
270
|
it "should find a version number for real_package" do
|
230
271
|
p = StringIO.new(
|
@@ -257,14 +298,13 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
257
298
|
p = StringIO.new(
|
258
299
|
<<-EOS
|
259
300
|
Collecting real-package==versionplease
|
260
|
-
Could not find a version that satisfies the requirement real-package==versionplease (from versions: 1.11, 13.0.3, 1.6, 1.9, 1.3.2, 14.0.1, 12.0.7, 13.0.3, 1.7.2, 1.8.4, 1.6.1, 0.9.2, 1.3, 1.8.3, 12.1.1, 1.1, 1.11.6, 1.4.8, 1.6.3, 1.10.1, 14.0.2, 1.11.3, 14.0.3, 1.4rc1, 0.8.4, 1.0, 12.0.5, 14.0.6, 1.11.5, 1.7.1.1, 1.11.4, 13.0.1, 13.1.2, 1.3.3, 0.8.2, 14.0.0, 12.0, 1.8, 1.3.4, 12.0, 1.2, 12.0.6, 0.9.1, 13.1.1, 14.0.5, 15.0.2, 15.0.0, 1.4.5, 1.4.3, 13.1.1, 1.11.2, 13.1.2, 1.3.1, 13.1.0, 12.0.2, 1.11.1, 12.0.1, 12.1.0, 0.9, 1.4.4, 13.0.0, 1.4.9, 12.1.0, 1.7.1, 1.4.2, 14.0.5, 0.8.1, 1.4.6, 0.8.3, 1.11.3, 1.5.1, 1.4.7, 13.0.2, 12.0.7, 13.0.0, 1.9.1, 1.8.2, 14.0.1, 14.0.0, 14.0.4, 1.6.2, 15.0.1, 13.1.0, 0.8, 1.7, 15.0.2, 12.0.5, 13.0.1, 1.8.1, 1.11.6, 15.0.1, 12.0.4, 12.1.1, 13.0.2, 1.11.4, 1.10, 14.0.4, 14.0.6, 1.4.1, 1.4, 1.5.2, 12.0.2, 12.0.1, 14.0.3, 14.0.2, 1.11.1, 1.7.1.2, 15.0.0, 12.0.4, 1.6.4, 1.11.2, 1.5)
|
301
|
+
Could not find a version that satisfies the requirement real-package==versionplease (from versions: 1.11, 13.0.3, 1.6, 1!1.2.rev33+123456, 1.9, 1.3.2, 14.0.1, 12.0.7, 13.0.3, 1.7.2, 1.8.4, 1.2+123abc456, 1.6.1, 0.9.2, 1.3, 1.8.3, 12.1.1, 1.1, 1.11.6, 1.2+123456, 1.4.8, 1.6.3, 1!1.0b2.post345.dev456, 1.10.1, 14.0.2, 1.11.3, 14.0.3, 1.4rc1, 1.0b2.post345.dev456, 0.8.4, 1.0, 1!1.0.post456, 12.0.5, 14.0.6, 1.11.5, 1.0rc2, 1.7.1.1, 1.11.4, 13.0.1, 13.1.2, 1.3.3, 0.8.2, 14.0.0, 12.0, 1.8, 1.3.4, 12.0, 1.2, 12.0.6, 0.9.1, 13.1.1, 2!2.3.4.alpha5.rev6.dev7+abc89, 14.0.5, 15.0.2, 15.0.0, 1.4.5, 1.4.3, 13.1.1, 1.11.2, 13.1.2, 1.2+abc123def, 1.3.1, 13.1.0, 12.0.2, 1.11.1, 12.0.1, 12.1.0, 0.9, 1.4.4, 1.2+abc123, 13.0.0, 1.4.9, 1.1.dev1, 12.1.0, 1.7.1, 1.4.2, 14.0.5, 0.8.1, 1.4.6, 0.8.3, 1.11.3, 1.5.1, 1.4.7, 13.0.2, 12.0.7, 1!13.0, 0!13.0, 1.9.1, 1.0.post456.dev34, 1.8.2, 14.0.1, 14.0.0, 1.2.rev33+123456, 14.0.4, 1.6.2, 15.0.1, 13.1.0, 0.8, 1.2+1234.abc, 1.7, 15.0.2, 12.0.5, 13.0.1, 1.8.1, 1.11.6, 15.0.1, 12.0.4, 1.2+123abc, 12.1.1, 13.0.2, 1.11.4, 1.10, 1.2.r32+123456, 14.0.4, 14.0.6, 1.4.1, 1.4, 1.5.2, 12.0.2, 12.0.1, 14.0.3, 14.0.2, 1.11.1, 1.7.1.2, 15.0.0, 12.0.4, 1.6.4, 1.11.2, 1.5, 0.1, 0.10, 0.10.1, 0.10.1.0.1, 1.0.dev456, 1.0a1, 1.0a2.dev456, 1.0a12.dev456, 1.0a12, 1.0b1.dev456, 1.0b2, 1.0b2.post345, 1.0b2-346, 1.0c1.dev456, 1.0c1, 1.0c3, 1.0, 1.0.post456, 1.2+abc, 1!1.0, 1!1.0.post456.dev34)
|
261
302
|
No distributions matching the version for real-package==versionplease
|
262
303
|
EOS
|
263
304
|
)
|
264
305
|
expect(Puppet::Util::Execution).to receive(:execpipe).with(["/fake/bin/pip", "install", "real_package==versionplease"]).and_yield(p).once
|
265
306
|
@resource[:name] = "real_package"
|
266
|
-
|
267
|
-
expect(latest).to eq('15.0.2')
|
307
|
+
expect(@provider.latest).to eq('2!2.3.4.alpha5.rev6.dev7+abc89')
|
268
308
|
end
|
269
309
|
|
270
310
|
it "should use 'install_options' when specified" do
|
@@ -273,6 +313,15 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
273
313
|
@resource[:install_options] = ['--index' => 'https://fake.example.com']
|
274
314
|
expect(@provider.latest).to eq(nil)
|
275
315
|
end
|
316
|
+
|
317
|
+
context "when pip path location contains spaces" do
|
318
|
+
let(:pip_path) { pip_path_with_spaces }
|
319
|
+
|
320
|
+
it "should quote the command before doing execpipe" do
|
321
|
+
expect(Puppet::Util::Execution).to receive(:execpipe).with(array_including("\"#{pip_path}\""))
|
322
|
+
@provider.latest
|
323
|
+
end
|
324
|
+
end
|
276
325
|
end
|
277
326
|
end
|
278
327
|
|
@@ -92,7 +92,7 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
92
92
|
|
93
93
|
{
|
94
94
|
'pkg://omnios/SUNWcs@0.5.11,5.11-0.151006:20130506T161045Z i--' => {:name => 'SUNWcs', :ensure => '0.5.11,5.11-0.151006:20130506T161045Z', :status => 'installed', :provider => :pkg, :publisher => 'omnios'},
|
95
|
-
'pkg://omnios/incorporation/jeos/illumos-gate@11,5.11-0.151006:20130506T183443Z if-' => {:name => 'incorporation/jeos/illumos-gate', :ensure =>
|
95
|
+
'pkg://omnios/incorporation/jeos/illumos-gate@11,5.11-0.151006:20130506T183443Z if-' => {:name => 'incorporation/jeos/illumos-gate', :ensure => "11,5.11-0.151006:20130506T183443Z", :mark => :hold, :status => 'installed', :provider => :pkg, :publisher => 'omnios'},
|
96
96
|
'pkg://solaris/SUNWcs@0.5.11,5.11-0.151.0.1:20101105T001108Z installed -----' => {:name => 'SUNWcs', :ensure => '0.5.11,5.11-0.151.0.1:20101105T001108Z', :status => 'installed', :provider => :pkg, :publisher => 'solaris'},
|
97
97
|
}.each do |k, v|
|
98
98
|
it "[#{k}] should correctly parse" do
|
@@ -262,14 +262,17 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
262
262
|
it "should support install options" do
|
263
263
|
resource[:install_options] = ['--foo', {'--bar' => 'baz'}]
|
264
264
|
expect(provider).to receive(:query).and_return({:ensure => :absent})
|
265
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
265
266
|
expect(provider).to receive(:unhold)
|
266
267
|
expect(Puppet::Util::Execution).to receive(:execute)
|
267
268
|
.with(['/bin/pkg', 'install', *hash[:flags], '--foo', '--bar=baz', 'dummy'], {:failonfail => false, :combine => true})
|
269
|
+
allow($CHILD_STATUS).to receive(:exitstatus).and_return(0)
|
268
270
|
provider.install
|
269
271
|
end
|
270
272
|
|
271
273
|
it "should accept all licenses" do
|
272
274
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => :absent})
|
275
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
273
276
|
expect(Puppet::Util::Execution).to receive(:execute)
|
274
277
|
.with(['/bin/pkg', 'install', *hash[:flags], 'dummy'], {:failonfail => false, :combine => true})
|
275
278
|
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
@@ -284,6 +287,7 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
284
287
|
# Should install also check if the version installed is the same version we are asked to install? or should we rely on puppet for that?
|
285
288
|
resource[:ensure] = '0.0.7,5.11-0.151006:20131230T130000Z'
|
286
289
|
allow($CHILD_STATUS).to receive(:exitstatus).and_return(0)
|
290
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
287
291
|
expect(Puppet::Util::Execution).to receive(:execute).with(['/bin/pkg', 'unfreeze', 'dummy'], {:failonfail => false, :combine => true})
|
288
292
|
expect(Puppet::Util::Execution).to receive(:execute)
|
289
293
|
.with(['/bin/pkg', 'list', '-Hv', 'dummy'], {:failonfail => false, :combine => true})
|
@@ -296,6 +300,7 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
296
300
|
|
297
301
|
it "should install specific version(2)" do
|
298
302
|
resource[:ensure] = '0.0.8'
|
303
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
299
304
|
expect(Puppet::Util::Execution).to receive(:execute).with(['/bin/pkg', 'unfreeze', 'dummy'], {:failonfail => false, :combine => true})
|
300
305
|
expect(Puppet::Util::Execution).to receive(:execute)
|
301
306
|
.with(['/bin/pkg', 'list', '-Hv', 'dummy'], {:failonfail => false, :combine => true})
|
@@ -309,6 +314,7 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
309
314
|
|
310
315
|
it "should downgrade to specific version" do
|
311
316
|
resource[:ensure] = '0.0.7'
|
317
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
312
318
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => '0.0.8,5.11-0.151106:20131230T130000Z'})
|
313
319
|
allow($CHILD_STATUS).to receive(:exitstatus).and_return(0)
|
314
320
|
expect(Puppet::Util::Execution).to receive(:execute).with(['/bin/pkg', 'unfreeze', 'dummy'], {:failonfail => false, :combine => true})
|
@@ -320,6 +326,7 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
320
326
|
|
321
327
|
it "should install any if version is not specified" do
|
322
328
|
resource[:ensure] = :present
|
329
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
323
330
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => :absent})
|
324
331
|
expect(Puppet::Util::Execution).to receive(:execute)
|
325
332
|
.with(['/bin/pkg', 'install', *hash[:flags], 'dummy'], {:failonfail => false, :combine => true})
|
@@ -331,6 +338,7 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
331
338
|
|
332
339
|
it "should install if no version was previously installed, and a specific version was requested" do
|
333
340
|
resource[:ensure] = '0.0.7'
|
341
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
334
342
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => :absent})
|
335
343
|
expect(Puppet::Util::Execution).to receive(:execute).with(['/bin/pkg', 'unfreeze', 'dummy'], {:failonfail => false, :combine => true})
|
336
344
|
expect(Puppet::Util::Execution).to receive(:execute)
|
@@ -344,6 +352,7 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
344
352
|
resource[:ensure] = '1.0-0.151006'
|
345
353
|
is = :absent
|
346
354
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => is})
|
355
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
347
356
|
expect(described_class).to receive(:pkg)
|
348
357
|
.with(:list, '-Hvfa', 'dummy@1.0-0.151006')
|
349
358
|
.and_return(Puppet::Util::Execution::ProcessOutput.new(File.read(my_fixture('dummy_implicit_version')), 0))
|
@@ -359,6 +368,7 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
359
368
|
resource[:ensure] = '1.0-0.151006'
|
360
369
|
is = '1.0,5.11-0.151006:20140219T191204Z'
|
361
370
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => is})
|
371
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
362
372
|
expect(described_class).to receive(:pkg).with(:list, '-Hvfa', 'dummy@1.0-0.151006').and_return(File.read(my_fixture('dummy_implicit_version')))
|
363
373
|
expect(Puppet::Util::Execution).to receive(:execute).with(['/bin/pkg', 'update', '-n', 'dummy@1.0,5.11-0.151006:20140220T084443Z'], {:failonfail => false, :combine => true})
|
364
374
|
expect(provider).to receive(:unhold).with(no_args)
|
@@ -417,12 +427,16 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
417
427
|
it "should support current pkg version" do
|
418
428
|
expect(described_class).to receive(:pkg).with(:version).and_return('630e1ffc7a19')
|
419
429
|
expect(described_class).to receive(:pkg).with([:uninstall, resource[:name]])
|
430
|
+
expect(provider).to receive(:properties).and_return({:hold => false})
|
431
|
+
|
420
432
|
provider.uninstall
|
421
433
|
end
|
422
434
|
|
423
435
|
it "should support original pkg commands" do
|
424
436
|
expect(described_class).to receive(:pkg).with(:version).and_return('052adf36c3f4')
|
425
437
|
expect(described_class).to receive(:pkg).with([:uninstall, '-r', resource[:name]])
|
438
|
+
expect(provider).to receive(:properties).and_return({:hold => false})
|
439
|
+
|
426
440
|
provider.uninstall
|
427
441
|
end
|
428
442
|
end
|
@@ -45,7 +45,7 @@ describe Puppet::Type.type(:package).provider(:pkgdmg) do
|
|
45
45
|
it "should call hdiutil to mount and eject the disk image" do
|
46
46
|
allow(Dir).to receive(:entries).and_return([])
|
47
47
|
expect(provider.class).to receive(:hdiutil).with("eject", fake_mountpoint).and_return(0)
|
48
|
-
expect(provider.class).to receive(:hdiutil).with("mount", "-plist", "-nobrowse", "-readonly", "-
|
48
|
+
expect(provider.class).to receive(:hdiutil).with("mount", "-plist", "-nobrowse", "-readonly", "-mountrandom", "/tmp", '/tmp/foo').and_return('a plist')
|
49
49
|
expect(Puppet::Util::Plist).to receive(:parse_plist).with('a plist').and_return(fake_hdiutil_plist)
|
50
50
|
provider.install
|
51
51
|
end
|
@@ -110,6 +110,30 @@ describe Puppet::Type.type(:package).provider(:pkgng) do
|
|
110
110
|
end
|
111
111
|
resource.provider.install
|
112
112
|
end
|
113
|
+
|
114
|
+
it "should call pkg with the specified install options string" do
|
115
|
+
resource = Puppet::Type.type(:package).new(
|
116
|
+
:name => 'curl',
|
117
|
+
:provider => :pkgng,
|
118
|
+
:install_options => ['--foo', '--bar']
|
119
|
+
)
|
120
|
+
expect(resource.provider).to receive(:pkg) do |arg|
|
121
|
+
expect(arg).to include('--foo', '--bar')
|
122
|
+
end
|
123
|
+
resource.provider.install
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should call pkg with the specified install options hash" do
|
127
|
+
resource = Puppet::Type.type(:package).new(
|
128
|
+
:name => 'curl',
|
129
|
+
:provider => :pkgng,
|
130
|
+
:install_options => ['--foo', { '--bar' => 'baz', '--baz' => 'foo' }]
|
131
|
+
)
|
132
|
+
expect(resource.provider).to receive(:pkg) do |arg|
|
133
|
+
expect(arg).to include('--foo', '--bar=baz', '--baz=foo')
|
134
|
+
end
|
135
|
+
resource.provider.install
|
136
|
+
end
|
113
137
|
end
|
114
138
|
|
115
139
|
context "#prefetch" do
|
@@ -177,6 +201,20 @@ describe Puppet::Type.type(:package).provider(:pkgng) do
|
|
177
201
|
|
178
202
|
expect(bash_comp_latest_version).to eq('2.1_3')
|
179
203
|
end
|
204
|
+
|
205
|
+
it "should return nil when the package is orphaned" do
|
206
|
+
version_list = File.read(my_fixture('pkg.version'))
|
207
|
+
allow(described_class).to receive(:get_version_list).and_return(version_list)
|
208
|
+
orphan_latest_version = described_class.get_latest_version('sysutils/orphan')
|
209
|
+
expect(orphan_latest_version).to be_nil
|
210
|
+
end
|
211
|
+
|
212
|
+
it "should return nil when the package is broken" do
|
213
|
+
version_list = File.read(my_fixture('pkg.version'))
|
214
|
+
allow(described_class).to receive(:get_version_list).and_return(version_list)
|
215
|
+
broken_latest_version = described_class.get_latest_version('sysutils/broken')
|
216
|
+
expect(broken_latest_version).to be_nil
|
217
|
+
end
|
180
218
|
end
|
181
219
|
|
182
220
|
describe "confine" do
|