puppet 5.3.3-x86-mingw32 → 5.3.4-x86-mingw32

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.

Files changed (291) hide show
  1. data/CONTRIBUTING.md +1 -1
  2. data/Gemfile +3 -0
  3. data/ext/puppet-test +3 -2
  4. data/lib/hiera/puppet_function.rb +5 -2
  5. data/lib/hiera_puppet.rb +3 -3
  6. data/lib/puppet.rb +2 -5
  7. data/lib/puppet/agent.rb +22 -2
  8. data/lib/puppet/agent/locker.rb +6 -5
  9. data/lib/puppet/application.rb +18 -1
  10. data/lib/puppet/application/agent.rb +9 -2
  11. data/lib/puppet/application/apply.rb +1 -1
  12. data/lib/puppet/application/config.rb +1 -0
  13. data/lib/puppet/application/device.rb +1 -2
  14. data/lib/puppet/application/filebucket.rb +22 -5
  15. data/lib/puppet/application/help.rb +1 -0
  16. data/lib/puppet/application/lookup.rb +1 -3
  17. data/lib/puppet/application_support.rb +6 -1
  18. data/lib/puppet/bindings.rb +2 -1
  19. data/lib/puppet/configurer.rb +9 -4
  20. data/lib/puppet/configurer/downloader_factory.rb +10 -0
  21. data/lib/puppet/configurer/plugin_handler.rb +11 -4
  22. data/lib/puppet/daemon.rb +2 -2
  23. data/lib/puppet/defaults.rb +99 -27
  24. data/lib/puppet/environments.rb +2 -0
  25. data/lib/puppet/error.rb +5 -15
  26. data/lib/puppet/external/pson/common.rb +2 -2
  27. data/lib/puppet/face/catalog.rb +1 -1
  28. data/lib/puppet/face/config.rb +14 -1
  29. data/lib/puppet/face/epp.rb +4 -2
  30. data/lib/puppet/face/help.rb +12 -14
  31. data/lib/puppet/face/man.rb +1 -0
  32. data/lib/puppet/face/module/build.rb +1 -1
  33. data/lib/puppet/face/module/list.rb +6 -17
  34. data/lib/puppet/face/module/uninstall.rb +14 -3
  35. data/lib/puppet/face/node.rb +1 -0
  36. data/lib/puppet/face/status.rb +1 -0
  37. data/lib/puppet/file_serving/base.rb +2 -1
  38. data/lib/puppet/file_serving/configuration.rb +3 -0
  39. data/lib/puppet/file_serving/configuration/parser.rb +23 -9
  40. data/lib/puppet/file_serving/mount/locales.rb +35 -0
  41. data/lib/puppet/forge.rb +2 -1
  42. data/lib/puppet/forge/errors.rb +24 -22
  43. data/lib/puppet/functions/binary_file.rb +1 -0
  44. data/lib/puppet/functions/each.rb +10 -4
  45. data/lib/puppet/functions/eyaml_lookup_key.rb +4 -2
  46. data/lib/puppet/functions/lookup.rb +2 -2
  47. data/lib/puppet/functions/map.rb +12 -2
  48. data/lib/puppet/functions/slice.rb +2 -3
  49. data/lib/puppet/functions/unique.rb +1 -1
  50. data/lib/puppet/functions/yaml_data.rb +1 -1
  51. data/lib/puppet/gettext/config.rb +144 -41
  52. data/lib/puppet/gettext/module_translations.rb +42 -0
  53. data/lib/puppet/graph/relationship_graph.rb +1 -1
  54. data/lib/puppet/graph/simple_graph.rb +3 -3
  55. data/lib/puppet/indirector/catalog/compiler.rb +40 -25
  56. data/lib/puppet/indirector/exec.rb +1 -1
  57. data/lib/puppet/indirector/facts/facter.rb +3 -3
  58. data/lib/puppet/indirector/facts/network_device.rb +2 -2
  59. data/lib/puppet/indirector/file_bucket_file/file.rb +4 -1
  60. data/lib/puppet/indirector/indirection.rb +17 -9
  61. data/lib/puppet/indirector/ldap.rb +2 -2
  62. data/lib/puppet/indirector/node/write_only_yaml.rb +3 -1
  63. data/lib/puppet/indirector/rest.rb +8 -5
  64. data/lib/puppet/indirector/ssl_file.rb +2 -2
  65. data/lib/puppet/indirector/terminus.rb +3 -3
  66. data/lib/puppet/interface.rb +2 -1
  67. data/lib/puppet/interface/action.rb +41 -24
  68. data/lib/puppet/interface/action_builder.rb +14 -5
  69. data/lib/puppet/interface/action_manager.rb +1 -1
  70. data/lib/puppet/interface/documentation.rb +21 -10
  71. data/lib/puppet/interface/face_collection.rb +4 -2
  72. data/lib/puppet/interface/option.rb +36 -15
  73. data/lib/puppet/interface/option_builder.rb +23 -9
  74. data/lib/puppet/interface/option_manager.rb +8 -3
  75. data/lib/puppet/metatype/manager.rb +7 -3
  76. data/lib/puppet/module.rb +18 -21
  77. data/lib/puppet/module_tool/errors/installer.rb +18 -20
  78. data/lib/puppet/module_tool/errors/shared.rb +20 -15
  79. data/lib/puppet/module_tool/errors/uninstaller.rb +1 -0
  80. data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
  81. data/lib/puppet/module_tool/tar/mini.rb +57 -4
  82. data/lib/puppet/network/auth_config_parser.rb +18 -13
  83. data/lib/puppet/network/authstore.rb +2 -2
  84. data/lib/puppet/network/client_request.rb +1 -1
  85. data/lib/puppet/network/format.rb +3 -3
  86. data/lib/puppet/network/http/api/indirection_type.rb +1 -1
  87. data/lib/puppet/network/http/api/master/v3/environment.rb +5 -2
  88. data/lib/puppet/network/http/error.rb +7 -7
  89. data/lib/puppet/network/http/factory.rb +9 -0
  90. data/lib/puppet/network/http/rack.rb +2 -2
  91. data/lib/puppet/network/http/webrick.rb +2 -4
  92. data/lib/puppet/node.rb +25 -6
  93. data/lib/puppet/node/environment.rb +14 -0
  94. data/lib/puppet/node/facts.rb +9 -0
  95. data/lib/puppet/parameter.rb +3 -3
  96. data/lib/puppet/parameter/value_collection.rb +9 -9
  97. data/lib/puppet/parser/ast/leaf.rb +1 -1
  98. data/lib/puppet/parser/ast/node.rb +2 -2
  99. data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
  100. data/lib/puppet/parser/compiler.rb +6 -5
  101. data/lib/puppet/parser/functions.rb +1 -1
  102. data/lib/puppet/parser/functions/generate.rb +2 -4
  103. data/lib/puppet/parser/functions/inline_template.rb +1 -2
  104. data/lib/puppet/parser/functions/sprintf.rb +17 -3
  105. data/lib/puppet/parser/functions/template.rb +6 -2
  106. data/lib/puppet/parser/resource.rb +30 -31
  107. data/lib/puppet/parser/scope.rb +20 -11
  108. data/lib/puppet/parser/templatewrapper.rb +4 -3
  109. data/lib/puppet/pops/evaluator/collector_transformer.rb +2 -1
  110. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
  111. data/lib/puppet/pops/evaluator/epp_evaluator.rb +21 -8
  112. data/lib/puppet/pops/evaluator/evaluator_impl.rb +2 -1
  113. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  114. data/lib/puppet/pops/evaluator/runtime3_converter.rb +3 -1
  115. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -1
  116. data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
  117. data/lib/puppet/pops/functions/dispatch.rb +1 -1
  118. data/lib/puppet/pops/functions/function.rb +8 -2
  119. data/lib/puppet/pops/issue_reporter.rb +7 -2
  120. data/lib/puppet/pops/issues.rb +10 -4
  121. data/lib/puppet/pops/label_provider.rb +1 -1
  122. data/lib/puppet/pops/loader/module_loaders.rb +5 -2
  123. data/lib/puppet/pops/loader/static_loader.rb +1 -1
  124. data/lib/puppet/pops/loaders.rb +7 -3
  125. data/lib/puppet/pops/lookup/explainer.rb +2 -1
  126. data/lib/puppet/pops/lookup/hiera_config.rb +2 -2
  127. data/lib/puppet/pops/lookup/lookup_adapter.rb +4 -4
  128. data/lib/puppet/pops/merge_strategy.rb +6 -3
  129. data/lib/puppet/pops/migration/migration_checker.rb +8 -8
  130. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  131. data/lib/puppet/pops/model/factory.rb +4 -2
  132. data/lib/puppet/pops/resource/resource_type_impl.rb +1 -1
  133. data/lib/puppet/pops/serialization/abstract_writer.rb +2 -1
  134. data/lib/puppet/pops/types/iterable.rb +2 -0
  135. data/lib/puppet/pops/types/p_object_type.rb +36 -15
  136. data/lib/puppet/pops/types/type_calculator.rb +2 -1
  137. data/lib/puppet/pops/types/type_factory.rb +3 -1
  138. data/lib/puppet/pops/types/type_mismatch_describer.rb +19 -6
  139. data/lib/puppet/pops/types/type_parser.rb +7 -7
  140. data/lib/puppet/pops/types/types.rb +10 -4
  141. data/lib/puppet/pops/validation.rb +14 -12
  142. data/lib/puppet/property.rb +14 -6
  143. data/lib/puppet/property/ensure.rb +2 -2
  144. data/lib/puppet/provider.rb +4 -4
  145. data/lib/puppet/provider/group/aix.rb +4 -2
  146. data/lib/puppet/provider/ldap.rb +2 -2
  147. data/lib/puppet/provider/naginator.rb +1 -1
  148. data/lib/puppet/provider/nameservice.rb +7 -4
  149. data/lib/puppet/provider/nameservice/directoryservice.rb +4 -3
  150. data/lib/puppet/provider/package/aix.rb +1 -1
  151. data/lib/puppet/provider/package/nim.rb +7 -8
  152. data/lib/puppet/provider/package/opkg.rb +1 -1
  153. data/lib/puppet/provider/package/pkg.rb +9 -6
  154. data/lib/puppet/provider/package/pkgutil.rb +3 -3
  155. data/lib/puppet/provider/package/yum.rb +1 -1
  156. data/lib/puppet/provider/parsedfile.rb +4 -4
  157. data/lib/puppet/provider/selmodule/semodule.rb +5 -3
  158. data/lib/puppet/provider/service/base.rb +1 -1
  159. data/lib/puppet/provider/service/init.rb +1 -1
  160. data/lib/puppet/provider/service/launchd.rb +2 -2
  161. data/lib/puppet/provider/service/runit.rb +2 -1
  162. data/lib/puppet/provider/service/smf.rb +2 -0
  163. data/lib/puppet/provider/service/systemd.rb +1 -0
  164. data/lib/puppet/provider/service/upstart.rb +1 -1
  165. data/lib/puppet/provider/user/aix.rb +13 -6
  166. data/lib/puppet/provider/user/openbsd.rb +2 -1
  167. data/lib/puppet/provider/yumrepo/inifile.rb +2 -1
  168. data/lib/puppet/provider/zone/solaris.rb +2 -2
  169. data/lib/puppet/reference/configuration.rb +4 -2
  170. data/lib/puppet/relationship.rb +2 -1
  171. data/lib/puppet/reports/store.rb +1 -1
  172. data/lib/puppet/resource.rb +7 -5
  173. data/lib/puppet/resource/capability_finder.rb +14 -11
  174. data/lib/puppet/resource/catalog.rb +33 -18
  175. data/lib/puppet/resource/type.rb +5 -5
  176. data/lib/puppet/settings.rb +19 -13
  177. data/lib/puppet/settings/base_setting.rb +23 -8
  178. data/lib/puppet/settings/config_file.rb +14 -4
  179. data/lib/puppet/settings/environment_conf.rb +19 -9
  180. data/lib/puppet/ssl/base.rb +9 -4
  181. data/lib/puppet/ssl/oids.rb +8 -2
  182. data/lib/puppet/syntax_checkers/base64.rb +5 -6
  183. data/lib/puppet/transaction.rb +7 -3
  184. data/lib/puppet/transaction/persistence.rb +16 -1
  185. data/lib/puppet/transaction/report.rb +6 -0
  186. data/lib/puppet/type.rb +27 -35
  187. data/lib/puppet/type/file.rb +2 -1
  188. data/lib/puppet/type/file/data_sync.rb +2 -1
  189. data/lib/puppet/type/file/source.rb +1 -1
  190. data/lib/puppet/type/group.rb +1 -1
  191. data/lib/puppet/type/mount.rb +1 -1
  192. data/lib/puppet/type/resources.rb +1 -1
  193. data/lib/puppet/type/schedule.rb +26 -14
  194. data/lib/puppet/type/user.rb +9 -3
  195. data/lib/puppet/type/zone.rb +1 -1
  196. data/lib/puppet/util.rb +27 -21
  197. data/lib/puppet/util/at_fork/solaris.rb +6 -4
  198. data/lib/puppet/util/command_line.rb +5 -0
  199. data/lib/puppet/util/command_line/trollop.rb +6 -5
  200. data/lib/puppet/util/errors.rb +61 -8
  201. data/lib/puppet/util/fileparsing.rb +3 -5
  202. data/lib/puppet/util/http_proxy.rb +14 -6
  203. data/lib/puppet/util/instance_loader.rb +1 -3
  204. data/lib/puppet/util/ldap/manager.rb +6 -3
  205. data/lib/puppet/util/log.rb +19 -24
  206. data/lib/puppet/util/logging.rb +21 -28
  207. data/lib/puppet/util/methodhelper.rb +1 -1
  208. data/lib/puppet/util/nagios_maker.rb +1 -1
  209. data/lib/puppet/util/network_device/config.rb +21 -13
  210. data/lib/puppet/util/plist.rb +3 -1
  211. data/lib/puppet/util/posix.rb +1 -1
  212. data/lib/puppet/util/provider_features.rb +1 -1
  213. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
  214. data/lib/puppet/util/reference.rb +2 -3
  215. data/lib/puppet/util/selinux.rb +1 -1
  216. data/lib/puppet/util/storage.rb +2 -2
  217. data/lib/puppet/util/windows/eventlog.rb +10 -5
  218. data/lib/puppet/util/windows/file.rb +61 -9
  219. data/lib/puppet/util/windows/process.rb +1 -1
  220. data/lib/puppet/util/windows/taskscheduler.rb +2 -2
  221. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +5 -1
  222. data/lib/puppet/version.rb +1 -1
  223. data/locales/en/puppet.po +19 -0
  224. data/locales/ja/puppet.po +2739 -809
  225. data/locales/puppet.pot +2367 -734
  226. data/spec/fixtures/unit/application/environments/production/data/common.yaml +2 -0
  227. data/spec/integration/agent/logging_spec.rb +2 -0
  228. data/spec/integration/faces/plugin_spec.rb +1 -0
  229. data/spec/integration/network/authconfig_spec.rb +2 -2
  230. data/spec/integration/parser/collection_spec.rb +2 -2
  231. data/spec/integration/parser/scope_spec.rb +16 -3
  232. data/spec/integration/provider/cron/crontab_spec.rb +1 -0
  233. data/spec/integration/transaction/report_spec.rb +5 -0
  234. data/spec/lib/matchers/json.rb +14 -13
  235. data/spec/unit/agent_spec.rb +33 -0
  236. data/spec/unit/application/config_spec.rb +4 -0
  237. data/spec/unit/application/lookup_spec.rb +30 -0
  238. data/spec/unit/application_spec.rb +18 -0
  239. data/spec/unit/configurer/downloader_factory_spec.rb +33 -0
  240. data/spec/unit/configurer/plugin_handler_spec.rb +71 -16
  241. data/spec/unit/environments_spec.rb +15 -0
  242. data/spec/unit/face/config_spec.rb +8 -9
  243. data/spec/unit/face/epp_face_spec.rb +2 -2
  244. data/spec/unit/face/plugin_spec.rb +50 -4
  245. data/spec/unit/file_serving/configuration/parser_spec.rb +2 -2
  246. data/spec/unit/file_serving/mount/locales_spec.rb +73 -0
  247. data/spec/unit/functions/break_spec.rb +108 -50
  248. data/spec/unit/functions/defined_spec.rb +2 -2
  249. data/spec/unit/functions/hiera_spec.rb +0 -1
  250. data/spec/unit/functions/lookup_spec.rb +85 -19
  251. data/spec/unit/functions/next_spec.rb +1 -1
  252. data/spec/unit/functions/return_spec.rb +2 -2
  253. data/spec/unit/gettext/config_spec.rb +125 -0
  254. data/spec/unit/gettext/module_loading_spec.rb +53 -0
  255. data/spec/unit/indirector/json_spec.rb +0 -11
  256. data/spec/unit/indirector/node/exec_spec.rb +1 -1
  257. data/spec/unit/info_service_spec.rb +1 -1
  258. data/spec/unit/interface_spec.rb +12 -0
  259. data/spec/unit/module_spec.rb +0 -28
  260. data/spec/unit/module_tool/tar/mini_spec.rb +34 -5
  261. data/spec/unit/network/http/factory_spec.rb +22 -0
  262. data/spec/unit/network/http/webrick_spec.rb +30 -29
  263. data/spec/unit/node/environment_spec.rb +16 -0
  264. data/spec/unit/node_spec.rb +102 -16
  265. data/spec/unit/parser/environment_compiler_spec.rb +1 -1
  266. data/spec/unit/parser/functions/sprintf_spec.rb +26 -0
  267. data/spec/unit/parser/resource/param_spec.rb +1 -1
  268. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +9 -9
  269. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  270. data/spec/unit/pops/parser/parse_containers_spec.rb +1 -1
  271. data/spec/unit/pops/types/type_calculator_spec.rb +40 -0
  272. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +9 -0
  273. data/spec/unit/provider/selmodule_spec.rb +6 -0
  274. data/spec/unit/provider/service/init_spec.rb +1 -1
  275. data/spec/unit/provider/service/smf_spec.rb +2 -0
  276. data/spec/unit/provider/service/systemd_spec.rb +14 -0
  277. data/spec/unit/resource/catalog_spec.rb +12 -2
  278. data/spec/unit/settings/config_file_spec.rb +1 -1
  279. data/spec/unit/transaction/persistence_spec.rb +42 -0
  280. data/spec/unit/transaction/report_spec.rb +19 -4
  281. data/spec/unit/transaction_spec.rb +27 -0
  282. data/spec/unit/type/schedule_spec.rb +14 -0
  283. data/spec/unit/type_spec.rb +3 -3
  284. data/spec/unit/util/errors_spec.rb +1 -1
  285. data/spec/unit/util/http_proxy_spec.rb +37 -0
  286. data/spec/unit/util/log_spec.rb +3 -3
  287. data/spec/unit/util/logging_spec.rb +7 -7
  288. data/spec/unit/util/monkey_patches_spec.rb +6 -2
  289. metadata +3445 -3416
  290. checksums.yaml +0 -7
  291. data/spec/unit/gettext_config_spec.rb +0 -57
