puppet 4.10.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1031) hide show
  1. data/CONTRIBUTING.md +17 -0
  2. data/Gemfile +6 -10
  3. data/MAINTAINERS +0 -5
  4. data/Rakefile +2 -1
  5. data/conf/auth.conf +21 -0
  6. data/conf/fileserver.conf +7 -12
  7. data/conf/hiera.yaml +11 -0
  8. data/ext/debian/puppet-common.install +0 -1
  9. data/ext/debian/puppet-common.manpages +0 -2
  10. data/ext/hiera/hiera.yaml +15 -0
  11. data/ext/logcheck/puppet +1 -1
  12. data/ext/project_data.yaml +3 -6
  13. data/ext/puppet-test +0 -24
  14. data/ext/rack/config.ru +2 -2
  15. data/ext/redhat/puppet.spec.erb +0 -3
  16. data/ext/windows/service/daemon.rb +8 -14
  17. data/install.rb +1 -1
  18. data/lib/hiera/puppet_function.rb +1 -1
  19. data/lib/puppet/agent/disabler.rb +3 -3
  20. data/lib/puppet/agent/locker.rb +3 -3
  21. data/lib/puppet/agent.rb +27 -16
  22. data/lib/puppet/application/agent.rb +16 -9
  23. data/lib/puppet/application/apply.rb +19 -17
  24. data/lib/puppet/application/cert.rb +2 -2
  25. data/lib/puppet/application/describe.rb +2 -2
  26. data/lib/puppet/application/device.rb +71 -46
  27. data/lib/puppet/application/doc.rb +9 -9
  28. data/lib/puppet/application/face_base.rb +8 -13
  29. data/lib/puppet/application/filebucket.rb +8 -8
  30. data/lib/puppet/application/lookup.rb +101 -88
  31. data/lib/puppet/application/master.rb +15 -23
  32. data/lib/puppet/application/resource.rb +20 -17
  33. data/lib/puppet/application.rb +11 -11
  34. data/lib/puppet/configurer/downloader.rb +2 -2
  35. data/lib/puppet/configurer/fact_handler.rb +13 -4
  36. data/lib/puppet/configurer.rb +29 -28
  37. data/lib/puppet/context/trusted_information.rb +1 -1
  38. data/lib/puppet/context.rb +5 -5
  39. data/lib/puppet/defaults.rb +58 -104
  40. data/lib/puppet/error.rb +1 -1
  41. data/lib/puppet/etc.rb +75 -39
  42. data/lib/puppet/external/pson/common.rb +4 -0
  43. data/lib/puppet/face/ca.rb +50 -43
  44. data/lib/puppet/face/catalog/select.rb +4 -4
  45. data/lib/puppet/face/catalog.rb +2 -2
  46. data/lib/puppet/face/certificate.rb +21 -21
  47. data/lib/puppet/face/certificate_request.rb +1 -1
  48. data/lib/puppet/face/certificate_revocation_list.rb +1 -1
  49. data/lib/puppet/face/config.rb +10 -10
  50. data/lib/puppet/face/epp.rb +38 -38
  51. data/lib/puppet/face/facts.rb +5 -5
  52. data/lib/puppet/face/generate.rb +8 -8
  53. data/lib/puppet/face/help.rb +8 -8
  54. data/lib/puppet/face/key.rb +3 -3
  55. data/lib/puppet/face/man.rb +7 -7
  56. data/lib/puppet/face/module/build.rb +7 -7
  57. data/lib/puppet/face/module/changes.rb +6 -6
  58. data/lib/puppet/face/module/generate.rb +24 -24
  59. data/lib/puppet/face/module/install.rb +13 -9
  60. data/lib/puppet/face/module/list.rb +16 -12
  61. data/lib/puppet/face/module/search.rb +4 -4
  62. data/lib/puppet/face/module/uninstall.rb +13 -10
  63. data/lib/puppet/face/module/upgrade.rb +11 -7
  64. data/lib/puppet/face/module.rb +3 -3
  65. data/lib/puppet/face/node/clean.rb +8 -8
  66. data/lib/puppet/face/node.rb +6 -6
  67. data/lib/puppet/face/parser.rb +17 -17
  68. data/lib/puppet/face/plugin.rb +7 -7
  69. data/lib/puppet/face/report.rb +10 -10
  70. data/lib/puppet/face/resource.rb +13 -13
  71. data/lib/puppet/face/status.rb +5 -5
  72. data/lib/puppet/feature/base.rb +4 -3
  73. data/lib/puppet/feature/eventlog.rb +1 -1
  74. data/lib/puppet/file_bucket/dipper.rb +9 -9
  75. data/lib/puppet/file_bucket/file.rb +4 -17
  76. data/lib/puppet/file_serving/base.rb +3 -3
  77. data/lib/puppet/file_serving/configuration/parser.rb +12 -12
  78. data/lib/puppet/file_serving/configuration.rb +3 -3
  79. data/lib/puppet/file_serving/content.rb +1 -1
  80. data/lib/puppet/file_serving/fileset.rb +7 -5
  81. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  82. data/lib/puppet/file_serving/metadata.rb +9 -9
  83. data/lib/puppet/file_serving/mount/file.rb +6 -6
  84. data/lib/puppet/file_serving/mount/modules.rb +1 -1
  85. data/lib/puppet/file_serving/mount.rb +1 -1
  86. data/lib/puppet/file_serving/terminus_selector.rb +1 -1
  87. data/lib/puppet/file_system/file_impl.rb +2 -2
  88. data/lib/puppet/file_system/memory_impl.rb +1 -1
  89. data/lib/puppet/file_system/path_pattern.rb +6 -6
  90. data/lib/puppet/file_system/uniquefile.rb +2 -2
  91. data/lib/puppet/file_system/windows.rb +3 -3
  92. data/lib/puppet/forge/cache.rb +1 -0
  93. data/lib/puppet/forge/errors.rb +12 -12
  94. data/lib/puppet/forge/repository.rb +2 -1
  95. data/lib/puppet/forge.rb +10 -8
  96. data/lib/puppet/functions/annotate.rb +108 -0
  97. data/lib/puppet/functions/binary_file.rb +1 -1
  98. data/lib/puppet/functions/call.rb +42 -0
  99. data/lib/puppet/functions/defined.rb +4 -4
  100. data/lib/puppet/functions/dig.rb +1 -1
  101. data/lib/puppet/functions/eyaml_lookup_key.rb +16 -12
  102. data/lib/puppet/functions/hiera.rb +9 -2
  103. data/lib/puppet/functions/hiera_array.rb +9 -2
  104. data/lib/puppet/functions/hiera_hash.rb +10 -2
  105. data/lib/puppet/functions/hiera_include.rb +18 -4
  106. data/lib/puppet/functions/hocon_data.rb +8 -2
  107. data/lib/puppet/functions/json_data.rb +5 -1
  108. data/lib/puppet/functions/match.rb +2 -2
  109. data/lib/puppet/functions/reduce.rb +14 -2
  110. data/lib/puppet/functions/require.rb +1 -1
  111. data/lib/puppet/functions/slice.rb +3 -3
  112. data/lib/puppet/functions/strftime.rb +10 -2
  113. data/lib/puppet/functions/unique.rb +132 -0
  114. data/lib/puppet/functions/yaml_data.rb +4 -0
  115. data/lib/puppet/functions.rb +17 -45
  116. data/lib/puppet/generate/models/type/type.rb +6 -5
  117. data/lib/puppet/generate/templates/type/pcore.erb +1 -1
  118. data/lib/puppet/generate/type.rb +12 -12
  119. data/lib/puppet/graph/relationship_graph.rb +4 -1
  120. data/lib/puppet/graph/simple_graph.rb +45 -66
  121. data/lib/puppet/indirector/catalog/compiler.rb +61 -44
  122. data/lib/puppet/indirector/catalog/json.rb +18 -0
  123. data/lib/puppet/indirector/certificate/disabled_ca.rb +1 -1
  124. data/lib/puppet/indirector/certificate_request/ca.rb +3 -3
  125. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +1 -1
  126. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +1 -1
  127. data/lib/puppet/indirector/certificate_status/file.rb +6 -6
  128. data/lib/puppet/indirector/exec.rb +2 -2
  129. data/lib/puppet/indirector/face.rb +18 -18
  130. data/lib/puppet/indirector/file_bucket_file/file.rb +9 -8
  131. data/lib/puppet/indirector/file_metadata/http.rb +1 -1
  132. data/lib/puppet/indirector/file_server.rb +10 -2
  133. data/lib/puppet/indirector/hiera.rb +5 -3
  134. data/lib/puppet/indirector/indirection.rb +13 -15
  135. data/lib/puppet/indirector/json.rb +11 -12
  136. data/lib/puppet/indirector/key/disabled_ca.rb +1 -1
  137. data/lib/puppet/indirector/key/file.rb +2 -2
  138. data/lib/puppet/indirector/ldap.rb +6 -5
  139. data/lib/puppet/indirector/memory.rb +1 -1
  140. data/lib/puppet/indirector/msgpack.rb +8 -7
  141. data/lib/puppet/indirector/node/exec.rb +8 -6
  142. data/lib/puppet/indirector/node/ldap.rb +9 -7
  143. data/lib/puppet/indirector/node/plain.rb +2 -1
  144. data/lib/puppet/indirector/node/write_only_yaml.rb +6 -1
  145. data/lib/puppet/indirector/node/yaml.rb +0 -9
  146. data/lib/puppet/indirector/report/processor.rb +2 -2
  147. data/lib/puppet/indirector/report/rest.rb +13 -0
  148. data/lib/puppet/indirector/request.rb +9 -16
  149. data/lib/puppet/indirector/resource/ral.rb +1 -1
  150. data/lib/puppet/indirector/resource/validator.rb +1 -1
  151. data/lib/puppet/indirector/rest.rb +28 -10
  152. data/lib/puppet/indirector/ssl_file.rb +9 -9
  153. data/lib/puppet/indirector/terminus.rb +3 -3
  154. data/lib/puppet/indirector/yaml.rb +5 -5
  155. data/lib/puppet/indirector.rb +2 -2
  156. data/lib/puppet/info_service/class_information_service.rb +4 -5
  157. data/lib/puppet/interface/face_collection.rb +6 -1
  158. data/lib/puppet/interface.rb +2 -6
  159. data/lib/puppet/module.rb +12 -7
  160. data/lib/puppet/module_tool/applications/application.rb +8 -9
  161. data/lib/puppet/module_tool/applications/builder.rb +5 -6
  162. data/lib/puppet/module_tool/applications/checksummer.rb +2 -2
  163. data/lib/puppet/module_tool/applications/installer.rb +11 -10
  164. data/lib/puppet/module_tool/applications/searcher.rb +1 -1
  165. data/lib/puppet/module_tool/applications/uninstaller.rb +2 -1
  166. data/lib/puppet/module_tool/applications/unpacker.rb +3 -3
  167. data/lib/puppet/module_tool/applications/upgrader.rb +10 -9
  168. data/lib/puppet/module_tool/contents_description.rb +1 -1
  169. data/lib/puppet/module_tool/dependency.rb +0 -1
  170. data/lib/puppet/module_tool/errors/installer.rb +22 -22
  171. data/lib/puppet/module_tool/errors/shared.rb +44 -42
  172. data/lib/puppet/module_tool/errors/uninstaller.rb +13 -9
  173. data/lib/puppet/module_tool/errors/upgrader.rb +11 -11
  174. data/lib/puppet/module_tool/install_directory.rb +1 -1
  175. data/lib/puppet/module_tool/installed_modules.rb +3 -3
  176. data/lib/puppet/module_tool/local_tarball.rb +4 -4
  177. data/lib/puppet/module_tool/metadata.rb +16 -13
  178. data/lib/puppet/module_tool/shared_behaviors.rb +6 -6
  179. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +1 -1
  180. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +10 -4
  181. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +2 -2
  182. data/lib/puppet/module_tool/skeleton/templates/generator/examples/init.pp.erb +1 -1
  183. data/lib/puppet/module_tool/tar.rb +5 -4
  184. data/lib/puppet/module_tool.rb +7 -3
  185. data/lib/puppet/network/auth_config_parser.rb +12 -11
  186. data/lib/puppet/network/authconfig.rb +2 -2
  187. data/lib/puppet/network/authstore.rb +2 -2
  188. data/lib/puppet/network/format.rb +7 -7
  189. data/lib/puppet/network/format_handler.rb +12 -9
  190. data/lib/puppet/network/format_support.rb +11 -5
  191. data/lib/puppet/network/formats.rb +38 -27
  192. data/lib/puppet/network/http/api/indirected_routes.rb +72 -33
  193. data/lib/puppet/network/http/api/master/v3/environment.rb +33 -14
  194. data/lib/puppet/network/http/compression.rb +10 -7
  195. data/lib/puppet/network/http/connection.rb +19 -15
  196. data/lib/puppet/network/http/error.rb +14 -10
  197. data/lib/puppet/network/http/handler.rb +8 -4
  198. data/lib/puppet/network/http/issues.rb +1 -0
  199. data/lib/puppet/network/http/pool.rb +1 -1
  200. data/lib/puppet/network/http/rack/rest.rb +3 -2
  201. data/lib/puppet/network/http/rack.rb +2 -2
  202. data/lib/puppet/network/http/request.rb +34 -20
  203. data/lib/puppet/network/http/response.rb +13 -1
  204. data/lib/puppet/network/http/webrick/rest.rb +2 -2
  205. data/lib/puppet/network/http/webrick.rb +5 -5
  206. data/lib/puppet/network/rights.rb +6 -6
  207. data/lib/puppet/network/server.rb +2 -2
  208. data/lib/puppet/node/environment.rb +21 -4
  209. data/lib/puppet/node/facts.rb +0 -5
  210. data/lib/puppet/node.rb +25 -13
  211. data/lib/puppet/parameter/package_options.rb +1 -1
  212. data/lib/puppet/parameter/path.rb +3 -3
  213. data/lib/puppet/parameter/value_collection.rb +4 -4
  214. data/lib/puppet/parameter.rb +3 -28
  215. data/lib/puppet/parser/ast/node.rb +1 -1
  216. data/lib/puppet/parser/ast/pops_bridge.rb +3 -3
  217. data/lib/puppet/parser/ast/resource.rb +1 -1
  218. data/lib/puppet/parser/ast/resource_instance.rb +1 -1
  219. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  220. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -2
  221. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +6 -9
  222. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +1 -1
  223. data/lib/puppet/parser/compiler.rb +44 -113
  224. data/lib/puppet/parser/e4_parser_adapter.rb +1 -2
  225. data/lib/puppet/parser/environment_compiler.rb +13 -15
  226. data/lib/puppet/parser/functions/contain.rb +1 -1
  227. data/lib/puppet/parser/functions/create_resources.rb +11 -3
  228. data/lib/puppet/parser/functions/file.rb +1 -1
  229. data/lib/puppet/parser/functions/generate.rb +5 -4
  230. data/lib/puppet/parser/functions/hiera_include.rb +1 -1
  231. data/lib/puppet/parser/functions/include.rb +2 -1
  232. data/lib/puppet/parser/functions/inline_template.rb +1 -1
  233. data/lib/puppet/parser/functions/new.rb +14 -1
  234. data/lib/puppet/parser/functions/require.rb +1 -1
  235. data/lib/puppet/parser/functions.rb +6 -6
  236. data/lib/puppet/parser/parser_factory.rb +0 -30
  237. data/lib/puppet/parser/relationship.rb +49 -20
  238. data/lib/puppet/parser/resource/param.rb +0 -3
  239. data/lib/puppet/parser/resource.rb +31 -30
  240. data/lib/puppet/parser/scope.rb +124 -170
  241. data/lib/puppet/parser/templatewrapper.rb +2 -2
  242. data/lib/puppet/parser/type_loader.rb +1 -1
  243. data/lib/puppet/plugins/configuration.rb +15 -67
  244. data/lib/puppet/plugins/syntax_checkers.rb +6 -11
  245. data/lib/puppet/pops/adaptable.rb +8 -3
  246. data/lib/puppet/pops/adapters.rb +33 -87
  247. data/lib/puppet/pops/evaluator/access_operator.rb +10 -39
  248. data/lib/puppet/pops/evaluator/collector_transformer.rb +9 -14
  249. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +2 -2
  250. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +3 -3
  251. data/lib/puppet/pops/evaluator/compare_operator.rb +7 -7
  252. data/lib/puppet/pops/evaluator/epp_evaluator.rb +1 -1
  253. data/lib/puppet/pops/evaluator/evaluator_impl.rb +45 -37
  254. data/lib/puppet/pops/evaluator/external_syntax_support.rb +2 -9
  255. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -2
  256. data/lib/puppet/pops/evaluator/puppet_proc.rb +1 -1
  257. data/lib/puppet/pops/evaluator/relationship_operator.rb +26 -9
  258. data/lib/puppet/pops/evaluator/runtime3_converter.rb +17 -1
  259. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +0 -2
  260. data/lib/puppet/pops/evaluator/runtime3_support.rb +44 -30
  261. data/lib/puppet/pops/functions/dispatch.rb +1 -6
  262. data/lib/puppet/pops/issues.rb +189 -161
  263. data/lib/puppet/pops/loader/base_loader.rb +2 -2
  264. data/lib/puppet/pops/loader/gem_support.rb +2 -2
  265. data/lib/puppet/pops/loader/loader.rb +4 -0
  266. data/lib/puppet/pops/loader/module_loaders.rb +59 -10
  267. data/lib/puppet/pops/loader/predefined_loader.rb +1 -6
  268. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +8 -8
  269. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +9 -10
  270. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +3 -3
  271. data/lib/puppet/pops/loader/static_loader.rb +32 -63
  272. data/lib/puppet/pops/loader/type_definition_instantiator.rb +8 -8
  273. data/lib/puppet/pops/loader/typed_name.rb +6 -0
  274. data/lib/puppet/pops/loaders.rb +22 -20
  275. data/lib/puppet/pops/lookup/context.rb +1 -1
  276. data/lib/puppet/pops/lookup/data_provider.rb +3 -18
  277. data/lib/puppet/pops/lookup/environment_data_provider.rb +1 -1
  278. data/lib/puppet/pops/lookup/global_data_provider.rb +7 -10
  279. data/lib/puppet/pops/lookup/hiera_config.rb +13 -34
  280. data/lib/puppet/pops/lookup/interpolation.rb +9 -8
  281. data/lib/puppet/pops/lookup/invocation.rb +13 -3
  282. data/lib/puppet/pops/lookup/lookup_adapter.rb +30 -69
  283. data/lib/puppet/pops/lookup/lookup_key.rb +2 -2
  284. data/lib/puppet/pops/lookup/module_data_provider.rb +11 -3
  285. data/lib/puppet/pops/lookup/sub_lookup.rb +12 -10
  286. data/lib/puppet/pops/lookup.rb +7 -5
  287. data/lib/puppet/pops/merge_strategy.rb +16 -1
  288. data/lib/puppet/pops/model/ast.pp +692 -0
  289. data/lib/puppet/pops/model/ast.rb +4833 -0
  290. data/lib/puppet/pops/model/ast_transformer.rb +9 -10
  291. data/lib/puppet/pops/model/factory.rb +454 -527
  292. data/lib/puppet/pops/model/model_label_provider.rb +3 -2
  293. data/lib/puppet/pops/model/model_tree_dumper.rb +8 -7
  294. data/lib/puppet/pops/parser/egrammar.ra +66 -60
  295. data/lib/puppet/pops/parser/eparser.rb +1483 -1578
  296. data/lib/puppet/pops/parser/evaluating_parser.rb +5 -5
  297. data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
  298. data/lib/puppet/pops/parser/lexer2.rb +27 -36
  299. data/lib/puppet/pops/parser/locator.rb +39 -16
  300. data/lib/puppet/pops/parser/parser_support.rb +25 -29
  301. data/lib/puppet/pops/pcore.rb +28 -21
  302. data/lib/puppet/pops/resource/param.rb +1 -1
  303. data/lib/puppet/pops/resource/resource_type_impl.rb +3 -3
  304. data/lib/puppet/pops/semantic_error.rb +12 -0
  305. data/lib/puppet/pops/serialization/abstract_writer.rb +9 -1
  306. data/lib/puppet/pops/serialization/deserializer.rb +8 -5
  307. data/lib/puppet/pops/serialization/from_data_converter.rb +181 -0
  308. data/lib/puppet/pops/serialization/json.rb +4 -4
  309. data/lib/puppet/pops/serialization/json_path.rb +126 -0
  310. data/lib/puppet/pops/serialization/object.rb +6 -6
  311. data/lib/puppet/pops/serialization/serializer.rb +32 -11
  312. data/lib/puppet/pops/serialization/to_data_converter.rb +292 -0
  313. data/lib/puppet/pops/serialization.rb +25 -1
  314. data/lib/puppet/pops/time/timespan.rb +11 -11
  315. data/lib/puppet/pops/time/timestamp.rb +8 -8
  316. data/lib/puppet/pops/types/annotatable.rb +7 -7
  317. data/lib/puppet/pops/types/annotation.rb +71 -0
  318. data/lib/puppet/pops/types/class_loader.rb +4 -6
  319. data/lib/puppet/pops/types/enumeration.rb +2 -2
  320. data/lib/puppet/pops/types/iterable.rb +2 -2
  321. data/lib/puppet/pops/types/p_binary_type.rb +7 -1
  322. data/lib/puppet/pops/types/p_meta_type.rb +16 -12
  323. data/lib/puppet/pops/types/p_object_type.rb +135 -96
  324. data/lib/puppet/pops/types/p_runtime_type.rb +1 -1
  325. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +6 -2
  326. data/lib/puppet/pops/types/p_timespan_type.rb +55 -4
  327. data/lib/puppet/pops/types/p_type_set_type.rb +44 -36
  328. data/lib/puppet/pops/types/puppet_object.rb +13 -3
  329. data/lib/puppet/pops/types/ruby_generator.rb +291 -127
  330. data/lib/puppet/pops/types/ruby_method.rb +31 -0
  331. data/lib/puppet/pops/types/string_converter.rb +125 -59
  332. data/lib/puppet/pops/types/type_calculator.rb +55 -93
  333. data/lib/puppet/pops/types/type_factory.rb +34 -6
  334. data/lib/puppet/pops/types/type_formatter.rb +63 -15
  335. data/lib/puppet/pops/types/type_mismatch_describer.rb +8 -7
  336. data/lib/puppet/pops/types/type_parser.rb +28 -13
  337. data/lib/puppet/pops/types/type_set_reference.rb +7 -7
  338. data/lib/puppet/pops/types/types.rb +186 -186
  339. data/lib/puppet/pops/utils.rb +0 -24
  340. data/lib/puppet/pops/validation/checker4_0.rb +89 -75
  341. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
  342. data/lib/puppet/pops/validation.rb +3 -9
  343. data/lib/puppet/pops/visitor.rb +21 -0
  344. data/lib/puppet/pops.rb +7 -37
  345. data/lib/puppet/property/ensure.rb +3 -3
  346. data/lib/puppet/property/list.rb +1 -10
  347. data/lib/puppet/property.rb +17 -14
  348. data/lib/puppet/provider/aixobject.rb +7 -7
  349. data/lib/puppet/provider/augeas/augeas.rb +37 -37
  350. data/lib/puppet/provider/command.rb +1 -1
  351. data/lib/puppet/provider/cron/crontab.rb +2 -2
  352. data/lib/puppet/provider/exec/posix.rb +4 -4
  353. data/lib/puppet/provider/exec/windows.rb +3 -3
  354. data/lib/puppet/provider/exec.rb +4 -4
  355. data/lib/puppet/provider/file/posix.rb +5 -5
  356. data/lib/puppet/provider/file/windows.rb +4 -4
  357. data/lib/puppet/provider/group/aix.rb +2 -2
  358. data/lib/puppet/provider/group/groupadd.rb +2 -2
  359. data/lib/puppet/provider/group/pw.rb +1 -1
  360. data/lib/puppet/provider/host/parsed.rb +1 -1
  361. data/lib/puppet/provider/macauthorization/macauthorization.rb +9 -9
  362. data/lib/puppet/provider/maillist/mailman.rb +2 -2
  363. data/lib/puppet/provider/mcx/mcxcontent.rb +3 -3
  364. data/lib/puppet/provider/mount/parsed.rb +10 -8
  365. data/lib/puppet/provider/mount.rb +2 -1
  366. data/lib/puppet/provider/naginator.rb +1 -1
  367. data/lib/puppet/provider/nameservice/directoryservice.rb +11 -11
  368. data/lib/puppet/provider/nameservice.rb +18 -10
  369. data/lib/puppet/provider/network_device.rb +2 -1
  370. data/lib/puppet/provider/package/aix.rb +5 -5
  371. data/lib/puppet/provider/package/appdmg.rb +2 -2
  372. data/lib/puppet/provider/package/apple.rb +1 -1
  373. data/lib/puppet/provider/package/apt.rb +4 -4
  374. data/lib/puppet/provider/package/aptitude.rb +1 -1
  375. data/lib/puppet/provider/package/aptrpm.rb +2 -2
  376. data/lib/puppet/provider/package/blastwave.rb +4 -4
  377. data/lib/puppet/provider/package/dpkg.rb +3 -3
  378. data/lib/puppet/provider/package/fink.rb +3 -3
  379. data/lib/puppet/provider/package/freebsd.rb +1 -1
  380. data/lib/puppet/provider/package/gem.rb +6 -6
  381. data/lib/puppet/provider/package/hpux.rb +1 -1
  382. data/lib/puppet/provider/package/nim.rb +15 -12
  383. data/lib/puppet/provider/package/openbsd.rb +4 -4
  384. data/lib/puppet/provider/package/opkg.rb +1 -1
  385. data/lib/puppet/provider/package/pacman.rb +9 -9
  386. data/lib/puppet/provider/package/pkg.rb +9 -9
  387. data/lib/puppet/provider/package/pkgdmg.rb +4 -4
  388. data/lib/puppet/provider/package/pkgin.rb +3 -3
  389. data/lib/puppet/provider/package/pkgng.rb +1 -1
  390. data/lib/puppet/provider/package/pkgutil.rb +6 -6
  391. data/lib/puppet/provider/package/portage.rb +167 -59
  392. data/lib/puppet/provider/package/ports.rb +3 -3
  393. data/lib/puppet/provider/package/portupgrade.rb +4 -4
  394. data/lib/puppet/provider/package/rpm.rb +7 -4
  395. data/lib/puppet/provider/package/rug.rb +1 -1
  396. data/lib/puppet/provider/package/sun.rb +3 -2
  397. data/lib/puppet/provider/package/up2date.rb +1 -1
  398. data/lib/puppet/provider/package/urpmi.rb +1 -1
  399. data/lib/puppet/provider/package/windows/package.rb +3 -3
  400. data/lib/puppet/provider/package/windows.rb +4 -4
  401. data/lib/puppet/provider/package/yum.rb +13 -13
  402. data/lib/puppet/provider/package/zypper.rb +1 -1
  403. data/lib/puppet/provider/parsedfile.rb +1 -1
  404. data/lib/puppet/provider/service/upstart.rb +0 -2
  405. data/lib/puppet/provider/user/aix.rb +1 -1
  406. data/lib/puppet/provider/user/ldap.rb +1 -1
  407. data/lib/puppet/provider/user/useradd.rb +1 -1
  408. data/lib/puppet/provider/yumrepo/inifile.rb +3 -3
  409. data/lib/puppet/provider.rb +2 -0
  410. data/lib/puppet/reference/configuration.rb +1 -1
  411. data/lib/puppet/reference/indirection.rb +1 -1
  412. data/lib/puppet/reference/metaparameter.rb +1 -1
  413. data/lib/puppet/reference/providers.rb +6 -6
  414. data/lib/puppet/reference/type.rb +2 -2
  415. data/lib/puppet/relationship.rb +7 -9
  416. data/lib/puppet/reports/http.rb +6 -2
  417. data/lib/puppet/resource/capability_finder.rb +2 -2
  418. data/lib/puppet/resource/catalog.rb +26 -41
  419. data/lib/puppet/resource/status.rb +13 -24
  420. data/lib/puppet/resource/type.rb +13 -61
  421. data/lib/puppet/resource/type_collection.rb +30 -23
  422. data/lib/puppet/resource.rb +85 -108
  423. data/lib/puppet/settings/array_setting.rb +1 -1
  424. data/lib/puppet/settings/autosign_setting.rb +1 -1
  425. data/lib/puppet/settings/boolean_setting.rb +1 -1
  426. data/lib/puppet/settings/config_file.rb +2 -2
  427. data/lib/puppet/settings/duration_setting.rb +1 -1
  428. data/lib/puppet/settings/enum_setting.rb +1 -1
  429. data/lib/puppet/settings/environment_conf.rb +2 -2
  430. data/lib/puppet/settings/file_setting.rb +2 -2
  431. data/lib/puppet/settings/priority_setting.rb +1 -1
  432. data/lib/puppet/settings/server_list_setting.rb +1 -1
  433. data/lib/puppet/settings/symbolic_enum_setting.rb +1 -1
  434. data/lib/puppet/settings/terminus_setting.rb +1 -1
  435. data/lib/puppet/settings/ttl_setting.rb +2 -2
  436. data/lib/puppet/settings.rb +1 -1
  437. data/lib/puppet/ssl/base.rb +2 -2
  438. data/lib/puppet/ssl/certificate_authority/interface.rb +13 -13
  439. data/lib/puppet/ssl/certificate_authority.rb +21 -21
  440. data/lib/puppet/ssl/certificate_factory.rb +2 -2
  441. data/lib/puppet/ssl/certificate_request.rb +14 -14
  442. data/lib/puppet/ssl/certificate_request_attributes.rb +3 -3
  443. data/lib/puppet/ssl/certificate_revocation_list.rb +3 -3
  444. data/lib/puppet/ssl/host.rb +29 -29
  445. data/lib/puppet/ssl/inventory.rb +1 -1
  446. data/lib/puppet/ssl/key.rb +1 -1
  447. data/lib/puppet/ssl/oids.rb +5 -5
  448. data/lib/puppet/ssl/validator/default_validator.rb +3 -4
  449. data/lib/puppet/syntax_checkers/base64.rb +7 -7
  450. data/lib/puppet/syntax_checkers/json.rb +5 -5
  451. data/lib/puppet/test/test_helper.rb +0 -4
  452. data/lib/puppet/transaction/additional_resource_generator.rb +4 -3
  453. data/lib/puppet/transaction/event.rb +19 -8
  454. data/lib/puppet/transaction/event_manager.rb +6 -6
  455. data/lib/puppet/transaction/persistence.rb +6 -6
  456. data/lib/puppet/transaction/report.rb +35 -41
  457. data/lib/puppet/transaction/resource_harness.rb +14 -12
  458. data/lib/puppet/transaction.rb +38 -20
  459. data/lib/puppet/type/augeas.rb +2 -2
  460. data/lib/puppet/type/cron.rb +14 -31
  461. data/lib/puppet/type/exec.rb +48 -42
  462. data/lib/puppet/type/file/content.rb +1 -1
  463. data/lib/puppet/type/file/group.rb +3 -3
  464. data/lib/puppet/type/file/mode.rb +10 -6
  465. data/lib/puppet/type/file/owner.rb +3 -3
  466. data/lib/puppet/type/file/selcontext.rb +18 -1
  467. data/lib/puppet/type/file/source.rb +14 -4
  468. data/lib/puppet/type/file.rb +21 -22
  469. data/lib/puppet/type/filebucket.rb +3 -8
  470. data/lib/puppet/type/group.rb +2 -2
  471. data/lib/puppet/type/host.rb +6 -6
  472. data/lib/puppet/type/interface.rb +1 -1
  473. data/lib/puppet/type/k5login.rb +1 -1
  474. data/lib/puppet/type/macauthorization.rb +1 -1
  475. data/lib/puppet/type/mailalias.rb +2 -18
  476. data/lib/puppet/type/maillist.rb +1 -1
  477. data/lib/puppet/type/mount.rb +8 -8
  478. data/lib/puppet/type/notify.rb +2 -0
  479. data/lib/puppet/type/package.rb +5 -5
  480. data/lib/puppet/type/resources.rb +6 -6
  481. data/lib/puppet/type/schedule.rb +9 -9
  482. data/lib/puppet/type/scheduled_task.rb +4 -4
  483. data/lib/puppet/type/service.rb +1 -1
  484. data/lib/puppet/type/ssh_authorized_key.rb +3 -19
  485. data/lib/puppet/type/sshkey.rb +4 -4
  486. data/lib/puppet/type/tidy.rb +15 -11
  487. data/lib/puppet/type/user.rb +29 -27
  488. data/lib/puppet/type/yumrepo.rb +8 -8
  489. data/lib/puppet/type/zone.rb +7 -7
  490. data/lib/puppet/type/zpool.rb +3 -3
  491. data/lib/puppet/type.rb +0 -6
  492. data/lib/puppet/util/at_fork/noop.rb +18 -0
  493. data/lib/puppet/util/at_fork/solaris.rb +158 -0
  494. data/lib/puppet/util/at_fork.rb +35 -0
  495. data/lib/puppet/util/autoload.rb +2 -2
  496. data/lib/puppet/util/backups.rb +6 -6
  497. data/lib/puppet/util/character_encoding.rb +77 -74
  498. data/lib/puppet/util/classgen.rb +4 -4
  499. data/lib/puppet/util/command_line/puppet_option_parser.rb +3 -3
  500. data/lib/puppet/util/command_line/trollop.rb +31 -31
  501. data/lib/puppet/util/command_line.rb +4 -4
  502. data/lib/puppet/util/diff.rb +1 -1
  503. data/lib/puppet/util/errors.rb +4 -4
  504. data/lib/puppet/util/execution.rb +8 -8
  505. data/lib/puppet/util/feature.rb +5 -5
  506. data/lib/puppet/util/fileparsing.rb +8 -8
  507. data/lib/puppet/util/filetype.rb +15 -15
  508. data/lib/puppet/util/http_proxy.rb +1 -1
  509. data/lib/puppet/util/inifile.rb +4 -4
  510. data/lib/puppet/util/instance_loader.rb +1 -1
  511. data/lib/puppet/util/json_lockfile.rb +4 -4
  512. data/lib/puppet/util/ldap/connection.rb +2 -2
  513. data/lib/puppet/util/ldap/manager.rb +2 -2
  514. data/lib/puppet/util/limits.rb +1 -1
  515. data/lib/puppet/util/log/destinations.rb +10 -16
  516. data/lib/puppet/util/log.rb +23 -16
  517. data/lib/puppet/util/logging.rb +11 -8
  518. data/lib/puppet/util/metric.rb +9 -6
  519. data/lib/puppet/util/monkey_patches.rb +30 -67
  520. data/lib/puppet/util/network_device/cisco/device.rb +7 -7
  521. data/lib/puppet/util/network_device/cisco/interface.rb +1 -1
  522. data/lib/puppet/util/network_device/config.rb +6 -6
  523. data/lib/puppet/util/network_device/transport/ssh.rb +6 -6
  524. data/lib/puppet/util/network_device.rb +1 -1
  525. data/lib/puppet/util/plist.rb +4 -2
  526. data/lib/puppet/util/posix.rb +5 -5
  527. data/lib/puppet/util/profiler/wall_clock.rb +1 -1
  528. data/lib/puppet/util/provider_features.rb +1 -1
  529. data/lib/puppet/util/psych_support.rb +3 -11
  530. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
  531. data/lib/puppet/util/rdoc.rb +4 -4
  532. data/lib/puppet/util/reference.rb +5 -5
  533. data/lib/puppet/util/resource_template.rb +1 -1
  534. data/lib/puppet/util/retry_action.rb +2 -2
  535. data/lib/puppet/util/selinux.rb +54 -12
  536. data/lib/puppet/util/splayer.rb +1 -1
  537. data/lib/puppet/util/storage.rb +5 -5
  538. data/lib/puppet/util/suidmanager.rb +4 -4
  539. data/lib/puppet/util/symbolic_file_mode.rb +9 -9
  540. data/lib/puppet/util/tag_set.rb +1 -4
  541. data/lib/puppet/util/tagging.rb +2 -2
  542. data/lib/puppet/util/windows/adsi.rb +14 -14
  543. data/lib/puppet/util/windows/api_types.rb +5 -2
  544. data/lib/puppet/util/windows/com.rb +4 -4
  545. data/lib/puppet/util/windows/error.rb +2 -2
  546. data/lib/puppet/util/windows/eventlog.rb +192 -0
  547. data/lib/puppet/util/windows/file.rb +4 -4
  548. data/lib/puppet/util/windows/principal.rb +6 -5
  549. data/lib/puppet/util/windows/process.rb +5 -5
  550. data/lib/puppet/util/windows/registry.rb +11 -11
  551. data/lib/puppet/util/windows/root_certs.rb +1 -1
  552. data/lib/puppet/util/windows/security.rb +14 -14
  553. data/lib/puppet/util/windows/sid.rb +6 -6
  554. data/lib/puppet/util/windows/taskscheduler.rb +62 -62
  555. data/lib/puppet/util/windows/user.rb +6 -6
  556. data/lib/puppet/util/windows.rb +2 -0
  557. data/lib/puppet/util.rb +138 -14
  558. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +1 -1
  559. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +122 -114
  560. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +678 -342
  561. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +2 -10
  562. data/lib/puppet/version.rb +1 -1
  563. data/lib/puppet.rb +47 -33
  564. data/locales/config.yaml +1 -1
  565. data/locales/puppet.pot +7931 -29
  566. data/man/man5/puppet.conf.5 +0 -22
  567. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json +9 -0
  568. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json +9 -0
  569. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json +9 -0
  570. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json +9 -0
  571. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json +9 -0
  572. data/spec/integration/application/apply_spec.rb +29 -22
  573. data/spec/integration/configurer_spec.rb +1 -1
  574. data/spec/integration/defaults_spec.rb +2 -2
  575. data/spec/integration/faces/documentation_spec.rb +2 -2
  576. data/spec/integration/indirector/file_content/file_server_spec.rb +1 -0
  577. data/spec/integration/indirector/file_metadata/file_server_spec.rb +1 -0
  578. data/spec/integration/parser/catalog_spec.rb +1 -1
  579. data/spec/integration/parser/class_spec.rb +6 -6
  580. data/spec/integration/parser/compiler_spec.rb +184 -142
  581. data/spec/integration/parser/dynamic_scoping_spec.rb +0 -1
  582. data/spec/integration/parser/pcore_resource_spec.rb +15 -0
  583. data/spec/integration/parser/scope_spec.rb +53 -4
  584. data/spec/integration/resource/catalog_spec.rb +0 -4
  585. data/spec/integration/resource/type_collection_spec.rb +6 -0
  586. data/spec/integration/transaction/report_spec.rb +2 -2
  587. data/spec/integration/transaction_spec.rb +2 -2
  588. data/spec/integration/type/file_spec.rb +29 -0
  589. data/spec/integration/type/package_spec.rb +7 -1
  590. data/spec/lib/matchers/json.rb +3 -3
  591. data/spec/lib/puppet/face/1.0.0/huzzah.rb +1 -1
  592. data/spec/lib/puppet/face/basetest.rb +1 -1
  593. data/spec/lib/puppet/face/huzzah.rb +1 -1
  594. data/spec/lib/puppet/face/version_matching.rb +1 -1
  595. data/spec/lib/puppet/indirector_testing.rb +4 -0
  596. data/spec/lib/puppet_spec/character_encoding.rb +12 -0
  597. data/spec/lib/puppet_spec/compiler.rb +8 -1
  598. data/spec/lib/puppet_spec/modules.rb +2 -2
  599. data/spec/lib/puppet_spec/network.rb +10 -6
  600. data/spec/shared_contexts/types_setup.rb +52 -15
  601. data/spec/shared_examples/rhel_package_provider.rb +10 -11
  602. data/spec/spec_helper.rb +0 -11
  603. data/spec/unit/agent_spec.rb +12 -1
  604. data/spec/unit/application/agent_spec.rb +7 -0
  605. data/spec/unit/application/apply_spec.rb +28 -13
  606. data/spec/unit/application/describe_spec.rb +19 -0
  607. data/spec/unit/application/device_spec.rb +41 -2
  608. data/spec/unit/application/face_base_spec.rb +6 -6
  609. data/spec/unit/application/master_spec.rb +22 -6
  610. data/spec/unit/application/resource_spec.rb +39 -1
  611. data/spec/unit/application_spec.rb +0 -6
  612. data/spec/unit/capability_spec.rb +2 -6
  613. data/spec/unit/configurer/fact_handler_spec.rb +76 -20
  614. data/spec/unit/configurer/plugin_handler_spec.rb +13 -19
  615. data/spec/unit/configurer_spec.rb +36 -19
  616. data/spec/unit/defaults_spec.rb +0 -30
  617. data/spec/unit/etc_spec.rb +361 -153
  618. data/spec/unit/face/module/list_spec.rb +60 -0
  619. data/spec/unit/file_bucket/file_spec.rb +3 -3
  620. data/spec/unit/file_serving/http_metadata_spec.rb +1 -1
  621. data/spec/unit/file_serving/metadata_spec.rb +35 -9
  622. data/spec/unit/forge/forge_spec.rb +112 -0
  623. data/spec/unit/forge/repository_spec.rb +4 -4
  624. data/spec/unit/functions/annotate_spec.rb +175 -0
  625. data/spec/unit/functions/break_spec.rb +29 -1
  626. data/spec/unit/functions/call_spec.rb +77 -0
  627. data/spec/unit/functions/contain_spec.rb +1 -1
  628. data/spec/unit/functions/lookup_fixture_spec.rb +1 -6
  629. data/spec/unit/functions/lookup_spec.rb +208 -3
  630. data/spec/unit/functions/new_spec.rb +1 -1
  631. data/spec/unit/functions/unique_spec.rb +111 -0
  632. data/spec/unit/functions4_spec.rb +2 -43
  633. data/spec/unit/graph/simple_graph_spec.rb +58 -55
  634. data/spec/unit/indirector/catalog/compiler_spec.rb +213 -153
  635. data/spec/unit/indirector/catalog/json_spec.rb +50 -1
  636. data/spec/unit/indirector/facts/facter_spec.rb +1 -2
  637. data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
  638. data/spec/unit/indirector/file_server_spec.rb +17 -2
  639. data/spec/unit/indirector/indirection_spec.rb +1 -36
  640. data/spec/unit/indirector/json_spec.rb +27 -6
  641. data/spec/unit/indirector/node/exec_spec.rb +12 -12
  642. data/spec/unit/indirector/node/ldap_spec.rb +29 -8
  643. data/spec/unit/indirector/node/plain_spec.rb +16 -6
  644. data/spec/unit/indirector/node/write_only_yaml_spec.rb +12 -0
  645. data/spec/unit/indirector/report/processor_spec.rb +2 -2
  646. data/spec/unit/indirector/report/rest_spec.rb +29 -3
  647. data/spec/unit/indirector/request_spec.rb +15 -4
  648. data/spec/unit/indirector/rest_spec.rb +57 -15
  649. data/spec/unit/interface/face_collection_spec.rb +7 -7
  650. data/spec/unit/module_spec.rb +10 -2
  651. data/spec/unit/module_tool/applications/installer_spec.rb +0 -1
  652. data/spec/unit/module_tool/applications/upgrader_spec.rb +0 -1
  653. data/spec/unit/module_tool/tar_spec.rb +16 -10
  654. data/spec/unit/network/format_handler_spec.rb +11 -11
  655. data/spec/unit/network/format_spec.rb +9 -0
  656. data/spec/unit/network/formats_spec.rb +322 -138
  657. data/spec/unit/network/http/api/indirected_routes_spec.rb +65 -55
  658. data/spec/unit/network/http/api/master/v3/environment_spec.rb +128 -2
  659. data/spec/unit/network/http/api/master/v3_spec.rb +1 -1
  660. data/spec/unit/network/http/api_spec.rb +1 -1
  661. data/spec/unit/network/http/compression_spec.rb +105 -88
  662. data/spec/unit/network/http/error_spec.rb +1 -2
  663. data/spec/unit/network/http/handler_spec.rb +8 -12
  664. data/spec/unit/network/http/rack/rest_spec.rb +3 -3
  665. data/spec/unit/network/http/request_spec.rb +110 -0
  666. data/spec/unit/network/http/response_spec.rb +108 -0
  667. data/spec/unit/node/facts_spec.rb +13 -13
  668. data/spec/unit/node_spec.rb +33 -10
  669. data/spec/unit/parameter_spec.rb +73 -5
  670. data/spec/unit/parser/compiler_spec.rb +1 -1
  671. data/spec/unit/parser/environment_compiler_spec.rb +0 -2
  672. data/spec/unit/parser/functions/create_resources_spec.rb +47 -6
  673. data/spec/unit/parser/resource_spec.rb +86 -24
  674. data/spec/unit/parser/scope_spec.rb +10 -79
  675. data/spec/unit/pops/benchmark_spec.rb +8 -26
  676. data/spec/unit/pops/containment_spec.rb +0 -26
  677. data/spec/unit/pops/evaluator/access_ops_spec.rb +103 -103
  678. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +59 -6
  679. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +5 -5
  680. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +26 -26
  681. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +59 -7
  682. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +7 -7
  683. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +36 -1
  684. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +10 -10
  685. data/spec/unit/pops/evaluator/variables_spec.rb +1 -1
  686. data/spec/unit/pops/factory_rspec_helper.rb +0 -4
  687. data/spec/unit/pops/factory_spec.rb +83 -83
  688. data/spec/unit/pops/loaders/loaders_spec.rb +209 -79
  689. data/spec/unit/pops/loaders/static_loader_spec.rb +2 -6
  690. data/spec/unit/pops/lookup/interpolation_spec.rb +50 -10
  691. data/spec/unit/pops/lookup/lookup_spec.rb +32 -0
  692. data/spec/unit/pops/model/model_spec.rb +10 -10
  693. data/spec/unit/pops/parser/epp_parser_spec.rb +1 -1
  694. data/spec/unit/pops/parser/lexer2_spec.rb +32 -29
  695. data/spec/unit/pops/parser/{source_pos_adapter_spec.rb → locator_spec.rb} +9 -11
  696. data/spec/unit/pops/parser/parse_application_spec.rb +0 -3
  697. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +4 -4
  698. data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -3
  699. data/spec/unit/pops/parser/parse_containers_spec.rb +17 -19
  700. data/spec/unit/pops/parser/parse_site_spec.rb +0 -3
  701. data/spec/unit/pops/parser/parser_spec.rb +8 -10
  702. data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -3
  703. data/spec/unit/pops/serialization/serialization_spec.rb +117 -5
  704. data/spec/unit/pops/serialization/to_from_hr_spec.rb +494 -0
  705. data/spec/unit/pops/time/timestamp_spec.rb +13 -0
  706. data/spec/unit/pops/types/iterable_spec.rb +1 -1
  707. data/spec/unit/pops/types/p_object_type_spec.rb +100 -14
  708. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +12 -17
  709. data/spec/unit/pops/types/p_timestamp_type_spec.rb +8 -8
  710. data/spec/unit/pops/types/p_type_set_type_spec.rb +4 -12
  711. data/spec/unit/pops/types/ruby_generator_spec.rb +57 -20
  712. data/spec/unit/pops/types/string_converter_spec.rb +119 -16
  713. data/spec/unit/pops/types/type_acceptor_spec.rb +2 -2
  714. data/spec/unit/pops/types/type_calculator_spec.rb +211 -87
  715. data/spec/unit/pops/types/type_factory_spec.rb +9 -9
  716. data/spec/unit/pops/types/type_formatter_spec.rb +32 -19
  717. data/spec/unit/pops/types/type_parser_spec.rb +6 -6
  718. data/spec/unit/pops/types/types_spec.rb +53 -2
  719. data/spec/unit/pops/validator/validator_spec.rb +53 -61
  720. data/spec/unit/pops/visitor_spec.rb +1 -1
  721. data/spec/unit/property/list_spec.rb +2 -2
  722. data/spec/unit/provider/augeas/augeas_spec.rb +1 -1
  723. data/spec/unit/provider/nameservice/directoryservice_spec.rb +2 -0
  724. data/spec/unit/provider/nameservice_spec.rb +113 -3
  725. data/spec/unit/provider/package/portage_spec.rb +103 -17
  726. data/spec/unit/provider/package/rpm_spec.rb +14 -1
  727. data/spec/unit/provider/user/directoryservice_spec.rb +7 -7
  728. data/spec/unit/provider/user/useradd_spec.rb +13 -0
  729. data/spec/unit/puppet_spec.rb +2 -3
  730. data/spec/unit/relationship_spec.rb +15 -36
  731. data/spec/unit/reports/http_spec.rb +11 -8
  732. data/spec/unit/resource/catalog_spec.rb +81 -53
  733. data/spec/unit/resource/status_spec.rb +114 -103
  734. data/spec/unit/resource/type_collection_spec.rb +5 -5
  735. data/spec/unit/resource/type_spec.rb +4 -71
  736. data/spec/unit/resource_spec.rb +30 -34
  737. data/spec/unit/settings_spec.rb +4 -2
  738. data/spec/unit/ssl/host_spec.rb +34 -34
  739. data/spec/unit/status_spec.rb +7 -7
  740. data/spec/unit/transaction/event_spec.rb +18 -15
  741. data/spec/unit/transaction/report_spec.rb +100 -62
  742. data/spec/unit/transaction/resource_harness_spec.rb +3 -3
  743. data/spec/unit/transaction_spec.rb +53 -8
  744. data/spec/unit/type/file/group_spec.rb +2 -2
  745. data/spec/unit/type/file/mode_spec.rb +9 -9
  746. data/spec/unit/type/file/owner_spec.rb +2 -2
  747. data/spec/unit/type/file/selinux_spec.rb +2 -0
  748. data/spec/unit/type/file/source_spec.rb +13 -0
  749. data/spec/unit/type/file_spec.rb +46 -0
  750. data/spec/unit/type/ssh_authorized_key_spec.rb +2 -2
  751. data/spec/unit/type/user_spec.rb +2 -4
  752. data/spec/unit/util/at_fork_spec.rb +150 -0
  753. data/spec/unit/util/character_encoding_spec.rb +193 -52
  754. data/spec/unit/util/execution_spec.rb +31 -2
  755. data/spec/unit/util/log/destinations_spec.rb +5 -6
  756. data/spec/unit/util/log_spec.rb +62 -17
  757. data/spec/unit/util/metric_spec.rb +9 -2
  758. data/spec/unit/util/monkey_patches_spec.rb +6 -188
  759. data/spec/unit/util/run_mode_spec.rb +17 -10
  760. data/spec/unit/util/tag_set_spec.rb +2 -2
  761. data/spec/unit/util/tagging_spec.rb +55 -0
  762. data/spec/unit/util/windows/eventlog_spec.rb +123 -0
  763. data/spec/unit/util_spec.rb +237 -2
  764. data/tasks/benchmark.rake +3 -3
  765. data/tasks/cfpropertylist.rake +1 -1
  766. data/tasks/generate_ast_model.rake +78 -0
  767. metadata +3386 -3635
  768. checksums.yaml +0 -7
  769. data/bin/extlookup2hiera +0 -56
  770. data/ext/emacs/puppet-mode-init.el +0 -6
  771. data/ext/emacs/puppet-mode.el +0 -433
  772. data/ext/vim/README +0 -3
  773. data/ext/vim/ftdetect/puppet.vim +0 -2
  774. data/ext/vim/ftplugin/puppet.vim +0 -94
  775. data/ext/vim/indent/puppet.vim +0 -76
  776. data/ext/vim/syntax/puppet.vim +0 -115
  777. data/lib/puppet/application/file.rb +0 -4
  778. data/lib/puppet/application/inspect.rb +0 -182
  779. data/lib/puppet/application/resource_type.rb +0 -7
  780. data/lib/puppet/data_providers/data_adapter.rb +0 -37
  781. data/lib/puppet/data_providers/data_function_support.rb +0 -32
  782. data/lib/puppet/data_providers/function_env_data_provider.rb +0 -26
  783. data/lib/puppet/data_providers/function_module_data_provider.rb +0 -24
  784. data/lib/puppet/data_providers/hiera_config.rb +0 -151
  785. data/lib/puppet/data_providers/hiera_env_data_provider.rb +0 -25
  786. data/lib/puppet/data_providers/hiera_interpolate.rb +0 -21
  787. data/lib/puppet/data_providers/hiera_module_data_provider.rb +0 -30
  788. data/lib/puppet/data_providers/hiera_support.rb +0 -42
  789. data/lib/puppet/data_providers/json_data_provider_factory.rb +0 -38
  790. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +0 -40
  791. data/lib/puppet/data_providers.rb +0 -34
  792. data/lib/puppet/face/file/download.rb +0 -56
  793. data/lib/puppet/face/file/store.rb +0 -21
  794. data/lib/puppet/face/file.rb +0 -50
  795. data/lib/puppet/face/resource_type.rb +0 -84
  796. data/lib/puppet/feature/cfacter.rb +0 -15
  797. data/lib/puppet/feature/external_facts.rb +0 -5
  798. data/lib/puppet/indirector/catalog/static_compiler.rb +0 -232
  799. data/lib/puppet/indirector/resource_type/parser.rb +0 -108
  800. data/lib/puppet/indirector/resource_type/rest.rb +0 -7
  801. data/lib/puppet/indirector/resource_type.rb +0 -5
  802. data/lib/puppet/parser/yaml_trimmer.rb +0 -7
  803. data/lib/puppet/plugins/binding_schemes.rb +0 -140
  804. data/lib/puppet/plugins/data_providers/data_provider.rb +0 -406
  805. data/lib/puppet/plugins/data_providers/registry.rb +0 -51
  806. data/lib/puppet/plugins/data_providers.rb +0 -45
  807. data/lib/puppet/pops/binder/binder.rb +0 -398
  808. data/lib/puppet/pops/binder/binder_issues.rb +0 -124
  809. data/lib/puppet/pops/binder/bindings_checker.rb +0 -201
  810. data/lib/puppet/pops/binder/bindings_composer.rb +0 -181
  811. data/lib/puppet/pops/binder/bindings_factory.rb +0 -813
  812. data/lib/puppet/pops/binder/bindings_label_provider.rb +0 -45
  813. data/lib/puppet/pops/binder/bindings_loader.rb +0 -87
  814. data/lib/puppet/pops/binder/bindings_model.rb +0 -70
  815. data/lib/puppet/pops/binder/bindings_model_dumper.rb +0 -215
  816. data/lib/puppet/pops/binder/bindings_model_meta.rb +0 -215
  817. data/lib/puppet/pops/binder/bindings_validator_factory.rb +0 -28
  818. data/lib/puppet/pops/binder/config/binder_config.rb +0 -107
  819. data/lib/puppet/pops/binder/config/binder_config_checker.rb +0 -142
  820. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +0 -36
  821. data/lib/puppet/pops/binder/config/issues.rb +0 -90
  822. data/lib/puppet/pops/binder/injector.rb +0 -771
  823. data/lib/puppet/pops/binder/injector_entry.rb +0 -57
  824. data/lib/puppet/pops/binder/key_factory.rb +0 -65
  825. data/lib/puppet/pops/binder/producers.rb +0 -831
  826. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +0 -34
  827. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +0 -143
  828. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +0 -53
  829. data/lib/puppet/pops/binder/system_bindings.rb +0 -60
  830. data/lib/puppet/pops/containment.rb +0 -104
  831. data/lib/puppet/pops/model/model.rb +0 -131
  832. data/lib/puppet/pops/model/model_meta.rb +0 -629
  833. data/lib/puppet/pops/serialization/rgen.rb +0 -152
  834. data/lib/puppet/vendor/load_rgen.rb +0 -2
  835. data/lib/puppet/vendor/rgen/CHANGELOG +0 -197
  836. data/lib/puppet/vendor/rgen/MIT-LICENSE +0 -20
  837. data/lib/puppet/vendor/rgen/PUPPET_README.md +0 -6
  838. data/lib/puppet/vendor/rgen/README.rdoc +0 -78
  839. data/lib/puppet/vendor/rgen/Rakefile +0 -41
  840. data/lib/puppet/vendor/rgen/TODO +0 -41
  841. data/lib/puppet/vendor/rgen/anounce.txt +0 -61
  842. data/lib/puppet/vendor/rgen/design_rationale.txt +0 -71
  843. data/lib/puppet/vendor/rgen/lib/ea_support/ea_support.rb +0 -54
  844. data/lib/puppet/vendor/rgen/lib/ea_support/id_store.rb +0 -32
  845. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel.rb +0 -562
  846. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_ext.rb +0 -45
  847. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_generator.rb +0 -43
  848. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_to_uml13.rb +0 -103
  849. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_to_uml13_ea.rb +0 -89
  850. data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel.rb +0 -559
  851. data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel_ext.rb +0 -26
  852. data/lib/puppet/vendor/rgen/lib/mmgen/metamodel_generator.rb +0 -20
  853. data/lib/puppet/vendor/rgen/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +0 -91
  854. data/lib/puppet/vendor/rgen/lib/mmgen/mmgen.rb +0 -28
  855. data/lib/puppet/vendor/rgen/lib/mmgen/templates/annotations.tpl +0 -37
  856. data/lib/puppet/vendor/rgen/lib/mmgen/templates/metamodel_generator.tpl +0 -172
  857. data/lib/puppet/vendor/rgen/lib/rgen/array_extensions.rb +0 -45
  858. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore.rb +0 -218
  859. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_builder_methods.rb +0 -81
  860. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_ext.rb +0 -69
  861. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_interface.rb +0 -47
  862. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_to_ruby.rb +0 -167
  863. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ruby_to_ecore.rb +0 -91
  864. data/lib/puppet/vendor/rgen/lib/rgen/environment.rb +0 -129
  865. data/lib/puppet/vendor/rgen/lib/rgen/fragment/dump_file_cache.rb +0 -63
  866. data/lib/puppet/vendor/rgen/lib/rgen/fragment/fragmented_model.rb +0 -140
  867. data/lib/puppet/vendor/rgen/lib/rgen/fragment/model_fragment.rb +0 -289
  868. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_instantiator.rb +0 -66
  869. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_xml_instantiator.rb +0 -66
  870. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/default_xml_instantiator.rb +0 -117
  871. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/ecore_xml_instantiator.rb +0 -169
  872. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_instantiator.rb +0 -126
  873. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.rb +0 -331
  874. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.y +0 -94
  875. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/nodebased_xml_instantiator.rb +0 -137
  876. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/qualified_name_resolver.rb +0 -97
  877. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/reference_resolver.rb +0 -128
  878. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/resolution_helper.rb +0 -47
  879. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/xmi11_instantiator.rb +0 -168
  880. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_extensions.rb +0 -556
  881. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_runtime.rb +0 -174
  882. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/constant_order_helper.rb +0 -89
  883. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/data_types.rb +0 -77
  884. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/annotation.rb +0 -30
  885. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/feature.rb +0 -168
  886. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/mm_multiple.rb +0 -23
  887. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/module_extension.rb +0 -42
  888. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder.rb +0 -224
  889. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/builder_context.rb +0 -334
  890. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/model_serializer.rb +0 -225
  891. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/reference_resolver.rb +0 -156
  892. data/lib/puppet/vendor/rgen/lib/rgen/model_builder.rb +0 -32
  893. data/lib/puppet/vendor/rgen/lib/rgen/serializer/json_serializer.rb +0 -121
  894. data/lib/puppet/vendor/rgen/lib/rgen/serializer/opposite_reference_filter.rb +0 -18
  895. data/lib/puppet/vendor/rgen/lib/rgen/serializer/qualified_name_provider.rb +0 -47
  896. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi11_serializer.rb +0 -116
  897. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi20_serializer.rb +0 -71
  898. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xml_serializer.rb +0 -98
  899. data/lib/puppet/vendor/rgen/lib/rgen/template_language/directory_template_container.rb +0 -83
  900. data/lib/puppet/vendor/rgen/lib/rgen/template_language/output_handler.rb +0 -87
  901. data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_container.rb +0 -234
  902. data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_helper.rb +0 -26
  903. data/lib/puppet/vendor/rgen/lib/rgen/template_language.rb +0 -297
  904. data/lib/puppet/vendor/rgen/lib/rgen/transformer.rb +0 -475
  905. data/lib/puppet/vendor/rgen/lib/rgen/util/auto_class_creator.rb +0 -61
  906. data/lib/puppet/vendor/rgen/lib/rgen/util/cached_glob.rb +0 -67
  907. data/lib/puppet/vendor/rgen/lib/rgen/util/file_cache_map.rb +0 -124
  908. data/lib/puppet/vendor/rgen/lib/rgen/util/file_change_detector.rb +0 -84
  909. data/lib/puppet/vendor/rgen/lib/rgen/util/method_delegation.rb +0 -114
  910. data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator.rb +0 -68
  911. data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator_base.rb +0 -142
  912. data/lib/puppet/vendor/rgen/lib/rgen/util/model_dumper.rb +0 -29
  913. data/lib/puppet/vendor/rgen/lib/rgen/util/name_helper.rb +0 -42
  914. data/lib/puppet/vendor/rgen/lib/rgen/util/pattern_matcher.rb +0 -329
  915. data/lib/puppet/vendor/rgen/lib/transformers/ecore_to_uml13.rb +0 -79
  916. data/lib/puppet/vendor/rgen/lib/transformers/uml13_to_ecore.rb +0 -127
  917. data/lib/puppet/vendor/rgen/test/array_extensions_test.rb +0 -64
  918. data/lib/puppet/vendor/rgen/test/ea_instantiator_test.rb +0 -35
  919. data/lib/puppet/vendor/rgen/test/ea_serializer_test.rb +0 -23
  920. data/lib/puppet/vendor/rgen/test/ecore_self_test.rb +0 -54
  921. data/lib/puppet/vendor/rgen/test/environment_test.rb +0 -90
  922. data/lib/puppet/vendor/rgen/test/json_test.rb +0 -171
  923. data/lib/puppet/vendor/rgen/test/metamodel_builder_test.rb +0 -1482
  924. data/lib/puppet/vendor/rgen/test/metamodel_from_ecore_test.rb +0 -57
  925. data/lib/puppet/vendor/rgen/test/metamodel_order_test.rb +0 -131
  926. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/TestModel.rb +0 -70
  927. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel.ecore +0 -42
  928. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +0 -44
  929. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/using_builtin_types.ecore +0 -9
  930. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test.rb +0 -98
  931. data/lib/puppet/vendor/rgen/test/method_delegation_test.rb +0 -178
  932. data/lib/puppet/vendor/rgen/test/model_builder/builder_context_test.rb +0 -59
  933. data/lib/puppet/vendor/rgen/test/model_builder/builder_test.rb +0 -242
  934. data/lib/puppet/vendor/rgen/test/model_builder/ecore_original.rb +0 -163
  935. data/lib/puppet/vendor/rgen/test/model_builder/ecore_original_regenerated.rb +0 -163
  936. data/lib/puppet/vendor/rgen/test/model_builder/reference_resolver_test.rb +0 -156
  937. data/lib/puppet/vendor/rgen/test/model_builder/serializer_test.rb +0 -94
  938. data/lib/puppet/vendor/rgen/test/model_builder/statemachine_metamodel.rb +0 -42
  939. data/lib/puppet/vendor/rgen/test/model_builder/test_model/statemachine1.rb +0 -23
  940. data/lib/puppet/vendor/rgen/test/model_builder_test.rb +0 -6
  941. data/lib/puppet/vendor/rgen/test/model_fragment_test.rb +0 -30
  942. data/lib/puppet/vendor/rgen/test/output_handler_test.rb +0 -58
  943. data/lib/puppet/vendor/rgen/test/qualified_name_provider_test.rb +0 -48
  944. data/lib/puppet/vendor/rgen/test/qualified_name_resolver_test.rb +0 -102
  945. data/lib/puppet/vendor/rgen/test/reference_resolver_test.rb +0 -117
  946. data/lib/puppet/vendor/rgen/test/rgen_test.rb +0 -26
  947. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result1.txt +0 -29
  948. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result2.txt +0 -9
  949. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result3.txt +0 -4
  950. data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestDefaultIndent.out +0 -1
  951. data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestTabIndent.out +0 -1
  952. data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/a.tpl +0 -12
  953. data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/b.tpl +0 -5
  954. data/lib/puppet/vendor/rgen/test/template_language_test/templates/code/array.tpl +0 -11
  955. data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/author.tpl +0 -7
  956. data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/chapter.tpl +0 -5
  957. data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/local.tpl +0 -8
  958. data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/test.tpl +0 -8
  959. data/lib/puppet/vendor/rgen/test/template_language_test/templates/evaluate_test/test.tpl +0 -7
  960. data/lib/puppet/vendor/rgen/test/template_language_test/templates/indent_string_test.tpl +0 -12
  961. data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/c/cmod.tpl +0 -1
  962. data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/chapter.tpl +0 -3
  963. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_backslash_r_test.tpl +0 -5
  964. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/no_indent.tpl +0 -3
  965. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/sub1/no_indent.tpl +0 -3
  966. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test.tpl +0 -24
  967. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test2.tpl +0 -13
  968. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test3.tpl +0 -10
  969. data/lib/puppet/vendor/rgen/test/template_language_test/templates/null_context_test.tpl +0 -17
  970. data/lib/puppet/vendor/rgen/test/template_language_test/templates/root.tpl +0 -31
  971. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1/sub1.tpl +0 -3
  972. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1.tpl +0 -9
  973. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/test.tpl +0 -4
  974. data/lib/puppet/vendor/rgen/test/template_language_test/testout.txt +0 -29
  975. data/lib/puppet/vendor/rgen/test/template_language_test.rb +0 -163
  976. data/lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb +0 -119
  977. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.eap +0 -0
  978. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.xml +0 -1029
  979. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel_partial.xml +0 -317
  980. data/lib/puppet/vendor/rgen/test/testmodel/ecore_model_checker.rb +0 -101
  981. data/lib/puppet/vendor/rgen/test/testmodel/manual_testmodel.xml +0 -22
  982. data/lib/puppet/vendor/rgen/test/testmodel/object_model_checker.rb +0 -67
  983. data/lib/puppet/vendor/rgen/test/transformer_test.rb +0 -254
  984. data/lib/puppet/vendor/rgen/test/util/file_cache_map_test.rb +0 -99
  985. data/lib/puppet/vendor/rgen/test/util/pattern_matcher_test.rb +0 -97
  986. data/lib/puppet/vendor/rgen/test/util_test.rb +0 -5
  987. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_ecore_model_checker.rb +0 -94
  988. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_ecore_instantiator.rb +0 -53
  989. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_metamodel.rb +0 -49
  990. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_to_ecore.rb +0 -75
  991. data/lib/puppet/vendor/rgen/test/xml_instantiator_test.rb +0 -160
  992. data/lib/puppet/vendor/rgen_patch.rb +0 -132
  993. data/lib/semver.rb +0 -146
  994. data/man/man8/extlookup2hiera.8 +0 -10
  995. data/man/man8/puppet-file.8 +0 -189
  996. data/man/man8/puppet-resource_type.8 +0 -188
  997. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -9
  998. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/lib/puppet/bindings/xyz/default.rb +0 -9
  999. data/spec/fixtures/unit/data_providers/environments/sample/environment.conf +0 -2
  1000. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +0 -5
  1001. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +0 -9
  1002. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +0 -23
  1003. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +0 -5
  1004. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +0 -9
  1005. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet/bindings/dataprovider/default.rb +0 -54
  1006. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +0 -33
  1007. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +0 -33
  1008. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +0 -5
  1009. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -9
  1010. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -9
  1011. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -9
  1012. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -10
  1013. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -23
  1014. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/manifests/init.pp +0 -3
  1015. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/metadata.json +0 -9
  1016. data/spec/unit/application/inspect_spec.rb +0 -305
  1017. data/spec/unit/data_providers/custom_data_provider_spec.rb +0 -50
  1018. data/spec/unit/face/file_spec.rb +0 -14
  1019. data/spec/unit/indirector/catalog/static_compiler_spec.rb +0 -255
  1020. data/spec/unit/indirector/resource_type/parser_spec.rb +0 -259
  1021. data/spec/unit/indirector/resource_type/rest_spec.rb +0 -14
  1022. data/spec/unit/pops/binder/binder_spec.rb +0 -43
  1023. data/spec/unit/pops/binder/bindings_checker_spec.rb +0 -155
  1024. data/spec/unit/pops/binder/bindings_composer_spec.rb +0 -64
  1025. data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +0 -18
  1026. data/spec/unit/pops/binder/config/binder_config_spec.rb +0 -42
  1027. data/spec/unit/pops/binder/injector_spec.rb +0 -768
  1028. data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +0 -23
  1029. data/spec/unit/pops/serialization/rgen_spec.rb +0 -88
  1030. data/spec/unit/semver_spec.rb +0 -546
  1031. /data/lib/puppet/vendor/semantic_puppet/{lib/semantic_puppet/locales → locales}/config.yaml +0 -0
