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
@@ -1,120 +1,85 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'puppet/indirector/resource/ral'
|
3
3
|
|
4
|
-
describe
|
4
|
+
describe Puppet::Resource::Ral do
|
5
|
+
let(:my_instance) { Puppet::Type.type(:user).new(:name => "root") }
|
6
|
+
let(:wrong_instance) { Puppet::Type.type(:user).new(:name => "bob")}
|
7
|
+
|
8
|
+
def stub_retrieve(*instances)
|
9
|
+
instances.each do |i|
|
10
|
+
allow(i).to receive(:retrieve).and_return(Puppet::Resource.new(i, nil))
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
before do
|
15
|
+
described_class.indirection.terminus_class = :ral
|
16
|
+
|
17
|
+
# make sure we don't try to retrieve current state
|
18
|
+
allow_any_instance_of(Puppet::Type.type(:user)).to receive(:retrieve).never
|
19
|
+
stub_retrieve(my_instance, wrong_instance)
|
20
|
+
end
|
21
|
+
|
5
22
|
it "disallows remote requests" do
|
6
23
|
expect(Puppet::Resource::Ral.new.allow_remote_requests?).to eq(false)
|
7
24
|
end
|
8
25
|
|
9
26
|
describe "find" do
|
10
|
-
before do
|
11
|
-
@request = double('request', :key => "user/root")
|
12
|
-
end
|
13
|
-
|
14
27
|
it "should find an existing instance" do
|
15
|
-
|
28
|
+
allow(Puppet::Type.type(:user)).to receive(:instances).and_return([ wrong_instance, my_instance, wrong_instance ])
|
16
29
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
expect(Puppet::Type.type(:user)).to receive(:instances).and_return([ wrong_instance, my_instance, wrong_instance ])
|
21
|
-
expect(Puppet::Resource::Ral.new.find(@request)).to eq(my_resource)
|
30
|
+
actual_resource = described_class.indirection.find('user/root')
|
31
|
+
expect(actual_resource.name).to eq('User/root')
|
22
32
|
end
|
23
33
|
|
24
34
|
it "should produce Puppet::Error instead of ArgumentError" do
|
25
|
-
|
26
|
-
expect{Puppet::Resource::Ral.new.find(@bad_request)}.to raise_error(Puppet::Error)
|
35
|
+
expect{described_class.indirection.find('thiswill/causeanerror')}.to raise_error(Puppet::Error)
|
27
36
|
end
|
28
37
|
|
29
38
|
it "if there is no instance, it should create one" do
|
30
|
-
|
31
|
-
root = double("Root User")
|
32
|
-
root_resource = double("Root Resource")
|
33
|
-
|
34
|
-
expect(Puppet::Type.type(:user)).to receive(:instances).and_return([ wrong_instance, wrong_instance ])
|
35
|
-
expect(Puppet::Type.type(:user)).to receive(:new).with(hash_including(name: "root")).and_return(root)
|
36
|
-
expect(root).to receive(:to_resource).and_return(root_resource)
|
37
|
-
|
38
|
-
result = Puppet::Resource::Ral.new.find(@request)
|
39
|
+
allow(Puppet::Type.type(:user)).to receive(:instances).and_return([wrong_instance])
|
39
40
|
|
40
|
-
expect(
|
41
|
+
expect(Puppet::Type.type(:user)).to receive(:new).with(hash_including(name: "root")).and_return(my_instance)
|
42
|
+
expect(described_class.indirection.find('user/root')).to be
|
41
43
|
end
|
42
44
|
end
|
43
45
|
|
44
46
|
describe "search" do
|
45
|
-
before do
|
46
|
-
@request = double('request', :key => "user/", :options => {})
|
47
|
-
end
|
48
|
-
|
49
47
|
it "should convert ral resources into regular resources" do
|
50
|
-
|
51
|
-
my_instance = double("my user", :name => "root", :to_resource => my_resource)
|
48
|
+
allow(Puppet::Type.type(:user)).to receive(:instances).and_return([ my_instance ])
|
52
49
|
|
53
|
-
|
54
|
-
expect(
|
50
|
+
actual = described_class.indirection.search('user')
|
51
|
+
expect(actual).to contain_exactly(an_instance_of(Puppet::Resource))
|
55
52
|
end
|
56
53
|
|
57
54
|
it "should filter results by name if there's a name in the key" do
|
58
|
-
|
59
|
-
allow(my_resource).to receive(:to_resource).and_return(my_resource)
|
60
|
-
allow(my_resource).to receive(:[]).with(:name).and_return("root")
|
61
|
-
|
62
|
-
wrong_resource = double("wrong resource")
|
63
|
-
allow(wrong_resource).to receive(:to_resource).and_return(wrong_resource)
|
64
|
-
allow(wrong_resource).to receive(:[]).with(:name).and_return("bad")
|
55
|
+
allow(Puppet::Type.type(:user)).to receive(:instances).and_return([ my_instance, wrong_instance ])
|
65
56
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
@request = double('request', :key => "user/root", :options => {})
|
70
|
-
|
71
|
-
expect(Puppet::Type.type(:user)).to receive(:instances).and_return([ my_instance, wrong_instance ])
|
72
|
-
expect(Puppet::Resource::Ral.new.search(@request)).to eq([my_resource])
|
57
|
+
actual = described_class.indirection.search('user/root')
|
58
|
+
expect(actual).to contain_exactly(an_object_having_attributes(name: 'User/root'))
|
73
59
|
end
|
74
60
|
|
75
61
|
it "should filter results by query parameters" do
|
76
|
-
|
77
|
-
allow(wrong_resource).to receive(:to_resource).and_return(wrong_resource)
|
78
|
-
allow(wrong_resource).to receive(:[]).with(:name).and_return("root")
|
79
|
-
|
80
|
-
my_resource = double("wrong resource", title: "wrong resource")
|
81
|
-
allow(my_resource).to receive(:to_resource).and_return(my_resource)
|
82
|
-
allow(my_resource).to receive(:[]).with(:name).and_return("bob")
|
62
|
+
allow(Puppet::Type.type(:user)).to receive(:instances).and_return([ my_instance, wrong_instance ])
|
83
63
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
@request = double('request', :key => "user/", :options => {:name => "bob"})
|
88
|
-
|
89
|
-
expect(Puppet::Type.type(:user)).to receive(:instances).and_return([ my_instance, wrong_instance ])
|
90
|
-
expect(Puppet::Resource::Ral.new.search(@request)).to eq([my_resource])
|
64
|
+
actual = described_class.indirection.search('user', name: 'bob')
|
65
|
+
expect(actual).to contain_exactly(an_object_having_attributes(name: 'User/bob'))
|
91
66
|
end
|
92
67
|
|
93
68
|
it "should return sorted results" do
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
b_resource = double("bob resource")
|
99
|
-
allow(b_resource).to receive(:to_resource).and_return(b_resource)
|
100
|
-
allow(b_resource).to receive(:title).and_return("bob")
|
101
|
-
|
102
|
-
a_instance = double("alice user", :to_resource => a_resource)
|
103
|
-
b_instance = double("bob user", :to_resource => b_resource)
|
104
|
-
|
105
|
-
@request = double('request', :key => "user/", :options => {})
|
69
|
+
a_instance = Puppet::Type.type(:user).new(:name => "alice")
|
70
|
+
b_instance = Puppet::Type.type(:user).new(:name => "bob")
|
71
|
+
stub_retrieve(a_instance, b_instance)
|
72
|
+
allow(Puppet::Type.type(:user)).to receive(:instances).and_return([ b_instance, a_instance ])
|
106
73
|
|
107
|
-
expect(
|
108
|
-
expect(Puppet::Resource::Ral.new.search(@request)).to eq([a_resource, b_resource])
|
74
|
+
expect(described_class.indirection.search('user').map(&:title)).to eq(['alice', 'bob'])
|
109
75
|
end
|
110
76
|
end
|
111
77
|
|
112
78
|
describe "save" do
|
113
79
|
it "returns a report covering the application of the given resource to the system" do
|
114
80
|
resource = Puppet::Resource.new(:notify, "the title")
|
115
|
-
ral = Puppet::Resource::Ral.new
|
116
81
|
|
117
|
-
applied_resource, report =
|
82
|
+
applied_resource, report = described_class.indirection.save(resource, nil, environment: Puppet::Node::Environment.remote(:testing))
|
118
83
|
|
119
84
|
expect(applied_resource.title).to eq("the title")
|
120
85
|
expect(report.environment).to eq("testing")
|
@@ -537,15 +537,6 @@ describe Puppet::Interface::Action do
|
|
537
537
|
end
|
538
538
|
end
|
539
539
|
|
540
|
-
context "#when_rendering" do
|
541
|
-
it "should fail if no type is given when_rendering"
|
542
|
-
it "should accept a when_rendering block"
|
543
|
-
it "should accept multiple when_rendering blocks"
|
544
|
-
it "should fail if when_rendering gets a non-symbol identifier"
|
545
|
-
it "should fail if a second block is given for the same type"
|
546
|
-
it "should return the block if asked"
|
547
|
-
end
|
548
|
-
|
549
540
|
context "#validate_and_clean" do
|
550
541
|
subject do
|
551
542
|
Puppet::Interface.new(:validate_args, '1.0.0') do
|
data/spec/unit/module_spec.rb
CHANGED
@@ -567,6 +567,20 @@ describe Puppet::Module do
|
|
567
567
|
expect(mod.task_file(task_exe)).to eq("#{mod.path}/tasks/#{task_exe}")
|
568
568
|
end
|
569
569
|
|
570
|
+
it "should list files from the scripts directory if required by the task" do
|
571
|
+
mod = 'loads_scripts'
|
572
|
+
task_dep = 'myscript.sh'
|
573
|
+
script_ref = "#{mod}/scripts/#{task_dep}"
|
574
|
+
task_json = JSON.generate({'files' => [script_ref]})
|
575
|
+
task = [['task', { name: 'task.json', content: task_json }]]
|
576
|
+
mod = PuppetSpec::Modules.create(mod, @modpath, {:environment => env,
|
577
|
+
:scripts => [task_dep],
|
578
|
+
:tasks => task})
|
579
|
+
|
580
|
+
expect(mod.tasks.first.files).to include({'name' => script_ref,
|
581
|
+
'path' => /#{script_ref}/})
|
582
|
+
end
|
583
|
+
|
570
584
|
it "should return nil when asked for an individual task file if it does not exist" do
|
571
585
|
mod = PuppetSpec::Modules.create('task_file_neg', @modpath, {:environment => env,
|
572
586
|
:tasks => []})
|
@@ -34,8 +34,7 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => RUBY_PLATFORM =
|
|
34
34
|
|
35
35
|
if Puppet::Util::Platform.windows?
|
36
36
|
before :each do
|
37
|
-
|
38
|
-
allow(Puppet.settings).to receive(:[]).with(:module_working_dir).and_return(Dir.mktmpdir('installertmp'))
|
37
|
+
Puppet[:module_working_dir] = tmpdir('module_tool_install').gsub('/', '\\')
|
39
38
|
end
|
40
39
|
end
|
41
40
|
|
@@ -66,6 +65,18 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => RUBY_PLATFORM =
|
|
66
65
|
graph_should_include 'pmtacceptance-stdlib', nil => v('4.1.0')
|
67
66
|
end
|
68
67
|
|
68
|
+
it 'reports a meaningful error if the name is invalid' do
|
69
|
+
app = installer('ntp', install_dir, options)
|
70
|
+
results = app.run
|
71
|
+
expect(results).to include :result => :failure
|
72
|
+
expect(results[:error][:oneline]).to eq("Could not install 'ntp', did you mean 'puppetlabs-ntp'?")
|
73
|
+
expect(results[:error][:multiline]).to eq(<<~END.chomp)
|
74
|
+
Could not install module 'ntp'
|
75
|
+
The name 'ntp' is invalid
|
76
|
+
Did you mean `puppet module install puppetlabs-ntp`?
|
77
|
+
END
|
78
|
+
end
|
79
|
+
|
69
80
|
context 'with a tarball file' do
|
70
81
|
let(:module) { fixtures('stdlib.tgz') }
|
71
82
|
|
@@ -273,18 +284,45 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => RUBY_PLATFORM =
|
|
273
284
|
expect(subject).to include :result => :failure
|
274
285
|
end
|
275
286
|
|
276
|
-
|
277
|
-
graph
|
278
|
-
exception
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
287
|
+
context 'with unsatisfiable dependencies' do
|
288
|
+
let(:graph) { double(SemanticPuppet::Dependency::Graph, :modules => ['pmtacceptance-mysql']) }
|
289
|
+
let(:exception) { SemanticPuppet::Dependency::UnsatisfiableGraph.new(graph, constraint) }
|
290
|
+
|
291
|
+
before do
|
292
|
+
allow(SemanticPuppet::Dependency).to receive(:resolve).and_raise(exception)
|
293
|
+
end
|
294
|
+
|
295
|
+
context 'with known constraint' do
|
296
|
+
let(:constraint) { 'pmtacceptance-mysql' }
|
297
|
+
|
298
|
+
it 'prints a detailed error containing the modules that would not be satisfied' do
|
299
|
+
expect(subject[:error]).to include(:multiline)
|
300
|
+
expect(subject[:error][:multiline]).to include("Could not install module 'pmtacceptance-mysql' (> 1.0.0)")
|
301
|
+
expect(subject[:error][:multiline]).to include("The requested version cannot satisfy one or more of the following installed modules:")
|
302
|
+
expect(subject[:error][:multiline]).to include("pmtacceptance-keystone, expects 'pmtacceptance-mysql': >=0.6.1 <1.0.0")
|
303
|
+
expect(subject[:error][:multiline]).to include("Use `puppet module install 'pmtacceptance-mysql' --ignore-dependencies` to install only this module")
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
context 'with missing constraint' do
|
308
|
+
let(:constraint) { nil }
|
309
|
+
|
310
|
+
it 'prints the generic error message' do
|
311
|
+
expect(subject[:error]).to include(:multiline)
|
312
|
+
expect(subject[:error][:multiline]).to include("Could not install module 'pmtacceptance-mysql' (> 1.0.0)")
|
313
|
+
expect(subject[:error][:multiline]).to include("The requested version cannot satisfy all dependencies")
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
context 'with unknown constraint' do
|
318
|
+
let(:constraint) { 'another' }
|
319
|
+
|
320
|
+
it 'prints the generic error message' do
|
321
|
+
expect(subject[:error]).to include(:multiline)
|
322
|
+
expect(subject[:error][:multiline]).to include("Could not install module 'pmtacceptance-mysql' (> 1.0.0)")
|
323
|
+
expect(subject[:error][:multiline]).to include("The requested version cannot satisfy all dependencies")
|
324
|
+
end
|
325
|
+
end
|
288
326
|
end
|
289
327
|
|
290
328
|
context 'with --ignore-dependencies' do
|
@@ -368,6 +368,12 @@ describe "Puppet Network Format" do
|
|
368
368
|
expect(json.render_multiple(instances)).to eq([{"string" => "foo"}].to_json)
|
369
369
|
end
|
370
370
|
|
371
|
+
it "should render multiple instances as a JSON array of hashes when multi_json is not present" do
|
372
|
+
hide_const("MultiJson") if defined?(MultiJson)
|
373
|
+
instances = [FormatsTest.new("foo")]
|
374
|
+
expect(json.render_multiple(instances)).to eq([{"string" => "foo"}].to_json)
|
375
|
+
end
|
376
|
+
|
371
377
|
it "should intern an instance from a JSON hash" do
|
372
378
|
text = Puppet::Util::Json.dump({"string" => "parsed_json"})
|
373
379
|
instance = json.intern(FormatsTest, text)
|
@@ -862,6 +862,35 @@ describe Puppet::Parser::Compiler do
|
|
862
862
|
|
863
863
|
expect(catalog.resource('Class', 'Something')).not_to be_nil
|
864
864
|
end
|
865
|
+
|
866
|
+
it "raises if the class name is the same as the node definition" do
|
867
|
+
name = node.name
|
868
|
+
node.classes = [name]
|
869
|
+
|
870
|
+
expect {
|
871
|
+
compile_to_catalog(<<-MANIFEST, node)
|
872
|
+
class #{name} {}
|
873
|
+
node #{name} {
|
874
|
+
include #{name}
|
875
|
+
}
|
876
|
+
MANIFEST
|
877
|
+
}.to raise_error(Puppet::Error, /Class '#{name}' is already defined \(line: 1\); cannot be redefined as a node \(line: 2\) on node #{name}/)
|
878
|
+
end
|
879
|
+
|
880
|
+
it "evaluates the class if the node definition uses a regexp" do
|
881
|
+
name = node.name
|
882
|
+
node.classes = [name]
|
883
|
+
|
884
|
+
catalog = compile_to_catalog(<<-MANIFEST, node)
|
885
|
+
class #{name} {}
|
886
|
+
node /#{name}/ {
|
887
|
+
include #{name}
|
888
|
+
}
|
889
|
+
MANIFEST
|
890
|
+
|
891
|
+
expect(@logs).to be_empty
|
892
|
+
expect(catalog.resource('Class', node.name.capitalize)).to_not be_nil
|
893
|
+
end
|
865
894
|
end
|
866
895
|
|
867
896
|
it "should fail if the class doesn't exist" do
|
@@ -2,6 +2,8 @@ require 'spec_helper'
|
|
2
2
|
require 'puppet/parser/templatewrapper'
|
3
3
|
|
4
4
|
describe Puppet::Parser::TemplateWrapper do
|
5
|
+
include PuppetSpec::Files
|
6
|
+
|
5
7
|
let(:known_resource_types) { Puppet::Resource::TypeCollection.new("env") }
|
6
8
|
let(:scope) do
|
7
9
|
compiler = Puppet::Parser::Compiler.new(Puppet::Node.new("mynode"))
|
@@ -41,6 +43,13 @@ describe Puppet::Parser::TemplateWrapper do
|
|
41
43
|
expect(tw.result).to eq(full_file_name)
|
42
44
|
end
|
43
45
|
|
46
|
+
it "ignores a leading BOM" do
|
47
|
+
full_file_name = given_a_template_file("bom_template", "\uFEFF<%= file %>")
|
48
|
+
|
49
|
+
tw.file = "bom_template"
|
50
|
+
expect(tw.result).to eq(full_file_name)
|
51
|
+
end
|
52
|
+
|
44
53
|
it "evaluates a given string as a template" do
|
45
54
|
expect(tw.result("template contents")).to eql("template contents")
|
46
55
|
end
|
@@ -90,11 +99,12 @@ describe Puppet::Parser::TemplateWrapper do
|
|
90
99
|
end
|
91
100
|
|
92
101
|
def given_a_template_file(name, contents)
|
93
|
-
full_name = "
|
102
|
+
full_name = tmpfile("template_#{name}")
|
103
|
+
File.binwrite(full_name, contents)
|
104
|
+
|
94
105
|
allow(Puppet::Parser::Files).to receive(:find_template).
|
95
106
|
with(name, anything()).
|
96
107
|
and_return(full_name)
|
97
|
-
allow(Puppet::FileSystem).to receive(:read_preserve_line_endings).with(full_name).and_return(contents)
|
98
108
|
|
99
109
|
full_name
|
100
110
|
end
|
@@ -84,10 +84,6 @@ Puppet::Functions.create_function('testmodule::foo') {
|
|
84
84
|
|
85
85
|
context 'when loading files from disk' do
|
86
86
|
it 'should always read files as UTF-8' do
|
87
|
-
if Puppet::Util::Platform.windows? && Encoding.default_external == Encoding::UTF_8
|
88
|
-
raise 'This test must be run in a codepage other than 65001 to validate behavior'
|
89
|
-
end
|
90
|
-
|
91
87
|
module_dir = dir_containing('testmodule', {
|
92
88
|
'lib' => { 'puppet' => { 'functions' => { 'testmodule' => {
|
93
89
|
'foo.rb' => code_utf8
|
@@ -101,11 +97,6 @@ Puppet::Functions.create_function('testmodule::foo') {
|
|
101
97
|
|
102
98
|
it 'currently ignores the UTF-8 BOM (Byte Order Mark) when loading module files' do
|
103
99
|
bom = "\uFEFF"
|
104
|
-
|
105
|
-
if Puppet::Util::Platform.windows? && Encoding.default_external == Encoding::UTF_8
|
106
|
-
raise 'This test must be run in a codepage other than 65001 to validate behavior'
|
107
|
-
end
|
108
|
-
|
109
100
|
module_dir = dir_containing('testmodule', {
|
110
101
|
'lib' => { 'puppet' => { 'functions' => { 'testmodule' => {
|
111
102
|
'foo.rb' => "#{bom}#{code_utf8}"
|
@@ -918,10 +918,6 @@ describe Puppet::Pops::Parser::Lexer2 do
|
|
918
918
|
|
919
919
|
context 'when lexing files from disk' do
|
920
920
|
it 'should always read files as UTF-8' do
|
921
|
-
if Puppet::Util::Platform.windows? && Encoding.default_external == Encoding::UTF_8
|
922
|
-
raise 'This test must be run in a codepage other than 65001 to validate behavior'
|
923
|
-
end
|
924
|
-
|
925
921
|
manifest_code = "notify { '#{rune_utf8}': }"
|
926
922
|
manifest = file_containing('manifest.pp', manifest_code)
|
927
923
|
lexed_file = described_class.new.lex_file(manifest)
|
@@ -95,18 +95,7 @@ describe "egrammar parsing containers" do
|
|
95
95
|
expect(dump(parse("class foo::default {}"))).to eq("(class foo::default ())")
|
96
96
|
end
|
97
97
|
|
98
|
-
it "class class inherits default {} # inherits default", :broken => true do
|
99
|
-
expect {
|
100
|
-
parse("class class inherits default {}")
|
101
|
-
}.to raise_error(/not a valid classname/)
|
102
|
-
end
|
103
|
-
|
104
98
|
it "class class inherits default {} # inherits default" do
|
105
|
-
# TODO: See previous test marked as :broken=>true, it is actually this test (result) that is wacky,
|
106
|
-
# this because a class is named at parse time (since class evaluation is lazy, the model must have the
|
107
|
-
# full class name for nested classes - only, it gets this wrong when a class is named "class" - or at least
|
108
|
-
# I think it is wrong.)
|
109
|
-
#
|
110
99
|
expect { parse("class class inherits default {}") }.to raise_error(/'class' keyword not allowed at this location/)
|
111
100
|
end
|
112
101
|
|
@@ -559,6 +559,29 @@ module Serialization
|
|
559
559
|
expect(warnings).to eql(["['key'] contains the special value default. It will be converted to the String 'default'"])
|
560
560
|
end
|
561
561
|
end
|
562
|
+
context 'and force_symbol set to true' do
|
563
|
+
let(:to_converter) { ToDataConverter.new(:rich_data => false, :force_symbol => true) }
|
564
|
+
|
565
|
+
it 'A Hash with Symbol values is converted to hash with Symbol values' do
|
566
|
+
val = { 'one' => :one, 'two' => :two }
|
567
|
+
Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
|
568
|
+
|
569
|
+
# write and read methods does not work here as we cannot force Symbols in Json.
|
570
|
+
# and a hash with symbol values cannot be an instance of Types::TypeFactory.data.
|
571
|
+
# Using YAML for this instead
|
572
|
+
io.reopen
|
573
|
+
value = to_converter.convert(val)
|
574
|
+
io << [value].to_yaml
|
575
|
+
io.rewind
|
576
|
+
|
577
|
+
val2 = from_converter.convert(YAML::load(io.read)[0])
|
578
|
+
|
579
|
+
expect(val2).to be_a(Hash)
|
580
|
+
expect(val2).to eql({ 'one' => :one, 'two' => :two })
|
581
|
+
end
|
582
|
+
expect(warnings).to be_empty
|
583
|
+
end
|
584
|
+
end
|
562
585
|
end
|
563
586
|
|
564
587
|
context 'with rich_data is set to true' do
|
@@ -632,6 +655,41 @@ module Serialization
|
|
632
655
|
end.to raise_error(/Cannot create a Pcore::TimestampType from a Integer/)
|
633
656
|
end
|
634
657
|
end
|
658
|
+
|
659
|
+
context 'when data is unknown' do
|
660
|
+
let(:to_converter) { ToDataConverter.new(:message_prefix => 'Test Hash') }
|
661
|
+
let(:logs) { [] }
|
662
|
+
let(:warnings) { logs.select { |log| log.level == :warning }.map { |log| log.message } }
|
663
|
+
let(:val) { Class.new }
|
664
|
+
|
665
|
+
context 'and :silence_warnings undefined or set to false' do
|
666
|
+
it 'convert the unknown data to string with warnings' do
|
667
|
+
Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
|
668
|
+
write(val)
|
669
|
+
val2 = read
|
670
|
+
expect(val2).to be_a(String)
|
671
|
+
expect(val2).to match(/Class/)
|
672
|
+
end
|
673
|
+
expect(warnings).to eql([
|
674
|
+
"Test Hash contains a #{val.class} value. It will be converted to the String '#{val.to_s}'"])
|
675
|
+
end
|
676
|
+
end
|
677
|
+
|
678
|
+
context 'and :silence_warnings undefined or set to true' do
|
679
|
+
let(:to_converter) { ToDataConverter.new(:message_prefix => 'Test Hash', :silence_warnings => true) }
|
680
|
+
|
681
|
+
it 'convert the unknown data to string without warnings if silence_warnings set to true' do
|
682
|
+
val = Class.new
|
683
|
+
Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
|
684
|
+
write(val)
|
685
|
+
val2 = read
|
686
|
+
expect(val2).to be_a(String)
|
687
|
+
expect(val2).to match(/Class/)
|
688
|
+
end
|
689
|
+
expect(warnings).to be_empty
|
690
|
+
end
|
691
|
+
end
|
692
|
+
end
|
635
693
|
end
|
636
694
|
end
|
637
695
|
end
|
@@ -154,4 +154,9 @@ describe 'ToStringifiedConverter' do
|
|
154
154
|
unassigned = [243, 176, 128, 128].pack("C*").force_encoding(Encoding::UTF_8)
|
155
155
|
expect(transform(unassigned)).to eq("")
|
156
156
|
end
|
157
|
+
|
158
|
+
it 'converts ProcessOutput objects to string' do
|
159
|
+
object = Puppet::Util::Execution::ProcessOutput.new('object', 0)
|
160
|
+
expect(transform(object)).to be_instance_of(String)
|
161
|
+
end
|
157
162
|
end
|
@@ -1980,6 +1980,12 @@ describe 'The type calculator' do
|
|
1980
1980
|
expect(calculator.instance?(tuple, [1, 'a', 1])).to eq(false)
|
1981
1981
|
end
|
1982
1982
|
|
1983
|
+
it 'should not consider ProcessOutput objects as instanceof PScalarDataType' do
|
1984
|
+
object = Puppet::Util::Execution::ProcessOutput.new('object', 0)
|
1985
|
+
|
1986
|
+
expect(calculator.instance?(PScalarDataType::DEFAULT, object)).to eq(false)
|
1987
|
+
end
|
1988
|
+
|
1983
1989
|
context 'and t is Struct' do
|
1984
1990
|
it 'should consider hash[cont] as instance of Struct[cont-t]' do
|
1985
1991
|
struct = struct_t({'a'=>Integer, 'b'=>String, 'c'=>Float})
|
@@ -476,7 +476,7 @@ context Puppet::Type.type(:package).provider(:gem) do
|
|
476
476
|
end
|
477
477
|
|
478
478
|
context 'when is defaultfor' do
|
479
|
-
let(:os) {
|
479
|
+
let(:os) { Puppet.runtime[:facter].value(:operatingsystem) }
|
480
480
|
subject do
|
481
481
|
described_class.defaultfor(operatingsystem: os)
|
482
482
|
described_class.specificity
|
@@ -26,7 +26,7 @@ describe Puppet::Type.type(:package).provider(:pip2) do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
context 'when is defaultfor' do
|
29
|
-
let(:os) {
|
29
|
+
let(:os) { Puppet.runtime[:facter].value(:operatingsystem) }
|
30
30
|
subject do
|
31
31
|
described_class.defaultfor(operatingsystem: os)
|
32
32
|
described_class.specificity
|
@@ -26,7 +26,7 @@ describe Puppet::Type.type(:package).provider(:pip3) do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
context 'when is defaultfor' do
|
29
|
-
let(:os) {
|
29
|
+
let(:os) { Puppet.runtime[:facter].value(:operatingsystem) }
|
30
30
|
subject do
|
31
31
|
described_class.defaultfor(operatingsystem: os)
|
32
32
|
described_class.specificity
|
@@ -266,6 +266,43 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
266
266
|
let(:pip_version) { '1.5.4' }
|
267
267
|
let(:pip_path) { '/fake/bin/pip' }
|
268
268
|
|
269
|
+
context "with pip version >= 20.3 and < 21.1" do
|
270
|
+
let(:pip_version) { '20.3.1' }
|
271
|
+
let(:pip_path) { '/fake/bin/pip' }
|
272
|
+
|
273
|
+
it "should use legacy-resolver argument" do
|
274
|
+
p = StringIO.new(
|
275
|
+
<<-EOS
|
276
|
+
Collecting real-package==versionplease
|
277
|
+
Could not find a version that satisfies the requirement real-package==versionplease (from versions: 1.1.3, 1.0, 1.9b1)
|
278
|
+
No matching distribution found for real-package==versionplease
|
279
|
+
EOS
|
280
|
+
)
|
281
|
+
expect(Puppet::Util::Execution).to receive(:execpipe).with(["/fake/bin/pip", "install", "real_package==versionplease",
|
282
|
+
"--use-deprecated=legacy-resolver"]).and_yield(p).once
|
283
|
+
@resource[:name] = "real_package"
|
284
|
+
@provider.latest
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
context "with pip version >= 21.1" do
|
289
|
+
let(:pip_version) { '21.1' }
|
290
|
+
let(:pip_path) { '/fake/bin/pip' }
|
291
|
+
|
292
|
+
it "should not use legacy-resolver argument" do
|
293
|
+
p = StringIO.new(
|
294
|
+
<<-EOS
|
295
|
+
Collecting real-package==versionplease
|
296
|
+
Could not find a version that satisfies the requirement real-package==versionplease (from versions: 1.1.3, 1.0, 1.9b1)
|
297
|
+
No matching distribution found for real-package==versionplease
|
298
|
+
EOS
|
299
|
+
)
|
300
|
+
expect(Puppet::Util::Execution).to receive(:execpipe).with(["/fake/bin/pip", "install", "real_package==versionplease"]).and_yield(p).once
|
301
|
+
@resource[:name] = "real_package"
|
302
|
+
@provider.latest
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
269
306
|
it "should find a version number for real_package" do
|
270
307
|
p = StringIO.new(
|
271
308
|
<<-EOS
|
@@ -456,7 +493,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
|
|
456
493
|
end
|
457
494
|
|
458
495
|
context 'when is defaultfor' do
|
459
|
-
let(:os) {
|
496
|
+
let(:os) { Puppet.runtime[:facter].value(:operatingsystem) }
|
460
497
|
subject do
|
461
498
|
described_class.defaultfor(operatingsystem: os)
|
462
499
|
described_class.specificity
|