@@ -790,7 +790,9 @@ class Factory
790
790
  end
791
791
  else
792
792
  # Bad number should already have been caught by lexer - this should never happen
793
- raise ArgumentError, "Internal Error, NUMBER token does not contain a valid number, #{name_or_numeric}"
793
+ #TRANSLATORS 'NUMBER' refers to a method name and the 'name_or_numeric' was the passed in value and should not be translated
794
+ raise ArgumentError, _("Internal Error, NUMBER token does not contain a valid number, %{name_or_numeric}") %
795
+ { name_or_numeric: name_or_numeric }
794
796
  end
795
797
  end
796
798
 
@@ -1082,7 +1084,7 @@ class Factory
1082
1084
  elsif e.is_a?(String)
1083
1085
  result << e
1084
1086
  else
1085
- raise ArgumentError, "can only concatenate strings, got #{e.class}"
1087
+ raise ArgumentError, _("can only concatenate strings, got %{class_name}") % { class_name: e.class }
1086
1088
  end
1087
1089
  end
1088
1090
  infer(result)
@@ -164,7 +164,7 @@ class ResourceTypeImpl
164
164
  # the 'package' type where 'provider' attribute is handled as part of the key without being
165
165
  # set from the title.
166
166
  #
167
- raise Puppet::DevError,"you must specify title patterns when there are two or more key attributes"
167
+ raise Puppet::DevError, _("you must specify title patterns when there are two or more key attributes")
168
168
  end
