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
@@ -209,6 +209,20 @@ static_catalogs=false
|
|
209
209
|
end
|
210
210
|
|
211
211
|
it "logs a warning, but processes the main settings if there are any extraneous settings" do
|
212
|
+
content << "dog=arf\n"
|
213
|
+
content << "cat=mew\n"
|
214
|
+
loader_from(:filesystem => [envdir, manifestdir, modulepath].flatten,
|
215
|
+
:directory => envdir) do |loader|
|
216
|
+
expect(loader.get("env1")).to environment(:env1).
|
217
|
+
with_manifest(manifestdir.path).
|
218
|
+
with_modulepath(modulepath.map(&:path)).
|
219
|
+
with_config_version(File.expand_path('/some/script'))
|
220
|
+
end
|
221
|
+
|
222
|
+
expect(@logs.map(&:to_s).join).to match(/Invalid.*at.*\/env1.*unknown setting.*dog, cat/)
|
223
|
+
end
|
224
|
+
|
225
|
+
it "logs a warning, but processes the main settings if there are any ignored sections" do
|
212
226
|
content << "dog=arf\n"
|
213
227
|
content << "cat=mew\n"
|
214
228
|
content << "[ignored]\n"
|
@@ -221,6 +235,7 @@ static_catalogs=false
|
|
221
235
|
with_config_version(File.expand_path('/some/script'))
|
222
236
|
end
|
223
237
|
|
238
|
+
expect(@logs.map(&:to_s).join).to match(/Invalid.*at.*\/env1.*The following sections are being ignored: 'ignored'/)
|
224
239
|
expect(@logs.map(&:to_s).join).to match(/Invalid.*at.*\/env1.*unknown setting.*dog, cat/)
|
225
240
|
end
|
226
241
|
|
@@ -18,8 +18,8 @@ describe Puppet::Face[:config, '0.0.1'] do
|
|
18
18
|
Puppet[:syslogfacility] = "file"
|
19
19
|
|
20
20
|
expect { subject.print("trace", "syslogfacility") }.to have_printed(<<-OUTPUT)
|
21
|
-
trace = true
|
22
21
|
syslogfacility = file
|
22
|
+
trace = true
|
23
23
|
OUTPUT
|
24
24
|
end
|
25
25
|
|
@@ -108,11 +108,11 @@ syslogfacility = file
|
|
108
108
|
) do
|
109
109
|
args = "environmentpath","manifest","modulepath","environment","basemodulepath"
|
110
110
|
expect { subject.print(*add_section_option(args, section)) }.to have_printed(<<-OUTPUT)
|
111
|
+
basemodulepath = #{File.expand_path("/some/base")}
|
112
|
+
environment = production
|
111
113
|
environmentpath = #{File.expand_path("/dev/null/environments")}
|
112
114
|
manifest = #{File.expand_path("/dev/null/environments/production/manifests")}
|
113
115
|
modulepath = #{File.expand_path("/dev/null/environments/production/modules")}#{File::PATH_SEPARATOR}#{File.expand_path("/some/base")}
|
114
|
-
environment = production
|
115
|
-
basemodulepath = #{File.expand_path("/some/base")}
|
116
116
|
OUTPUT
|
117
117
|
end
|
118
118
|
end
|
@@ -129,17 +129,16 @@ basemodulepath = #{File.expand_path("/some/base")}
|
|
129
129
|
) do
|
130
130
|
args = "environmentpath","manifest","modulepath","environment","basemodulepath"
|
131
131
|
expect { subject.print(*add_section_option(args, section)) }.to have_printed(<<-OUTPUT)
|
132
|
+
basemodulepath = #{File.expand_path("/some/base")}
|
133
|
+
environment = production
|
132
134
|
environmentpath = #{File.expand_path("/dev/null/environments")}
|
133
135
|
manifest = #{File.expand_path("/dev/null/environments/production/manifests")}
|
134
136
|
modulepath = #{File.expand_path("/custom/modules")}#{File::PATH_SEPARATOR}#{File.expand_path("/some/base")}
|
135
|
-
environment = production
|
136
|
-
basemodulepath = #{File.expand_path("/some/base")}
|
137
137
|
OUTPUT
|
138
138
|
end
|
139
139
|
end
|
140
140
|
|
141
141
|
it "prints the default configured env settings for an env that does not exist" do
|
142
|
-
pending "This case no longer exists because Application will through an error before we even get here because of the non-existent environment"
|
143
142
|
Puppet[:environment] = 'doesnotexist'
|
144
143
|
|
145
144
|
FS.overlay(
|
@@ -149,11 +148,11 @@ basemodulepath = #{File.expand_path("/some/base")}
|
|
149
148
|
) do
|
150
149
|
args = "environmentpath","manifest","modulepath","environment","basemodulepath"
|
151
150
|
expect { subject.print(*add_section_option(args, section)) }.to have_printed(<<-OUTPUT)
|
151
|
+
basemodulepath = #{File.expand_path("/some/base")}
|
152
|
+
environment = doesnotexist
|
152
153
|
environmentpath = #{File.expand_path("/dev/null/environments")}
|
153
|
-
manifest =
|
154
|
+
manifest =
|
154
155
|
modulepath =
|
155
|
-
environment = doesnotexist
|
156
|
-
basemodulepath = #{File.expand_path("/some/base")}
|
157
156
|
OUTPUT
|
158
157
|
end
|
159
158
|
end
|
@@ -147,7 +147,7 @@ describe Puppet::Face[:epp, :current] do
|
|
147
147
|
dir = dir_containing('templates', { template_name => "<% 1 2 3 %>" })
|
148
148
|
template = File.join(dir, template_name)
|
149
149
|
expect(eppface.dump(template, :validate => true)).to eq("")
|
150
|
-
expect(@logs.join).to match(/This Literal Integer has no effect.*\/template1
|
150
|
+
expect(@logs.join).to match(/This Literal Integer has no effect.*\(file: .*\/template1\.epp, line: 1, column: 4\)/)
|
151
151
|
end
|
152
152
|
|
153
153
|
it "validated content by default" do
|
@@ -155,7 +155,7 @@ describe Puppet::Face[:epp, :current] do
|
|
155
155
|
dir = dir_containing('templates', { template_name => "<% 1 2 3 %>" })
|
156
156
|
template = File.join(dir, template_name)
|
157
157
|
expect(eppface.dump(template)).to eq("")
|
158
|
-
expect(@logs.join).to match(/This Literal Integer has no effect.*\/template1
|
158
|
+
expect(@logs.join).to match(/This Literal Integer has no effect.*\(file: .*\/template1\.epp, line: 1, column: 4\)/)
|
159
159
|
end
|
160
160
|
|
161
161
|
it "informs the user of files that don't exist" do
|
@@ -12,21 +12,67 @@ describe Puppet::Face[:plugin, :current] do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
context "download" do
|
15
|
-
|
16
|
-
|
15
|
+
before :each do
|
16
|
+
#Server_agent version needs to be at 5.3.4 in order to mount locales
|
17
|
+
Puppet.push_context({:server_agent_version => "5.3.4"})
|
18
|
+
end
|
19
|
+
|
20
|
+
it "downloads plugins, external facts, and locales" do
|
21
|
+
Puppet::Configurer::Downloader.any_instance.expects(:evaluate).times(3).returns([])
|
17
22
|
|
18
23
|
pluginface.download
|
19
24
|
end
|
20
25
|
|
21
26
|
it "renders 'No plugins downloaded' if nothing was downloaded" do
|
22
|
-
Puppet::Configurer::Downloader.any_instance.expects(:evaluate).
|
27
|
+
Puppet::Configurer::Downloader.any_instance.expects(:evaluate).times(3).returns([])
|
23
28
|
|
24
29
|
result = pluginface.download
|
25
30
|
expect(render(result)).to eq('No plugins downloaded.')
|
26
31
|
end
|
27
32
|
|
28
33
|
it "renders comma separate list of downloaded file names" do
|
29
|
-
Puppet::Configurer::Downloader.any_instance.expects(:evaluate).
|
34
|
+
Puppet::Configurer::Downloader.any_instance.expects(:evaluate).times(3).returns(%w[/a]).then.returns(%w[/b]).then.returns(%w[/c])
|
35
|
+
|
36
|
+
result = pluginface.download
|
37
|
+
expect(render(result)).to eq('Downloaded these plugins: /a, /b, /c')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "download when server_agent_version is 5.3.3" do
|
42
|
+
before :each do
|
43
|
+
#Server_agent version needs to be at 5.3.4 in order to mount locales
|
44
|
+
Puppet.push_context({:server_agent_version => "5.3.3"})
|
45
|
+
end
|
46
|
+
|
47
|
+
it "downloads plugins, and external facts, but not locales" do
|
48
|
+
Puppet::Configurer::Downloader.any_instance.expects(:evaluate).times(2).returns([])
|
49
|
+
|
50
|
+
pluginface.download
|
51
|
+
end
|
52
|
+
|
53
|
+
it "renders comma separate list of downloaded file names that does not include locales" do
|
54
|
+
Puppet::Configurer::Downloader.any_instance.expects(:evaluate).times(2).returns(%w[/a]).then.returns(%w[/b])
|
55
|
+
|
56
|
+
result = pluginface.download
|
57
|
+
expect(render(result)).to eq('Downloaded these plugins: /a, /b')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "download when server_agent_version is blank" do
|
62
|
+
before :each do
|
63
|
+
#Server_agent version needs to be at 5.3.4 in order to mount locales
|
64
|
+
#A blank version will default to 0.0
|
65
|
+
Puppet.push_context({:server_agent_version => ""})
|
66
|
+
end
|
67
|
+
|
68
|
+
it "downloads plugins, and external facts, but not locales" do
|
69
|
+
Puppet::Configurer::Downloader.any_instance.expects(:evaluate).times(2).returns([])
|
70
|
+
|
71
|
+
pluginface.download
|
72
|
+
end
|
73
|
+
|
74
|
+
it "renders comma separate list of downloaded file names that does not include locales" do
|
75
|
+
Puppet::Configurer::Downloader.any_instance.expects(:evaluate).times(2).returns(%w[/a]).then.returns(%w[/b])
|
30
76
|
|
31
77
|
result = pluginface.download
|
32
78
|
expect(render(result)).to eq('Downloaded these plugins: /a, /b')
|
@@ -78,7 +78,7 @@ describe Puppet::FileServing::Configuration::Parser do
|
|
78
78
|
it "should return comprehensible error message, if invalid line detected" do
|
79
79
|
write_config_file "[one]\n\n\x01path /etc/puppetlabs/puppet/files\n\x01allow *\n"
|
80
80
|
|
81
|
-
expect { @parser.parse }.to raise_error(ArgumentError, /Invalid
|
81
|
+
expect { @parser.parse }.to raise_error(ArgumentError, /Invalid entry at \(file: .*, line: 3\): .*/)
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
@@ -130,7 +130,7 @@ describe Puppet::FileServing::Configuration::Parser do
|
|
130
130
|
it "should return comprehensible error message, if failed on invalid attribute" do
|
131
131
|
write_config_file "[one]\ndo something\n"
|
132
132
|
|
133
|
-
expect { @parser.parse }.to raise_error(ArgumentError, /Invalid argument 'do'
|
133
|
+
expect { @parser.parse }.to raise_error(ArgumentError, /Invalid argument 'do' at \(file: .*, line: 2\)/)
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
@@ -0,0 +1,73 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'puppet/file_serving/mount/locales'
|
4
|
+
|
5
|
+
describe Puppet::FileServing::Mount::Locales do
|
6
|
+
before do
|
7
|
+
@mount = Puppet::FileServing::Mount::Locales.new("locales")
|
8
|
+
|
9
|
+
@environment = stub 'environment', :module => nil
|
10
|
+
@options = { :recurse => true }
|
11
|
+
@request = stub 'request', :environment => @environment, :options => @options
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "when finding files" do
|
15
|
+
it "should use the provided environment to find the modules" do
|
16
|
+
@environment.expects(:modules).returns []
|
17
|
+
|
18
|
+
@mount.find("foo", @request)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should return nil if no module can be found with a matching locale" do
|
22
|
+
mod = mock 'module'
|
23
|
+
mod.stubs(:locale).with("foo/bar").returns nil
|
24
|
+
|
25
|
+
@environment.stubs(:modules).returns [mod]
|
26
|
+
expect(@mount.find("foo/bar", @request)).to be_nil
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should return the file path from the module" do
|
30
|
+
mod = mock 'module'
|
31
|
+
mod.stubs(:locale).with("foo/bar").returns "eh"
|
32
|
+
|
33
|
+
@environment.stubs(:modules).returns [mod]
|
34
|
+
expect(@mount.find("foo/bar", @request)).to eq("eh")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "when searching for files" do
|
39
|
+
it "should use the node's environment to find the modules" do
|
40
|
+
@environment.expects(:modules).at_least_once.returns []
|
41
|
+
@environment.stubs(:modulepath).returns ["/tmp/modules"]
|
42
|
+
|
43
|
+
@mount.search("foo", @request)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should return modulepath if no modules can be found that have locales" do
|
47
|
+
mod = mock 'module'
|
48
|
+
mod.stubs(:locales?).returns false
|
49
|
+
|
50
|
+
@environment.stubs(:modules).returns []
|
51
|
+
@environment.stubs(:modulepath).returns ["/"]
|
52
|
+
@options.expects(:[]=).with(:recurse, false)
|
53
|
+
expect(@mount.search("foo/bar", @request)).to eq(["/"])
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should return nil if no modules can be found that have locales and modulepath is invalid" do
|
57
|
+
mod = mock 'module'
|
58
|
+
mod.stubs(:locales?).returns false
|
59
|
+
|
60
|
+
@environment.stubs(:modules).returns []
|
61
|
+
@environment.stubs(:modulepath).returns []
|
62
|
+
expect(@mount.search("foo/bar", @request)).to be_nil
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should return the locale paths for each module that has locales" do
|
66
|
+
one = stub 'module', :locales? => true, :locale_directory => "/one"
|
67
|
+
two = stub 'module', :locales? => true, :locale_directory => "/two"
|
68
|
+
|
69
|
+
@environment.stubs(:modules).returns [one, two]
|
70
|
+
expect(@mount.search("foo/bar", @request)).to eq(%w{/one /two})
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -8,7 +8,7 @@ describe 'the break function' do
|
|
8
8
|
include Matchers::Resource
|
9
9
|
|
10
10
|
context do
|
11
|
-
it 'breaks iteration as if at end of input in a map' do
|
11
|
+
it 'breaks iteration as if at end of input in a map for an array' do
|
12
12
|
expect(compile_to_catalog(<<-CODE)).to have_resource('Notify[[1, 2]]')
|
13
13
|
function please_break() {
|
14
14
|
[1,2,3].map |$x| { if $x == 3 { break() } $x }
|
@@ -44,24 +44,81 @@ describe 'the break function' do
|
|
44
44
|
CODE
|
45
45
|
end
|
46
46
|
|
47
|
-
|
47
|
+
it 'breaks iteration as if at end of input in a map for a hash' do
|
48
|
+
expect(compile_to_catalog(<<-CODE)).to have_resource('Notify[[1, 2]]')
|
49
|
+
function please_break() {
|
50
|
+
{'a' => 1, 'b' => 2, 'c' => 3}.map |$x, $y| { if $y == 3 { break() } $y }
|
51
|
+
}
|
52
|
+
notify { String(please_break()): }
|
53
|
+
CODE
|
54
|
+
end
|
48
55
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
56
|
+
it 'breaks iteration as if at end of input in a reduce for an array' do
|
57
|
+
expect(compile_to_catalog(<<-CODE)).to have_resource('Notify[6]')
|
58
|
+
function please_break() {
|
59
|
+
[1,2,3,4].reduce |$memo, $x| { if $x == 4 { break() } $memo + $x }
|
60
|
+
}
|
61
|
+
notify { String(please_break()): }
|
62
|
+
CODE
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'breaks iteration as if at end of input in a reduce for a hash' do
|
66
|
+
expect(compile_to_catalog(<<-CODE)).to have_resource("Notify[['abc', 6]]")
|
67
|
+
function please_break() {
|
68
|
+
{'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4}.reduce |$memo, $x| {
|
69
|
+
if $x[1] == 4 { break() }
|
70
|
+
$string = "${memo[0]}${x[0]}"
|
71
|
+
$number = $memo[1] + $x[1]
|
72
|
+
[$string, $number]
|
73
|
+
}
|
74
|
+
}
|
75
|
+
notify { String(please_break()): }
|
76
|
+
CODE
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'breaks iteration as if at end of input in an each for an array' do
|
80
|
+
expect(compile_to_catalog(<<-CODE)).to_not have_resource('Notify[3]')
|
81
|
+
function please_break() {
|
82
|
+
[1,2,3].each |$x| { if $x == 3 { break() } notify { "$x": } }
|
83
|
+
}
|
84
|
+
please_break()
|
85
|
+
CODE
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'breaks iteration as if at end of input in an each for a hash' do
|
89
|
+
expect(compile_to_catalog(<<-CODE)).to_not have_resource('Notify[3]')
|
90
|
+
function please_break() {
|
91
|
+
{'a' => 1, 'b' => 2, 'c' => 3}.each |$x, $y| { if $y == 3 { break() } notify { "$y": } }
|
92
|
+
}
|
93
|
+
please_break()
|
94
|
+
CODE
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'breaks iteration as if at end of input in a reverse_each' do
|
98
|
+
expect(compile_to_catalog(<<-CODE)).to have_resource('Notify[2]')
|
99
|
+
function please_break() {
|
100
|
+
[1,2,3].reverse_each |$x| { if $x == 1 { break() } notify { "$x": } }
|
101
|
+
}
|
102
|
+
please_break()
|
103
|
+
CODE
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'does not provide early exit from a class' do
|
107
|
+
# A break would semantically mean that the class should not be included - as if the
|
108
|
+
# iteration over class names should stop. That is too magic and should
|
109
|
+
# be done differently by the user.
|
110
|
+
#
|
111
|
+
expect do
|
112
|
+
compile_to_catalog(<<-CODE)
|
113
|
+
class does_break {
|
114
|
+
notice 'a'
|
115
|
+
if 1 == 1 { break() } # avoid making next line statically unreachable
|
116
|
+
notice 'b'
|
117
|
+
}
|
118
|
+
include(does_break)
|
119
|
+
CODE
|
120
|
+
end.to raise_error(/break\(\) from context where this is illegal \(file: unknown, line: 3\) on node.*/)
|
121
|
+
end
|
65
122
|
|
66
123
|
it 'does not provide early exit from a define' do
|
67
124
|
# A break would semantically mean that the resource should not be created - as if the
|
@@ -77,41 +134,42 @@ describe 'the break function' do
|
|
77
134
|
}
|
78
135
|
does_break { 'no_you_cannot': }
|
79
136
|
CODE
|
80
|
-
end.to raise_error(/break\(\) from context where this is illegal
|
137
|
+
end.to raise_error(/break\(\) from context where this is illegal \(file: unknown, line: 3\) on node.*/)
|
81
138
|
end
|
82
139
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
140
|
+
it 'can be called when nested in a function to make that function behave as a break' do
|
141
|
+
# This allows functions like break_when(...) to be implemented by calling break() conditionally
|
142
|
+
#
|
143
|
+
expect(eval_and_collect_notices(<<-CODE)).to eql(['[100]'])
|
144
|
+
function nested_break($x) {
|
145
|
+
if $x == 2 { break() } else { $x * 100 }
|
146
|
+
}
|
147
|
+
function example() {
|
148
|
+
[1,2,3].map |$x| { nested_break($x) }
|
149
|
+
}
|
150
|
+
notice example()
|
151
|
+
CODE
|
152
|
+
end
|
96
153
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
154
|
+
it 'can not be called nested from top scope' do
|
155
|
+
expect do
|
156
|
+
compile_to_catalog(<<-CODE)
|
157
|
+
# line 1
|
158
|
+
# line 2
|
159
|
+
$result = with(1) |$x| { with($x) |$x| {break() }}
|
160
|
+
notice $result
|
161
|
+
CODE
|
162
|
+
end.to raise_error(/break\(\) from context where this is illegal \(file: unknown, line: 3\) on node.*/)
|
163
|
+
end
|
107
164
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
165
|
+
it 'can not be called from top scope' do
|
166
|
+
expect do
|
167
|
+
compile_to_catalog(<<-CODE)
|
168
|
+
# line 1
|
169
|
+
# line 2
|
170
|
+
break()
|
171
|
+
CODE
|
172
|
+
end.to raise_error(/break\(\) from context where this is illegal \(file: unknown, line: 3\) on node.*/)
|
173
|
+
end
|
116
174
|
end
|
117
175
|
end
|