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
| @@ -32,12 +32,14 @@ describe Puppet::Type.type(:package).provider(:apt) do | |
| 32 32 |  | 
| 33 33 | 
             
              it "should use 'apt-get remove' to uninstall" do
         | 
| 34 34 | 
             
                expect(provider).to receive(:aptget).with("-y", "-q", :remove, name)
         | 
| 35 | 
            +
                expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 35 36 | 
             
                provider.uninstall
         | 
| 36 37 | 
             
              end
         | 
| 37 38 |  | 
| 38 39 | 
             
              it "should use 'apt-get purge' and 'dpkg purge' to purge" do
         | 
| 39 40 | 
             
                expect(provider).to receive(:aptget).with("-y", "-q", :remove, "--purge", name)
         | 
| 40 41 | 
             
                expect(provider).to receive(:dpkg).with("--purge", name)
         | 
| 42 | 
            +
                expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 41 43 | 
             
                provider.purge
         | 
| 42 44 | 
             
              end
         | 
| 43 45 |  | 
| @@ -88,14 +90,14 @@ Version table: | |
| 88 90 | 
             
                it "should preseed if a responsefile is provided" do
         | 
| 89 91 | 
             
                  resource[:responsefile] = "/my/file"
         | 
| 90 92 | 
             
                  expect(provider).to receive(:run_preseed)
         | 
| 91 | 
            -
             | 
| 93 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 92 94 | 
             
                  allow(provider).to receive(:aptget)
         | 
| 93 95 | 
             
                  provider.install
         | 
| 94 96 | 
             
                end
         | 
| 95 97 |  | 
| 96 98 | 
             
                it "should check for a cdrom" do
         | 
| 97 99 | 
             
                  expect(provider).to receive(:checkforcdrom)
         | 
| 98 | 
            -
             | 
| 100 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 99 101 | 
             
                  allow(provider).to receive(:aptget)
         | 
| 100 102 | 
             
                  provider.install
         | 
| 101 103 | 
             
                end
         | 
| @@ -106,6 +108,7 @@ Version table: | |
| 106 108 | 
             
                    expect(command[-1]).to eq(name)
         | 
| 107 109 | 
             
                    expect(command[-2]).to eq(:install)
         | 
| 108 110 | 
             
                  end
         | 
| 111 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 109 112 |  | 
| 110 113 | 
             
                  provider.install
         | 
| 111 114 | 
             
                end
         | 
| @@ -115,6 +118,7 @@ Version table: | |
| 115 118 | 
             
                  expect(provider).to receive(:aptget) do |*command|
         | 
| 116 119 | 
             
                    expect(command[-1]).to eq("#{name}=1.0")
         | 
| 117 120 | 
             
                  end
         | 
| 121 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 118 122 |  | 
| 119 123 | 
             
                  provider.install
         | 
| 120 124 | 
             
                end
         | 
| @@ -124,6 +128,7 @@ Version table: | |
| 124 128 | 
             
                  expect(provider).to receive(:aptget) do |*command|
         | 
| 125 129 | 
             
                    expect(command).to include("--force-yes")
         | 
| 126 130 | 
             
                  end
         | 
| 131 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 127 132 |  | 
| 128 133 | 
             
                  provider.install
         | 
| 129 134 | 
             
                end
         | 
| @@ -132,6 +137,7 @@ Version table: | |
| 132 137 | 
             
                  expect(provider).to receive(:aptget) do |*command|
         | 
| 133 138 | 
             
                    expect(command).to include("-q")
         | 
| 134 139 | 
             
                  end
         | 
| 140 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 135 141 |  | 
| 136 142 | 
             
                  provider.install
         | 
| 137 143 | 
             
                end
         | 
| @@ -140,6 +146,7 @@ Version table: | |
| 140 146 | 
             
                  expect(provider).to receive(:aptget) do |*command|
         | 
| 141 147 | 
             
                    expect(command).to include("-y")
         | 
| 142 148 | 
             
                  end
         | 
| 149 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 143 150 |  | 
| 144 151 | 
             
                  provider.install
         | 
| 145 152 | 
             
                end
         | 
| @@ -149,6 +156,7 @@ Version table: | |
| 149 156 | 
             
                  expect(provider).to receive(:aptget) do |*command|
         | 
| 150 157 | 
             
                    expect(command).to include("DPkg::Options::=--force-confold")
         | 