@@ -32,11 +32,8 @@ EMPTY_STRING = Puppet::Pops::EMPTY_STRING
32
32
 
33
33
  # The Types model is a model of Puppet Language types.
34
34
  #
35
- # The exact relationship between types is not visible in this model wrt. the PDataType which is an abstraction
36
- # of Scalar, Array[Data], and Hash[Scalar, Data] nested to any depth. This means it is not possible to
37
- # infer the type by simply looking at the inheritance hierarchy. The {TypeCalculator} should
38
- # be used to answer questions about types. The {TypeFactory} should be used to create an instance
39
- # of a type whenever one is needed.
35
+ # The {TypeCalculator} should be used to answer questions about types. The {TypeFactory} or {TypeParser} should be used
36
+ # to create an instance of a type whenever one is needed.
40
37
  #
41
38
  # The implementation of the Types model contains methods that are required for the type objects to behave as
42
39
  # expected when comparing them and using them as keys in hashes. (No other logic is, or should be included directly in
@@ -44,13 +41,12 @@ EMPTY_STRING = Puppet::Pops::EMPTY_STRING
44
41
  #
45
42
  # @api public
46
43
  #
47
- # TODO: See PUP-2978 for possible performance optimization
48
44
  class TypedModelObject < Object
49
45
  include PuppetObject