169
169
  @title_patterns_hash.nil? ? [] : @title_patterns_hash.map { |k,v| [ k, v.map { |n| [ n.to_sym] } ] }
170
170
  end
@@ -99,7 +99,8 @@ class AbstractWriter
99
99
  #
100
100
  # @api private
101
101
  def write_tpl(ep, value)
102
- raise ArgumentError, 'Internal error. Integers cannot be tabulated in extension payload' if value.is_a?(Integer)
102
+ #TRANSLATORS 'Integers' is a Ruby class for numbers and should not be translated
103
+ raise ArgumentError, _('Internal error. Integers cannot be tabulated in extension payload') if value.is_a?(Integer)
103
104
  if @tabulate
104
105
  index = @written[value]
105
106
  if index.nil?
@@ -79,6 +79,8 @@ module Puppet::Pops::Types
79
79
  o.finite_range? ? IntegerRangeIterator.new(o) : nil
80
80
  when PEnumType
81
81
  Iterator.new(o, o.values.each)
82
+ when PTypeAliasType
83
+ on(o.resolved_type)
82
84
  when Range
83
85
  min = o.min
84
86
  max = o.max
@@ -132,7 +132,10 @@ class PObjectType < PMetaType
132
132
  def assert_override(parent_members)
133
133
  parent_member = parent_members[@name]