| 151 158 | 
             
                  end
         | 
| 159 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 152 160 |  | 
| 153 161 | 
             
                  provider.install
         | 
| 154 162 | 
             
                end
         | 
| @@ -158,6 +166,7 @@ Version table: | |
| 158 166 | 
             
                  expect(provider).to receive(:aptget) do |*command|
         | 
| 159 167 | 
             
                    expect(command).to include("DPkg::Options::=--force-confnew")
         | 
| 160 168 | 
             
                  end
         | 
| 169 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 161 170 |  | 
| 162 171 | 
             
                  provider.install
         | 
| 163 172 | 
             
                end
         | 
| @@ -165,6 +174,7 @@ Version table: | |
| 165 174 | 
             
                it 'should support string install options' do
         | 
| 166 175 | 
             
                  resource[:install_options] = ['--foo', '--bar']
         | 
| 167 176 | 
             
                  expect(provider).to receive(:aptget).with('-q', '-y', '-o', 'DPkg::Options::=--force-confold', '--foo', '--bar', :install, name)
         | 
| 177 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 168 178 |  | 
| 169 179 | 
             
                  provider.install
         | 
| 170 180 | 
             
                end
         | 
| @@ -172,6 +182,7 @@ Version table: | |
| 172 182 | 
             
                it 'should support hash install options' do
         | 
| 173 183 | 
             
                  resource[:install_options] = ['--foo', { '--bar' => 'baz', '--baz' => 'foo' }]
         | 
| 174 184 | 
             
                  expect(provider).to receive(:aptget).with('-q', '-y', '-o', 'DPkg::Options::=--force-confold', '--foo', '--bar=baz', '--baz=foo', :install, name)
         | 
| 185 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :none})
         | 
| 175 186 |  | 
| 176 187 | 
             
                  provider.install
         | 
| 177 188 | 
             
                end
         | 
| @@ -33,6 +33,7 @@ describe Puppet::Type.type(:package).provider(:aptitude) do | |
| 33 33 | 
             
                expect(pkg.provider).to receive(:aptitude).
         | 
| 34 34 | 
             
                  with('-y', '-o', 'DPkg::Options::=--force-confold', :install, 'faff').
         | 
| 35 35 | 
             
                  and_return(0)
         | 
| 36 | 
            +
                expect(pkg.provider).to receive(:properties).and_return({:mark => :none})
         | 
| 36 37 |  | 
| 37 38 | 
             
                pkg.provider.install
         | 
| 38 39 | 
             
              end
         | 
| @@ -0,0 +1,247 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Puppet::Type.type(:package).provider(:dnfmodule) do
         | 
| 4 | 
            +
              include PuppetSpec::Fixtures
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              let(:dnf_version) do
         | 
| 7 | 
            +
                <<-DNF_OUTPUT
         | 
| 8 | 
            +
                4.0.9
         | 
| 9 | 
            +
                  Installed: dnf-0:4.0.9.2-5.el8.noarch at Wed 29 May 2019 07:05:05 AM GMT
         | 
| 10 | 
            +
                  Built    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> at Thu 14 Feb 2019 12:04:07 PM GMT
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  Installed: rpm-0:4.14.2-9.el8.x86_64 at Wed 29 May 2019 07:04:33 AM GMT
         | 
| 13 | 
            +
                  Built    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> at Thu 20 Dec 2018 01:30:03 PM GMT
         | 
| 14 | 
            +
                DNF_OUTPUT
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              let(:execute_options) do
         | 
| 18 | 
            +
                {:failonfail => true, :combine => true, :custom_environment => {}}
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              let(:packages) { File.read(my_fixture("dnf-module-list.txt")) }
         | 
| 22 | 
            +
              let(:dnf_path) { '/usr/bin/dnf' }
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              before(:each) { allow(Puppet::Util).to receive(:which).with('/usr/bin/dnf').and_return(dnf_path) }
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              it "should have lower specificity" do
         | 
| 27 | 
            +
                allow(Facter).to receive(:value).with(:osfamily).and_return(:redhat)
         | 
| 28 | 
            +
                allow(Facter).to receive(:value).with(:operatingsystem).and_return(:redhat)
         | 
| 29 | 
            +
                allow(Facter).to receive(:value).with(:operatingsystemmajrelease).and_return('8')
         | 