50
46
  include Visitable
51
47
  include Adaptable
52
48
 
53
- def self._ptype
49
+ def self._pcore_type
54
50
  @type
55
51
  end
56
52
 
@@ -59,7 +55,10 @@ class TypedModelObject < Object
59
55
  end
60
56
 
61
57
  def self.register_ptypes(loader, ir)
62
- types = []
58
+ types = [
59
+ Annotation.register_ptype(loader, ir),
60
+ RubyMethod.register_ptype(loader, ir)
61
+ ]
63
62
  Types.constants.each do |c|
64
63
  cls = Types.const_get(c)
65
64
  next unless cls.is_a?(Class) && cls < self
@@ -80,6 +79,11 @@ class PAnyType < TypedModelObject
80
79
  @type = Pcore::create_object_type(loader, ir, self, 'Pcore::AnyType', 'Any', EMPTY_HASH)
81
80
  end
82
81
 
82
+ def self.create(*args)
83
+ # NOTE! Important to use self::DEFAULT and not just DEFAULT since the latter yields PAnyType::DEFAULT
84
+ args.empty? ? self::DEFAULT : new(*args)
85
+ end
86
+
83
87
  # Accept a visitor that will be sent the message `visit`, once with `self` as the
84
88
  # argument. The visitor will then visit all types that this type contains.