134
134
  if parent_member.nil?
135
- raise Puppet::ParseError, "expected #{label} to override an inherited #{feature_type}, but no such #{feature_type} was found" if @override
135
+ if @override
136
+ raise Puppet::ParseError, _("expected %{label} to override an inherited %{feature_type}, but no such %{feature_type} was found") %
137
+ { label: label, feature_type: feature_type }
138
+ end
136
139
  self
137
140
  else
138
141
  parent_member.assert_can_be_overridden(self)
@@ -146,10 +149,19 @@ class PObjectType < PMetaType
146
149
  # @raises [Puppet::ParseError] if the assertion fails
147
150
  # @api private
148
151
  def assert_can_be_overridden(member)
149
- raise Puppet::ParseError, "#{member.label} attempts to override #{label}" unless self.class == member.class
150
- raise Puppet::ParseError, "#{member.label} attempts to override final #{label}" if @final && !(constant? && member.constant?)
151
- raise Puppet::ParseError, "#{member.label} attempts to override #{label} without having override => true" unless member.override?
152
- raise Puppet::ParseError, "#{member.label} attempts to override #{label} with a type that does not match" unless @type.assignable?(member.type)
152
+ unless self.class == member.class
153
+ raise Puppet::ParseError, _("%{member} attempts to override %{label}") % { member: member.label, label: label }
154
+ end
155
+ if @final && !(constant? && member.constant?)
156
+ raise Puppet::ParseError, _("%{member} attempts to override final %{label}") % { member: member.label, label: label }
157
+ end
158
+ unless member.override?
159
+ #TRANSLATOR 'override => true' is a puppet syntax and should not be translated
160
+ raise Puppet::ParseError, _("%{member} attempts to override %{label} without having override => true") % { member: member.label, label: label }
161
+ end
162
+ unless @type.assignable?(member.type)
163
+ raise Puppet::ParseError, _("%{member} attempts to override %{label} with a type that does not match") % { member: member.label, label: label }
164
+ end
153
165
  member