| 30 | 
            +
                expect(described_class.specificity).to be < 200
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              describe "should be an opt-in provider" do
         | 
| 34 | 
            +
                Array(4..8).each do |ver|
         | 
| 35 | 
            +
                  it "should not be default for redhat #{ver}" do
         | 
| 36 | 
            +
                    allow(Facter).to receive(:value).with(:operatingsystem).and_return('redhat')
         | 
| 37 | 
            +
                    allow(Facter).to receive(:value).with(:osfamily).and_return('redhat')
         | 
| 38 | 
            +
                    allow(Facter).to receive(:value).with(:operatingsystemmajrelease).and_return(ver.to_s)
         | 
| 39 | 
            +
                    expect(described_class).not_to be_default
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              describe "handling dnf versions" do
         | 
| 45 | 
            +
                before(:each) do
         | 
| 46 | 
            +
                  expect(Puppet::Type::Package::ProviderDnfmodule).to receive(:execute)
         | 
| 47 | 
            +
                      .with(["/usr/bin/dnf", "--version"])
         | 
| 48 | 
            +
                      .and_return(dnf_version).at_most(:once)
         | 
| 49 | 
            +
                  expect(Puppet::Util::Execution).to receive(:execute)
         | 
| 50 | 
            +
                      .with(["/usr/bin/dnf", "--version"], execute_options)
         | 
| 51 | 
            +
                      .and_return(Puppet::Util::Execution::ProcessOutput.new(dnf_version, 0))
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                describe "with a supported dnf version" do
         | 
| 55 | 
            +
                  it "correctly parses the version" do
         | 
| 56 | 
            +
                    expect(described_class.current_version).to eq('4.0.9')
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                describe "with an unsupported dnf version" do
         | 
| 61 | 
            +
                  let(:dnf_version) do
         | 
| 62 | 
            +
                    <<-DNF_OUTPUT
         | 
| 63 | 
            +
                    2.7.5
         | 
| 64 | 
            +
                      Installed: dnf-0:2.7.5-12.fc28.noarch at Mon 13 Aug 2018 11:05:27 PM GMT
         | 
| 65 | 
            +
                      Built    : Fedora Project at Wed 18 Apr 2018 02:29:51 PM GMT
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                      Installed: rpm-0:4.14.1-7.fc28.x86_64 at Mon 13 Aug 2018 11:05:25 PM GMT
         | 
| 68 | 
            +
                      Built    : Fedora Project at Mon 19 Feb 2018 09:29:01 AM GMT
         | 
| 69 | 
            +
                    DNF_OUTPUT
         | 
| 70 | 
            +
                  end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                  before(:each) { described_class.instance_variable_set("@current_version", nil) }
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                  it "correctly parses the version" do
         | 
| 75 | 
            +
                    expect(described_class.current_version).to eq('2.7.5')
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                  it "raises an error when attempting prefetch" do
         | 
| 79 | 
            +
                    expect { described_class.prefetch('anything') }.to raise_error(Puppet::Error, "Modules are not supported on DNF versions lower than 3.0.1")
         | 
| 80 | 
            +
                  end
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
              end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
              describe "when ensuring a module" do
         | 
| 85 | 
            +
                let(:name) { 'baz' }
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                let(:resource) do
         | 
| 88 | 
            +
                  Puppet::Type.type(:package).new(
         | 
| 89 | 
            +
                    :name => name,
         | 
| 90 | 
            +
                    :provider => 'dnfmodule',
         | 
| 91 | 
            +
                  )
         | 
| 92 | 
            +
                end
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                let(:provider) do
         | 
| 95 | 
            +
                  provider = described_class.new
         | 
| 96 | 
            +
                  provider.resource = resource
         | 
| 97 | 
            +
                  provider
         | 
| 98 | 
            +
                end
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                describe 'provider features' do
         | 
| 101 | 
            +
                  it { is_expected.to be_versionable }
         | 
| 102 | 
            +
                  it { is_expected.to be_installable }
         | 
| 103 | 
            +
                  it { is_expected.to be_uninstallable }
         | 
| 104 | 
            +
                end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                context "when installing a new module" do
         | 
| 107 | 
            +
                  before do
         | 
| 108 | 
            +
                    provider.instance_variable_get('@property_hash')[:ensure] = :absent
         | 
| 109 | 
            +
                  end
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                  it "should not reset the module stream when package is absent" do
         | 
