puppet 7.8.0 → 7.12.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +5 -5
- data/Gemfile +2 -2
- data/Gemfile.lock +15 -15
- data/README.md +4 -4
- data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
- data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
- data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
- data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
- data/{ext → examples}/nagios/check_puppet.rb +2 -2
- data/ext/README.md +13 -0
- data/ext/project_data.yaml +1 -0
- data/install.rb +0 -4
- data/lib/puppet/application/agent.rb +4 -0
- data/lib/puppet/application/apply.rb +20 -2
- data/lib/puppet/application/filebucket.rb +1 -0
- data/lib/puppet/application/resource.rb +30 -15
- data/lib/puppet/application/ssl.rb +1 -0
- data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
- data/lib/puppet/configurer.rb +176 -58
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +67 -29
- data/lib/puppet/environments.rb +75 -25
- data/lib/puppet/face/help/action.erb +1 -0
- data/lib/puppet/face/help/face.erb +1 -0
- data/lib/puppet/face/node/clean.rb +1 -1
- data/lib/puppet/facter_impl.rb +96 -0
- data/lib/puppet/file_serving/configuration/parser.rb +2 -0
- data/lib/puppet/file_serving/configuration.rb +2 -0
- data/lib/puppet/file_serving/mount/file.rb +4 -4
- data/lib/puppet/file_serving/mount/scripts.rb +24 -0
- data/lib/puppet/file_system/file_impl.rb +3 -1
- data/lib/puppet/file_system/windows.rb +2 -2
- data/lib/puppet/file_system.rb +2 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge.rb +4 -4
- data/lib/puppet/functions/empty.rb +8 -0
- data/lib/puppet/functions/find_template.rb +2 -2
- data/lib/puppet/functions/strftime.rb +1 -0
- data/lib/puppet/functions/unwrap.rb +17 -2
- data/lib/puppet/http/service/compiler.rb +6 -1
- data/lib/puppet/indirector/catalog/compiler.rb +24 -6
- data/lib/puppet/indirector/catalog/rest.rb +1 -0
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/resource/ral.rb +6 -1
- data/lib/puppet/indirector/terminus.rb +4 -0
- data/lib/puppet/interface/documentation.rb +1 -0
- data/lib/puppet/module/plan.rb +0 -1
- data/lib/puppet/module/task.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +12 -4
- data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
- data/lib/puppet/module_tool/errors/shared.rb +17 -0
- data/lib/puppet/module_tool/tar/mini.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/node/environment.rb +10 -11
- data/lib/puppet/pal/pal_impl.rb +1 -1
- data/lib/puppet/parser/scope.rb +8 -7
- data/lib/puppet/parser/templatewrapper.rb +1 -0
- data/lib/puppet/pops/evaluator/closure.rb +7 -5
- data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
- data/lib/puppet/pops/model/ast.rb +1 -0
- data/lib/puppet/pops/model/factory.rb +14 -13
- data/lib/puppet/pops/parser/egrammar.ra +2 -2
- data/lib/puppet/pops/parser/eparser.rb +752 -753
- data/lib/puppet/pops/parser/lexer2.rb +69 -68
- data/lib/puppet/pops/parser/slurp_support.rb +1 -0
- data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
- data/lib/puppet/pops/types/type_formatter.rb +7 -6
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/provider/aix_object.rb +1 -1
- data/lib/puppet/provider/exec/posix.rb +16 -4
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/package/pip.rb +15 -3
- data/lib/puppet/provider/package/pkg.rb +19 -2
- data/lib/puppet/provider/package/puppet_gem.rb +1 -1
- data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
- data/lib/puppet/provider/package/windows/exe_package.rb +30 -1
- data/lib/puppet/provider/package/windows/package.rb +2 -1
- data/lib/puppet/provider/package/windows.rb +14 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +3 -0
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/init.rb +5 -5
- data/lib/puppet/provider/service/launchd.rb +2 -2
- data/lib/puppet/provider/service/redhat.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +2 -2
- data/lib/puppet/provider/service/upstart.rb +5 -5
- data/lib/puppet/provider/user/aix.rb +44 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +72 -16
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/reference/providers.rb +2 -2
- data/lib/puppet/resource/type_collection.rb +4 -1
- data/lib/puppet/runtime.rb +11 -1
- data/lib/puppet/settings/config_file.rb +1 -8
- data/lib/puppet/settings/file_setting.rb +3 -8
- data/lib/puppet/settings/value_translator.rb +0 -1
- data/lib/puppet/settings.rb +32 -9
- data/lib/puppet/test/test_helper.rb +4 -1
- data/lib/puppet/transaction/persistence.rb +11 -1
- data/lib/puppet/transaction/report.rb +15 -1
- data/lib/puppet/type/exec.rb +35 -5
- data/lib/puppet/type/file/mode.rb +6 -0
- data/lib/puppet/type/file.rb +6 -6
- data/lib/puppet/type/filebucket.rb +2 -2
- data/lib/puppet/type/group.rb +0 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/service.rb +8 -3
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +1 -2
- data/lib/puppet/type.rb +1 -1
- data/lib/puppet/util/autoload.rb +1 -1
- data/lib/puppet/util/command_line.rb +1 -1
- data/lib/puppet/util/filetype.rb +2 -2
- data/lib/puppet/util/json.rb +3 -0
- data/lib/puppet/util/log.rb +1 -2
- data/lib/puppet/util/logging.rb +1 -25
- data/lib/puppet/util/monkey_patches.rb +2 -17
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +1 -2
- data/lib/puppet/util/symbolic_file_mode.rb +29 -17
- data/lib/puppet/util/tagging.rb +1 -0
- data/lib/puppet/util/windows/sid.rb +3 -1
- data/lib/puppet/util/windows/user.rb +0 -1
- data/lib/puppet/util.rb +4 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509/cert_provider.rb +3 -21
- data/lib/puppet.rb +5 -9
- data/locales/puppet.pot +409 -329
- data/man/man5/puppet.conf.5 +73 -25
- data/man/man8/puppet-agent.8 +4 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +9 -9
- 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 +7 -7
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +3 -3
- data/man/man8/puppet-node.8 +5 -5
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +5 -5
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
- data/spec/fixtures/ssl/127.0.0.1-key.pem +106 -106
- data/spec/fixtures/ssl/127.0.0.1.pem +48 -48
- data/spec/fixtures/ssl/bad-basic-constraints.pem +54 -54
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +51 -51
- data/spec/fixtures/ssl/ca.pem +52 -52
- data/spec/fixtures/ssl/crl.pem +25 -25
- data/spec/fixtures/ssl/ec-key-openssl.pem +8 -0
- data/spec/fixtures/ssl/ec-key-pk8.pem +5 -0
- data/spec/fixtures/ssl/ec-key.pem +11 -11
- data/spec/fixtures/ssl/ec.pem +32 -32
- data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
- data/spec/fixtures/ssl/encrypted-key.pem +107 -107
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +25 -25
- data/spec/fixtures/ssl/intermediate-agent.pem +54 -54
- data/spec/fixtures/ssl/intermediate-crl.pem +28 -28
- data/spec/fixtures/ssl/intermediate.pem +51 -51
- data/spec/fixtures/ssl/oid-key.pem +117 -0
- data/spec/fixtures/ssl/oid.pem +69 -0
- data/spec/fixtures/ssl/pluto-key.pem +106 -106
- data/spec/fixtures/ssl/pluto.pem +50 -50
- data/spec/fixtures/ssl/request-key.pem +106 -106
- data/spec/fixtures/ssl/request.pem +45 -45
- data/spec/fixtures/ssl/revoked-key.pem +106 -106
- data/spec/fixtures/ssl/revoked.pem +49 -49
- data/spec/fixtures/ssl/signed-key.pem +106 -106
- data/spec/fixtures/ssl/signed.pem +47 -47
- data/spec/fixtures/ssl/tampered-cert.pem +49 -49
- data/spec/fixtures/ssl/tampered-csr.pem +45 -45
- data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +106 -106
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -48
- data/spec/fixtures/ssl/unknown-ca-key.pem +106 -106
- data/spec/fixtures/ssl/unknown-ca.pem +52 -52
- data/spec/integration/application/agent_spec.rb +118 -52
- data/spec/integration/application/filebucket_spec.rb +16 -0
- data/spec/integration/application/module_spec.rb +21 -0
- data/spec/integration/application/resource_spec.rb +35 -1
- data/spec/integration/application/ssl_spec.rb +20 -0
- data/spec/integration/configurer_spec.rb +18 -2
- data/spec/integration/defaults_spec.rb +5 -0
- data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
- data/spec/integration/indirector/facts/facter_spec.rb +93 -39
- data/spec/integration/l10n/compiler_spec.rb +37 -0
- data/spec/integration/transaction/report_spec.rb +1 -1
- data/spec/integration/type/exec_spec.rb +70 -45
- data/spec/integration/type/file_spec.rb +2 -2
- data/spec/integration/type/package_spec.rb +6 -6
- data/spec/integration/util/rdoc/parser_spec.rb +1 -1
- data/spec/integration/util/windows/process_spec.rb +1 -9
- data/spec/lib/puppet/test_ca.rb +5 -0
- data/spec/lib/puppet_spec/modules.rb +13 -2
- data/spec/lib/puppet_spec/puppetserver.rb +15 -0
- data/spec/lib/puppet_spec/settings.rb +1 -0
- data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
- data/spec/shared_contexts/l10n.rb +27 -0
- data/spec/spec_helper.rb +1 -10
- data/spec/unit/application/apply_spec.rb +76 -56
- data/spec/unit/application/resource_spec.rb +29 -0
- data/spec/unit/configurer_spec.rb +291 -56
- data/spec/unit/environments_spec.rb +184 -0
- data/spec/unit/facter_impl_spec.rb +31 -0
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
- data/spec/unit/file_serving/configuration_spec.rb +12 -4
- data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
- data/spec/unit/file_system_spec.rb +13 -0
- data/spec/unit/functions/assert_type_spec.rb +1 -1
- data/spec/unit/functions/empty_spec.rb +10 -0
- data/spec/unit/functions/logging_spec.rb +1 -0
- data/spec/unit/functions/lookup_spec.rb +87 -0
- data/spec/unit/functions/unwrap_spec.rb +8 -0
- data/spec/unit/functions4_spec.rb +2 -2
- data/spec/unit/http/service/compiler_spec.rb +8 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +87 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
- data/spec/unit/indirector/indirection_spec.rb +10 -3
- data/spec/unit/indirector/resource/ral_spec.rb +40 -75
- data/spec/unit/interface/action_spec.rb +0 -9
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/installer_spec.rb +52 -14
- data/spec/unit/network/formats_spec.rb +6 -0
- data/spec/unit/parser/compiler_spec.rb +29 -0
- data/spec/unit/parser/templatewrapper_spec.rb +12 -2
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +0 -9
- data/spec/unit/pops/parser/lexer2_spec.rb +0 -4
- data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
- data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +1 -1
- data/spec/unit/provider/package/pip2_spec.rb +1 -1
- data/spec/unit/provider/package/pip3_spec.rb +1 -1
- data/spec/unit/provider/package/pip_spec.rb +38 -1
- data/spec/unit/provider/package/pkg_spec.rb +34 -5
- data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
- data/spec/unit/provider/package/windows/exe_package_spec.rb +17 -0
- data/spec/unit/provider/parsedfile_spec.rb +10 -0
- data/spec/unit/provider/service/launchd_spec.rb +11 -0
- data/spec/unit/provider/service/systemd_spec.rb +1 -1
- data/spec/unit/provider/user/aix_spec.rb +100 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +1 -1
- data/spec/unit/provider/user/useradd_spec.rb +43 -2
- data/spec/unit/provider_spec.rb +4 -4
- data/spec/unit/puppet_spec.rb +12 -4
- data/spec/unit/resource/type_collection_spec.rb +16 -0
- data/spec/unit/resource/type_spec.rb +2 -2
- data/spec/unit/settings/config_file_spec.rb +1 -11
- data/spec/unit/settings/file_setting_spec.rb +10 -7
- data/spec/unit/settings/value_translator_spec.rb +4 -5
- data/spec/unit/settings_spec.rb +120 -79
- data/spec/unit/ssl/ssl_provider_spec.rb +18 -16
- data/spec/unit/type/exec_spec.rb +76 -29
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/service_spec.rb +27 -0
- data/spec/unit/type/tidy_spec.rb +7 -0
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +25 -8
- data/spec/unit/util/ldap/connection_spec.rb +10 -10
- data/spec/unit/util/ldap/manager_spec.rb +2 -2
- data/spec/unit/util/logging_spec.rb +2 -0
- data/spec/unit/util/windows/sid_spec.rb +39 -4
- data/spec/unit/util_spec.rb +1 -3
- data/spec/unit/x509/cert_provider_spec.rb +9 -1
- data/tasks/generate_cert_fixtures.rake +10 -1
- data/tasks/parallel.rake +3 -3
- metadata +51 -95
- data/ext/README.environment +0 -8
- data/ext/dbfix.sql +0 -132
- data/ext/debian/README.Debian +0 -8
- data/ext/debian/README.source +0 -2
- data/ext/debian/TODO.Debian +0 -1
- data/ext/debian/changelog.erb +0 -1122
- data/ext/debian/compat +0 -1
- data/ext/debian/control +0 -144
- data/ext/debian/copyright +0 -339
- data/ext/debian/docs +0 -1
- data/ext/debian/fileserver.conf +0 -41
- data/ext/debian/puppet-common.dirs +0 -13
- data/ext/debian/puppet-common.install +0 -3
- data/ext/debian/puppet-common.lintian-overrides +0 -5
- data/ext/debian/puppet-common.manpages +0 -28
- data/ext/debian/puppet-common.postinst +0 -35
- data/ext/debian/puppet-common.postrm +0 -33
- data/ext/debian/puppet-el.dirs +0 -1
- data/ext/debian/puppet-el.emacsen-install +0 -25
- data/ext/debian/puppet-el.emacsen-remove +0 -11
- data/ext/debian/puppet-el.emacsen-startup +0 -9
- data/ext/debian/puppet-el.install +0 -1
- data/ext/debian/puppet-testsuite.install +0 -2
- data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
- data/ext/debian/puppet.lintian-overrides +0 -3
- data/ext/debian/puppet.logrotate +0 -20
- data/ext/debian/puppet.postinst +0 -20
- data/ext/debian/puppet.postrm +0 -20
- data/ext/debian/puppet.preinst +0 -20
- data/ext/debian/puppetmaster-common.install +0 -2
- data/ext/debian/puppetmaster-common.manpages +0 -2
- data/ext/debian/puppetmaster-common.postinst +0 -6
- data/ext/debian/puppetmaster-passenger.dirs +0 -4
- data/ext/debian/puppetmaster-passenger.postinst +0 -162
- data/ext/debian/puppetmaster-passenger.postrm +0 -61
- data/ext/debian/puppetmaster.README.debian +0 -17
- data/ext/debian/puppetmaster.default +0 -14
- data/ext/debian/puppetmaster.init +0 -137
- data/ext/debian/puppetmaster.lintian-overrides +0 -3
- data/ext/debian/puppetmaster.postinst +0 -20
- data/ext/debian/puppetmaster.postrm +0 -5
- data/ext/debian/puppetmaster.preinst +0 -22
- data/ext/debian/rules +0 -132
- data/ext/debian/source/format +0 -1
- data/ext/debian/source/options +0 -1
- data/ext/debian/vim-puppet.README.Debian +0 -13
- data/ext/debian/vim-puppet.dirs +0 -5
- data/ext/debian/vim-puppet.yaml +0 -7
- data/ext/debian/watch +0 -2
- data/ext/freebsd/puppetd +0 -26
- data/ext/freebsd/puppetmasterd +0 -26
- data/ext/gentoo/conf.d/puppet +0 -5
- data/ext/gentoo/conf.d/puppetmaster +0 -12
- data/ext/gentoo/init.d/puppet +0 -38
- data/ext/gentoo/init.d/puppetmaster +0 -51
- data/ext/gentoo/puppet/fileserver.conf +0 -41
- data/ext/ips/puppet-agent +0 -44
- data/ext/ips/puppet-master +0 -44
- data/ext/ips/puppet.p5m.erb +0 -12
- data/ext/ips/puppetagent.xml +0 -42
- data/ext/ips/puppetmaster.xml +0 -42
- data/ext/ips/rules +0 -19
- data/ext/ips/transforms +0 -34
- data/ext/ldap/puppet.schema +0 -24
- data/ext/logcheck/puppet +0 -23
- data/ext/osx/file_mapping.yaml +0 -28
- data/ext/osx/postflight.erb +0 -109
- data/ext/osx/preflight.erb +0 -52
- data/ext/osx/prototype.plist.erb +0 -38
- data/ext/redhat/fileserver.conf +0 -41
- data/ext/redhat/logrotate +0 -21
- data/ext/redhat/puppet.spec.erb +0 -841
- data/ext/redhat/server.init +0 -128
- data/ext/redhat/server.sysconfig +0 -13
- data/ext/solaris/pkginfo +0 -6
- data/ext/solaris/smf/puppetd.xml +0 -77
- data/ext/solaris/smf/puppetmasterd.xml +0 -77
- data/ext/solaris/smf/svc-puppetd +0 -71
- data/ext/solaris/smf/svc-puppetmasterd +0 -67
- data/ext/suse/puppet.spec +0 -310
- data/ext/suse/server.init +0 -173
- data/ext/yaml_nodes.rb +0 -105
- data/spec/unit/indirector/store_configs_spec.rb +0 -7
@@ -342,14 +342,17 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
342
342
|
resource[:ensure] = '1.0-0.151006'
|
343
343
|
is = :absent
|
344
344
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => is})
|
345
|
-
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
345
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold}).exactly(3).times
|
346
|
+
|
347
|
+
expect(described_class).to receive(:pkg)
|
348
|
+
.with(:freeze, 'dummy')
|
346
349
|
expect(described_class).to receive(:pkg)
|
347
350
|
.with(:list, '-Hvfa', 'dummy@1.0-0.151006')
|
348
351
|
.and_return(Puppet::Util::Execution::ProcessOutput.new(File.read(my_fixture('dummy_implicit_version')), 0))
|
349
352
|
expect(Puppet::Util::Execution).to receive(:execute)
|
350
353
|
.with(['/bin/pkg', 'install', '-n', 'dummy@1.0,5.11-0.151006:20140220T084443Z'], {:failonfail => false, :combine => true})
|
351
354
|
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
352
|
-
expect(provider).to receive(:unhold).with(no_args)
|
355
|
+
expect(provider).to receive(:unhold).with(no_args).twice
|
353
356
|
expect(Puppet::Util::Execution).to receive(:execute)
|
354
357
|
.with(['/bin/pkg', 'install', *hash[:flags], 'dummy@1.0,5.11-0.151006:20140220T084443Z'], {:failonfail => false, :combine => true})
|
355
358
|
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
@@ -361,12 +364,17 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
361
364
|
resource[:ensure] = '1.0-0.151006'
|
362
365
|
is = '1.0,5.11-0.151006:20140219T191204Z'
|
363
366
|
expect(provider).to receive(:query).with(no_args).and_return({:ensure => is})
|
364
|
-
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
365
|
-
|
367
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold}).exactly(3).times
|
368
|
+
|
369
|
+
expect(described_class).to receive(:pkg)
|
370
|
+
.with(:freeze, 'dummy')
|
371
|
+
expect(described_class).to receive(:pkg)
|
372
|
+
.with(:list, '-Hvfa', 'dummy@1.0-0.151006')
|
373
|
+
.and_return(File.read(my_fixture('dummy_implicit_version')))
|
366
374
|
expect(Puppet::Util::Execution).to receive(:execute)
|
367
375
|
.with(['/bin/pkg', 'update', '-n', 'dummy@1.0,5.11-0.151006:20140220T084443Z'], {:failonfail => false, :combine => true})
|
368
376
|
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
369
|
-
expect(provider).to receive(:unhold).with(no_args)
|
377
|
+
expect(provider).to receive(:unhold).with(no_args).twice
|
370
378
|
expect(Puppet::Util::Execution).to receive(:execute)
|
371
379
|
.with(['/bin/pkg', 'update', *hash[:flags], 'dummy@1.0,5.11-0.151006:20140220T084443Z'], {:failonfail => false, :combine => true})
|
372
380
|
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
@@ -381,6 +389,9 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
381
389
|
expect(described_class).to receive(:pkg)
|
382
390
|
.with(:list, '-Hvfa', 'dummy@1.0-0.151006')
|
383
391
|
.and_return(Puppet::Util::Execution::ProcessOutput.new(File.read(my_fixture('dummy_implicit_version')), 0))
|
392
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
393
|
+
.with(['/bin/pkg', 'list', '-Hv', 'dummy'], {:failonfail => false, :combine => true})
|
394
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new(File.read(my_fixture('dummy_implicit_version')), 0))
|
384
395
|
expect(Puppet::Util::Execution).to receive(:execute)
|
385
396
|
.with(['/bin/pkg', 'update', '-n', 'dummy@1.0,5.11-0.151006:20140220T084443Z'], {:failonfail => false, :combine => true})
|
386
397
|
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 4))
|
@@ -395,11 +406,29 @@ describe Puppet::Type.type(:package).provider(:pkg), unless: Puppet::Util::Platf
|
|
395
406
|
expect(described_class).to receive(:pkg)
|
396
407
|
.with(:list, '-Hvfa', 'dummy@1.0-0.151006')
|
397
408
|
.and_return(Puppet::Util::Execution::ProcessOutput.new(File.read(my_fixture('dummy_implicit_version')), 0))
|
409
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
410
|
+
.with(['/bin/pkg', 'list', '-Hv', 'dummy'], {:failonfail => false, :combine => true})
|
411
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new(File.read(my_fixture('dummy_implicit_version')), 0))
|
398
412
|
expect(Puppet::Util::Execution).to receive(:execute)
|
399
413
|
.with(['/bin/pkg', 'install', '-n', 'dummy@1.0,5.11-0.151006:20140220T084443Z'], {:failonfail => false, :combine => true})
|
400
414
|
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
401
415
|
provider.insync?(is)
|
402
416
|
end
|
417
|
+
|
418
|
+
it "should try 5 times to install and fail when all tries failed" do
|
419
|
+
allow_any_instance_of(Kernel).to receive(:sleep)
|
420
|
+
|
421
|
+
expect(provider).to receive(:query).and_return({:ensure => :absent})
|
422
|
+
expect(provider).to receive(:properties).and_return({:mark => :hold})
|
423
|
+
expect(provider).to receive(:unhold)
|
424
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
425
|
+
.with(['/bin/pkg', 'install', *hash[:flags], 'dummy'], {:failonfail => false, :combine => true})
|
426
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 7))
|
427
|
+
.exactly(5).times
|
428
|
+
expect {
|
429
|
+
provider.update
|
430
|
+
}.to raise_error(Puppet::Error, /Pkg could not install dummy after 5 tries. Aborting run/)
|
431
|
+
end
|
403
432
|
end
|
404
433
|
end
|
405
434
|
end
|
@@ -118,7 +118,7 @@ describe Puppet::Type.type(:package).provider(:puppet_gem) do
|
|
118
118
|
end
|
119
119
|
|
120
120
|
context 'when is defaultfor' do
|
121
|
-
let(:os) {
|
121
|
+
let(:os) { Puppet.runtime[:facter].value(:operatingsystem) }
|
122
122
|
subject do
|
123
123
|
described_class.defaultfor(operatingsystem: os)
|
124
124
|
described_class.specificity
|
@@ -127,7 +127,7 @@ describe Puppet::Type.type(:package).provider(:puppetserver_gem) do
|
|
127
127
|
end
|
128
128
|
|
129
129
|
context 'when is defaultfor' do
|
130
|
-
let(:os) {
|
130
|
+
let(:os) { Puppet.runtime[:facter].value(:operatingsystem) }
|
131
131
|
subject do
|
132
132
|
described_class.defaultfor(operatingsystem: os)
|
133
133
|
described_class.specificity
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'puppet/provider/package/windows/exe_package'
|
3
|
+
require 'puppet/provider/package/windows'
|
3
4
|
|
4
5
|
describe Puppet::Provider::Package::Windows::ExePackage do
|
5
6
|
let (:name) { 'Git version 1.7.11' }
|
@@ -71,10 +72,26 @@ describe Puppet::Provider::Package::Windows::ExePackage do
|
|
71
72
|
|
72
73
|
context '#install_command' do
|
73
74
|
it 'should install using the source' do
|
75
|
+
allow(Puppet::FileSystem).to receive(:exist?).with(source).and_return(true)
|
74
76
|
cmd = described_class.install_command({:source => source})
|
75
77
|
|
76
78
|
expect(cmd).to eq(source)
|
77
79
|
end
|
80
|
+
|
81
|
+
it 'should raise error when URI is invalid' do
|
82
|
+
web_source = 'https://www.t e s t.test/test.exe'
|
83
|
+
|
84
|
+
expect do
|
85
|
+
described_class.install_command({:source => web_source, :name => name})
|
86
|
+
end.to raise_error(Puppet::Error, /Error when installing #{name}:/)
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'should download package from source file before installing', if: Puppet::Util::Platform.windows? do
|
90
|
+
web_source = 'https://www.test.test/test.exe'
|
91
|
+
stub_request(:get, web_source).to_return(status: 200, body: 'package binaries')
|
92
|
+
cmd = described_class.install_command({:source => web_source})
|
93
|
+
expect(File.read(cmd)).to eq('package binaries')
|
94
|
+
end
|
78
95
|
end
|
79
96
|
|
80
97
|
context '#uninstall_command' do
|
@@ -79,6 +79,16 @@ describe Puppet::Provider::ParsedFile do
|
|
79
79
|
|
80
80
|
provider.instances
|
81
81
|
end
|
82
|
+
|
83
|
+
it "should raise if parsing returns nil" do
|
84
|
+
expect(provider).to receive(:targets).and_return(%w{/one})
|
85
|
+
expect_any_instance_of(Puppet::Util::FileType::FileTypeFlat).to receive(:read).and_return('a=b')
|
86
|
+
expect(provider).to receive(:parse).and_return(nil)
|
87
|
+
|
88
|
+
expect {
|
89
|
+
provider.instances
|
90
|
+
}.to raise_error(Puppet::DevError, %r{Prefetching /one for provider parsedfile_provider returned nil})
|
91
|
+
end
|
82
92
|
end
|
83
93
|
|
84
94
|
describe "when matching resources to existing records" do
|
@@ -325,6 +325,7 @@ describe 'Puppet::Type::Service::Provider::Launchd',
|
|
325
325
|
'LimitLoadToSessionType' => 'Aqua'
|
326
326
|
}
|
327
327
|
end
|
328
|
+
let(:plist_without_label_not_hash) { 'just a string' }
|
328
329
|
let(:busted_plist_path) { '/Library/LaunchAgents/org.busted.plist' }
|
329
330
|
let(:binary_plist_path) { '/Library/LaunchAgents/org.binary.plist' }
|
330
331
|
|
@@ -336,6 +337,16 @@ describe 'Puppet::Type::Service::Provider::Launchd',
|
|
336
337
|
expect(Puppet).to receive(:debug).with("The #{busted_plist_path} plist does not contain a 'label' key; Puppet is skipping it")
|
337
338
|
provider.make_label_to_path_map
|
338
339
|
end
|
340
|
+
|
341
|
+
it "it should warn that the malformed plist in question is being skipped" do
|
342
|
+
expect(provider).to receive(:launchd_paths).and_return(['/Library/LaunchAgents'])
|
343
|
+
expect(provider).to receive(:return_globbed_list_of_file_paths).with('/Library/LaunchAgents').and_return([busted_plist_path])
|
344
|
+
expect(plistlib).to receive(:read_plist_file).with(busted_plist_path).and_return(plist_without_label_not_hash)
|
345
|
+
expect(Puppet).to receive(:debug).with("Reading launchd plist #{busted_plist_path}")
|
346
|
+
expect(Puppet).to receive(:debug).with("The #{busted_plist_path} plist does not contain a 'label' key; Puppet is skipping it")
|
347
|
+
provider.make_label_to_path_map
|
348
|
+
end
|
349
|
+
|
339
350
|
end
|
340
351
|
|
341
352
|
it "should return the cached value when available" do
|
@@ -29,7 +29,7 @@ describe 'Puppet::Type::Service::Provider::Systemd',
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
[7, 8].each do |ver|
|
32
|
+
[7, 8, 9].each do |ver|
|
33
33
|
it "should be the default provider on rhel#{ver}" do
|
34
34
|
allow(Facter).to receive(:value).with(:osfamily).and_return(:redhat)
|
35
35
|
allow(Facter).to receive(:value).with(:operatingsystem).and_return(:redhat)
|
@@ -217,4 +217,104 @@ describe 'Puppet::Type::User::Provider::Aix' do
|
|
217
217
|
provider.create
|
218
218
|
end
|
219
219
|
end
|
220
|
+
|
221
|
+
describe '#list_all_homes' do
|
222
|
+
it "should return empty array and output debug on failure" do
|
223
|
+
allow(Puppet::Util::Execution).to receive(:execute).and_raise(Puppet::ExecutionFailure, 'Execution failed')
|
224
|
+
expect(Puppet).to receive(:debug).with('Could not list home of all users: Execution failed')
|
225
|
+
expect(provider.list_all_homes).to eql({})
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
describe '#delete' do
|
230
|
+
before(:each) do
|
231
|
+
allow(File).to receive(:realpath).and_call_original
|
232
|
+
allow(FileUtils).to receive(:remove_entry_secure).and_call_original
|
233
|
+
|
234
|
+
allow(provider.resource).to receive(:should).with(anything).and_return(nil)
|
235
|
+
allow(provider).to receive(:home).and_return(Dir.tmpdir)
|
236
|
+
allow(provider).to receive(:execute).and_return(nil)
|
237
|
+
allow(provider).to receive(:object_info).and_return(nil)
|
238
|
+
allow(FileUtils).to receive(:remove_entry_secure).with(Dir.tmpdir, true).and_return(nil)
|
239
|
+
end
|
240
|
+
|
241
|
+
context 'with managehome true' do
|
242
|
+
before(:each) do
|
243
|
+
allow(provider.resource).to receive(:managehome?).and_return(true)
|
244
|
+
allow(provider).to receive(:list_all_homes).and_return([])
|
245
|
+
end
|
246
|
+
|
247
|
+
it 'should delete the user without error' do
|
248
|
+
expect{ provider.delete }.not_to raise_error
|
249
|
+
end
|
250
|
+
|
251
|
+
it "should not remove home when relative" do
|
252
|
+
allow(provider).to receive(:home).and_return('relative_path')
|
253
|
+
|
254
|
+
expect(Puppet).to receive(:debug).with(/Please make sure the path is not relative, symlink or '\/'./)
|
255
|
+
provider.delete
|
256
|
+
end
|
257
|
+
|
258
|
+
it "should not remove home when '/'" do
|
259
|
+
allow(provider).to receive(:home).and_return('/')
|
260
|
+
|
261
|
+
expect(Puppet).to receive(:debug).with(/Please make sure the path is not relative, symlink or '\/'./)
|
262
|
+
provider.delete
|
263
|
+
end
|
264
|
+
|
265
|
+
it "should not remove home when symlink" do
|
266
|
+
allow(Puppet::FileSystem).to receive(:symlink?).with(Dir.tmpdir).and_return(true)
|
267
|
+
|
268
|
+
expect(Puppet).to receive(:debug).with(/Please make sure the path is not relative, symlink or '\/'./)
|
269
|
+
provider.delete
|
270
|
+
end
|
271
|
+
|
272
|
+
it "should not remove home when other users would be affected" do
|
273
|
+
allow(provider).to receive(:home).and_return('/special')
|
274
|
+
allow(File).to receive(:realpath).with('/special').and_return('/special')
|
275
|
+
allow(Puppet::Util).to receive(:absolute_path?).with('/special').and_return(true)
|
276
|
+
allow(provider).to receive(:list_all_homes).and_return([{:name => 'other_user', :home => '/special/other_user'}])
|
277
|
+
|
278
|
+
expect(Puppet).to receive(:debug).with(/it would remove the home directory '\/special\/other_user' of user 'other_user' also./)
|
279
|
+
provider.delete
|
280
|
+
end
|
281
|
+
|
282
|
+
it 'should remove homedir' do
|
283
|
+
expect(FileUtils).to receive(:remove_entry_secure).with(Dir.tmpdir, true)
|
284
|
+
provider.delete
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
context 'with managehome false' do
|
289
|
+
before(:each) do
|
290
|
+
allow(provider.resource).to receive(:managehome?).and_return(false)
|
291
|
+
end
|
292
|
+
|
293
|
+
it 'should delete the user without error' do
|
294
|
+
expect{ provider.delete }.not_to raise_error
|
295
|
+
end
|
296
|
+
|
297
|
+
it 'should not remove homedir' do
|
298
|
+
expect(FileUtils).not_to receive(:remove_entry_secure).with(Dir.tmpdir, true)
|
299
|
+
end
|
300
|
+
|
301
|
+
it 'should not print manage home debug messages' do
|
302
|
+
expect(Puppet).not_to receive(:debug).with(/Please make sure the path is not relative, symlink or '\/'./)
|
303
|
+
expect(Puppet).not_to receive(:debug).with(/it would remove the home directory '\/special\/other_user' of user 'other_user' also./)
|
304
|
+
|
305
|
+
provider.delete
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
describe '#deletecmd' do
|
311
|
+
it 'uses the -p flag when removing the user' do
|
312
|
+
allow(provider.class).to receive(:command).with(:delete).and_return('delete')
|
313
|
+
allow(provider).to receive(:ia_module_args).and_return(['ia_module_args'])
|
314
|
+
|
315
|
+
expect(provider.deletecmd).to eql(
|
316
|
+
['delete', '-p', 'ia_module_args', provider.resource.name]
|
317
|
+
)
|
318
|
+
end
|
319
|
+
end
|
220
320
|
end
|
@@ -1142,7 +1142,7 @@ end
|
|
1142
1142
|
provider.class.instance_variable_set(:@os_version, nil) if provider.class.instance_variable_defined? :@os_version
|
1143
1143
|
end
|
1144
1144
|
|
1145
|
-
it 'should call
|
1145
|
+
it 'should call Puppet.runtime[:facter].value(:macosx_productversion_major) ONLY ONCE no matter how ' +
|
1146
1146
|
'many times get_os_version() is called' do
|
1147
1147
|
expect(Facter).to receive(:value).with(:macosx_productversion_major).once.and_return('10.8')
|
1148
1148
|
expect(provider.class.get_os_version).to eq('10.8')
|
@@ -13,6 +13,7 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
13
13
|
allow(described_class).to receive(:command).with(:localmodify).and_return('/usr/sbin/lusermod')
|
14
14
|
allow(described_class).to receive(:command).with(:delete).and_return('/usr/sbin/userdel')
|
15
15
|
allow(described_class).to receive(:command).with(:localdelete).and_return('/usr/sbin/luserdel')
|
16
|
+
allow(described_class).to receive(:command).with(:chpasswd).and_return('/usr/sbin/chpasswd')
|
16
17
|
end
|
17
18
|
|
18
19
|
let(:resource) do
|
@@ -62,7 +63,7 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
62
63
|
:provider => provider,
|
63
64
|
)
|
64
65
|
resource2[:ensure] = :present
|
65
|
-
expect(provider).to receive(:execute).with(kind_of(Array), hash_including(sensitive: true))
|
66
|
+
expect(provider).to receive(:execute).with(kind_of(Array), hash_including(sensitive: true)).twice
|
66
67
|
provider.create
|
67
68
|
end
|
68
69
|
|
@@ -208,7 +209,7 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
208
209
|
end
|
209
210
|
|
210
211
|
it "should call execute with sensitive if sensitive data is changed" do
|
211
|
-
expect(provider).to receive(:execute).with(kind_of(Array), hash_including(sensitive: true))
|
212
|
+
expect(provider).to receive(:execute).with(kind_of(Array), hash_including(sensitive: true)).and_return('')
|
212
213
|
provider.password = 'bird bird bird'
|
213
214
|
end
|
214
215
|
end
|
@@ -351,6 +352,46 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
351
352
|
end
|
352
353
|
end
|
353
354
|
|
355
|
+
describe "#shell" do
|
356
|
+
before { described_class.has_feature :manages_local_users_and_groups }
|
357
|
+
|
358
|
+
let(:content) { "myuser:x:x:x:x:x:/bin/local_shell" }
|
359
|
+
|
360
|
+
it "should return the local shell string when forcelocal is true" do
|
361
|
+
resource[:forcelocal] = true
|
362
|
+
allow(Puppet::FileSystem).to receive(:exist?).with('/etc/passwd').and_return(true)
|
363
|
+
allow(Puppet::FileSystem).to receive(:each_line).with('/etc/passwd').and_yield(content)
|
364
|
+
expect(provider.shell).to eq('/bin/local_shell')
|
365
|
+
end
|
366
|
+
|
367
|
+
it "should fall back to nameservice shell string when forcelocal is false" do
|
368
|
+
resource[:forcelocal] = false
|
369
|
+
allow(provider).to receive(:get).with(:shell).and_return('/bin/remote_shell')
|
370
|
+
expect(provider).not_to receive(:localshell)
|
371
|
+
expect(provider.shell).to eq('/bin/remote_shell')
|
372
|
+
end
|
373
|
+
end
|
374
|
+
|
375
|
+
describe "#home" do
|
376
|
+
before { described_class.has_feature :manages_local_users_and_groups }
|
377
|
+
|
378
|
+
let(:content) { "myuser:x:x:x:x:/opt/local_home:x" }
|
379
|
+
|
380
|
+
it "should return the local home string when forcelocal is true" do
|
381
|
+
resource[:forcelocal] = true
|
382
|
+
allow(Puppet::FileSystem).to receive(:exist?).with('/etc/passwd').and_return(true)
|
383
|
+
allow(Puppet::FileSystem).to receive(:each_line).with('/etc/passwd').and_yield(content)
|
384
|
+
expect(provider.home).to eq('/opt/local_home')
|
385
|
+
end
|
386
|
+
|
387
|
+
it "should fall back to nameservice home string when forcelocal is false" do
|
388
|
+
resource[:forcelocal] = false
|
389
|
+
allow(provider).to receive(:get).with(:home).and_return('/opt/remote_home')
|
390
|
+
expect(provider).not_to receive(:localhome)
|
391
|
+
expect(provider.home).to eq('/opt/remote_home')
|
392
|
+
end
|
393
|
+
end
|
394
|
+
|
354
395
|
describe "#gid" do
|
355
396
|
before { described_class.has_feature :manages_local_users_and_groups }
|
356
397
|
|
data/spec/unit/provider_spec.rb
CHANGED
@@ -222,18 +222,18 @@ describe Puppet::Provider do
|
|
222
222
|
{ :true => false } => false,
|
223
223
|
{ :false => false } => true,
|
224
224
|
{ :false => true } => false,
|
225
|
-
{ :operatingsystem =>
|
225
|
+
{ :operatingsystem => Puppet.runtime[:facter].value(:operatingsystem) } => true,
|
226
226
|
{ :operatingsystem => :yayness } => false,
|
227
227
|
{ :nothing => :yayness } => false,
|
228
228
|
{ :exists => Puppet::Util.which(existing_command) } => true,
|
229
229
|
{ :exists => "/this/file/does/not/exist" } => false,
|
230
230
|
{ :true => true, :exists => Puppet::Util.which(existing_command) } => true,
|
231
231
|
{ :true => true, :exists => "/this/file/does/not/exist" } => false,
|
232
|
-
{ :operatingsystem =>
|
232
|
+
{ :operatingsystem => Puppet.runtime[:facter].value(:operatingsystem),
|
233
233
|
:exists => Puppet::Util.which(existing_command) } => true,
|
234
234
|
{ :operatingsystem => :yayness,
|
235
235
|
:exists => Puppet::Util.which(existing_command) } => false,
|
236
|
-
{ :operatingsystem =>
|
236
|
+
{ :operatingsystem => Puppet.runtime[:facter].value(:operatingsystem),
|
237
237
|
:exists => "/this/file/does/not/exist" } => false,
|
238
238
|
{ :operatingsystem => :yayness,
|
239
239
|
:exists => "/this/file/does/not/exist" } => false,
|
@@ -269,7 +269,7 @@ describe Puppet::Provider do
|
|
269
269
|
end
|
270
270
|
|
271
271
|
context "default providers" do
|
272
|
-
let :os do
|
272
|
+
let :os do Puppet.runtime[:facter].value(:operatingsystem) end
|
273
273
|
|
274
274
|
it { is_expected.to respond_to :specificity }
|
275
275
|
|
data/spec/unit/puppet_spec.rb
CHANGED
@@ -91,12 +91,20 @@ describe Puppet do
|
|
91
91
|
expect(Puppet.runtime[:http]).to be_an_instance_of(Puppet::HTTP::Client)
|
92
92
|
end
|
93
93
|
|
94
|
-
it 'allows
|
95
|
-
|
96
|
-
Puppet.initialize_settings([], true, true, http:
|
94
|
+
it 'allows a http implementation to be registered' do
|
95
|
+
http_impl = double('http')
|
96
|
+
Puppet.initialize_settings([], true, true, http: http_impl)
|
97
97
|
|
98
98
|
|
99
|
-
expect(Puppet.runtime[:http]).to eq(
|
99
|
+
expect(Puppet.runtime[:http]).to eq(http_impl)
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'allows a facter implementation to be registered' do
|
103
|
+
facter_impl = double('facter')
|
104
|
+
Puppet.initialize_settings([], true, true, facter: facter_impl)
|
105
|
+
|
106
|
+
|
107
|
+
expect(Puppet.runtime[:facter]).to eq(facter_impl)
|
100
108
|
end
|
101
109
|
end
|
102
110
|
|
@@ -43,6 +43,14 @@ describe Puppet::Resource::TypeCollection do
|
|
43
43
|
end.to raise_error(Puppet::ParseError, /cannot redefine/)
|
44
44
|
end
|
45
45
|
|
46
|
+
it "should fail if a hostclass duplicates a node" do
|
47
|
+
@code.add(Puppet::Resource::Type.new(:node, "foo"))
|
48
|
+
|
49
|
+
expect do
|
50
|
+
@code.add(Puppet::Resource::Type.new(:hostclass, "foo"))
|
51
|
+
end.to raise_error(Puppet::ParseError, /Node 'foo' is already defined; cannot be redefined as a class/)
|
52
|
+
end
|
53
|
+
|
46
54
|
it "should store hostclasses as hostclasses" do
|
47
55
|
klass = Puppet::Resource::Type.new(:hostclass, "foo")
|
48
56
|
|
@@ -60,6 +68,14 @@ describe Puppet::Resource::TypeCollection do
|
|
60
68
|
}.to raise_error(/.*is already defined; cannot redefine/)
|
61
69
|
end
|
62
70
|
|
71
|
+
it "should fail if a node duplicates a hostclass" do
|
72
|
+
@code.add(Puppet::Resource::Type.new(:hostclass, "foo"))
|
73
|
+
|
74
|
+
expect do
|
75
|
+
@code.add(Puppet::Resource::Type.new(:node, "foo"))
|
76
|
+
end.to raise_error(Puppet::ParseError, /Class 'foo' is already defined; cannot be redefined as a node/)
|
77
|
+
end
|
78
|
+
|
63
79
|
it "should store definitions as definitions" do
|
64
80
|
define = Puppet::Resource::Type.new(:definition, "foo")
|
65
81
|
|
@@ -462,9 +462,9 @@ describe Puppet::Resource::Type do
|
|
462
462
|
end
|
463
463
|
|
464
464
|
it "should be able to find parent nodes" do
|
465
|
-
parent = Puppet::Resource::Type.new(:node, "
|
465
|
+
parent = Puppet::Resource::Type.new(:node, "node_bar")
|
466
466
|
@krt.add parent
|
467
|
-
child = Puppet::Resource::Type.new(:node, "
|
467
|
+
child = Puppet::Resource::Type.new(:node, "node_foo", :parent => "node_bar")
|
468
468
|
@krt.add child
|
469
469
|
|
470
470
|
expect(child.parent_type(@scope)).to equal(parent)
|
@@ -135,16 +135,6 @@ badline
|
|
135
135
|
with_setting(:var, "value changed", NO_META)))
|
136
136
|
end
|
137
137
|
|
138
|
-
it "does not try to transform an entry named 'mode'" do
|
139
|
-
config = Puppet::Settings::ConfigFile.new(Proc.new { raise "Should not transform" })
|
140
|
-
|
141
|
-
result = config.parse_file(filename, "mode = value")
|
142
|
-
|
143
|
-
expect(result).to eq(Conf.new.
|
144
|
-
with_section(Section.new(:main).
|
145
|
-
with_setting(:mode, "value", NO_META)))
|
146
|
-
end
|
147
|
-
|
148
138
|
it "accepts non-UTF8 encoded text" do
|
149
139
|
result = the_parse_of("var = value".encode("UTF-16LE"))
|
150
140
|
|
@@ -152,6 +142,6 @@ badline
|
|
152
142
|
with_section(Section.new(:main).
|
153
143
|
with_setting(:var, "value", NO_META)))
|
154
144
|
|
155
|
-
|
145
|
+
end
|
156
146
|
end
|
157
147
|
|
@@ -125,9 +125,10 @@ describe Puppet::Settings::FileSetting do
|
|
125
125
|
describe "when being converted to a resource" do
|
126
126
|
before do
|
127
127
|
@basepath = make_absolute("/somepath")
|
128
|
+
allow(Puppet::FileSystem).to receive(:exist?).and_call_original
|
129
|
+
allow(Puppet::FileSystem).to receive(:exist?).with(@basepath).and_return(true)
|
128
130
|
@settings = double('settings')
|
129
131
|
@file = Puppet::Settings::FileSetting.new(:settings => @settings, :desc => "eh", :name => :myfile, :section => "mysect")
|
130
|
-
allow(@file).to receive(:create_files?).and_return(true)
|
131
132
|
allow(@settings).to receive(:value).with(:myfile, nil, false).and_return(@basepath)
|
132
133
|
end
|
133
134
|
|
@@ -135,18 +136,19 @@ describe Puppet::Settings::FileSetting do
|
|
135
136
|
expect(@file.type).to eq(:file)
|
136
137
|
end
|
137
138
|
|
138
|
-
it "
|
139
|
-
expect(@file).to receive(:create_files?).and_return(false)
|
139
|
+
it "skips non-existent files" do
|
140
140
|
expect(@file).to receive(:type).and_return(:file)
|
141
141
|
expect(Puppet::FileSystem).to receive(:exist?).with(@basepath).and_return(false)
|
142
142
|
expect(@file.to_resource).to be_nil
|
143
143
|
end
|
144
144
|
|
145
|
-
it "
|
146
|
-
expect(@file).to receive(:create_files?).and_return(false)
|
145
|
+
it "manages existing files" do
|
147
146
|
expect(@file).to receive(:type).and_return(:file)
|
148
|
-
|
149
|
-
|
147
|
+
expect(@file.to_resource).to be_instance_of(Puppet::Resource)
|
148
|
+
end
|
149
|
+
|
150
|
+
it "always manages directories" do
|
151
|
+
expect(@file).to receive(:type).and_return(:directory)
|
150
152
|
expect(@file.to_resource).to be_instance_of(Puppet::Resource)
|
151
153
|
end
|
152
154
|
|
@@ -177,6 +179,7 @@ describe Puppet::Settings::FileSetting do
|
|
177
179
|
it "should fully qualified returned files if necessary (#795)" do
|
178
180
|
allow(@settings).to receive(:value).with(:myfile, nil, false).and_return("myfile")
|
179
181
|
path = File.expand_path('myfile')
|
182
|
+
allow(Puppet::FileSystem).to receive(:exist?).with(path).and_return(true)
|
180
183
|
expect(@file.to_resource.title).to eq(path)
|
181
184
|
end
|
182
185
|
|
@@ -25,13 +25,12 @@ describe Puppet::Settings::ValueTranslator do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
context "numbers" do
|
28
|
-
it "
|
29
|
-
expect(translator["1"]).to eq(1)
|
30
|
-
expect(translator["2"]).to eq(2)
|
28
|
+
it "leaves integer strings" do
|
29
|
+
expect(translator["1"]).to eq("1")
|
31
30
|
end
|
32
31
|
|
33
|
-
it "
|
34
|
-
expect(translator["011"]).to eq(
|
32
|
+
it "leaves octal numbers as strings" do
|
33
|
+
expect(translator["011"]).to eq("011")
|
35
34
|
end
|
36
35
|
|
37
36
|
it "leaves hex numbers as strings" do
|