154
166
  end
155
167
 
@@ -264,19 +276,20 @@ class PObjectType < PMetaType
264
276
  @kind = init_hash[KEY_KIND]
265
277
  if @kind == ATTRIBUTE_KIND_CONSTANT # final is implied
266
278
  if init_hash.include?(KEY_FINAL) && !@final
267
- raise Puppet::ParseError, "#{label} of kind 'constant' cannot be combined with final => false"
279
+ #TRANSLATOR 'final => false' is puppet syntax and should not be translated
280
+ raise Puppet::ParseError, _("%{label} of kind 'constant' cannot be combined with final => false") % { label: label }
268
281
  end
269
282
  @final = true
270
283
  end
271
284
 
272
285
  if init_hash.include?(KEY_VALUE)
273
286
  if @kind == ATTRIBUTE_KIND_DERIVED || @kind == ATTRIBUTE_KIND_GIVEN_OR_DERIVED
274
- raise Puppet::ParseError, "#{label} of kind '#{@kind}' cannot be combined with an attribute value"
287
+ raise Puppet::ParseError, _("%{label} of kind '%{kind}' cannot be combined with an attribute value") % { label: label, kind: @kind }
275
288
  end
276
289
  v = init_hash[KEY_VALUE]
277
290
  @value = v == :default ? v : TypeAsserter.assert_instance_of(nil, type, v) {"#{label} #{KEY_VALUE}" }
278
291
  else
279
- raise Puppet::ParseError, "#{label} of kind 'constant' requires a value" if @kind == ATTRIBUTE_KIND_CONSTANT
292
+ raise Puppet::ParseError, _("%{label} of kind 'constant' requires a value") % { label: label } if @kind == ATTRIBUTE_KIND_CONSTANT
280
293
  @value = :undef # Not to be confused with nil or :default
281
294
  end
282
295
  end
@@ -618,7 +631,9 @@ class PObjectType < PMetaType
618
631
  attr_specs = init_hash[KEY_ATTRIBUTES] || {}
619
632
  unless constants.nil? || constants.empty?
620
633
  constants.each do |key, value|
621
- raise Puppet::ParseError, "attribute #{label}[#{key}] is defined as both a constant and an attribute" if attr_specs.include?(key)
634
+ if attr_specs.include?(key)
635
+ raise Puppet::ParseError, _("attribute %{label}[%{key}] is defined as both a constant and an attribute") % { label: label, key: key }
636
+ end
622
637
  attr_spec = {
623
638
  # Type must be generic here, or overrides would become impossible
624
639
  KEY_TYPE => TypeCalculator.infer(value).generalize,
@@ -649,7 +664,7 @@ class PObjectType < PMetaType
649
664
  func_spec = { KEY_TYPE => TypeAsserter.assert_instance_of(nil, TYPE_FUNCTION_TYPE, func_spec) { "function #{label}[#{key}]" } } unless func_spec.is_a?(Hash)
650
665
  func = PFunction.new(key, self, func_spec)
651
666
  name = func.name
652
- raise Puppet::ParseError, "#{func.label} conflicts with attribute with the same name" if @attributes.include?(name)
667
+ raise Puppet::ParseError, _("%{label} conflicts with attribute with the same name") % { label: func.label } if @attributes.include?(name)
653
668
  [name, func.assert_override(parent_members)]
654
669
  end].freeze
655
670
  end
@@ -661,7 +676,8 @@ class PObjectType < PMetaType
661
676
  equality = [equality] if equality.is_a?(String)
662
677
  if equality.is_a?(Array)
663
678
  unless equality.empty?
664
- raise Puppet::ParseError, 'equality_include_type = false cannot be combined with non empty equality specification' unless @equality_include_type
679
+ #TRANSLATORS equality_include_type = false should not be translated
680
+ raise Puppet::ParseError, _('equality_include_type = false cannot be combined with non empty equality specification') unless @equality_include_type
665
681
  parent_eq_attrs = nil
666
682
  equality.each do |attr_name|
667
683
 
@@ -673,16 +689,21 @@ class PObjectType < PMetaType
673
689
  parent_eq_attrs ||= parent_object_type.equality_attributes
674
690
  if parent_eq_attrs.include?(attr_name)
675
691
  including_parent = find_equality_definer_of(attr)
676
- raise Puppet::ParseError, "#{label} equality is referencing #{attr.label} which is included in equality of #{including_parent.label}"
692
+ raise Puppet::ParseError, _("%{label} equality is referencing %{attribute} which is included in equality of %{including_parent}") %
693
+ { label: label, attribute: attr.label, including_parent: including_parent.label }
677
694
  end
678
695
  end
679
696
 
680
697
  unless attr.is_a?(PAttribute)
681
- raise Puppet::ParseError, "#{label} equality is referencing non existent attribute '#{attr_name}'" if attr.nil?
682
- raise Puppet::ParseError, "#{label} equality is referencing #{attr.label}. Only attribute references are allowed"
698
+ if attr.nil?
699
+ raise Puppet::ParseError, _("%{label} equality is referencing non existent attribute '%{attribute}'") % { label: label, attribute: attr_name }
700
+ end
701
+ raise Puppet::ParseError, _("%{label} equality is referencing %{attribute}. Only attribute references are allowed") %
702
+ { label: label, attribute: attr.label }
683
703
  end