| 112 | 
            +
                    resource[:ensure] = :present
         | 
| 113 | 
            +
                    expect(provider).not_to receive(:uninstall)
         | 
| 114 | 
            +
                    expect(provider).to receive(:execute)
         | 
| 115 | 
            +
                    provider.install
         | 
| 116 | 
            +
                  end
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                  it "should not reset the module stream when package is purged" do
         | 
| 119 | 
            +
                    provider.instance_variable_get('@property_hash')[:ensure] = :purged
         | 
| 120 | 
            +
                    resource[:ensure] = :present
         | 
| 121 | 
            +
                    expect(provider).not_to receive(:uninstall)
         | 
| 122 | 
            +
                    expect(provider).to receive(:execute)
         | 
| 123 | 
            +
                    provider.install
         | 
| 124 | 
            +
                  end
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                  it "should just enable the module if it has no default profile" do
         | 
| 127 | 
            +
                    dnf_exception = Puppet::ExecutionFailure.new("Error: Problems in request:\nmissing groups or modules: #{resource[:name]}")
         | 
| 128 | 
            +
                    allow(provider).to receive(:execute).with(array_including('install')).and_raise(dnf_exception)
         | 
| 129 | 
            +
                    resource[:ensure] = :present
         | 
| 130 | 
            +
                    expect(provider).to receive(:execute).with(array_including('install')).ordered
         | 
| 131 | 
            +
                    expect(provider).to receive(:execute).with(array_including('enable')).ordered
         | 
| 132 | 
            +
                    provider.install
         | 
| 133 | 
            +
                  end
         | 
| 134 | 
            +
             | 
| 135 | 
            +
                  it "should just enable the module if enable_only = true" do
         | 
| 136 | 
            +
                    resource[:ensure] = :present
         | 
| 137 | 
            +
                    resource[:enable_only] = true
         | 
| 138 | 
            +
                    expect(provider).to receive(:execute).with(array_including('enable'))
         | 
| 139 | 
            +
                    expect(provider).not_to receive(:execute).with(array_including('install'))
         | 
| 140 | 
            +
                    provider.install
         | 
| 141 | 
            +
                  end
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                  it "should install the default stream and flavor" do
         | 
| 144 | 
            +
                    resource[:ensure] = :present
         | 
| 145 | 
            +
                    expect(provider).to receive(:execute).with(array_including('baz'))
         | 
| 146 | 
            +
                    provider.install
         | 
| 147 | 
            +
                  end
         | 
| 148 | 
            +
             | 
| 149 | 
            +
                  it "should install a specific stream" do
         | 
| 150 | 
            +
                    resource[:ensure] = '9.6'
         | 
| 151 | 
            +
                    expect(provider).to receive(:execute).with(array_including('baz:9.6'))
         | 
| 152 | 
            +
                    provider.install
         | 
| 153 | 
            +
                  end
         | 
| 154 | 
            +
             | 
| 155 | 
            +
                  it "should install a specific flavor" do
         | 
| 156 | 
            +
                    resource[:ensure] = :present
         | 
| 157 | 
            +
                    resource[:flavor] = 'minimal'
         | 
| 158 | 
            +
                    expect(provider).to receive(:execute).with(array_including('baz/minimal'))
         | 
| 159 | 
            +
                    provider.install
         | 
| 160 | 
            +
                  end
         | 
| 161 | 
            +
             | 
| 162 | 
            +
                  it "should install a specific flavor and stream" do
         | 
| 163 | 
            +
                    resource[:ensure] = '9.6'
         | 
| 164 | 
            +
                    resource[:flavor] = 'minimal'
         | 
| 165 | 
            +
                    expect(provider).to receive(:execute).with(array_including('baz:9.6/minimal'))
         | 
| 166 | 
            +
                    provider.install
         | 
| 167 | 
            +
                  end
         | 
| 168 | 
            +
                end
         | 
| 169 | 
            +
             | 
| 170 | 
            +
                context "when ensuring a specific version on top of another stream" do
         | 
| 171 | 
            +
                  before do
         | 
| 172 | 
            +
                    provider.instance_variable_get('@property_hash')[:ensure] = '9.6'
         | 
| 173 | 
            +
                  end
         | 
| 174 | 
            +
             | 
| 175 | 
            +
                  it "should remove existing packages and reset the module stream before installing" do
         | 