85
89
  #
@@ -320,6 +324,13 @@ class PAnyType < TypedModelObject
320
324
  raise ArgumentError.new("Creation of new instance of type '#{instance.to_s}' is not supported")
321
325
  end
322
326
 
327
+ # Answers the question if instances of this type can represent themselves as a string that
328
+ # can then be passed to the create method
329
+ #
330
+ # @return [Boolean] wether or not the instance has a canonical string representation
331
+ def roundtrip_with_string?
332
+ false
333
+ end
323
334
 
324
335
  # The default instance of this type. Each type in the type system has this constant
325
336
  # declared.
@@ -637,76 +648,66 @@ class PDefaultType < PAnyType
637
648
  end
638
649
  end
639
650
 
640
- # A flexible data type, being assignable to its subtypes as well as PArrayType and PHashType with element type assignable to PDataType.
641
- #
651
+ # Type that is a Scalar
642
652
  # @api public
643
653
  #
644
- class PDataType < PAnyType
654
+ class PScalarType < PAnyType
645
655
  def self.register_ptype(loader, ir)
646
656
  create_ptype(loader, ir, 'AnyType')
647
657
  end
648
658
 
649
- def eql?(o)
650
- self.class == o.class || o == PVariantType::DATA
659
+ def instance?(o, guard = nil)
660
+ if o.is_a?(String) || o.is_a?(Numeric) || o.is_a?(TrueClass) || o.is_a?(FalseClass) || o.is_a?(Regexp)
661
+ true
662
+ elsif o.instance_of?(Array) || o.instance_of?(Hash) || o.is_a?(PAnyType) || o.is_a?(NilClass)
663
+ false
664
+ else
665
+ assignable?(TypeCalculator.infer(o))
666
+ end
651
667
  end