684
704
  if attr.kind == ATTRIBUTE_KIND_CONSTANT
685
- raise Puppet::ParseError, "#{label} equality is referencing constant #{attr.label}. Reference to constant is not allowed in equality"
705
+ raise Puppet::ParseError, _("%{label} equality is referencing constant %{attribute}.") % { label: label, attribute: attr.label } + ' ' +
706
+ _("Reference to constant is not allowed in equality")
686
707
  end
687
708
  end
688
709
  end
@@ -163,7 +163,8 @@ class TypeCalculator
163
163
 
164
164
  # Returns an iterable if the t represents something that can be iterated
165
165
  def enumerable(t)
166
- Puppet.deprecation_warning('TypeCalculator.enumerable is deprecated. Use iterable')
166
+ #TRANSLATOR 'TypeCalculator.enumerable' and 'iterable' are methods and should not be translated
167
+ Puppet.deprecation_warning(_('TypeCalculator.enumerable is deprecated. Use iterable'))
167
168
  iterable(t)
168
169
  end
169
170
 
@@ -100,7 +100,9 @@ module TypeFactory
100
100
  size_type_or_value.nil? ? PStringType::DEFAULT : PStringType.new(size_type_or_value)
101
101
  else
102
102
  if Puppet[:strict] != :off
103
- Puppet.warn_once('deprecations', "TypeFactory#string_multi_args", "Passing more than one argument to TypeFactory#string is deprecated")
103
+ #TRANSLATORS 'TypeFactory#string' is a class and method name and should not be translated
104
+ message = _("Passing more than one argument to TypeFactory#string is deprecated")
105
+ Puppet.warn_once('deprecations', "TypeFactory#string_multi_args", message)
104
106
  end
105
107
  deprecated_second_argument.size == 1 ? PStringType.new(deprecated_second_argument[0]) : PEnumType.new(*deprecated_second_argument)
106
108
  end
@@ -286,8 +286,8 @@ module Types
286
286
  a = detailed_actual_to_s(e, a)
287
287
  e = e.map { |t| t.to_alias_expanded_s }
288
288
  else
289
- e = e.map { |t| t.simple_name }.uniq
290
- a = a.simple_name
289
+ e = e.map { |t| short_name(t) }.uniq
290
+ a = short_name(a)
291
291
  end
292
292
  e.insert(0, 'Undef') if optional
293
293
  case e.size
@@ -305,8 +305,8 @@ module Types
305
305
  a = detailed_actual_to_s(e, a)
306
306
  e = e.to_alias_expanded_s
307
307
  else
308
- e = e.simple_name
309
- a = a.simple_name
308
+ e = short_name(e)
309
+ a = short_name(a)
310
310
  end
311
311
  if optional
312
312
  e = "Undef or #{e}"
@@ -326,6 +326,16 @@ module Types
326
326
 
327
327
  private
328
328
 
329
+ def short_name(t)
330
+ # Ensure that Optional, NotUndef, Sensitive, and Type are reported with included
331
+ # type parameter.
332
+ if t.is_a?(PTypeWithContainedType) && !(t.type.nil? || t.type.class == PAnyType)
333
+ "#{t.name}[#{t.type.name}]"
334
+ else
335
+ t.name.nil? ? t.simple_name : t.name
336
+ end
337
+ end
338
+
329
339
  # Answers the question if `e` is a specialized type of `a`
330
340
  # @param e [PAnyType] the expected type
331
341
  # @param a [PAnyType] the actual type
@@ -430,7 +440,7 @@ module Types
430
440
 
431
441
  def actual_string
432
442
  a = actual
433
- a.is_a?(PStringType) && !a.value.nil? ? "'#{a.value}'" : a.simple_name
443
+ a.is_a?(PStringType) && !a.value.nil? ? "'#{a.value}'" : short_name(a)
434
444
  end
435
445
  end
436
446
 
@@ -502,7 +512,10 @@ module Types
502
512
  end
503
513
 
504
514
  def tense_deprecated
505
- Puppet.warn_once('deprecations', 'typemismatch#tense', "Passing a 'tense' argument to the TypeMismatchDescriber is deprecated and ignored. Everything is now reported using present tense")
515
+ #TRANSLATORS TypeMismatchDescriber is a class name and 'tense' is a method name and should not be translated
516
+ message = _("Passing a 'tense' argument to the TypeMismatchDescriber is deprecated and ignored.")
517
+ message += ' ' + _("Everything is now reported using present tense")
518
+ Puppet.warn_once('deprecations', 'typemismatch#tense', message)
506
519
  end
507
520
 
508
521
  # Validates that all entries in the give_hash exists in the given param_struct, that their type conforms
@@ -342,7 +342,7 @@ class TypeParser
342
342
  when 'enum'
343
343
  # 1..m parameters being strings
344
344
  raise_invalid_parameters_error('Enum', '1 or more', parameters.size) unless parameters.size >= 1
345
- parameters.each { |p| raise Puppet::ParseError, 'Enum parameters must be identifiers or strings' unless p.is_a?(String) }
345
+ parameters.each { |p| raise Puppet::ParseError, _('Enum parameters must be identifiers or strings') unless p.is_a?(String) }
346
346
  TypeFactory.enum(*parameters)
347
347
 
348
348
  when 'pattern'
@@ -565,21 +565,21 @@ class TypeParser
565
565
  end
566
566
 
567
567
  def raise_invalid_type_specification_error(ast)
568
- raise Puppet::ParseError,
569
- "The expression <#{original_text_of(ast)}> is not a valid type specification."
568
+ raise Puppet::ParseError, _("The expression <%{expression}> is not a valid type specification.") %
569
+ { expression: original_text_of(ast) }
570
570
  end