| 176 | 
            +
                    resource[:ensure] = '10'
         | 
| 177 | 
            +
                    expect(provider).to receive(:execute).thrice.with(array_including(/remove|reset|install/))
         | 
| 178 | 
            +
                    provider.install
         | 
| 179 | 
            +
                  end
         | 
| 180 | 
            +
                end
         | 
| 181 | 
            +
             | 
| 182 | 
            +
                context "with an installed flavor" do
         | 
| 183 | 
            +
                  before do
         | 
| 184 | 
            +
                    provider.instance_variable_get('@property_hash')[:flavor] = 'minimal'
         | 
| 185 | 
            +
                  end
         | 
| 186 | 
            +
             | 
| 187 | 
            +
                  it "should remove existing packages and reset the module stream before installing another flavor" do
         | 
| 188 | 
            +
                    resource[:flavor] = 'common'
         | 
| 189 | 
            +
                    expect(provider).to receive(:execute).thrice.with(array_including(/remove|reset|install/))
         | 
| 190 | 
            +
                    provider.flavor = resource[:flavor]
         | 
| 191 | 
            +
                  end
         | 
| 192 | 
            +
             | 
| 193 | 
            +
                  it "should not do anything if the flavor doesn't change" do
         | 
| 194 | 
            +
                    resource[:flavor] = 'minimal'
         | 
| 195 | 
            +
                    expect(provider).not_to receive(:execute)
         | 
| 196 | 
            +
                    provider.flavor = resource[:flavor]
         | 
| 197 | 
            +
                  end
         | 
| 198 | 
            +
             | 
| 199 | 
            +
                  it "should return the existing flavor" do
         | 
| 200 | 
            +
                    expect(provider.flavor).to eq('minimal')
         | 
| 201 | 
            +
                  end
         | 
| 202 | 
            +
                end
         | 
| 203 | 
            +
             | 
| 204 | 
            +
                context "when disabling a module" do
         | 
| 205 | 
            +
             | 
| 206 | 
            +
                  it "executed the disable command" do
         | 
| 207 | 
            +
                    resource[:ensure] = :disabled
         | 
| 208 | 
            +
                    expect(provider).to receive(:execute).with(array_including('disable'))
         | 
| 209 | 
            +
                    provider.disable
         | 
| 210 | 
            +
                  end
         | 
| 211 | 
            +
             | 
| 212 | 
            +
                  it "does not try to disable if package is already disabled" do
         | 
| 213 | 
            +
                    allow(described_class).to receive(:command).with(:dnf).and_return(dnf_path)
         | 
| 214 | 
            +
                    allow(Puppet::Util::Execution).to receive(:execute)
         | 
| 215 | 
            +
                      .with("/usr/bin/dnf module list -d 0 -e 1")
         | 
| 216 | 
            +
                      .and_return("baz 1.2 [d][x] common [d], complete  Package Description")
         | 
| 217 | 
            +
                    resource[:ensure] = :disabled
         | 
| 218 | 
            +
                    expect(provider).to be_insync(:disabled)
         | 
| 219 | 
            +
                  end
         | 
| 220 | 
            +
                end
         | 
| 221 | 
            +
              end
         | 
| 222 | 
            +
             | 
| 223 | 
            +
              context "parsing the output of module list" do
         | 
| 224 | 
            +
                before { allow(described_class).to receive(:command).with(:dnf).and_return(dnf_path) }
         | 
| 225 | 
            +
             | 
| 226 | 
            +
                it "returns an array of enabled modules" do
         | 
| 227 | 
            +
                  allow(Puppet::Util::Execution).to receive(:execute)
         | 
| 228 | 
            +
                    .with("/usr/bin/dnf module list -d 0 -e 1")
         | 
| 229 | 
            +
                    .and_return(packages)
         | 
| 230 | 
            +
             | 
| 231 | 
            +
                  enabled_packages = described_class.instances.map { |package| package.properties }
         | 