652
668
 
653
- def instance?(o, guard = nil)
654
- PVariantType::DATA.instance?(o, guard)
669
+ def roundtrip_with_string?
670
+ true
655
671
  end
656
672
 
657
- DEFAULT = PDataType.new
673
+ DEFAULT = PScalarType.new
658
674
 
659
675
  protected
660
676
 
661
- # Data is assignable by other Data and by Array[Data] and Hash[Scalar, Data]
662
677
  # @api private
663
678
  def _assignable?(o, guard)
664
- # We cannot put the NotUndefType[Data] in the @data_variant_t since that causes an endless recursion
665
- case o
666
- when Types::PDataType
667
- true
668
- when Types::PNotUndefType
669
- assignable?(o.type || PUndefType::DEFAULT, guard)
670
- else
671
- PVariantType::DATA.assignable?(o, guard)
672
- end
679
+ o.is_a?(PScalarType)
673
680
  end
674
681
  end
675
682
 
676
- # Type that is PDataType compatible, but is not a PCollectionType.
683
+ # Like Scalar but limited to Json Data.
677
684
  # @api public
678
685
  #
679
- class PScalarType < PAnyType
686
+ class PScalarDataType < PScalarType
680
687
  def self.register_ptype(loader, ir)
681
- create_ptype(loader, ir, 'AnyType')
688
+ create_ptype(loader, ir, 'ScalarType')
682
689
  end