571
571
 
572
572
  def raise_invalid_parameters_error(type, required, given)
573
- raise Puppet::ParseError,
574
- "Invalid number of type parameters specified: #{type} requires #{required}, #{given} provided"
573
+ raise Puppet::ParseError, _("Invalid number of type parameters specified: %{type} requires %{required}, %{given} provided") %
574
+ { type: type, required: required, given: given }
575
575
  end
576
576
 
577
577
  def raise_unparameterized_type_error(ast)
578
- raise Puppet::ParseError, "Not a parameterized type <#{original_text_of(ast)}>"
578
+ raise Puppet::ParseError, _("Not a parameterized type <%{type}>") % { type: original_text_of(ast) }
579
579
  end
580
580
 
581
581
  def raise_unknown_type_error(ast)
582
- raise Puppet::ParseError, "Unknown type <#{original_text_of(ast)}>"
582
+ raise Puppet::ParseError, _("Unknown type <%{type}>") % { type: original_text_of(ast) }
583
583
  end
584
584
 
585
585
  def original_text_of(ast)
@@ -939,7 +939,7 @@ class PNumericType < PScalarDataType
939
939
  end
940
940
 
941
941
  def instance?(o, guard = nil)
942
- o.is_a?(Numeric) && o >= @from && o <= @to
942
+ (o.is_a?(Float) || o.is_a?(Integer)) && o >= @from && o <= @to
943
943
  end
944
944
 
945
945
  def unbounded?
@@ -1341,6 +1341,8 @@ class PIterableType < PTypeWithContainedType
1341
1341
  o >= 0
1342
1342
  when PIntegerType
1343
1343
  o.finite_range?
1344
+ when PTypeAliasType
1345
+ instance?(o.resolved_type, guard)
1344
1346
  else
1345
1347
  false
1346
1348
  end
@@ -1427,7 +1429,9 @@ class PStringType < PScalarDataType
1427
1429
  def initialize(size_type_or_value, deprecated_multi_args = EMPTY_ARRAY)
1428
1430
  unless deprecated_multi_args.empty?
1429
1431
  if Puppet[:strict] != :off
1430
- Puppet.warn_once('deprecations', "PStringType#initialize_multi_args", "Passing more than one argument to PStringType#initialize is deprecated")
1432
+ #TRANSLATORS 'PStringType#initialize' is a class and method name and should not be translated
1433
+ Puppet.warn_once('deprecations', "PStringType#initialize_multi_args",
1434
+ _("Passing more than one argument to PStringType#initialize is deprecated"))
1431
1435
  end
1432
1436
  size_type_or_value = deprecated_multi_args[0]
1433
1437
  end
@@ -1480,7 +1484,8 @@ class PStringType < PScalarDataType
1480
1484
  # @api private
1481
1485
  def values
1482
1486
  if Puppet[:strict] != :off
1483
- Puppet.warn_once('deprecations', "PStringType#values", "Method PStringType#values is deprecated. Use #value instead")
1487
+ #TRANSLATORS 'PStringType#values' and '#value' are classes and method names and should not be translated
1488
+ Puppet.warn_once('deprecations', "PStringType#values", _("Method PStringType#values is deprecated. Use #value instead"))
1484
1489
  end
1485
1490
  @value.is_a?(String) ? [@value] : EMPTY_ARRAY
1486
1491
  end
@@ -2599,8 +2604,9 @@ class PHashType < PCollectionType
2599
2604
 
2600
2605
  def element_type
2601
2606
  if Puppet[:strict] != :off
2607
+ #TRANSLATOR 'Puppet::Pops::Types::PHashType#element_type' and '#value_type' are class and method names and should not be translated
2602
2608
  Puppet.warn_once('deprecations', 'Puppet::Pops::Types::PHashType#element_type',
2603
- 'Puppet::Pops::Types::PHashType#element_type is deprecated, use #value_type instead')
2609
+ _('Puppet::Pops::Types::PHashType#element_type is deprecated, use #value_type instead'))
2604
2610
  end
2605
2611
  @value_type
2606
2612
  end
@@ -125,9 +125,15 @@ module Validation
125
125
  # @api public
126
126
  #
127
127
  def []=(issue, level)
128
- raise Puppet::DevError.new("Attempt to set validation severity for something that is not an Issue. (Got #{issue.class})") unless issue.is_a? Issues::Issue
129
- raise Puppet::DevError.new("Illegal severity level: #{level} for '#{issue.issue_code}'") unless @@severity_hash[level]
130
- raise Puppet::DevError.new("Attempt to demote the hard issue '#{issue.issue_code}' to #{level}") unless issue.demotable? || level == :error
128
+ unless issue.is_a? Issues::Issue
129
+ raise Puppet::DevError.new(_("Attempt to set validation severity for something that is not an Issue. (Got %{issue})") % { issue: issue.class })
130
+ end
131
+ unless @@severity_hash[level]
132
+ raise Puppet::DevError.new(_("Illegal severity level: %{level} for '%{issue_code}'") % { issue_code: issue.issue_code, level: level })
133
+ end
134
+ unless issue.demotable? || level == :error
135
+ raise Puppet::DevError.new(_("Attempt to demote the hard issue '%{issue_code}' to %{level}") % { issue_code: issue.issue_code, level: level })
136
+ end
131
137
  @severities[issue] = level
132
138
  end
133
139
 
@@ -145,14 +151,9 @@ module Validation
145
151
  # @api private
146
152
  #
147
153
  def assert_issue issue
148
- raise Puppet::DevError.new("Attempt to get validation severity for something that is not an Issue. (Got #{issue.class})") unless issue.is_a? Issues::Issue
149
- end
150
-
151
- # Checks if the given severity level is valid.
152
- # @api private
153
- #
154
- def assert_severity level
155
- raise Puppet::DevError.new("Illegal severity level: #{option}") unless @@severity_hash[level]
154
+ unless issue.is_a? Issues::Issue
155
+ raise Puppet::DevError.new(_("Attempt to get validation severity for something that is not an Issue. (Got %{issue})") % { issue: issue.class })
156
+ end
156
157
  end