| 232 | 
            +
                  expected_packages = [{name: "389-ds", ensure: "1.4", flavor: :absent, provider: :dnfmodule},
         | 
| 233 | 
            +
                                       {name: "gimp", ensure: "2.8", flavor: "devel", provider: :dnfmodule},
         | 
| 234 | 
            +
                                       {name: "mariadb", ensure: "10.3", flavor: "client", provider: :dnfmodule},
         | 
| 235 | 
            +
                                       {name: "nodejs", ensure: "10", flavor: "minimal", provider: :dnfmodule},
         | 
| 236 | 
            +
                                       {name: "perl", ensure: "5.26", flavor: "minimal", provider: :dnfmodule},
         | 
| 237 | 
            +
                                       {name: "postgresql", ensure: "10", flavor: "server", provider: :dnfmodule},
         | 
| 238 | 
            +
                                       {name: "ruby", ensure: "2.5", flavor: :absent, provider: :dnfmodule},
         | 
| 239 | 
            +
                                       {name: "rust-toolset", ensure: "rhel8", flavor: "common", provider: :dnfmodule},
         | 
| 240 | 
            +
                                       {name: "subversion", ensure: "1.10", flavor: "server", provider: :dnfmodule},
         | 
| 241 | 
            +
                                       {name: "swig", ensure: :disabled, flavor: :absent, provider: :dnfmodule},
         | 
| 242 | 
            +
                                       {name: "virt", ensure: :disabled, flavor: :absent, provider: :dnfmodule}]
         | 
| 243 | 
            +
             | 
| 244 | 
            +
                  expect(enabled_packages).to eql(expected_packages)
         | 
| 245 | 
            +
                end
         | 
| 246 | 
            +
              end
         | 
| 247 | 
            +
            end
         | 
| @@ -126,7 +126,10 @@ describe Puppet::Type.type(:package).provider(:dpkg) do | |
| 126 126 |  | 
| 127 127 | 
             
                it "considers the package held if its state is 'hold'" do
         | 
| 128 128 | 
             
                  dpkg_query_execution_returns(bash_installed_output.gsub("install","hold"))
         | 
| 129 | 
            -
                   | 
| 129 | 
            +
                  query=provider.query
         | 
| 130 | 
            +
                  expect(query[:ensure]).to eq("4.2-5ubuntu3")
         | 
| 131 | 
            +
                  expect(query[:mark]).to eq(:hold)
         | 
| 132 | 
            +
             | 
| 130 133 | 
             
                end
         | 
| 131 134 |  | 
| 132 135 | 
             
                context "parsing tests" do
         | 
| @@ -184,14 +187,15 @@ describe Puppet::Type.type(:package).provider(:dpkg) do | |
| 184 187 |  | 
| 185 188 | 
             
                it "uses 'dpkg -i' to install the package" do
         | 
| 186 189 | 
             
                  expect(resource).to receive(:[]).with(:source).and_return("mypackagefile")
         | 
| 190 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :hold})
         | 
| 187 191 | 
             
                  expect(provider).to receive(:unhold)
         | 
| 188 192 | 
             
                  expect(provider).to receive(:dpkg).with(any_args, "-i", "mypackagefile")
         | 
| 189 | 
            -
             | 
| 190 193 | 
             
                  provider.install
         | 
| 191 194 | 
             
                end
         | 
| 192 195 |  | 
| 193 196 | 
             
                it "keeps old config files if told to do so" do
         | 
| 194 197 | 
             
                  expect(resource).to receive(:[]).with(:configfiles).and_return(:keep)
         | 
| 198 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :hold})
         | 
| 195 199 | 
             
                  expect(provider).to receive(:unhold)
         | 
| 196 200 | 
             
                  expect(provider).to receive(:dpkg).with("--force-confold", any_args)
         | 
| 197 201 |  | 
| @@ -200,6 +204,7 @@ describe Puppet::Type.type(:package).provider(:dpkg) do | |
| 200 204 |  | 
| 201 205 | 
             
                it "replaces old config files if told to do so" do
         | 
| 202 206 | 
             
                  expect(resource).to receive(:[]).with(:configfiles).and_return(:replace)
         | 
| 207 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :hold})
         | 
| 203 208 | 
             
                  expect(provider).to receive(:unhold)
         | 
| 204 209 | 
             
                  expect(provider).to receive(:dpkg).with("--force-confnew", any_args)
         | 
| 205 210 |  | 
| @@ -207,6 +212,7 @@ describe Puppet::Type.type(:package).provider(:dpkg) do | |
| 207 212 | 
             
                end
         | 
| 208 213 |  | 
| 209 214 | 
             
                it "ensures any hold is removed" do
         | 
