puppet 5.5.17-x64-mingw32 → 5.5.22-x64-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +1 -1
- data/Gemfile +4 -5
- data/Gemfile.lock +59 -55
- data/ext/build_defaults.yaml +1 -0
- data/ext/cert_inspector +3 -3
- data/ext/puppet-test +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +4 -4
- data/ext/windows/service/daemon.rb +54 -8
- data/install.rb +6 -6
- data/lib/puppet.rb +5 -2
- data/lib/puppet/agent.rb +5 -13
- data/lib/puppet/application.rb +1 -1
- data/lib/puppet/application/agent.rb +3 -1
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +3 -9
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +13 -0
- data/lib/puppet/application/lookup.rb +1 -1
- data/lib/puppet/application/script.rb +2 -2
- data/lib/puppet/configurer.rb +106 -31
- data/lib/puppet/configurer/downloader.rb +33 -16
- data/lib/puppet/daemon.rb +1 -1
- data/lib/puppet/defaults.rb +86 -40
- data/lib/puppet/error.rb +9 -1
- data/lib/puppet/external/nagios/base.rb +1 -1
- data/lib/puppet/face/ca.rb +1 -1
- data/lib/puppet/face/module/list.rb +5 -5
- data/lib/puppet/face/module/search.rb +1 -1
- data/lib/puppet/face/module/uninstall.rb +1 -1
- data/lib/puppet/face/module/upgrade.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_system.rb +0 -8
- data/lib/puppet/file_system/memory_file.rb +1 -1
- data/lib/puppet/file_system/posix.rb +3 -2
- data/lib/puppet/file_system/uniquefile.rb +4 -0
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/graph/rb_tree_map.rb +2 -2
- data/lib/puppet/graph/simple_graph.rb +6 -5
- data/lib/puppet/indirector/catalog/compiler.rb +8 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +6 -0
- data/lib/puppet/indirector/resource/ral.rb +1 -3
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/interface.rb +2 -1
- data/lib/puppet/loaders.rb +0 -1
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/module_tool/applications/builder.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -1
- data/lib/puppet/module_tool/applications/uninstaller.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/module_tool/shared_behaviors.rb +4 -4
- data/lib/puppet/module_tool/tar/mini.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +13 -12
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/connection.rb +14 -12
- data/lib/puppet/network/http/pool.rb +7 -1
- data/lib/puppet/network/http/rack/rest.rb +2 -2
- data/lib/puppet/network/http/site.rb +1 -1
- data/lib/puppet/network/resolver.rb +2 -2
- data/lib/puppet/node/environment.rb +11 -3
- data/lib/puppet/parser/ast.rb +1 -1
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- 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 +3 -0
- data/lib/puppet/parser/functions.rb +14 -10
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loaders.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +22 -18
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/pn_parser.rb +17 -16
- data/lib/puppet/pops/puppet_stack.rb +51 -48
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/types/string_converter.rb +10 -10
- data/lib/puppet/pops/types/type_calculator.rb +24 -0
- data/lib/puppet/pops/types/types.rb +3 -3
- data/lib/puppet/pops/validation/checker4_0.rb +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec.rb +6 -2
- data/lib/puppet/provider/group/groupadd.rb +19 -19
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/mailalias/aliases.rb +1 -1
- data/lib/puppet/provider/mount.rb +1 -1
- data/lib/puppet/provider/mount/parsed.rb +8 -8
- data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +2 -2
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +14 -3
- data/lib/puppet/provider/package/dnfmodule.rb +141 -0
- data/lib/puppet/provider/package/dpkg.rb +16 -18
- data/lib/puppet/provider/package/fink.rb +20 -3
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/openbsd.rb +14 -2
- data/lib/puppet/provider/package/pip.rb +37 -10
- 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 +4 -4
- data/lib/puppet/provider/package/puppet_gem.rb +5 -0
- data/lib/puppet/provider/package/rpm.rb +6 -6
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +28 -20
- data/lib/puppet/provider/package/zypper.rb +1 -0
- data/lib/puppet/provider/package_targetable.rb +5 -4
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
- data/lib/puppet/provider/selmodule/semodule.rb +43 -26
- data/lib/puppet/provider/service/daemontools.rb +9 -9
- data/lib/puppet/provider/service/openbsd.rb +1 -1
- data/lib/puppet/provider/service/rcng.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +2 -8
- data/lib/puppet/provider/service/systemd.rb +31 -13
- data/lib/puppet/provider/user/directoryservice.rb +31 -6
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +39 -20
- data/lib/puppet/provider/user/windows_adsi.rb +4 -5
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/reference/indirection.rb +2 -2
- data/lib/puppet/reference/metaparameter.rb +1 -3
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/reference/type.rb +3 -9
- data/lib/puppet/reports.rb +1 -1
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/type.rb +10 -1
- data/lib/puppet/settings.rb +3 -3
- data/lib/puppet/settings/environment_conf.rb +1 -0
- data/lib/puppet/ssl/certificate.rb +2 -1
- data/lib/puppet/ssl/certificate_authority.rb +6 -5
- data/lib/puppet/ssl/certificate_authority/interface.rb +1 -1
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +1 -1
- data/lib/puppet/test/test_helper.rb +20 -12
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +8 -4
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/exec.rb +7 -3
- data/lib/puppet/type/file.rb +14 -2
- data/lib/puppet/type/file/data_sync.rb +5 -1
- data/lib/puppet/type/group.rb +4 -2
- data/lib/puppet/type/interface.rb +1 -1
- data/lib/puppet/type/notify.rb +3 -2
- data/lib/puppet/type/package.rb +97 -8
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/selboolean.rb +17 -3
- data/lib/puppet/type/service.rb +2 -8
- data/lib/puppet/type/user.rb +5 -9
- data/lib/puppet/util.rb +35 -12
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +8 -14
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/log.rb +1 -1
- data/lib/puppet/util/log/destinations.rb +3 -12
- data/lib/puppet/util/logging.rb +30 -18
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +1 -1
- data/lib/puppet/util/nagios_maker.rb +2 -2
- data/lib/puppet/util/network_device/cisco/device.rb +1 -1
- data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
- data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
- data/lib/puppet/util/pidlock.rb +12 -6
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/provider_features.rb +2 -4
- data/lib/puppet/util/rdoc.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +3 -1
- data/lib/puppet/util/windows/adsi.rb +60 -30
- 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 +16 -15
- data/lib/puppet/util/windows/registry.rb +17 -15
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +2 -2
- data/locales/puppet.pot +362 -318
- data/man/man5/puppet.conf.5 +39 -9
- data/man/man8/puppet-agent.8 +2 -2
- 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 +16 -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/fixtures/integration/provider/mailalias/aliases/test1 +1 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -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/service/systemd/list_unit_files_services +9 -0
- data/spec/integration/configurer_spec.rb +66 -0
- data/spec/integration/data_binding_spec.rb +1 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/faces/plugin_spec.rb +29 -47
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/notify_spec.rb +46 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/unit/agent_spec.rb +34 -26
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +0 -4
- data/spec/unit/configurer_spec.rb +430 -415
- data/spec/unit/daemon_spec.rb +0 -1
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_system/uniquefile_spec.rb +11 -0
- data/spec/unit/forge/forge_spec.rb +1 -3
- data/spec/unit/forge/repository_spec.rb +1 -3
- data/spec/unit/indirector/catalog/compiler_spec.rb +45 -26
- data/spec/unit/indirector/resource/ral_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +43 -1
- data/spec/unit/network/http/pool_spec.rb +32 -0
- data/spec/unit/node_spec.rb +7 -4
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
- data/spec/unit/provider/exec_spec.rb +209 -0
- data/spec/unit/provider/group/groupadd_spec.rb +30 -1
- 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 +13 -2
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +247 -0
- data/spec/unit/provider/package/dpkg_spec.rb +35 -7
- data/spec/unit/provider/package/openbsd_spec.rb +17 -0
- data/spec/unit/provider/package/pip_spec.rb +93 -22
- data/spec/unit/provider/package/pkg_spec.rb +13 -1
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +36 -0
- data/spec/unit/provider/package/portage_spec.rb +4 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
- data/spec/unit/provider/package/yum_spec.rb +90 -0
- data/spec/unit/provider/package/zypper_spec.rb +13 -0
- data/spec/unit/provider/package_targetable_spec.rb +60 -0
- data/spec/unit/provider/selmodule_spec.rb +118 -47
- data/spec/unit/provider/service/daemontools_spec.rb +24 -0
- data/spec/unit/provider/service/runit_spec.rb +24 -0
- data/spec/unit/provider/service/systemd_spec.rb +109 -36
- data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +81 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +3 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
- data/spec/unit/ssl/certificate_spec.rb +7 -0
- data/spec/unit/ssl/host_spec.rb +2 -0
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/type/exec_spec.rb +6 -12
- data/spec/unit/type/file/content_spec.rb +9 -3
- data/spec/unit/type/file_spec.rb +9 -4
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/selboolean_spec.rb +4 -6
- data/spec/unit/type/service_spec.rb +9 -8
- data/spec/unit/type/user_spec.rb +19 -13
- data/spec/unit/util/execution_spec.rb +16 -0
- data/spec/unit/util/http_proxy_spec.rb +97 -0
- data/spec/unit/util/log/destinations_spec.rb +2 -26
- data/spec/unit/util/log_spec.rb +0 -138
- data/spec/unit/util/logging_spec.rb +200 -0
- data/spec/unit/util/pidlock_spec.rb +67 -40
- data/spec/unit/util/plist_spec.rb +20 -0
- data/spec/unit/util/windows/adsi_spec.rb +55 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/tasks/manpages.rake +1 -0
- metadata +16 -7
- data/lib/puppet/pops/loader/null_loader.rb +0 -60
- data/locales/ja/puppet.po +0 -12114
- data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -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
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
osfamilies = { 'windows' => ['pip.exe'], 'other' => ['pip', 'pip-python'] }
|
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
|
|
@@ -93,6 +94,16 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
93
94
|
expect(described_class.instances).to eq([])
|
94
95
|
end
|
95
96
|
end
|
97
|
+
|
98
|
+
context "when pip path location contains spaces" do
|
99
|
+
it "should quote the command before doing execpipe" do
|
100
|
+
allow(described_class).to receive(:which).and_return(pip_path_with_spaces)
|
101
|
+
allow(described_class).to receive(:pip_version).with(pip_path_with_spaces).and_return('8.0.1')
|
102
|
+
|
103
|
+
expect(described_class).to receive(:execpipe).with(["\"#{pip_path_with_spaces}\"", ["freeze"]])
|
104
|
+
described_class.instances
|
105
|
+
end
|
106
|
+
end
|
96
107
|
end
|
97
108
|
|
98
109
|
context "query" do
|
@@ -143,15 +154,18 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
143
154
|
end
|
144
155
|
|
145
156
|
context "latest" do
|
157
|
+
before do
|
158
|
+
allow(described_class).to receive(:pip_version).with(pip_path).and_return(pip_version)
|
159
|
+
allow(described_class).to receive(:which).with('pip').and_return(pip_path)
|
160
|
+
allow(described_class).to receive(:which).with('pip-python').and_return(pip_path)
|
161
|
+
allow(described_class).to receive(:which).with('pip.exe').and_return(pip_path)
|
162
|
+
allow(described_class).to receive(:provider_command).and_return(pip_path)
|
163
|
+
allow(described_class).to receive(:validate_command).with(pip_path)
|
164
|
+
end
|
165
|
+
|
146
166
|
context "with pip version < 1.5.4" do
|
147
|
-
|
148
|
-
|
149
|
-
allow(described_class).to receive(:which).with('pip').and_return("/fake/bin/pip")
|
150
|
-
allow(described_class).to receive(:which).with('pip-python').and_return("/fake/bin/pip")
|
151
|
-
allow(described_class).to receive(:which).with('pip.exe').and_return("/fake/bin/pip")
|
152
|
-
allow(described_class).to receive(:provider_command).and_return('/fake/bin/pip')
|
153
|
-
allow(described_class).to receive(:validate_command).with('/fake/bin/pip')
|
154
|
-
end
|
167
|
+
let(:pip_version) { '1.0.1' }
|
168
|
+
let(:pip_path) { '/fake/bin/pip' }
|
155
169
|
|
156
170
|
it "should find a version number for new_pip_package" do
|
157
171
|
p = StringIO.new(
|
@@ -197,19 +211,29 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
197
211
|
@resource[:name] = "fake_package"
|
198
212
|
expect(@provider.latest).to eq(nil)
|
199
213
|
end
|
214
|
+
|
215
|
+
it "should use 'install_options' when specified" do
|
216
|
+
expect(Puppet::Util::Execution).to receive(:execpipe).with(array_including([["--index=https://fake.example.com"]])).once
|
217
|
+
@resource[:name] = "fake_package"
|
218
|
+
@resource[:install_options] = ['--index' => 'https://fake.example.com']
|
219
|
+
expect(@provider.latest).to eq(nil)
|
220
|
+
end
|
221
|
+
|
222
|
+
context "when pip path location contains spaces" do
|
223
|
+
let(:pip_path) { pip_path_with_spaces }
|
224
|
+
|
225
|
+
it "should quote the command before doing execpipe" do
|
226
|
+
expect(Puppet::Util::Execution).to receive(:execpipe).with(array_including("\"#{pip_path}\""))
|
227
|
+
@provider.latest
|
228
|
+
end
|
229
|
+
end
|
200
230
|
end
|
201
231
|
|
202
232
|
context "with pip version >= 1.5.4" do
|
203
233
|
# For Pip 1.5.4 and above, you can get a version list from CLI - which allows for native pip behavior
|
204
234
|
# with regards to custom repositories, proxies and the like
|
205
|
-
|
206
|
-
|
207
|
-
allow(described_class).to receive(:which).with('pip').and_return("/fake/bin/pip")
|
208
|
-
allow(described_class).to receive(:which).with('pip-python').and_return("/fake/bin/pip")
|
209
|
-
allow(described_class).to receive(:which).with('pip.exe').and_return("/fake/bin/pip")
|
210
|
-
allow(described_class).to receive(:provider_command).and_return('/fake/bin/pip')
|
211
|
-
allow(described_class).to receive(:validate_command).with('/fake/bin/pip')
|
212
|
-
end
|
235
|
+
let(:pip_version) { '1.5.4' }
|
236
|
+
let(:pip_path) { '/fake/bin/pip' }
|
213
237
|
|
214
238
|
it "should find a version number for real_package" do
|
215
239
|
p = StringIO.new(
|
@@ -251,6 +275,22 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
251
275
|
latest = @provider.latest
|
252
276
|
expect(latest).to eq('15.0.2')
|
253
277
|
end
|
278
|
+
|
279
|
+
it "should use 'install_options' when specified" do
|
280
|
+
expect(Puppet::Util::Execution).to receive(:execpipe).with(array_including([["--index=https://fake.example.com"]])).once
|
281
|
+
@resource[:name] = "fake_package"
|
282
|
+
@resource[:install_options] = ['--index' => 'https://fake.example.com']
|
283
|
+
expect(@provider.latest).to eq(nil)
|
284
|
+
end
|
285
|
+
|
286
|
+
context "when pip path location contains spaces" do
|
287
|
+
let(:pip_path) { pip_path_with_spaces }
|
288
|
+
|
289
|
+
it "should quote the command before doing execpipe" do
|
290
|
+
expect(Puppet::Util::Execution).to receive(:execpipe).with(array_including("\"#{pip_path}\""))
|
291
|
+
@provider.latest
|
292
|
+
end
|
293
|
+
end
|
254
294
|
end
|
255
295
|
end
|
256
296
|
|
@@ -341,12 +381,43 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
341
381
|
end
|
342
382
|
|
343
383
|
context "pip_version" do
|
384
|
+
let(:pip) { '/fake/bin/pip' }
|
385
|
+
|
344
386
|
it "should look up version if pip is present" do
|
345
|
-
allow(described_class).to receive(:pip_cmd).and_return(
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
expect(described_class.pip_version(
|
387
|
+
allow(described_class).to receive(:pip_cmd).and_return(pip)
|
388
|
+
process = ['pip 8.0.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)']
|
389
|
+
allow(described_class).to receive(:execpipe).with([pip, '--version']).and_yield(process)
|
390
|
+
|
391
|
+
expect(described_class.pip_version(pip)).to eq('8.0.2')
|
392
|
+
end
|
393
|
+
|
394
|
+
it "parses multiple lines of output" do
|
395
|
+
allow(described_class).to receive(:pip_cmd).and_return(pip)
|
396
|
+
process = [
|
397
|
+
"/usr/local/lib/python2.7/dist-packages/urllib3/contrib/socks.py:37: DependencyWarning: SOCKS support in urllib3 requires the installation of optional dependencies: specifically, PySocks. For more information, see https://urllib3.readthedocs.io/en/latest/contrib.html#socks-proxies",
|
398
|
+
" DependencyWarning",
|
399
|
+
"pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)"
|
400
|
+
]
|
401
|
+
allow(described_class).to receive(:execpipe).with([pip, '--version']).and_yield(process)
|
402
|
+
|
403
|
+
expect(described_class.pip_version(pip)).to eq('1.5.6')
|
404
|
+
end
|
405
|
+
|
406
|
+
it "raises if there isn't a version string" do
|
407
|
+
allow(described_class).to receive(:pip_cmd).and_return(pip)
|
408
|
+
allow(described_class).to receive(:execpipe).with([pip, '--version']).and_yield([""])
|
409
|
+
expect {
|
410
|
+
described_class.pip_version(pip)
|
411
|
+
}.to raise_error(Puppet::Error, 'Cannot resolve pip version')
|
412
|
+
end
|
413
|
+
|
414
|
+
it "quotes commands with spaces" do
|
415
|
+
pip = 'C:\Program Files\Python27\Scripts\pip.exe'
|
416
|
+
allow(described_class).to receive(:pip_cmd).and_return(pip)
|
417
|
+
process = ["pip 18.1 from c:\program files\python27\lib\site-packages\pip (python 2.7)\r\n"]
|
418
|
+
allow(described_class).to receive(:execpipe).with(["\"#{pip}\"", '--version']).and_yield(process)
|
419
|
+
|
420
|
+
expect(described_class.pip_version(pip)).to eq('18.1')
|
350
421
|
end
|
351
422
|
end
|
352
423
|
|
@@ -90,7 +90,7 @@ describe Puppet::Type.type(:package).provider(:pkg) do
|
|
90
90
|
|
91
91
|
{
|
92
92
|
'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'},
|
93
|
-
'pkg://omnios/incorporation/jeos/illumos-gate@11,5.11-0.151006:20130506T183443Z if-' => {:name => 'incorporation/jeos/illumos-gate', :ensure =>
|
93
|
+
'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'},
|
94
94
|
'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'},
|
95
95
|
}.each do |k, v|
|
96
96
|
it "[#{k}] should correctly parse" do
|
@@ -251,6 +251,7 @@ describe Puppet::Type.type(:package).provider(:pkg) do
|
|
251
251
|
|
252
252
|
it "should accept all licenses" do
|
253
253
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => :absent})
|
254
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
254
255
|
expect(Puppet::Util::Execution).to receive(:execute)
|
255
256
|
.with(['/bin/pkg', 'install', *hash[:flags], 'dummy'], {:failonfail => false, :combine => true})
|
256
257
|
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
@@ -265,6 +266,7 @@ describe Puppet::Type.type(:package).provider(:pkg) do
|
|
265
266
|
# 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?
|
266
267
|
resource[:ensure] = '0.0.7,5.11-0.151006:20131230T130000Z'
|
267
268
|
allow($CHILD_STATUS).to receive(:exitstatus).and_return(0)
|
269
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
268
270
|
expect(Puppet::Util::Execution).to receive(:execute).with(['/bin/pkg', 'unfreeze', 'dummy'], {:failonfail => false, :combine => true})
|
269
271
|
expect(Puppet::Util::Execution).to receive(:execute)
|
270
272
|
.with(['/bin/pkg', 'list', '-Hv', 'dummy'], {:failonfail => false, :combine => true})
|
@@ -277,6 +279,7 @@ describe Puppet::Type.type(:package).provider(:pkg) do
|
|
277
279
|
|
278
280
|
it "should install specific version(2)" do
|
279
281
|
resource[:ensure] = '0.0.8'
|
282
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
280
283
|
expect(Puppet::Util::Execution).to receive(:execute).with(['/bin/pkg', 'unfreeze', 'dummy'], {:failonfail => false, :combine => true})
|
281
284
|
expect(Puppet::Util::Execution).to receive(:execute)
|
282
285
|
.with(['/bin/pkg', 'list', '-Hv', 'dummy'], {:failonfail => false, :combine => true})
|
@@ -290,6 +293,7 @@ describe Puppet::Type.type(:package).provider(:pkg) do
|
|
290
293
|
|
291
294
|
it "should downgrade to specific version" do
|
292
295
|
resource[:ensure] = '0.0.7'
|
296
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
293
297
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => '0.0.8,5.11-0.151106:20131230T130000Z'})
|
294
298
|
allow($CHILD_STATUS).to receive(:exitstatus).and_return(0)
|
295
299
|
expect(Puppet::Util::Execution).to receive(:execute).with(['/bin/pkg', 'unfreeze', 'dummy'], {:failonfail => false, :combine => true})
|
@@ -301,6 +305,7 @@ describe Puppet::Type.type(:package).provider(:pkg) do
|
|
301
305
|
|
302
306
|
it "should install any if version is not specified" do
|
303
307
|
resource[:ensure] = :present
|
308
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
304
309
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => :absent})
|
305
310
|
expect(Puppet::Util::Execution).to receive(:execute)
|
306
311
|
.with(['/bin/pkg', 'install', *hash[:flags], 'dummy'], {:failonfail => false, :combine => true})
|
@@ -312,6 +317,7 @@ describe Puppet::Type.type(:package).provider(:pkg) do
|
|
312
317
|
|
313
318
|
it "should install if no version was previously installed, and a specific version was requested" do
|
314
319
|
resource[:ensure] = '0.0.7'
|
320
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
315
321
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => :absent})
|
316
322
|
expect(Puppet::Util::Execution).to receive(:execute).with(['/bin/pkg', 'unfreeze', 'dummy'], {:failonfail => false, :combine => true})
|
317
323
|
expect(Puppet::Util::Execution).to receive(:execute)
|
@@ -325,6 +331,7 @@ describe Puppet::Type.type(:package).provider(:pkg) do
|
|
325
331
|
resource[:ensure] = '1.0-0.151006'
|
326
332
|
is = :absent
|
327
333
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => is})
|
334
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
328
335
|
expect(described_class).to receive(:pkg)
|
329
336
|
.with(:list, '-Hvfa', 'dummy@1.0-0.151006')
|
330
337
|
.and_return(Puppet::Util::Execution::ProcessOutput.new(File.read(my_fixture('dummy_implicit_version')), 0))
|
@@ -340,6 +347,7 @@ describe Puppet::Type.type(:package).provider(:pkg) do
|
|
340
347
|
resource[:ensure] = '1.0-0.151006'
|
341
348
|
is = '1.0,5.11-0.151006:20140219T191204Z'
|
342
349
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => is})
|
350
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
343
351
|
expect(described_class).to receive(:pkg).with(:list, '-Hvfa', 'dummy@1.0-0.151006').and_return(File.read(my_fixture('dummy_implicit_version')))
|
344
352
|
expect(Puppet::Util::Execution).to receive(:execute).with(['/bin/pkg', 'update', '-n', 'dummy@1.0,5.11-0.151006:20140220T084443Z'], {:failonfail => false, :combine => true})
|
345
353
|
expect(provider).to receive(:unhold).with(no_args)
|
@@ -398,12 +406,16 @@ describe Puppet::Type.type(:package).provider(:pkg) do
|
|
398
406
|
it "should support current pkg version" do
|
399
407
|
expect(described_class).to receive(:pkg).with(:version).and_return('630e1ffc7a19')
|
400
408
|
expect(described_class).to receive(:pkg).with([:uninstall, resource[:name]])
|
409
|
+
expect(provider).to receive(:properties).and_return({:hold => false})
|
410
|
+
|
401
411
|
provider.uninstall
|
402
412
|
end
|
403
413
|
|
404
414
|
it "should support original pkg commands" do
|
405
415
|
expect(described_class).to receive(:pkg).with(:version).and_return('052adf36c3f4')
|
406
416
|
expect(described_class).to receive(:pkg).with([:uninstall, '-r', resource[:name]])
|
417
|
+
expect(provider).to receive(:properties).and_return({:hold => false})
|
418
|
+
|
407
419
|
provider.uninstall
|
408
420
|
end
|
409
421
|
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
|
@@ -169,6 +193,18 @@ describe Puppet::Type.type(:package).provider(:pkgng) do
|
|
169
193
|
bash_comp_latest_version = described_class.get_latest_version('shells/bash-completion', version_list)
|
170
194
|
expect(bash_comp_latest_version).to eq('2.1_3')
|
171
195
|
end
|
196
|
+
|
197
|
+
it "should return nil when the package is orphaned" do
|
198
|
+
version_list = File.read(my_fixture('pkg.version'))
|
199
|
+
orphan_latest_version = described_class.get_latest_version('sysutils/orphan', version_list)
|
200
|
+
expect(orphan_latest_version).to be_nil
|
201
|
+
end
|
202
|
+
|
203
|
+
it "should return nil when the package is broken" do
|
204
|
+
version_list = File.read(my_fixture('pkg.version'))
|
205
|
+
broken_latest_version = described_class.get_latest_version('sysutils/broken', version_list)
|
206
|
+
expect(broken_latest_version).to be_nil
|
207
|
+
end
|
172
208
|
end
|
173
209
|
|
174
210
|
describe "confine" do
|
@@ -42,13 +42,13 @@ describe Puppet::Type.type(:package).provider(:portage) do
|
|
42
42
|
allow(@unslotted_provider).to receive(:qatom).and_return({:category=>"dev-lang", :pn=>"ruby", :pv=>nil, :pr=>nil, :slot=>nil, :pfx=>nil, :sfx=>nil})
|
43
43
|
allow(@unslotted_provider.class).to receive(:emerge).with('--list-sets').and_return(package_sets)
|
44
44
|
@slotted_provider = described_class.new(@slotted_resource)
|
45
|
-
allow(@slotted_provider).to receive(:qatom).and_return({:category=>"dev-lang", :pn=>"ruby", :pv=>nil, :pr=>nil, :slot=>"
|
45
|
+
allow(@slotted_provider).to receive(:qatom).and_return({:category=>"dev-lang", :pn=>"ruby", :pv=>nil, :pr=>nil, :slot=>"2.1", :pfx=>nil, :sfx=>nil})
|
46
46
|
allow(@slotted_provider.class).to receive(:emerge).with('--list-sets').and_return(package_sets)
|
47
47
|
@versioned_provider = described_class.new(@versioned_resource)
|
48
48
|
allow(@versioned_provider).to receive(:qatom).and_return({:category=>"dev-lang", :pn=>"ruby", :pv=>"1.9.3", :pr=>nil, :slot=>nil, :pfx=>nil, :sfx=>nil})
|
49
49
|
allow(@versioned_provider.class).to receive(:emerge).with('--list-sets').and_return(package_sets)
|
50
50
|
@versioned_slotted_provider = described_class.new(@versioned_slotted_resource)
|
51
|
-
allow(@versioned_slotted_provider).to receive(:qatom).and_return({:category=>"dev-lang", :pn=>"ruby", :pv=>"1.9.3", :pr=>nil, :slot=>"
|
51
|
+
allow(@versioned_slotted_provider).to receive(:qatom).and_return({:category=>"dev-lang", :pn=>"ruby", :pv=>"1.9.3", :pr=>nil, :slot=>"1.9", :pfx=>"=", :sfx=>nil})
|
52
52
|
allow(@versioned_slotted_provider.class).to receive(:emerge).with('--list-sets').and_return(package_sets)
|
53
53
|
@set_provider = described_class.new(@set_resource)
|
54
54
|
allow(@set_provider).to receive(:qatom).and_return({:category=>nil, :pn=>"@system", :pv=>nil, :pr=>nil, :slot=>nil, :pfx=>nil, :sfx=>nil})
|
@@ -166,7 +166,7 @@ describe Puppet::Type.type(:package).provider(:portage) do
|
|
166
166
|
end
|
167
167
|
|
168
168
|
it "can extract the slot from the package name" do
|
169
|
-
expect(@slotted_provider.qatom[:slot]).to eq('
|
169
|
+
expect(@slotted_provider.qatom[:slot]).to eq('2.1')
|
170
170
|
end
|
171
171
|
|
172
172
|
it "returns nil for as the slot when no slot is specified" do
|
@@ -182,7 +182,7 @@ describe Puppet::Type.type(:package).provider(:portage) do
|
|
182
182
|
expect(@versioned_slotted_provider.qatom[:category]).to eq('dev-lang')
|
183
183
|
expect(@versioned_slotted_provider.qatom[:pn]).to eq('ruby')
|
184
184
|
expect(@versioned_slotted_provider.qatom[:pv]).to eq('1.9.3')
|
185
|
-
expect(@versioned_slotted_provider.qatom[:slot]).to eq('
|
185
|
+
expect(@versioned_slotted_provider.qatom[:slot]).to eq('1.9')
|
186
186
|
end
|
187
187
|
|
188
188
|
it "can handle search output with slots for unslotted packages" do
|
@@ -20,7 +20,10 @@ describe Puppet::Type.type(:package).provider(:puppet_gem) do
|
|
20
20
|
let(:provider_gem_cmd) { '/opt/puppetlabs/puppet/bin/gem' }
|
21
21
|
end
|
22
22
|
|
23
|
-
|
23
|
+
custom_environment = {"HOME"=>ENV["HOME"]}
|
24
|
+
custom_environment['PKG_CONFIG_PATH'] = '/opt/puppetlabs/puppet/lib/pkgconfig' unless Puppet::Util::Platform.windows?
|
25
|
+
|
26
|
+
let(:execute_options) { {:failonfail => true, :combine => true, :custom_environment => custom_environment} }
|
24
27
|
|
25
28
|
before :each do
|
26
29
|
resource.provider = provider
|
@@ -54,6 +54,87 @@ describe Puppet::Type.type(:package).provider(:yum) do
|
|
54
54
|
provider.install
|
55
55
|
end
|
56
56
|
end
|
57
|
+
|
58
|
+
describe 'with install_options' do
|
59
|
+
it 'can parse disable-repo with array of strings' do
|
60
|
+
resource[:install_options] = ['--disable-repo=dev*', '--disable-repo=prod*']
|
61
|
+
expect(provider).to receive(:execute) do | arr|
|
62
|
+
expect(arr[-3]).to eq(["--disable-repo=dev*", "--disable-repo=prod*"])
|
63
|
+
end
|
64
|
+
provider.install
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'can parse disable-repo with array of hashes' do
|
68
|
+
resource[:install_options] = [{'--disable-repo' => 'dev*'}, {'--disable-repo' => 'prod*'}]
|
69
|
+
expect(provider).to receive(:execute) do | arr|
|
70
|
+
expect(arr[-3]).to eq(["--disable-repo=dev*", "--disable-repo=prod*"])
|
71
|
+
end
|
72
|
+
provider.install
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'can parse enable-repo with array of strings' do
|
76
|
+
resource[:install_options] = ['--enable-repo=dev*', '--enable-repo=prod*']
|
77
|
+
expect(provider).to receive(:execute) do | arr|
|
78
|
+
expect(arr[-3]).to eq(["--enable-repo=dev*", "--enable-repo=prod*"])
|
79
|
+
end
|
80
|
+
provider.install
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'can parse enable-repo with array of hashes' do
|
84
|
+
resource[:install_options] = [{'--enable-repo' => 'dev*'}, {'--disable-repo' => 'prod*'}]
|
85
|
+
expect(provider).to receive(:execute) do | arr|
|
86
|
+
expect(arr[-3]).to eq(["--enable-repo=dev*", "--disable-repo=prod*"])
|
87
|
+
end
|
88
|
+
provider.install
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'can parse enable-repo with single hash' do
|
92
|
+
resource[:install_options] = [{'--enable-repo' => 'dev*','--disable-repo' => 'prod*'}]
|
93
|
+
expect(provider).to receive(:execute) do | arr|
|
94
|
+
expect(arr[-3]).to eq(["--disable-repo=prod*", "--enable-repo=dev*"])
|
95
|
+
end
|
96
|
+
provider.install
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'can parse enable-repo with empty array' do
|
100
|
+
resource[:install_options] = []
|
101
|
+
expect(provider).to receive(:execute) do | arr|
|
102
|
+
expect(arr[-3]).to eq([])
|
103
|
+
end
|
104
|
+
provider.install
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context "latest" do
|
110
|
+
let(:name) { 'baz' }
|
111
|
+
|
112
|
+
let(:resource) do
|
113
|
+
Puppet::Type.type(:package).new(
|
114
|
+
:name => name,
|
115
|
+
:provider => 'yum',
|
116
|
+
)
|
117
|
+
end
|
118
|
+
|
119
|
+
let(:provider) do
|
120
|
+
provider = described_class.new
|
121
|
+
provider.resource = resource
|
122
|
+
provider
|
123
|
+
end
|
124
|
+
|
125
|
+
before {
|
126
|
+
allow(described_class).to receive(:command).with(:cmd).and_return("/usr/bin/yum")
|
127
|
+
Puppet[:log_level] = 'debug'
|
128
|
+
}
|
129
|
+
|
130
|
+
it "should print a debug message with the current version if newer package is not available" do
|
131
|
+
expect(provider).to receive(:query).and_return({:ensure => "1.2.3"})
|
132
|
+
expect(described_class).to receive(:latest_package_version).and_return(nil)
|
133
|
+
resource[:ensure] = :present
|
134
|
+
|
135
|
+
provider.latest
|
136
|
+
expect(@logs).to include(an_object_having_attributes(level: :debug, message: "Yum didn't find updates, current version (1.2.3) is the latest"))
|
137
|
+
end
|
57
138
|
end
|
58
139
|
|
59
140
|
context "parsing the output of check-update" do
|
@@ -144,5 +225,14 @@ describe Puppet::Type.type(:package).provider(:yum) do
|
|
144
225
|
expect(output).not_to include("Random plugin")
|
145
226
|
end
|
146
227
|
end
|
228
|
+
|
229
|
+
context "with subscription manager enabled " do
|
230
|
+
let(:check_update) { File.read(my_fixture("yum-check-update-subscription-manager.txt")) }
|
231
|
+
let(:output) { described_class.parse_updates(check_update) }
|
232
|
+
|
233
|
+
it "parses correctly formatted entries" do
|
234
|
+
expect(output['curl.x86_64']).to eq([{:name => 'curl', :epoch => '0', :version => '7.32.0', :release => '10.fc20', :arch => 'x86_64'}])
|
235
|
+
end
|
236
|
+
end
|
147
237
|
end
|
148
238
|
end
|