157
158
  end
158
159
 
@@ -203,7 +204,8 @@ module Validation
203
204
  # Accept an Error as semantic if it supports methods #file(), #line(), and #pos()
204
205
  if semantic.is_a?(StandardError)
205
206
  unless semantic.respond_to?(:file) && semantic.respond_to?(:line) && semantic.respond_to?(:pos)
206
- raise Puppet::DevError("Issue #{issue.issue_code}: Cannot pass a #{semantic.class} as a semantic object when it does not support #pos(), #file() and #line()")
207
+ raise Puppet::DevError, _("Issue %{issue_code}: Cannot pass a %{class_name} as a semantic object when it does not support #pos(), #file() and #line()") %
208
+ { issue_code: issue.issue_code, class_name: semantic.class }
207
209
  end
208
210
  end
209
211
 
@@ -95,7 +95,8 @@ class Puppet::Property < Puppet::Parameter
95
95
  #
96
96
  def array_matching=(value)
97
97
  value = value.intern if value.is_a?(String)
98
- raise ArgumentError, "Supported values for Property#array_matching are 'first' and 'all'" unless [:first, :all].include?(value)
98
+ #TRANSLATORS 'Property#array_matching', 'first', and 'all' should not be translated
99
+ raise ArgumentError, _("Supported values for Property#array_matching are 'first' and 'all'") unless [:first, :all].include?(value)
99
100
  @array_matching = value
100
101
  end
101
102
 
@@ -167,7 +168,7 @@ class Puppet::Property < Puppet::Parameter
167
168
  method = value.method.to_sym
168
169
  if value.block
169
170
  if instance_methods(false).include?(method)
170
- raise ArgumentError, "Attempt to redefine method #{method} with block"
171
+ raise ArgumentError, _("Attempt to redefine method %{method} with block") % { method: method }
171
172
  end
172
173
  define_method(method, &value.block)
173
174
  else
@@ -211,7 +212,7 @@ class Puppet::Property < Puppet::Parameter
211
212
  rescue Puppet::Error, Puppet::DevError
212
213
  raise
213
214
  rescue => detail
214
- message = "Could not convert change '#{name}' to string: #{detail}"
215
+ message = _("Could not convert change '%{name}' to string: %{detail}") % { name: name, detail: detail }
215
216
  Puppet.log_exception(detail, message)
216
217
  raise Puppet::DevError, message, detail.backtrace
217
218
  end
@@ -367,7 +368,9 @@ class Puppet::Property < Puppet::Parameter
367
368
  rescue => detail
368
369
  # Certain operations may fail, but we don't want to fail the transaction if we can
369
370
  # avoid it
370
- msg = "Unknown failure using insync_values? on type: #{self.resource.ref} / property: #{self.name} to compare values #{should} and #{is}"
371
+ #TRANSLATORS 'insync_values?' should not be translated
372
+ msg = _("Unknown failure using insync_values? on type: %{type} / property: %{name} to compare values %{should} and %{is}") %
373
+ { type: self.resource.ref, name: self.name, should: should, is: is }
371
374
  Puppet.info(msg)
372
375
 
373
376
  # Return nil, ie. unknown
@@ -489,7 +492,8 @@ class Puppet::Property < Puppet::Parameter
489
492
  rescue Puppet::Error
490
493
  raise
491
494
  rescue => detail
492
- error = Puppet::ResourceError.new("Could not set '#{value}' on #{self.class.name}: #{detail}", @resource.file, @resource.line, detail)
495
+ error = Puppet::ResourceError.new(_("Could not set '%{value}' on %{class_name}: %{detail}") %
496
+ { value: value, class_name: self.class.name, detail: detail }, @resource.file, @resource.line, detail)
493
497
  error.set_backtrace detail.backtrace
494
498
  Puppet.log_exception(detail, error.message)
495
499
  raise error
@@ -584,7 +588,11 @@ class Puppet::Property < Puppet::Parameter
584
588
  if features = self.class.value_option(self.class.value_name(value), :required_features)
585
589
  features = Array(features)
586
590
  needed_features = features.collect { |f| f.to_s }.join(", ")
587
- raise ArgumentError, "Provider #{provider.class.name} must have features '#{needed_features}' to set '#{self.class.name}' to '#{value}'" unless provider.satisfies?(features)
591
+ unless provider.satisfies?(features)
592
+ #TRANSLATORS 'Provider' refers to a Puppet provider class
593
+ raise ArgumentError, _("Provider %{provider} must have features '%{needed_features}' to set '%{property}' to '%{value}'") %
594
+ { provider: provider.class.name, needed_features: needed_features, property: self.class.name, value: value }
595
+ end
588
596
  end
589
597
  end
590
598
 
@@ -59,7 +59,7 @@ class Puppet::Property::Ensure < Puppet::Property
59
59
  rescue Puppet::Error, Puppet::DevError
60
60
  raise
61
61
  rescue => detail
62
- raise Puppet::DevError, "Could not convert change #{self.name} to string: #{detail}", detail.backtrace
62
+ raise Puppet::DevError, _("Could not convert change %{name} to string: %{detail}") % { name: self.name, detail: detail }, detail.backtrace
63
63
  end
64
64
  end
65
65
 
@@ -82,7 +82,7 @@ class Puppet::Property::Ensure < Puppet::Property
82
82
  elsif @resource.respond_to?(:exists?)
83
83
  result = @resource.exists?
84
84
  else
85
- raise Puppet::DevError, "No ability to determine if #{@resource.class.name} exists"
85
+ raise Puppet::DevError, _("No ability to determine if %{name} exists") % { name: @resource.class.name }
86
86
  end
87
87
  if result
88
88
  return :present