puppet 5.3.3 → 5.3.4
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.
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +3 -0
- data/ext/puppet-test +3 -2
- data/lib/hiera/puppet_function.rb +5 -2
- data/lib/hiera_puppet.rb +3 -3
- data/lib/puppet.rb +2 -5
- data/lib/puppet/agent.rb +22 -2
- data/lib/puppet/agent/locker.rb +6 -5
- data/lib/puppet/application.rb +18 -1
- data/lib/puppet/application/agent.rb +9 -2
- data/lib/puppet/application/apply.rb +1 -1
- data/lib/puppet/application/config.rb +1 -0
- data/lib/puppet/application/device.rb +1 -2
- data/lib/puppet/application/filebucket.rb +22 -5
- data/lib/puppet/application/help.rb +1 -0
- data/lib/puppet/application/lookup.rb +1 -3
- data/lib/puppet/application_support.rb +6 -1
- data/lib/puppet/bindings.rb +2 -1
- data/lib/puppet/configurer.rb +9 -4
- data/lib/puppet/configurer/downloader_factory.rb +10 -0
- data/lib/puppet/configurer/plugin_handler.rb +11 -4
- data/lib/puppet/daemon.rb +2 -2
- data/lib/puppet/defaults.rb +99 -27
- data/lib/puppet/environments.rb +2 -0
- data/lib/puppet/error.rb +5 -15
- data/lib/puppet/external/pson/common.rb +2 -2
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +14 -1
- data/lib/puppet/face/epp.rb +4 -2
- data/lib/puppet/face/help.rb +12 -14
- data/lib/puppet/face/man.rb +1 -0
- data/lib/puppet/face/module/build.rb +1 -1
- data/lib/puppet/face/module/list.rb +6 -17
- data/lib/puppet/face/module/uninstall.rb +14 -3
- data/lib/puppet/face/node.rb +1 -0
- data/lib/puppet/face/status.rb +1 -0
- data/lib/puppet/file_serving/base.rb +2 -1
- data/lib/puppet/file_serving/configuration.rb +3 -0
- data/lib/puppet/file_serving/configuration/parser.rb +23 -9
- data/lib/puppet/file_serving/mount/locales.rb +35 -0
- data/lib/puppet/forge.rb +2 -1
- data/lib/puppet/forge/errors.rb +24 -22
- data/lib/puppet/functions/binary_file.rb +1 -0
- data/lib/puppet/functions/each.rb +10 -4
- data/lib/puppet/functions/eyaml_lookup_key.rb +4 -2
- data/lib/puppet/functions/lookup.rb +2 -2
- data/lib/puppet/functions/map.rb +12 -2
- data/lib/puppet/functions/slice.rb +2 -3
- data/lib/puppet/functions/unique.rb +1 -1
- data/lib/puppet/functions/yaml_data.rb +1 -1
- data/lib/puppet/gettext/config.rb +144 -41
- data/lib/puppet/gettext/module_translations.rb +42 -0
- data/lib/puppet/graph/relationship_graph.rb +1 -1
- data/lib/puppet/graph/simple_graph.rb +3 -3
- data/lib/puppet/indirector/catalog/compiler.rb +40 -25
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/network_device.rb +2 -2
- data/lib/puppet/indirector/file_bucket_file/file.rb +4 -1
- data/lib/puppet/indirector/indirection.rb +17 -9
- data/lib/puppet/indirector/ldap.rb +2 -2
- data/lib/puppet/indirector/node/write_only_yaml.rb +3 -1
- data/lib/puppet/indirector/rest.rb +8 -5
- data/lib/puppet/indirector/ssl_file.rb +2 -2
- data/lib/puppet/indirector/terminus.rb +3 -3
- data/lib/puppet/interface.rb +2 -1
- data/lib/puppet/interface/action.rb +41 -24
- data/lib/puppet/interface/action_builder.rb +14 -5
- data/lib/puppet/interface/action_manager.rb +1 -1
- data/lib/puppet/interface/documentation.rb +21 -10
- data/lib/puppet/interface/face_collection.rb +4 -2
- data/lib/puppet/interface/option.rb +36 -15
- data/lib/puppet/interface/option_builder.rb +23 -9
- data/lib/puppet/interface/option_manager.rb +8 -3
- data/lib/puppet/metatype/manager.rb +7 -3
- data/lib/puppet/module.rb +18 -21
- data/lib/puppet/module_tool/errors/installer.rb +18 -20
- data/lib/puppet/module_tool/errors/shared.rb +20 -15
- data/lib/puppet/module_tool/errors/uninstaller.rb +1 -0
- data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
- data/lib/puppet/module_tool/tar/mini.rb +57 -4
- data/lib/puppet/network/auth_config_parser.rb +18 -13
- data/lib/puppet/network/authstore.rb +2 -2
- data/lib/puppet/network/client_request.rb +1 -1
- data/lib/puppet/network/format.rb +3 -3
- data/lib/puppet/network/http/api/indirection_type.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +5 -2
- data/lib/puppet/network/http/error.rb +7 -7
- data/lib/puppet/network/http/factory.rb +9 -0
- data/lib/puppet/network/http/rack.rb +2 -2
- data/lib/puppet/network/http/webrick.rb +2 -4
- data/lib/puppet/node.rb +25 -6
- data/lib/puppet/node/environment.rb +14 -0
- data/lib/puppet/node/facts.rb +9 -0
- data/lib/puppet/parameter.rb +3 -3
- data/lib/puppet/parameter/value_collection.rb +9 -9
- data/lib/puppet/parser/ast/leaf.rb +1 -1
- data/lib/puppet/parser/ast/node.rb +2 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
- data/lib/puppet/parser/compiler.rb +6 -5
- data/lib/puppet/parser/functions.rb +1 -1
- data/lib/puppet/parser/functions/generate.rb +2 -4
- data/lib/puppet/parser/functions/inline_template.rb +1 -2
- data/lib/puppet/parser/functions/sprintf.rb +17 -3
- data/lib/puppet/parser/functions/template.rb +6 -2
- data/lib/puppet/parser/resource.rb +30 -31
- data/lib/puppet/parser/scope.rb +20 -11
- data/lib/puppet/parser/templatewrapper.rb +4 -3
- data/lib/puppet/pops/evaluator/collector_transformer.rb +2 -1
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +21 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +2 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +3 -1
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
- data/lib/puppet/pops/functions/dispatch.rb +1 -1
- data/lib/puppet/pops/functions/function.rb +8 -2
- data/lib/puppet/pops/issue_reporter.rb +7 -2
- data/lib/puppet/pops/issues.rb +10 -4
- data/lib/puppet/pops/label_provider.rb +1 -1
- data/lib/puppet/pops/loader/module_loaders.rb +5 -2
- data/lib/puppet/pops/loader/static_loader.rb +1 -1
- data/lib/puppet/pops/loaders.rb +7 -3
- data/lib/puppet/pops/lookup/explainer.rb +2 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +2 -2
- data/lib/puppet/pops/lookup/lookup_adapter.rb +4 -4
- data/lib/puppet/pops/merge_strategy.rb +6 -3
- data/lib/puppet/pops/migration/migration_checker.rb +8 -8
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/model/factory.rb +4 -2
- data/lib/puppet/pops/resource/resource_type_impl.rb +1 -1
- data/lib/puppet/pops/serialization/abstract_writer.rb +2 -1
- data/lib/puppet/pops/types/iterable.rb +2 -0
- data/lib/puppet/pops/types/p_object_type.rb +36 -15
- data/lib/puppet/pops/types/type_calculator.rb +2 -1
- data/lib/puppet/pops/types/type_factory.rb +3 -1
- data/lib/puppet/pops/types/type_mismatch_describer.rb +19 -6
- data/lib/puppet/pops/types/type_parser.rb +7 -7
- data/lib/puppet/pops/types/types.rb +10 -4
- data/lib/puppet/pops/validation.rb +14 -12
- data/lib/puppet/property.rb +14 -6
- data/lib/puppet/property/ensure.rb +2 -2
- data/lib/puppet/provider.rb +4 -4
- data/lib/puppet/provider/group/aix.rb +4 -2
- data/lib/puppet/provider/ldap.rb +2 -2
- data/lib/puppet/provider/naginator.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +7 -4
- data/lib/puppet/provider/nameservice/directoryservice.rb +4 -3
- data/lib/puppet/provider/package/aix.rb +1 -1
- data/lib/puppet/provider/package/nim.rb +7 -8
- data/lib/puppet/provider/package/opkg.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +9 -6
- data/lib/puppet/provider/package/pkgutil.rb +3 -3
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +4 -4
- data/lib/puppet/provider/selmodule/semodule.rb +5 -3
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/init.rb +1 -1
- data/lib/puppet/provider/service/launchd.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +2 -1
- data/lib/puppet/provider/service/smf.rb +2 -0
- data/lib/puppet/provider/service/systemd.rb +1 -0
- data/lib/puppet/provider/service/upstart.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +13 -6
- data/lib/puppet/provider/user/openbsd.rb +2 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -1
- data/lib/puppet/provider/zone/solaris.rb +2 -2
- data/lib/puppet/reference/configuration.rb +4 -2
- data/lib/puppet/relationship.rb +2 -1
- data/lib/puppet/reports/store.rb +1 -1
- data/lib/puppet/resource.rb +7 -5
- data/lib/puppet/resource/capability_finder.rb +14 -11
- data/lib/puppet/resource/catalog.rb +33 -18
- data/lib/puppet/resource/type.rb +5 -5
- data/lib/puppet/settings.rb +19 -13
- data/lib/puppet/settings/base_setting.rb +23 -8
- data/lib/puppet/settings/config_file.rb +14 -4
- data/lib/puppet/settings/environment_conf.rb +19 -9
- data/lib/puppet/ssl/base.rb +9 -4
- data/lib/puppet/ssl/oids.rb +8 -2
- data/lib/puppet/syntax_checkers/base64.rb +5 -6
- data/lib/puppet/transaction.rb +7 -3
- data/lib/puppet/transaction/persistence.rb +16 -1
- data/lib/puppet/transaction/report.rb +6 -0
- data/lib/puppet/type.rb +27 -35
- data/lib/puppet/type/file.rb +2 -1
- data/lib/puppet/type/file/data_sync.rb +2 -1
- data/lib/puppet/type/file/source.rb +1 -1
- data/lib/puppet/type/group.rb +1 -1
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/schedule.rb +26 -14
- data/lib/puppet/type/user.rb +9 -3
- data/lib/puppet/type/zone.rb +1 -1
- data/lib/puppet/util.rb +27 -21
- data/lib/puppet/util/at_fork/solaris.rb +6 -4
- data/lib/puppet/util/command_line.rb +5 -0
- data/lib/puppet/util/command_line/trollop.rb +6 -5
- data/lib/puppet/util/errors.rb +61 -8
- data/lib/puppet/util/fileparsing.rb +3 -5
- data/lib/puppet/util/http_proxy.rb +14 -6
- data/lib/puppet/util/instance_loader.rb +1 -3
- data/lib/puppet/util/ldap/manager.rb +6 -3
- data/lib/puppet/util/log.rb +19 -24
- data/lib/puppet/util/logging.rb +21 -28
- data/lib/puppet/util/methodhelper.rb +1 -1
- data/lib/puppet/util/nagios_maker.rb +1 -1
- data/lib/puppet/util/network_device/config.rb +21 -13
- data/lib/puppet/util/plist.rb +3 -1
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
- data/lib/puppet/util/reference.rb +2 -3
- data/lib/puppet/util/selinux.rb +1 -1
- data/lib/puppet/util/storage.rb +2 -2
- data/lib/puppet/util/windows/eventlog.rb +10 -5
- data/lib/puppet/util/windows/file.rb +61 -9
- data/lib/puppet/util/windows/process.rb +1 -1
- data/lib/puppet/util/windows/taskscheduler.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +5 -1
- data/lib/puppet/version.rb +1 -1
- data/locales/en/puppet.po +19 -0
- data/locales/ja/puppet.po +2739 -809
- data/locales/puppet.pot +2367 -734
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +2 -0
- data/spec/integration/agent/logging_spec.rb +2 -0
- data/spec/integration/faces/plugin_spec.rb +1 -0
- data/spec/integration/network/authconfig_spec.rb +2 -2
- data/spec/integration/parser/collection_spec.rb +2 -2
- data/spec/integration/parser/scope_spec.rb +16 -3
- data/spec/integration/provider/cron/crontab_spec.rb +1 -0
- data/spec/integration/transaction/report_spec.rb +5 -0
- data/spec/lib/matchers/json.rb +14 -13
- data/spec/unit/agent_spec.rb +33 -0
- data/spec/unit/application/config_spec.rb +4 -0
- data/spec/unit/application/lookup_spec.rb +30 -0
- data/spec/unit/application_spec.rb +18 -0
- data/spec/unit/configurer/downloader_factory_spec.rb +33 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +71 -16
- data/spec/unit/environments_spec.rb +15 -0
- data/spec/unit/face/config_spec.rb +8 -9
- data/spec/unit/face/epp_face_spec.rb +2 -2
- data/spec/unit/face/plugin_spec.rb +50 -4
- data/spec/unit/file_serving/configuration/parser_spec.rb +2 -2
- data/spec/unit/file_serving/mount/locales_spec.rb +73 -0
- data/spec/unit/functions/break_spec.rb +108 -50
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/hiera_spec.rb +0 -1
- data/spec/unit/functions/lookup_spec.rb +85 -19
- data/spec/unit/functions/next_spec.rb +1 -1
- data/spec/unit/functions/return_spec.rb +2 -2
- data/spec/unit/gettext/config_spec.rb +125 -0
- data/spec/unit/gettext/module_loading_spec.rb +53 -0
- data/spec/unit/indirector/json_spec.rb +0 -11
- data/spec/unit/indirector/node/exec_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +1 -1
- data/spec/unit/interface_spec.rb +12 -0
- data/spec/unit/module_spec.rb +0 -28
- data/spec/unit/module_tool/tar/mini_spec.rb +34 -5
- data/spec/unit/network/http/factory_spec.rb +22 -0
- data/spec/unit/network/http/webrick_spec.rb +30 -29
- data/spec/unit/node/environment_spec.rb +16 -0
- data/spec/unit/node_spec.rb +102 -16
- data/spec/unit/parser/environment_compiler_spec.rb +1 -1
- data/spec/unit/parser/functions/sprintf_spec.rb +26 -0
- data/spec/unit/parser/resource/param_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +9 -9
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_containers_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +40 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +9 -0
- data/spec/unit/provider/selmodule_spec.rb +6 -0
- data/spec/unit/provider/service/init_spec.rb +1 -1
- data/spec/unit/provider/service/smf_spec.rb +2 -0
- data/spec/unit/provider/service/systemd_spec.rb +14 -0
- data/spec/unit/resource/catalog_spec.rb +12 -2
- data/spec/unit/settings/config_file_spec.rb +1 -1
- data/spec/unit/transaction/persistence_spec.rb +42 -0
- data/spec/unit/transaction/report_spec.rb +19 -4
- data/spec/unit/transaction_spec.rb +27 -0
- data/spec/unit/type/schedule_spec.rb +14 -0
- data/spec/unit/type_spec.rb +3 -3
- data/spec/unit/util/errors_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +37 -0
- data/spec/unit/util/log_spec.rb +3 -3
- data/spec/unit/util/logging_spec.rb +7 -7
- data/spec/unit/util/monkey_patches_spec.rb +6 -2
- metadata +3433 -3416
- checksums.yaml +0 -7
- data/spec/unit/gettext_config_spec.rb +0 -57
@@ -71,6 +71,8 @@ describe 'agent logging' do
|
|
71
71
|
before(:each) do
|
72
72
|
# Don't actually run the agent, bypassing cert checks, forking and the puppet run itself
|
73
73
|
Puppet::Application::Agent.any_instance.stubs(:run_command)
|
74
|
+
# Let exceptions be raised instead of exiting
|
75
|
+
Puppet::Application::Agent.any_instance.stubs(:exit_on_fail).yields
|
74
76
|
end
|
75
77
|
|
76
78
|
def double_of_bin_puppet_agent_call(argv)
|
@@ -28,6 +28,7 @@ describe "Puppet plugin face" do
|
|
28
28
|
before do
|
29
29
|
FileUtils.mkdir(File.join(Puppet[:vardir], 'lib'))
|
30
30
|
FileUtils.mkdir(File.join(Puppet[:vardir], 'facts.d'))
|
31
|
+
FileUtils.mkdir(File.join(Puppet[:vardir], 'locales'))
|
31
32
|
@termini_classes = {}
|
32
33
|
INDIRECTED_CLASSES.each do |indirected|
|
33
34
|
@termini_classes[indirected] = indirected.indirection.terminus_class
|
@@ -97,13 +97,13 @@ describe Puppet::Network::AuthConfig do
|
|
97
97
|
it 'should warn about missing path before allow_ip in stanza' do
|
98
98
|
expect {
|
99
99
|
add_raw_stanza("allow_ip 10.0.0.1\n")
|
100
|
-
}.to raise_error Puppet::ConfigurationError, /Missing or invalid 'path' before right directive at line
|
100
|
+
}.to raise_error Puppet::ConfigurationError, /Missing or invalid 'path' before right directive at \(line: .*\)/
|
101
101
|
end
|
102
102
|
|
103
103
|
it 'should warn about missing path before allow in stanza' do
|
104
104
|
expect {
|
105
105
|
add_raw_stanza("allow host.domain.com\n")
|
106
|
-
}.to raise_error Puppet::ConfigurationError, /Missing or invalid 'path' before right directive at line
|
106
|
+
}.to raise_error Puppet::ConfigurationError, /Missing or invalid 'path' before right directive at \(line: .*\)/
|
107
107
|
end
|
108
108
|
|
109
109
|
it "should support hostname backreferences" do
|
@@ -342,13 +342,13 @@ describe 'collectors' do
|
|
342
342
|
Puppet[:strict] = :warning
|
343
343
|
expect_the_message_to_be(['given'], manifest)
|
344
344
|
expect(warnings).to include(
|
345
|
-
/Attempt to override an already evaluated resource, defined at line 4, with new values
|
345
|
+
/Attempt to override an already evaluated resource, defined at \(line: 4\), with new values \(line: 6\)/)
|
346
346
|
end
|
347
347
|
|
348
348
|
it 'and --strict=error, it fails compilation' do
|
349
349
|
Puppet[:strict] = :error
|
350
350
|
expect { compile_to_catalog(manifest) }.to raise_error(
|
351
|
-
/Attempt to override an already evaluated resource, defined at line 4, with new values
|
351
|
+
/Attempt to override an already evaluated resource, defined at \(line: 4\), with new values \(line: 6\)/)
|
352
352
|
expect(warnings).to be_empty
|
353
353
|
end
|
354
354
|
end
|
@@ -47,7 +47,7 @@ describe "Two step scoping for variables" do
|
|
47
47
|
compile_to_catalog("$name = 'never in a 0xF4240 years'", enc_node)
|
48
48
|
}.to raise_error(
|
49
49
|
Puppet::Error,
|
50
|
-
/Cannot reassign built in \(or already assigned\) variable '\$name'
|
50
|
+
/Cannot reassign built in \(or already assigned\) variable '\$name' \(line: 1(, column: 7)?\) on node the_node/
|
51
51
|
)
|
52
52
|
end
|
53
53
|
|
@@ -58,7 +58,7 @@ describe "Two step scoping for variables" do
|
|
58
58
|
compile_to_catalog("$title = 'never in a 0xF4240 years'", enc_node)
|
59
59
|
}.to raise_error(
|
60
60
|
Puppet::Error,
|
61
|
-
/Cannot reassign built in \(or already assigned\) variable '\$title'
|
61
|
+
/Cannot reassign built in \(or already assigned\) variable '\$title' \(line: 1(, column: 8)?\) on node the_node/
|
62
62
|
)
|
63
63
|
end
|
64
64
|
|
@@ -316,6 +316,19 @@ describe "Two step scoping for variables" do
|
|
316
316
|
end
|
317
317
|
end
|
318
318
|
|
319
|
+
it 'resolves a qualified name in class parameter scope' do
|
320
|
+
expect_the_message_to_be('Does it work? Yes!') do <<-PUPPET
|
321
|
+
class a (
|
322
|
+
$var1 = 'Does it work?',
|
323
|
+
$var2 = "${a::var1} Yes!"
|
324
|
+
) {
|
325
|
+
notify { 'something': message => $var2 }
|
326
|
+
}
|
327
|
+
include a
|
328
|
+
PUPPET
|
329
|
+
end
|
330
|
+
end
|
331
|
+
|
319
332
|
it "finds values in its inherited scope when the inherited class is qualified to the top" do
|
320
333
|
expect_the_message_to_be('foo_msg') do <<-MANIFEST
|
321
334
|
node default {
|
@@ -682,7 +695,7 @@ describe "Two step scoping for variables" do
|
|
682
695
|
compile_to_catalog("$var = 'top scope'", enc_node)
|
683
696
|
}.to raise_error(
|
684
697
|
Puppet::Error,
|
685
|
-
/Cannot reassign variable '\$var'
|
698
|
+
/Cannot reassign variable '\$var' \(line: 1(, column: 6)?\) on node the_node/
|
686
699
|
)
|
687
700
|
end
|
688
701
|
|
@@ -10,6 +10,7 @@ describe Puppet::Type.type(:cron).provider(:crontab), '(integration)', :unless =
|
|
10
10
|
|
11
11
|
before :each do
|
12
12
|
Puppet::Type.type(:cron).stubs(:defaultprovider).returns described_class
|
13
|
+
described_class.stubs(:suitable?).returns true
|
13
14
|
Puppet::FileBucket::Dipper.any_instance.stubs(:backup) # Don't backup to filebucket
|
14
15
|
|
15
16
|
# I don't want to execute anything
|
@@ -3,6 +3,11 @@ require 'spec_helper'
|
|
3
3
|
require 'puppet_spec/files'
|
4
4
|
|
5
5
|
describe Puppet::Transaction::Report do
|
6
|
+
before :each do
|
7
|
+
# Enable persistence during tests
|
8
|
+
Puppet::Transaction::Persistence.any_instance.stubs(:enabled?).returns(true)
|
9
|
+
end
|
10
|
+
|
6
11
|
describe "when using the indirector" do
|
7
12
|
after do
|
8
13
|
Puppet.settings.stubs(:use)
|
data/spec/lib/matchers/json.rb
CHANGED
@@ -28,6 +28,7 @@ module JSONMatchers
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def matches?(instance)
|
31
|
+
@instance = instance
|
31
32
|
result = attr_value(@attributes, instance)
|
32
33
|
if @value
|
33
34
|
result == @value
|
@@ -36,19 +37,19 @@ module JSONMatchers
|
|
36
37
|
end
|
37
38
|
end
|
38
39
|
|
39
|
-
def failure_message
|
40
|
+
def failure_message
|
40
41
|
if @value
|
41
|
-
"expected #{instance.inspect} to set #{@attributes.inspect} to #{@value.inspect}; got #{attr_value(@attributes, instance).inspect}"
|
42
|
+
"expected #{@instance.inspect} to set #{@attributes.inspect} to #{@value.inspect}; got #{attr_value(@attributes, @instance).inspect}"
|
42
43
|
else
|
43
|
-
"expected #{instance.inspect} to set #{@attributes.inspect} but was nil"
|
44
|
+
"expected #{@instance.inspect} to set #{@attributes.inspect} but was nil"
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
47
|
-
def failure_message_when_negated
|
48
|
+
def failure_message_when_negated
|
48
49
|
if @value
|
49
|
-
"expected #{instance.inspect} not to set #{@attributes.inspect} to #{@value.inspect}"
|
50
|
+
"expected #{@instance.inspect} not to set #{@attributes.inspect} to #{@value.inspect}"
|
50
51
|
else
|
51
|
-
"expected #{instance.inspect} not to set #{@attributes.inspect} to nil"
|
52
|
+
"expected #{@instance.inspect} not to set #{@attributes.inspect} to nil"
|
52
53
|
end
|
53
54
|
end
|
54
55
|
end
|
@@ -74,7 +75,7 @@ module JSONMatchers
|
|
74
75
|
|
75
76
|
def matches?(klass)
|
76
77
|
raise "Must specify json with 'from'" unless @json
|
77
|
-
|
78
|
+
@klass = klass
|
78
79
|
@instance = format.intern(klass, @json)
|
79
80
|
if @value
|
80
81
|
@instance.send(@attribute) == @value
|
@@ -83,19 +84,19 @@ module JSONMatchers
|
|
83
84
|
end
|
84
85
|
end
|
85
86
|
|
86
|
-
def failure_message
|
87
|
+
def failure_message
|
87
88
|
if @value
|
88
|
-
"expected #{klass} to read #{@attribute} from #{@json} as #{@value.inspect}; got #{@instance.send(@attribute).inspect}"
|
89
|
+
"expected #{@klass} to read #{@attribute} from #{@json} as #{@value.inspect}; got #{@instance.send(@attribute).inspect}"
|
89
90
|
else
|
90
|
-
"expected #{klass} to read #{@attribute} from #{@json} but was nil"
|
91
|
+
"expected #{@klass} to read #{@attribute} from #{@json} but was nil"
|
91
92
|
end
|
92
93
|
end
|
93
94
|
|
94
|
-
def failure_message_when_negated
|
95
|
+
def failure_message_when_negated
|
95
96
|
if @value
|
96
|
-
"expected #{klass} not to set #{@attribute} to #{@value}"
|
97
|
+
"expected #{@klass} not to set #{@attribute} to #{@value}"
|
97
98
|
else
|
98
|
-
"expected #{klass} not to set #{@attribute} to nil"
|
99
|
+
"expected #{@klass} not to set #{@attribute} to nil"
|
99
100
|
end
|
100
101
|
end
|
101
102
|
end
|
data/spec/unit/agent_spec.rb
CHANGED
@@ -258,6 +258,39 @@ describe Puppet::Agent do
|
|
258
258
|
expect(agent.should_fork).to be_falsey
|
259
259
|
end
|
260
260
|
end
|
261
|
+
|
262
|
+
describe 'when runtimeout is set' do
|
263
|
+
before(:each) do
|
264
|
+
Puppet[:runtimeout] = 1
|
265
|
+
end
|
266
|
+
|
267
|
+
it 'times out when a run exceeds the set limit' do
|
268
|
+
client = AgentTestClient.new
|
269
|
+
client.instance_eval do
|
270
|
+
# Stub methods used to set test expectations.
|
271
|
+
def processing; end
|
272
|
+
def handling; end
|
273
|
+
|
274
|
+
def run(client_options = {})
|
275
|
+
# Simulate a hanging agent operation that also traps errors.
|
276
|
+
begin
|
277
|
+
::Kernel.sleep(5)
|
278
|
+
processing()
|
279
|
+
rescue
|
280
|
+
handling()
|
281
|
+
end
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
285
|
+
AgentTestClient.expects(:new).returns client
|
286
|
+
|
287
|
+
client.expects(:processing).never
|
288
|
+
client.expects(:handling).never
|
289
|
+
Puppet.expects(:log_exception).with(instance_of(Puppet::Agent::RunTimeoutError), anything)
|
290
|
+
|
291
|
+
expect(@agent.run).to eq(1)
|
292
|
+
end
|
293
|
+
end
|
261
294
|
end
|
262
295
|
|
263
296
|
describe "when checking execution state" do
|
@@ -6,4 +6,8 @@ describe Puppet::Application::Config do
|
|
6
6
|
it "should be a subclass of Puppet::Application::FaceBase" do
|
7
7
|
expect(Puppet::Application::Config.superclass).to equal(Puppet::Application::FaceBase)
|
8
8
|
end
|
9
|
+
|
10
|
+
it "should set `environment_mode` to :not_required" do
|
11
|
+
expect(Puppet::Application::Config.get_environment_mode).to equal(:not_required)
|
12
|
+
end
|
9
13
|
end
|
@@ -498,6 +498,8 @@ Searching for "a"
|
|
498
498
|
end
|
499
499
|
|
500
500
|
context 'the global scope' do
|
501
|
+
include PuppetSpec::Files
|
502
|
+
|
501
503
|
it "is unaffected by global variables unless '--compile' is used" do
|
502
504
|
lookup.options[:node] = node
|
503
505
|
lookup.command_line.stubs(:args).returns(['c'])
|
@@ -510,6 +512,34 @@ Searching for "a"
|
|
510
512
|
lookup.command_line.stubs(:args).returns(['c'])
|
511
513
|
expect(run_lookup(lookup)).to eql("--- This is C from site.pp\n...")
|
512
514
|
end
|
515
|
+
|
516
|
+
it 'receives extra facts in top scope' do
|
517
|
+
file_path = tmpdir('lookup_spec')
|
518
|
+
filename = File.join(file_path, "facts.yaml")
|
519
|
+
File.open(filename, "w+") { |f| f.write(<<-YAML.unindent) }
|
520
|
+
---
|
521
|
+
cx: ' C from facts'
|
522
|
+
YAML
|
523
|
+
|
524
|
+
lookup.options[:node] = node
|
525
|
+
lookup.options[:fact_file] = filename
|
526
|
+
lookup.command_line.stubs(:args).returns(['c'])
|
527
|
+
expect(run_lookup(lookup)).to eql("--- This is C from facts\n...")
|
528
|
+
end
|
529
|
+
|
530
|
+
it 'receives extra facts in the facts hash' do
|
531
|
+
file_path = tmpdir('lookup_spec')
|
532
|
+
filename = File.join(file_path, "facts.yaml")
|
533
|
+
File.open(filename, "w+") { |f| f.write(<<-YAML.unindent) }
|
534
|
+
---
|
535
|
+
cx: ' G from facts'
|
536
|
+
YAML
|
537
|
+
|
538
|
+
lookup.options[:node] = node
|
539
|
+
lookup.options[:fact_file] = filename
|
540
|
+
lookup.command_line.stubs(:args).returns(['g'])
|
541
|
+
expect(run_lookup(lookup)).to eql("--- This is G from facts in facts hash\n...")
|
542
|
+
end
|
513
543
|
end
|
514
544
|
|
515
545
|
context 'using a puppet function as data provider' do
|
@@ -99,6 +99,24 @@ describe Puppet::Application do
|
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
|
+
describe ".environment_mode" do
|
103
|
+
it "should default to :local" do
|
104
|
+
expect(@appclass.get_environment_mode).to eq(:local)
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should set and get a value" do
|
108
|
+
@appclass.environment_mode :remote
|
109
|
+
expect(@appclass.get_environment_mode).to eq(:remote)
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should error if given a random symbol" do
|
113
|
+
expect{@appclass.environment_mode :foo}.to raise_error(/Invalid environment mode/)
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should error if given a string" do
|
117
|
+
expect{@appclass.environment_mode 'local'}.to raise_error(/Invalid environment mode/)
|
118
|
+
end
|
119
|
+
end
|
102
120
|
|
103
121
|
|
104
122
|
# These tests may look a little weird and repetative in its current state;
|
@@ -14,6 +14,10 @@ describe Puppet::Configurer::DownloaderFactory do
|
|
14
14
|
factory.create_plugin_facts_downloader(environment)
|
15
15
|
end
|
16
16
|
|
17
|
+
let(:locales_downloader) do
|
18
|
+
factory.create_locales_downloader(environment)
|
19
|
+
end
|
20
|
+
|
17
21
|
def ignores_source_permissions(downloader)
|
18
22
|
expect(downloader.file[:source_permissions]).to eq(:ignore)
|
19
23
|
end
|
@@ -93,4 +97,33 @@ describe Puppet::Configurer::DownloaderFactory do
|
|
93
97
|
end
|
94
98
|
end
|
95
99
|
end
|
100
|
+
|
101
|
+
context "when creating a plugin downloader for module translations" do
|
102
|
+
it 'is named "locales"' do
|
103
|
+
expect(locales_downloader.name).to eq('locales')
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'downloads files into Puppet[:localedest]' do
|
107
|
+
localedest = File.expand_path("/tmp/ldest")
|
108
|
+
Puppet[:localedest] = localedest
|
109
|
+
|
110
|
+
expect(locales_downloader.file[:path]).to eq(localedest)
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'downloads files from Puppet[:localesource]' do
|
114
|
+
Puppet[:localesource] = 'puppet:///myotherlocales'
|
115
|
+
|
116
|
+
expect(locales_downloader.file[:source]).to eq([Puppet[:localesource]])
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'ignores files from Puppet[:pluginsignore], plus config.yaml' do
|
120
|
+
Puppet[:pluginsignore] = 'lignore'
|
121
|
+
|
122
|
+
expect(locales_downloader.file[:ignore]).to eq(['lignore', 'config.yaml'])
|
123
|
+
end
|
124
|
+
|
125
|
+
it "ignores source permissions" do
|
126
|
+
ignores_source_permissions(locales_downloader)
|
127
|
+
end
|
128
|
+
end
|
96
129
|
end
|
@@ -8,29 +8,84 @@ describe Puppet::Configurer::PluginHandler do
|
|
8
8
|
let(:pluginhandler) { Puppet::Configurer::PluginHandler.new(factory) }
|
9
9
|
let(:environment) { Puppet::Node::Environment.create(:myenv, []) }
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
|
12
|
+
context "server agent version is 5.3.4" do
|
13
|
+
|
14
|
+
before :each do
|
15
|
+
# PluginHandler#load_plugin has an extra-strong rescue clause
|
16
|
+
# this mock is to make sure that we don't silently ignore errors
|
17
|
+
Puppet.expects(:err).never
|
18
|
+
# Server_agent version needs to be at 5.3.4 in order to mount locales
|
19
|
+
Puppet.push_context({:server_agent_version => "5.3.4"})
|
20
|
+
end
|
21
|
+
|
22
|
+
it "downloads plugins, facts, and locales" do
|
23
|
+
plugin_downloader = stub('plugin-downloader', :evaluate => [])
|
24
|
+
facts_downloader = stub('facts-downloader', :evaluate => [])
|
25
|
+
locales_downloader = stub('locales-downloader', :evaluate => [])
|
26
|
+
|
27
|
+
factory.expects(:create_plugin_downloader).returns(plugin_downloader)
|
28
|
+
factory.expects(:create_plugin_facts_downloader).returns(facts_downloader)
|
29
|
+
factory.expects(:create_locales_downloader).returns(locales_downloader)
|
30
|
+
|
31
|
+
pluginhandler.download_plugins(environment)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "returns downloaded plugin, fact, and locale filenames" do
|
35
|
+
plugin_downloader = stub('plugin-downloader', :evaluate => %w[/a])
|
36
|
+
facts_downloader = stub('facts-downloader', :evaluate => %w[/b])
|
37
|
+
locales_downloader = stub('locales-downloader', :evaluate => %w[/c])
|
38
|
+
|
39
|
+
factory.expects(:create_plugin_downloader).returns(plugin_downloader)
|
40
|
+
factory.expects(:create_plugin_facts_downloader).returns(facts_downloader)
|
41
|
+
factory.expects(:create_locales_downloader).returns(locales_downloader)
|
42
|
+
|
43
|
+
expect(pluginhandler.download_plugins(environment)).to match_array(%w[/a /b /c])
|
44
|
+
end
|
15
45
|
end
|
16
46
|
|
17
|
-
|
18
|
-
|
19
|
-
|
47
|
+
context "server agent version is 5.3.3" do
|
48
|
+
|
49
|
+
before :each do
|
50
|
+
# PluginHandler#load_plugin has an extra-strong rescue clause
|
51
|
+
# this mock is to make sure that we don't silently ignore errors
|
52
|
+
Puppet.expects(:err).never
|
53
|
+
# Server_agent version needs to be at 5.3.4 in order to mount locales
|
54
|
+
Puppet.push_context({:server_agent_version => "5.3.3"})
|
55
|
+
end
|
20
56
|
|
21
|
-
|
22
|
-
|
57
|
+
it "returns downloaded plugin, fact, but not locale filenames" do
|
58
|
+
plugin_downloader = stub('plugin-downloader', :evaluate => %w[/a])
|
59
|
+
facts_downloader = stub('facts-downloader', :evaluate => %w[/b])
|
23
60
|
|
24
|
-
|
61
|
+
factory.expects(:create_plugin_downloader).returns(plugin_downloader)
|
62
|
+
factory.expects(:create_plugin_facts_downloader).returns(facts_downloader)
|
63
|
+
factory.expects(:create_locales_downloader).never
|
64
|
+
|
65
|
+
expect(pluginhandler.download_plugins(environment)).to match_array(%w[/a /b])
|
66
|
+
end
|
25
67
|
end
|
26
68
|
|
27
|
-
|
28
|
-
|
29
|
-
|
69
|
+
context "blank server agent version" do
|
70
|
+
before :each do
|
71
|
+
# PluginHandler#load_plugin has an extra-strong rescue clause
|
72
|
+
# this mock is to make sure that we don't silently ignore errors
|
73
|
+
Puppet.expects(:err).never
|
74
|
+
# Server_agent version needs to be at 5.3.4 in order to mount locales
|
75
|
+
# A blank version will default to 0.0
|
76
|
+
Puppet.push_context({:server_agent_version => ""})
|
77
|
+
end
|
78
|
+
|
79
|
+
it "returns downloaded plugin, fact, but not locale filenames" do
|
80
|
+
plugin_downloader = stub('plugin-downloader', :evaluate => %w[/a])
|
81
|
+
facts_downloader = stub('facts-downloader', :evaluate => %w[/b])
|
82
|
+
|
83
|
+
factory.expects(:create_plugin_downloader).returns(plugin_downloader)
|
84
|
+
factory.expects(:create_plugin_facts_downloader).returns(facts_downloader)
|
85
|
+
factory.expects(:create_locales_downloader).never
|
30
86
|
|
31
|
-
|
32
|
-
|
87
|
+
expect(pluginhandler.download_plugins(environment)).to match_array(%w[/a /b])
|
88
|
+
end
|
33
89
|
|
34
|
-
expect(pluginhandler.download_plugins(environment)).to match_array(%w[/a /b])
|
35
90
|
end
|
36
91
|
end
|