| 215 | 
            +
                  expect(provider).to receive(:properties).and_return({:mark => :hold})
         | 
| 210 216 | 
             
                  expect(provider).to receive(:unhold).once
         | 
| 211 217 | 
             
                  expect(provider).to receive(:dpkg)
         | 
| 212 218 | 
             
                  provider.install
         | 
| @@ -222,18 +228,28 @@ describe Puppet::Type.type(:package).provider(:dpkg) do | |
| 222 228 | 
             
                end
         | 
| 223 229 |  | 
| 224 230 | 
             
                it "installs first if package is not present and ensure holding" do
         | 
| 231 | 
            +
                  allow(provider).to receive(:execute)
         | 
| 232 | 
            +
                  allow(provider).to receive(:package_not_installed?).and_return(true)
         | 
| 233 | 
            +
                  expect(provider).to receive(:install).once
         | 
| 234 | 
            +
                  expect(provider).to receive(:hold)
         | 
| 235 | 
            +
                  provider.deprecated_hold
         | 
| 236 | 
            +
                end
         | 
| 237 | 
            +
             | 
| 225 238 |  | 
| 239 | 
            +
                it "skips install new package if hold is true" do
         | 
| 226 240 | 
             
                  allow(provider).to receive(:execute)
         | 
| 227 241 | 
             
                  allow(provider).to receive(:package_not_installed?).and_return(true)
         | 
| 228 242 | 
             
                  expect(provider).to receive(:install).once
         | 
| 229 | 
            -
                  provider.hold
         | 
| 243 | 
            +
                  expect(provider).to receive(:hold)
         | 
| 244 | 
            +
                  provider.deprecated_hold
         | 
| 230 245 | 
             
                end
         | 
| 231 246 |  | 
| 232 247 | 
             
                it "skips install new package if package is allready installed" do
         | 
| 233 248 | 
             
                  allow(provider).to receive(:execute)
         | 
| 234 249 | 
             
                  allow(provider).to receive(:package_not_installed?).and_return(false)
         | 
| 235 250 | 
             
                  expect(provider).not_to receive(:install)
         | 
| 236 | 
            -
                  provider.hold
         | 
| 251 | 
            +
                  expect(provider).to receive(:hold)
         | 
| 252 | 
            +
                  provider.deprecated_hold
         | 
| 237 253 | 
             
                end
         | 
| 238 254 |  | 
| 239 255 | 
             
                it "executes dpkg --set-selections when holding" do
         | 
| @@ -287,9 +303,21 @@ describe Puppet::Type.type(:package).provider(:dpkg) do | |
| 287 303 | 
             
                provider.purge
         | 
| 288 304 | 
             
              end
         | 
| 289 305 |  | 
| 290 | 
            -
               | 
| 291 | 
            -
                 | 
| 292 | 
            -
             | 
| 306 | 
            +
              context "package_not_installed?" do
         | 
| 307 | 
            +
                it "returns true if package is not found" do
         | 
| 308 | 
            +
                  expect(provider).to receive(:dpkgquery).with("-W", "--showformat", "'${Status} ${Package} ${Version}\\n'", resource_name).and_raise(Puppet::ExecutionFailure.new("eh"))
         | 
| 309 | 
            +
                  expect(provider.package_not_installed?).to eq(true)
         | 
| 310 | 
            +
                end
         | 
| 311 | 
            +
             | 
| 312 | 
            +
                it "returns true if package is not installed" do
         | 
| 313 | 
            +
                  expect(provider).to receive(:dpkgquery).with("-W", "--showformat", "'${Status} ${Package} ${Version}\\n'", resource_name).and_return("unknown ok not-installed #{resource_name}")
         | 
| 314 | 
            +
                  expect(provider.package_not_installed?).to eq(true)
         | 
| 315 | 
            +
                end
         | 
| 316 | 
            +
             | 
| 317 | 
            +
                it "returns false if package is installed" do
         | 
| 318 | 
            +
                  expect(provider).to receive(:dpkgquery).with("-W", "--showformat", "'${Status} ${Package} ${Version}\\n'", resource_name).and_return("install ok installed resource_name 1.2.3")
         | 
| 319 | 
            +
                  expect(provider.package_not_installed?).to eq(false)
         | 
| 320 | 
            +
                end
         | 
| 293 321 | 
             
              end
         | 
| 294 322 | 
             
            end
         | 
| 295 323 |  |