683
690
 
684
691
  def instance?(o, guard = nil)
685
- if o.is_a?(String) || o.is_a?(Numeric) || o.is_a?(TrueClass) || o.is_a?(FalseClass) || o.is_a?(Regexp) || o.is_a?(SemanticPuppet::VersionRange)
686
- true
687
- elsif o.is_a?(Array) || o.is_a?(Hash) || o.is_a?(PAnyType) || o.is_a?(NilClass)
688
- false
689
- else
690
- assignable?(TypeCalculator.infer(o))
691
- end
692
+ return o.is_a?(String) || o.is_a?(Integer) || o.is_a?(Float) || o.is_a?(TrueClass) || o.is_a?(FalseClass)
692
693
  end
693
694
 
694
- DEFAULT = PScalarType.new
695
+ DEFAULT = PScalarDataType.new
695
696
 
696
697
  protected
697
698
 
698
699
  # @api private
699
700
  def _assignable?(o, guard)
700
- o.is_a?(PScalarType)
701
+ o.is_a?(PScalarDataType)
701
702
  end
702
703
  end
703
704
 
704
705
  # A string type describing the set of strings having one of the given values
705
706
  # @api public
706
707
  #
707
- class PEnumType < PScalarType
708
+ class PEnumType < PScalarDataType
708
709
  def self.register_ptype(loader, ir)
709
- create_ptype(loader, ir, 'ScalarType', 'values' => PArrayType.new(PStringType::NON_EMPTY))
710
+ create_ptype(loader, ir, 'ScalarDataType', 'values' => PArrayType.new(PStringType::NON_EMPTY))
710
711
  end
711
712
 
712
713
  attr_reader :values
@@ -776,72 +777,11 @@ class PEnumType < PScalarType
776
777
  end
777
778
  end
778
779
 
779
- # Abstract class that encapsulates behavior common to PNumericType and PAbstractTimeDataType
780
- # @api public
781
- class PAbstractRangeType < PScalarType
782
- def initialize(from, to = Float::INFINITY)
783
- from = -Float::INFINITY if from.nil? || from == :default
784
- to = Float::INFINITY if to.nil? || to == :default
785
- raise ArgumentError, "'from' must be less or equal to 'to'. Got (#{from}, #{to}" if from.is_a?(Numeric) && to.is_a?(Numeric) && from > to
786
- @from = from
787
- @to = to
788
- end
789
-
790
- # Checks if this numeric range intersects with another
791
- #
792
- # @param o [PNumericType] the range to compare with
793
- # @return [Boolean] `true` if this range intersects with the other range
794
- # @api public
795
- def intersect?(o)
796
- self.class == o.class && !(@to < o.numeric_from || o.numeric_to < @from)
797
- end
798
-
799
- # Returns the lower bound of the numeric range or `nil` if no lower bound is set.
800
- # @return [Float,Integer]
801
- def from
802
- @from == -Float::INFINITY ? nil : @from
803
- end
804
-
805
- # Returns the upper bound of the numeric range or `nil` if no upper bound is set.
806
- # @return [Float,Integer]
807
- def to
808
- @to == Float::INFINITY ? nil : @to
809
- end
810
-
811
- # Same as #from but will return `-Float::Infinity` instead of `nil` if no lower bound is set.
812
- # @return [Float,Integer]
813
- def numeric_from
814
- @from
815
- end
816
-
817
- # Same as #to but will return `Float::Infinity` instead of `nil` if no lower bound is set.
818
- # @return [Float,Integer]
819
- def numeric_to
820
- @to
821
- end
822
-
823
- def hash
824
- @from.hash ^ @to.hash
825
- end
826
-
827
- def eql?(o)
828
- self.class == o.class && @from == o.numeric_from && @to == o.numeric_to
829
- end
830
-
831
- def instance?(o, guard = nil)
832
- o.is_a?(Numeric) && o >= @from && o <= @to
833
- end
834
-
835
- def unbounded?
836
- @from == -Float::INFINITY && @to == Float::INFINITY
837
- end
838
- end
839
-
840
780
  # @api public
841
781
  #
842
- class PNumericType < PAbstractRangeType
782
+ class PNumericType < PScalarDataType
843
783
  def self.register_ptype(loader, ir)
844
- create_ptype(loader, ir, 'ScalarType',
784
+ create_ptype(loader, ir, 'ScalarDataType',
845
785
  'from' => { KEY_TYPE => POptionalType.new(PNumericType::DEFAULT), KEY_VALUE => nil },
846
786
  'to' => { KEY_TYPE => POptionalType.new(PNumericType::DEFAULT), KEY_VALUE => nil }
847
787
  )
@@ -906,6 +846,63 @@ class PNumericType < PAbstractRangeType
906
846
  end
907
847
  end
908
848
 
849
+ def initialize(from, to = Float::INFINITY)
850
+ from = -Float::INFINITY if from.nil? || from == :default
851
+ to = Float::INFINITY if to.nil? || to == :default
852
+ raise ArgumentError, "'from' must be less or equal to 'to'. Got (#{from}, #{to}" if from > to
853
+ @from = from
854
+ @to = to
855
+ end
856
+
857
+ # Checks if this numeric range intersects with another
858
+ #
859
+ # @param o [PNumericType] the range to compare with
860
+ # @return [Boolean] `true` if this range intersects with the other range
861
+ # @api public
862
+ def intersect?(o)
863
+ self.class == o.class && !(@to < o.numeric_from || o.numeric_to < @from)
864
+ end
865
+
866
+ # Returns the lower bound of the numeric range or `nil` if no lower bound is set.
867
+ # @return [Float,Integer]
868
+ def from
869
+ @from == -Float::INFINITY ? nil : @from
870
+ end
871
+
872
+ # Returns the upper bound of the numeric range or `nil` if no upper bound is set.
873
+ # @return [Float,Integer]
874
+ def to
875
+ @to == Float::INFINITY ? nil : @to
876
+ end
877
+
878
+ # Same as #from but will return `-Float::Infinity` instead of `nil` if no lower bound is set.
879
+ # @return [Float,Integer]
880
+ def numeric_from
881
+ @from
882
+ end
883
+
884
+ # Same as #to but will return `Float::Infinity` instead of `nil` if no lower bound is set.
885
+ # @return [Float,Integer]
886
+ def numeric_to
887
+ @to
888
+ end
889
+
890
+ def hash
891
+ @from.hash ^ @to.hash
892
+ end
893
+
894
+ def eql?(o)
895
+ self.class == o.class && @from == o.numeric_from && @to == o.numeric_to
896
+ end
897
+
898
+ def instance?(o, guard = nil)
899
+ o.is_a?(Numeric) && o >= @from && o <= @to
900
+ end
901
+
902
+ def unbounded?
903
+ @from == -Float::INFINITY && @to == Float::INFINITY
904
+ end
905
+
909
906
  protected
910
907
 
911
908
  # @api_private
@@ -1215,7 +1212,8 @@ class PCollectionType < PAnyType
1215
1212
  end
1216
1213
 
1217
1214
  def instance?(o, guard = nil)
1218
- if o.is_a?(Array) || o.is_a?(Hash)
1215
+ # The inferred type of a class derived from Array or Hash is either Runtime or Object. It's not assignable to the Collection type.
1216
+ if o.instance_of?(Array) || o.instance_of?(Hash)
1219
1217
  @size_type.nil? || @size_type.instance?(o.size)
1220
1218
  else
1221
1219
  false
@@ -1372,9 +1370,9 @@ end
1372
1370
 
1373
1371
  # @api public
1374
1372
  #
1375
- class PStringType < PScalarType
1373
+ class PStringType < PScalarDataType
1376
1374
  def self.register_ptype(loader, ir)
1377
- create_ptype(loader, ir, 'ScalarType',
1375
+ create_ptype(loader, ir, 'ScalarDataType',
1378
1376
  'size_type_or_value' => {
1379
1377
  KEY_TYPE => POptionalType.new(PVariantType.new([PStringType::DEFAULT, PType.new(PIntegerType::DEFAULT)])),
1380
1378
  KEY_VALUE => nil
@@ -1386,7 +1384,7 @@ class PStringType < PScalarType
1386
1384
  def initialize(size_type_or_value, deprecated_multi_args = EMPTY_ARRAY)
1387
1385
  unless deprecated_multi_args.empty?
1388
1386
  if Puppet[:strict] != :off
1389
- Puppet.warn_once(:deprecatation, "PStringType#initialize_multi_args", "Passing more than one argument to PStringType#initialize is deprecated")
1387
+ Puppet.warn_once('deprecations', "PStringType#initialize_multi_args", "Passing more than one argument to PStringType#initialize is deprecated")
1390
1388
  end
1391
1389
  size_type_or_value = deprecated_multi_args[0]
1392
1390
  end
@@ -1439,7 +1437,7 @@ class PStringType < PScalarType
1439
1437
  # @api private
1440
1438
  def values
1441
1439
  if Puppet[:strict] != :off
1442
- Puppet.warn_once(:deprecatation, "PStringType#values", "Method PStringType#values is deprecated. Use #value instead")
1440
+ Puppet.warn_once('deprecations', "PStringType#values", "Method PStringType#values is deprecated. Use #value instead")
1443
1441
  end
1444
1442
  @value.is_a?(String) ? [@value] : EMPTY_ARRAY
1445
1443
  end
@@ -1555,6 +1553,22 @@ class PRegexpType < PScalarType
1555
1553
  KEY_VALUE => nil
1556
1554
  })
1557
1555
  end
1556
+
1557
+
1558
+ # Returns a new function that produces a Regexp instance
1559
+ #
1560
+ def self.new_function(_, loader)
1561
+ @new_function ||= Puppet::Functions.create_loaded_function(:new_float, loader) do
1562
+ dispatch :from_string do
1563
+ param 'String', :pattern
1564
+ end
1565
+
1566
+ def from_string(pattern)
1567
+ Regexp.new(pattern)
1568
+ end
1569
+ end
1570
+ end
1571
+
1558
1572
  attr_reader :pattern
1559
1573
 
1560
1574
  def initialize(pattern)
@@ -1598,9 +1612,9 @@ end
1598
1612
  #
1599
1613
  # @api public
1600
1614
  #
1601
- class PPatternType < PScalarType
1615
+ class PPatternType < PScalarDataType
1602
1616
  def self.register_ptype(loader, ir)
1603
- create_ptype(loader, ir, 'ScalarType', 'patterns' => PArrayType.new(PRegexpType::DEFAULT))
1617
+ create_ptype(loader, ir, 'ScalarDataType', 'patterns' => PArrayType.new(PRegexpType::DEFAULT))
1604
1618
  end
1605
1619
 
1606
1620
  attr_reader :patterns
@@ -1668,9 +1682,9 @@ end
1668
1682
 
1669
1683
  # @api public
1670
1684
  #
1671
- class PBooleanType < PScalarType
1685
+ class PBooleanType < PScalarDataType
1672
1686
  def self.register_ptype(loader, ir)
1673
- create_ptype(loader, ir, 'ScalarType')
1687
+ create_ptype(loader, ir, 'ScalarDataType')
1674
1688
  end
1675
1689
 
1676
1690
  def instance?(o, guard = nil)
@@ -1778,6 +1792,14 @@ class PStructElement < TypedModelObject
1778
1792
  def ==(o)
1779
1793
  self.class == o.class && value_type == o.value_type && key_type == o.key_type
1780
1794
  end
1795
+
1796
+ # Special boostrap method to overcome the hen and egg problem with the Object initializer that contains
1797
+ # types that are derived from Object (such as Annotation)
1798
+ #
1799
+ # @api private
1800
+ def replace_value_type(new_type)
1801
+ @value_type = new_type
1802
+ end
1781
1803
  end
1782
1804
 
1783
1805
  # @api public
@@ -1866,7 +1888,8 @@ class PStructType < PAnyType
1866
1888
  end
1867
1889
 
1868
1890
  def instance?(o, guard = nil)
1869
- return false unless o.is_a?(Hash)
1891
+ # The inferred type of a class derived from Hash is either Runtime or Object. It's not assignable to the Struct type.
1892
+ return false unless o.instance_of?(Hash)
1870
1893
  matched = 0
1871
1894
  @elements.all? do |e|
1872
1895
  key = e.name
@@ -2038,7 +2061,8 @@ class PTupleType < PAnyType
2038
2061
  end
2039
2062
 
2040
2063
  def instance?(o, guard = nil)
2041
- return false unless o.is_a?(Array)
2064
+ # The inferred type of a class derived from Array is either Runtime or Object. It's not assignable to the Tuple type.
2065
+ return false unless o.instance_of?(Array)
2042
2066
  if @size_type
2043
2067
  return false unless @size_type.instance?(o.size, guard)
2044
2068
  else
@@ -2097,7 +2121,6 @@ class PTupleType < PAnyType
2097
2121
  PArrayType.new_function(self, loader)
2098
2122
  end
2099
2123
 
2100
- DATA = PTupleType.new([PDataType::DEFAULT], PCollectionType::DEFAULT_SIZE)
2101
2124
  DEFAULT = PTupleType.new(EMPTY_ARRAY)
2102
2125
 
2103
2126
  protected
@@ -2307,7 +2330,7 @@ class PArrayType < PCollectionType
2307
2330
  create_ptype(loader, ir, 'CollectionType',
2308
2331
  'element_type' => {
2309
2332
  KEY_TYPE => POptionalType.new(PType::DEFAULT),
2310
- KEY_VALUE => nil
2333
+ KEY_VALUE => PAnyType::DEFAULT
2311
2334
  }
2312
2335
  )
2313
2336
  end
@@ -2319,13 +2342,13 @@ class PArrayType < PCollectionType
2319
2342
  if !size_type.nil? && size_type.from == 0 && size_type.to == 0
2320
2343
  @element_type = PUnitType::DEFAULT
2321
2344
  else
2322
- @element_type = element_type
2345
+ @element_type = element_type.nil? ? PAnyType::DEFAULT : element_type
2323
2346
  end
2324
2347
  end
2325
2348
 
2326
2349
  def accept(visitor, guard)
2327
2350
  super
2328
- @element_type.accept(visitor, guard) unless @element_type.nil?
2351
+ @element_type.accept(visitor, guard)
2329
2352
  end
2330
2353
 
2331
2354
  # @api private
@@ -2337,9 +2360,7 @@ class PArrayType < PCollectionType
2337
2360
  end
2338
2361
 
2339
2362
  def generalize
2340
- if self == DATA
2341
- self
2342
- elsif @element_type.nil?
2363
+ if PAnyType::DEFAULT.eql?(@element_type)
2343
2364
  DEFAULT
2344
2365
  else
2345
2366
  ge_type = @element_type.generalize
@@ -2356,9 +2377,7 @@ class PArrayType < PCollectionType
2356
2377
  end
2357
2378
 
2358
2379
  def normalize(guard = nil)
2359
- if self == DATA
2360
- self
2361
- elsif @element_type.nil?
2380
+ if PAnyType::DEFAULT.eql?(@element_type)
2362
2381
  DEFAULT
2363
2382
  else
2364
2383
  ne_type = @element_type.normalize(guard)
@@ -2367,21 +2386,20 @@ class PArrayType < PCollectionType
2367
2386
  end
2368
2387
 
2369
2388
  def resolve(type_parser, loader)
2370
- relement_type = @element_type
2371
- relement_type = relement_type.resolve(type_parser, loader) unless relement_type.nil?
2389
+ relement_type = @element_type.resolve(type_parser, loader)
2372
2390
  relement_type.equal?(@element_type) ? self : self.class.new(relement_type, @size_type)
2373
2391
  end
2374
2392
 
2375
2393
  def instance?(o, guard = nil)
2376
- return false unless o.is_a?(Array)
2377
- element_t = element_type
2378
- return false unless element_t.nil? || o.all? {|element| element_t.instance?(element, guard) }
2394
+ # The inferred type of a class derived from Array is either Runtime or Object. It's not assignable to the Array type.
2395
+ return false unless o.instance_of?(Array)
2396
+ return false unless o.all? {|element| @element_type.instance?(element, guard) }
2379
2397
  size_t = size_type
2380
2398
  size_t.nil? || size_t.instance?(o.size, guard)
2381
2399
  end
2382
2400
 
2383
2401
  def iterable_type(guard = nil)
2384
- @element_type.nil? ? PIterableType::DEFAULT : PIterableType.new(@element_type)
2402
+ PAnyType::DEFAULT.eql?(@element_type) ? PIterableType::DEFAULT : PIterableType.new(@element_type)
2385
2403
  end
2386
2404
 
2387
2405
  # Returns a new function that produces an Array
@@ -2427,7 +2445,6 @@ class PArrayType < PCollectionType
2427
2445
  end
2428
2446
  end
2429
2447
 
2430
- DATA = PArrayType.new(PDataType::DEFAULT, DEFAULT_SIZE)
2431
2448
  DEFAULT = PArrayType.new(nil)
2432
2449
  EMPTY = PArrayType.new(PUnitType::DEFAULT, ZERO_SIZE)
2433
2450
 
@@ -2436,12 +2453,7 @@ class PArrayType < PCollectionType
2436
2453
  # Array is assignable if o is an Array and o's element type is assignable, or if o is a Tuple
2437
2454
  # @api private
2438
2455
  def _assignable?(o, guard)
2439
- s_entry = element_type
2440
2456
  if o.is_a?(PTupleType)
2441
- # If s_entry is nil, this Array type has no opinion on element types. Therefore any
2442
- # tuple can be assigned.
2443
- return true if s_entry.nil?
2444
-
2445
2457
  o_types = o.types
2446
2458
  size_s = size_type || DEFAULT_SIZE
2447
2459
  size_o = o.size_type
@@ -2449,9 +2461,9 @@ class PArrayType < PCollectionType
2449
2461
  type_count = o_types.size
2450
2462
  size_o = PIntegerType.new(type_count, type_count)
2451
2463
  end
2452
- size_s.assignable?(size_o) && o_types.all? { |ot| s_entry.assignable?(ot, guard) }
2464
+ size_s.assignable?(size_o) && o_types.all? { |ot| @element_type.assignable?(ot, guard) }
2453
2465
  elsif o.is_a?(PArrayType)
2454
- super && (s_entry.nil? || s_entry.assignable?(o.element_type, guard))
2466
+ super && @element_type.assignable?(o.element_type, guard)
2455
2467
  else
2456
2468
  false
2457
2469
  end
@@ -2466,11 +2478,11 @@ class PHashType < PCollectionType
2466
2478
  create_ptype(loader, ir, 'CollectionType',
2467
2479
  'key_type' => {
2468
2480
  KEY_TYPE => POptionalType.new(PType::DEFAULT),
2469
- KEY_VALUE => nil
2481
+ KEY_VALUE => PAnyType::DEFAULT
2470
2482
  },
2471
2483
  'value_type' => {
2472
2484
  KEY_TYPE => POptionalType.new(PType::DEFAULT),
2473
- KEY_VALUE => nil,
2485
+ KEY_VALUE => PAnyType::DEFAULT
2474
2486
  }
2475
2487
  )
2476
2488
  end
@@ -2483,45 +2495,43 @@ class PHashType < PCollectionType
2483
2495
  @key_type = PUnitType::DEFAULT
2484
2496
  @value_type = PUnitType::DEFAULT
2485
2497
  else
2486
- @key_type = key_type
2487
- @value_type = value_type
2498
+ @key_type = key_type.nil? ? PAnyType::DEFAULT : key_type
2499
+ @value_type = value_type.nil? ? PAnyType::DEFAULT : value_type
2488
2500
  end
2489
2501
  end
2490
2502
 
2491
2503
  def accept(visitor, guard)
2492
2504
  super
2493
- @key_type.accept(visitor, guard) unless @key_type.nil?
2494
- @value_type.accept(visitor, guard) unless @value_type.nil?
2505
+ @key_type.accept(visitor, guard)
2506
+ @value_type.accept(visitor, guard)
2495
2507
  end
2496
2508
 
2497
2509
  def element_type
2498
2510
  if Puppet[:strict] != :off
2499
- Puppet.warn_once(:deprecation, 'Puppet::Pops::Types::PHashType#element_type',
2511
+ Puppet.warn_once('deprecations', 'Puppet::Pops::Types::PHashType#element_type',
2500
2512
  'Puppet::Pops::Types::PHashType#element_type is deprecated, use #value_type instead')
2501
2513
  end
2502
2514
  @value_type
2503
2515
  end
2504
2516
 
2505
2517
  def generalize
2506
- if self == DEFAULT || self == DATA || self == EMPTY
2518
+ if self == DEFAULT || self == EMPTY
2507
2519
  self
2508
2520
  else
2509
2521
  key_t = @key_type
2510
- key_t = key_t.generalize unless key_t.nil?
2522
+ key_t = key_t.generalize
2511
2523
  value_t = @value_type
2512
- value_t = value_t.generalize unless value_t.nil?
2524
+ value_t = value_t.generalize
2513
2525
  @size_type.nil? && @key_type.equal?(key_t) && @value_type.equal?(value_t) ? self : PHashType.new(key_t, value_t, nil)
2514
2526
  end
2515
2527
  end
2516
2528
 
2517
2529
  def normalize(guard = nil)
2518
- if self == DEFAULT || self == DATA || self == EMPTY
2530
+ if self == DEFAULT || self == EMPTY
2519
2531
  self
2520
2532
  else
2521
- key_t = @key_type
2522
- key_t = key_t.normalize(guard) unless key_t.nil?
2523
- value_t = @value_type
2524
- value_t = value_t.normalize(guard) unless value_t.nil?
2533
+ key_t = @key_type.normalize(guard)
2534
+ value_t = @value_type.normalize(guard)
2525
2535
  @size_type.nil? && @key_type.equal?(key_t) && @value_type.equal?(value_t) ? self : PHashType.new(key_t, value_t, @size_type)
2526
2536
  end
2527
2537
  end
@@ -2531,11 +2541,9 @@ class PHashType < PCollectionType
2531
2541
  end
2532
2542
 
2533
2543
  def instance?(o, guard = nil)
2534
- return false unless o.is_a?(Hash)
2535
- key_t = key_type
2536
- value_t = value_type
2537
- if (key_t.nil? || o.keys.all? {|key| key_t.instance?(key, guard) }) &&
2538
- (value_t.nil? || o.values.all? {|value| value_t.instance?(value, guard) })
2544
+ # The inferred type of a class derived from Hash is either Runtime or Object. It's not assignable to the Hash type.
2545
+ return false unless o.instance_of?(Hash)
2546
+ if o.keys.all? {|key| @key_type.instance?(key, guard) } && o.values.all? {|value| @value_type.instance?(value, guard) }
2539
2547
  size_t = size_type
2540
2548
  size_t.nil? || size_t.instance?(o.size, guard)
2541
2549
  else
@@ -2564,10 +2572,8 @@ class PHashType < PCollectionType
2564
2572
  end
2565
2573
 
2566
2574
  def resolve(type_parser, loader)
2567
- rkey_type = @key_type
2568
- rkey_type = rkey_type.resolve(type_parser, loader) unless rkey_type.nil?
2569
- rvalue_type = @value_type
2570
- rvalue_type = rvalue_type.resolve(type_parser, loader) unless rvalue_type.nil?
2575
+ rkey_type = @key_type.resolve(type_parser, loader)
2576
+ rvalue_type = @value_type.resolve(type_parser, loader)
2571
2577
  rkey_type.equal?(@key_type) && rvalue_type.equal?(@value_type) ? self : self.class.new(rkey_type, rvalue_type, @size_type)
2572
2578
  end
2573
2579
 
@@ -2621,7 +2627,6 @@ class PHashType < PCollectionType
2621
2627
  DEFAULT = PHashType.new(nil, nil)
2622
2628
  KEY_PAIR_TUPLE_SIZE = PIntegerType.new(2,2)
2623
2629
  DEFAULT_KEY_PAIR_TUPLE = PTupleType.new([PUnitType::DEFAULT, PUnitType::DEFAULT], KEY_PAIR_TUPLE_SIZE)
2624
- DATA = PHashType.new(PScalarType::DEFAULT, PDataType::DEFAULT, DEFAULT_SIZE)
2625
2630
  EMPTY = PHashType.new(PUnitType::DEFAULT, PUnitType::DEFAULT, PIntegerType.new(0, 0))
2626
2631
 
2627
2632
  protected
@@ -2630,20 +2635,20 @@ class PHashType < PCollectionType
2630
2635
  # @api private
2631
2636
  def _assignable?(o, guard)
2632
2637
  case o
2633
- when PHashType
2634
- size_s = size_type
2635
- return true if (size_s.nil? || size_s.from == 0) && o.is_the_empty_hash?
2636
- return false unless (key_type.nil? || key_type.assignable?(o.key_type, guard)) && (value_type.nil? || value_type.assignable?(o.value_type, guard))
2637
- super
2638
- when PStructType
2639
- # hash must accept String as key type
2640
- # hash must accept all value types
2641
- # hash must accept the size of the struct
2642
- o_elements = o.elements
2643
- (size_type || DEFAULT_SIZE).instance?(o_elements.size, guard) &&
2644
- o_elements.all? {|e| (key_type.nil? || key_type.instance?(e.name, guard)) && (value_type.nil? || value_type.assignable?(e.value_type, guard)) }
2645
- else
2646
- false
2638
+ when PHashType
2639
+ size_s = size_type
2640
+ return true if (size_s.nil? || size_s.from == 0) && o.is_the_empty_hash?
2641
+ return false unless @key_type.assignable?(o.key_type, guard) && @value_type.assignable?(o.value_type, guard)
2642
+ super
2643
+ when PStructType
2644
+ # hash must accept String as key type
2645
+ # hash must accept all value types
2646
+ # hash must accept the size of the struct
2647
+ o_elements = o.elements
2648
+ (size_type || DEFAULT_SIZE).instance?(o_elements.size, guard) &&
2649
+ o_elements.all? {|e| @key_type.instance?(e.name, guard) && @value_type.assignable?(e.value_type, guard) }
2650
+ else
2651
+ false
2647
2652
  end
2648
2653
  end
2649
2654
  end
@@ -2691,7 +2696,7 @@ class PVariantType < PAnyType
2691
2696
  end
2692
2697
 
2693
2698
  def generalize
2694
- if self == DEFAULT || self == DATA
2699
+ if self == DEFAULT
2695
2700
  self
2696
2701
  else
2697
2702
  alter_type_array(@types, :generalize) { |altered| PVariantType.maybe_create(altered) }
@@ -2699,7 +2704,7 @@ class PVariantType < PAnyType
2699
2704
  end
2700
2705
 
2701
2706
  def normalize(guard = nil)
2702
- if self == DEFAULT || self == DATA || @types.empty?
2707
+ if self == DEFAULT || @types.empty?
2703
2708
  self
2704
2709
  else
2705
2710
  # Normalize all contained types
@@ -2778,27 +2783,20 @@ class PVariantType < PAnyType
2778
2783
  end
2779
2784
 
2780
2785
  def eql?(o)
2781
- o = DATA if o.is_a?(PDataType)
2782
2786
  self.class == o.class && @types.size == o.types.size && (@types - o.types).empty?
2783
2787
  end
2784
2788
 
2785
- # Variant compatible with the Data type.
2786
- DATA = PVariantType.new([PHashType::DATA, PArrayType::DATA, PScalarType::DEFAULT, PUndefType::DEFAULT, PTupleType::DATA])
2787
-
2788
2789
  DEFAULT = PVariantType.new(EMPTY_ARRAY)
2789
2790
 
2790
2791
  protected
2791
2792
 
2792
2793
  # @api private
2793
2794
  def _assignable?(o, guard)
2794
- # Data is a specific variant
2795
- o = DATA if o.is_a?(PDataType)
2796
2795
  if o.is_a?(PVariantType)
2797
2796
  # A variant is assignable if all of its options are assignable to one of this type's options
2798
2797
  return true if self == o
2799
2798
  o.types.all? do |other|
2800
2799
  # if the other is a Variant, all of its options, but be assignable to one of this type's options
2801
- other = other.is_a?(PDataType) ? DATA : other
2802
2800
  if other.is_a?(PVariantType)
2803
2801
  assignable?(other, guard)
2804
2802
  else
@@ -3382,6 +3380,8 @@ require 'puppet/pops/pcore'
3382
3380
  require_relative 'annotatable'
3383
3381
  require_relative 'p_meta_type'
3384
3382
  require_relative 'p_object_type'
3383
+ require_relative 'annotation'
3384
+ require_relative 'ruby_method'
3385
3385
  require_relative 'p_runtime_type'
3386
3386
  require_relative 'p_sem_ver_type'
3387
3387
  require_relative 'p_sem_ver_range_type'