puppet 4.1.0 → 4.10.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 (1628) hide show
  1. checksums.yaml +4 -4
  2. data/COMMITTERS.md +2 -2
  3. data/CONTRIBUTING.md +34 -10
  4. data/Gemfile +26 -9
  5. data/LICENSE +3 -3
  6. data/MAINTAINERS +71 -0
  7. data/README.md +9 -11
  8. data/Rakefile +35 -0
  9. data/conf/auth.conf +2 -2
  10. data/conf/puppet.conf +1 -1
  11. data/ext/README.environment +1 -1
  12. data/ext/build_defaults.yaml +2 -2
  13. data/ext/debian/README.source +1 -1
  14. data/ext/debian/control +3 -5
  15. data/ext/debian/copyright +4 -4
  16. data/ext/debian/puppet.init +0 -1
  17. data/ext/debian/puppet.logrotate +14 -5
  18. data/ext/debian/puppetmaster.README.debian +11 -9
  19. data/ext/emacs/puppet-mode.el +1 -1
  20. data/ext/envpuppet +2 -2
  21. data/ext/ips/puppetagent.xml +1 -1
  22. data/ext/ips/puppetmaster.xml +1 -1
  23. data/ext/osx/puppet.plist +30 -0
  24. data/ext/project_data.yaml +31 -15
  25. data/ext/puppet-test +3 -3
  26. data/ext/rack/example-passenger-vhost.conf +1 -1
  27. data/ext/redhat/client.init +67 -17
  28. data/ext/redhat/client.sysconfig +1 -10
  29. data/ext/redhat/logrotate +15 -3
  30. data/ext/redhat/puppet.spec.erb +6 -11
  31. data/ext/redhat/server.init +1 -1
  32. data/ext/regexp_nodes/regexp_nodes.rb +1 -1
  33. data/ext/solaris/pkginfo +1 -1
  34. data/ext/solaris/smf/puppet +44 -0
  35. data/ext/solaris/smf/puppet.xml +44 -0
  36. data/ext/suse/client.init +30 -33
  37. data/ext/suse/puppet.spec +2 -2
  38. data/ext/suse/server.init +2 -2
  39. data/ext/systemd/puppet.service +13 -1
  40. data/ext/upload_facts.rb +1 -1
  41. data/ext/windows/puppet_interactive.bat +6 -0
  42. data/ext/windows/puppet_shell.bat +9 -0
  43. data/ext/windows/run_puppet_interactive.bat +9 -0
  44. data/ext/windows/service/daemon.rb +2 -1
  45. data/ext/yaml_nodes.rb +1 -1
  46. data/install.rb +98 -65
  47. data/lib/hiera/puppet_function.rb +17 -18
  48. data/lib/hiera/scope.rb +12 -14
  49. data/lib/hiera_puppet.rb +6 -14
  50. data/lib/puppet/agent/locker.rb +11 -2
  51. data/lib/puppet/agent.rb +12 -27
  52. data/lib/puppet/application/agent.rb +35 -19
  53. data/lib/puppet/application/apply.rb +46 -14
  54. data/lib/puppet/application/ca.rb +1 -0
  55. data/lib/puppet/application/cert.rb +52 -3
  56. data/lib/puppet/application/device.rb +2 -2
  57. data/lib/puppet/application/face_base.rb +4 -0
  58. data/lib/puppet/application/filebucket.rb +79 -5
  59. data/lib/puppet/application/generate.rb +5 -0
  60. data/lib/puppet/application/inspect.rb +5 -2
  61. data/lib/puppet/application/lookup.rb +344 -0
  62. data/lib/puppet/application/master.rb +7 -3
  63. data/lib/puppet/application/resource.rb +2 -6
  64. data/lib/puppet/application.rb +20 -4
  65. data/lib/puppet/application_support.rb +1 -1
  66. data/lib/puppet/compilable_resource_type.rb +15 -0
  67. data/lib/puppet/configurer/plugin_handler.rb +7 -5
  68. data/lib/puppet/configurer.rb +177 -37
  69. data/lib/puppet/context/trusted_information.rb +21 -1
  70. data/lib/puppet/context.rb +16 -1
  71. data/lib/puppet/daemon.rb +17 -13
  72. data/lib/puppet/data_binding.rb +4 -2
  73. data/lib/puppet/data_providers/data_adapter.rb +14 -68
  74. data/lib/puppet/data_providers/data_function_support.rb +13 -26
  75. data/lib/puppet/data_providers/function_env_data_provider.rb +7 -9
  76. data/lib/puppet/data_providers/function_module_data_provider.rb +7 -22
  77. data/lib/puppet/data_providers/hiera_config.rb +151 -0
  78. data/lib/puppet/data_providers/hiera_env_data_provider.rb +25 -0
  79. data/lib/puppet/data_providers/hiera_interpolate.rb +21 -0
  80. data/lib/puppet/data_providers/hiera_module_data_provider.rb +30 -0
  81. data/lib/puppet/data_providers/hiera_support.rb +42 -0
  82. data/lib/puppet/data_providers/json_data_provider_factory.rb +38 -0
  83. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +40 -0
  84. data/lib/puppet/data_providers.rb +17 -14
  85. data/lib/puppet/defaults.rb +273 -59
  86. data/lib/puppet/environments.rb +104 -9
  87. data/lib/puppet/error.rb +4 -0
  88. data/lib/puppet/etc.rb +125 -0
  89. data/lib/puppet/external/dot.rb +1 -1
  90. data/lib/puppet/face/ca.rb +6 -1
  91. data/lib/puppet/face/catalog.rb +1 -1
  92. data/lib/puppet/face/certificate.rb +7 -1
  93. data/lib/puppet/face/certificate_request.rb +2 -0
  94. data/lib/puppet/face/certificate_revocation_list.rb +2 -0
  95. data/lib/puppet/face/config.rb +2 -2
  96. data/lib/puppet/face/epp.rb +63 -17
  97. data/lib/puppet/face/file.rb +3 -0
  98. data/lib/puppet/face/generate.rb +64 -0
  99. data/lib/puppet/face/help/face.erb +3 -0
  100. data/lib/puppet/face/help/man.erb +1 -1
  101. data/lib/puppet/face/help.rb +35 -27
  102. data/lib/puppet/face/key.rb +1 -0
  103. data/lib/puppet/face/man.rb +5 -3
  104. data/lib/puppet/face/module/changes.rb +2 -1
  105. data/lib/puppet/face/module/generate.rb +1 -1
  106. data/lib/puppet/face/module/install.rb +6 -6
  107. data/lib/puppet/face/parser.rb +12 -9
  108. data/lib/puppet/face/plugin.rb +7 -14
  109. data/lib/puppet/face/status.rb +4 -1
  110. data/lib/puppet/feature/base.rb +9 -2
  111. data/lib/puppet/feature/cfacter.rb +1 -0
  112. data/lib/puppet/feature/cfpropertylist.rb +3 -0
  113. data/lib/puppet/feature/external_facts.rb +1 -1
  114. data/lib/puppet/feature/hiera_eyaml.rb +3 -0
  115. data/lib/puppet/feature/hocon.rb +3 -0
  116. data/lib/puppet/feature/telnet.rb +9 -0
  117. data/lib/puppet/file_bucket/dipper.rb +58 -2
  118. data/lib/puppet/file_serving/http_metadata.rb +46 -0
  119. data/lib/puppet/file_serving/metadata.rb +18 -2
  120. data/lib/puppet/file_serving/terminus_selector.rb +2 -0
  121. data/lib/puppet/file_system/file_impl.rb +7 -2
  122. data/lib/puppet/file_system/memory_impl.rb +5 -1
  123. data/lib/puppet/file_system/path_pattern.rb +1 -0
  124. data/lib/puppet/file_system/uniquefile.rb +3 -3
  125. data/lib/puppet/file_system/windows.rb +28 -13
  126. data/lib/puppet/file_system.rb +33 -5
  127. data/lib/puppet/forge/repository.rb +3 -35
  128. data/lib/puppet/forge.rb +7 -7
  129. data/lib/puppet/functions/alert.rb +14 -0
  130. data/lib/puppet/functions/assert_type.rb +53 -19
  131. data/lib/puppet/functions/binary_file.rb +19 -0
  132. data/lib/puppet/functions/break.rb +22 -0
  133. data/lib/puppet/functions/contain.rb +33 -0
  134. data/lib/puppet/functions/crit.rb +14 -0
  135. data/lib/puppet/functions/debug.rb +14 -0
  136. data/lib/puppet/functions/defined.rb +88 -58
  137. data/lib/puppet/functions/dig.rb +23 -0
  138. data/lib/puppet/functions/each.rb +89 -39
  139. data/lib/puppet/functions/emerg.rb +14 -0
  140. data/lib/puppet/functions/epp.rb +29 -37
  141. data/lib/puppet/functions/err.rb +14 -0
  142. data/lib/puppet/functions/eyaml_lookup_key.rb +90 -0
  143. data/lib/puppet/functions/filter.rb +64 -38
  144. data/lib/puppet/functions/find_file.rb +31 -0
  145. data/lib/puppet/functions/hiera.rb +76 -3
  146. data/lib/puppet/functions/hiera_array.rb +66 -4
  147. data/lib/puppet/functions/hiera_hash.rb +74 -2
  148. data/lib/puppet/functions/hiera_include.rb +78 -5
  149. data/lib/puppet/functions/hocon_data.rb +35 -0
  150. data/lib/puppet/functions/include.rb +21 -0
  151. data/lib/puppet/functions/info.rb +14 -0
  152. data/lib/puppet/functions/inline_epp.rb +44 -71
  153. data/lib/puppet/functions/json_data.rb +29 -0
  154. data/lib/puppet/functions/lest.rb +17 -0
  155. data/lib/puppet/functions/lookup.rb +172 -184
  156. data/lib/puppet/functions/map.rb +60 -33
  157. data/lib/puppet/functions/match.rb +30 -12
  158. data/lib/puppet/functions/new.rb +31 -0
  159. data/lib/puppet/functions/next.rb +23 -0
  160. data/lib/puppet/functions/notice.rb +14 -0
  161. data/lib/puppet/functions/reduce.rb +99 -70
  162. data/lib/puppet/functions/regsubst.rb +22 -25
  163. data/lib/puppet/functions/require.rb +37 -0
  164. data/lib/puppet/functions/return.rb +22 -0
  165. data/lib/puppet/functions/reverse_each.rb +25 -0
  166. data/lib/puppet/functions/scanf.rb +15 -18
  167. data/lib/puppet/functions/slice.rb +22 -36
  168. data/lib/puppet/functions/split.rb +2 -2
  169. data/lib/puppet/functions/step.rb +26 -0
  170. data/lib/puppet/functions/strftime.rb +35 -0
  171. data/lib/puppet/functions/then.rb +14 -0
  172. data/lib/puppet/functions/type.rb +31 -0
  173. data/lib/puppet/functions/unwrap.rb +40 -0
  174. data/lib/puppet/functions/versioncmp.rb +36 -0
  175. data/lib/puppet/functions/warning.rb +14 -0
  176. data/lib/puppet/functions/with.rb +15 -7
  177. data/lib/puppet/functions/yaml_data.rb +38 -0
  178. data/lib/puppet/functions.rb +180 -32
  179. data/lib/puppet/generate/models/type/property.rb +70 -0
  180. data/lib/puppet/generate/models/type/type.rb +61 -0
  181. data/lib/puppet/generate/templates/type/pcore.erb +42 -0
  182. data/lib/puppet/generate/type.rb +239 -0
  183. data/lib/puppet/graph/rb_tree_map.rb +1 -1
  184. data/lib/puppet/graph/simple_graph.rb +6 -8
  185. data/lib/puppet/indirector/catalog/compiler.rb +195 -8
  186. data/lib/puppet/indirector/catalog/static_compiler.rb +50 -31
  187. data/lib/puppet/indirector/data_binding/none.rb +4 -1
  188. data/lib/puppet/indirector/face.rb +6 -1
  189. data/lib/puppet/indirector/facts/facter.rb +3 -6
  190. data/lib/puppet/indirector/file_bucket_file/file.rb +137 -25
  191. data/lib/puppet/indirector/file_content/http.rb +15 -0
  192. data/lib/puppet/indirector/file_metadata/http.rb +27 -0
  193. data/lib/puppet/indirector/generic_http.rb +16 -0
  194. data/lib/puppet/indirector/hiera.rb +7 -1
  195. data/lib/puppet/indirector/indirection.rb +12 -3
  196. data/lib/puppet/indirector/json.rb +3 -3
  197. data/lib/puppet/indirector/key/ca.rb +2 -2
  198. data/lib/puppet/indirector/key/file.rb +2 -1
  199. data/lib/puppet/indirector/msgpack.rb +2 -2
  200. data/lib/puppet/indirector/node/exec.rb +1 -1
  201. data/lib/puppet/indirector/node/ldap.rb +1 -1
  202. data/lib/puppet/indirector/request.rb +36 -12
  203. data/lib/puppet/indirector/resource_type/parser.rb +10 -3
  204. data/lib/puppet/indirector/rest.rb +80 -5
  205. data/lib/puppet/indirector/ssl_file.rb +24 -3
  206. data/lib/puppet/indirector/terminus.rb +4 -4
  207. data/lib/puppet/info_service/class_information_service.rb +111 -0
  208. data/lib/puppet/info_service.rb +7 -0
  209. data/lib/puppet/interface/documentation.rb +1 -1
  210. data/lib/puppet/interface/face_collection.rb +1 -1
  211. data/lib/puppet/interface.rb +14 -2
  212. data/lib/puppet/loaders.rb +5 -0
  213. data/lib/puppet/metatype/manager.rb +25 -8
  214. data/lib/puppet/module.rb +65 -31
  215. data/lib/puppet/module_tool/applications/application.rb +1 -1
  216. data/lib/puppet/module_tool/applications/builder.rb +5 -4
  217. data/lib/puppet/module_tool/applications/installer.rb +14 -14
  218. data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
  219. data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
  220. data/lib/puppet/module_tool/checksums.rb +1 -1
  221. data/lib/puppet/module_tool/errors/installer.rb +2 -2
  222. data/lib/puppet/module_tool/installed_modules.rb +7 -7
  223. data/lib/puppet/module_tool/local_tarball.rb +3 -3
  224. data/lib/puppet/module_tool/metadata.rb +34 -11
  225. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +14 -3
  226. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +42 -38
  227. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +19 -4
  228. data/lib/puppet/module_tool/skeleton/templates/generator/{tests → examples}/init.pp.erb +2 -2
  229. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +25 -18
  230. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -2
  231. data/lib/puppet/module_tool/tar/mini.rb +3 -3
  232. data/lib/puppet/module_tool.rb +5 -5
  233. data/lib/puppet/network/auth_config_parser.rb +1 -1
  234. data/lib/puppet/network/authconfig.rb +21 -1
  235. data/lib/puppet/network/authorization.rb +8 -1
  236. data/lib/puppet/network/http/api/indirected_routes.rb +23 -34
  237. data/lib/puppet/network/http/api/master/v3/environment.rb +63 -0
  238. data/lib/puppet/network/http/api/master/v3.rb +7 -1
  239. data/lib/puppet/network/http/compression.rb +2 -1
  240. data/lib/puppet/network/http/connection.rb +2 -0
  241. data/lib/puppet/network/http/error.rb +1 -1
  242. data/lib/puppet/network/http/factory.rb +8 -4
  243. data/lib/puppet/network/http/handler.rb +3 -2
  244. data/lib/puppet/network/http/pool.rb +9 -0
  245. data/lib/puppet/network/http/rack/rest.rb +25 -2
  246. data/lib/puppet/network/http/webrick.rb +2 -1
  247. data/lib/puppet/network/rights.rb +1 -11
  248. data/lib/puppet/node/environment.rb +49 -14
  249. data/lib/puppet/node/facts.rb +1 -1
  250. data/lib/puppet/node.rb +22 -7
  251. data/lib/puppet/parameter/boolean.rb +1 -1
  252. data/lib/puppet/parameter/value.rb +1 -1
  253. data/lib/puppet/parameter.rb +23 -3
  254. data/lib/puppet/parser/ast/pops_bridge.rb +97 -27
  255. data/lib/puppet/parser/ast/resource.rb +5 -0
  256. data/lib/puppet/parser/ast/resource_instance.rb +5 -1
  257. data/lib/puppet/parser/ast/resourceparam.rb +5 -0
  258. data/lib/puppet/parser/ast.rb +5 -0
  259. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
  260. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +60 -0
  261. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
  262. data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
  263. data/lib/puppet/parser/compiler.rb +325 -42
  264. data/lib/puppet/parser/e4_parser_adapter.rb +13 -12
  265. data/lib/puppet/parser/environment_compiler.rb +201 -0
  266. data/lib/puppet/parser/functions/assert_type.rb +47 -17
  267. data/lib/puppet/parser/functions/binary_file.rb +24 -0
  268. data/lib/puppet/parser/functions/break.rb +39 -0
  269. data/lib/puppet/parser/functions/contain.rb +7 -15
  270. data/lib/puppet/parser/functions/create_resources.rb +39 -23
  271. data/lib/puppet/parser/functions/defined.rb +106 -93
  272. data/lib/puppet/parser/functions/dig.rb +29 -0
  273. data/lib/puppet/parser/functions/each.rb +86 -28
  274. data/lib/puppet/parser/functions/epp.rb +30 -38
  275. data/lib/puppet/parser/functions/filter.rb +60 -24
  276. data/lib/puppet/parser/functions/find_file.rb +28 -0
  277. data/lib/puppet/parser/functions/fqdn_rand.rb +3 -3
  278. data/lib/puppet/parser/functions/hiera.rb +98 -28
  279. data/lib/puppet/parser/functions/hiera_array.rb +86 -29
  280. data/lib/puppet/parser/functions/hiera_hash.rb +96 -31
  281. data/lib/puppet/parser/functions/hiera_include.rb +96 -41
  282. data/lib/puppet/parser/functions/include.rb +4 -8
  283. data/lib/puppet/parser/functions/inline_epp.rb +36 -61
  284. data/lib/puppet/parser/functions/inline_template.rb +2 -2
  285. data/lib/puppet/parser/functions/lest.rb +49 -0
  286. data/lib/puppet/parser/functions/lookup.rb +129 -151
  287. data/lib/puppet/parser/functions/map.rb +56 -21
  288. data/lib/puppet/parser/functions/match.rb +29 -13
  289. data/lib/puppet/parser/functions/new.rb +926 -0
  290. data/lib/puppet/parser/functions/next.rb +38 -0
  291. data/lib/puppet/parser/functions/reduce.rb +98 -61
  292. data/lib/puppet/parser/functions/regsubst.rb +4 -2
  293. data/lib/puppet/parser/functions/require.rb +4 -27
  294. data/lib/puppet/parser/functions/return.rb +71 -0
  295. data/lib/puppet/parser/functions/reverse_each.rb +83 -0
  296. data/lib/puppet/parser/functions/scanf.rb +25 -31
  297. data/lib/puppet/parser/functions/slice.rb +18 -25
  298. data/lib/puppet/parser/functions/split.rb +2 -2
  299. data/lib/puppet/parser/functions/step.rb +84 -0
  300. data/lib/puppet/parser/functions/strftime.rb +185 -0
  301. data/lib/puppet/parser/functions/then.rb +73 -0
  302. data/lib/puppet/parser/functions/type.rb +53 -0
  303. data/lib/puppet/parser/functions/with.rb +17 -9
  304. data/lib/puppet/parser/functions.rb +34 -16
  305. data/lib/puppet/parser/resource.rb +149 -35
  306. data/lib/puppet/parser/scope.rb +344 -88
  307. data/lib/puppet/parser/type_loader.rb +1 -1
  308. data/lib/puppet/parser.rb +3 -1
  309. data/lib/puppet/plugins/configuration.rb +11 -2
  310. data/lib/puppet/plugins/data_providers/data_provider.rb +406 -0
  311. data/lib/puppet/plugins/data_providers/registry.rb +51 -0
  312. data/lib/puppet/plugins/data_providers.rb +15 -60
  313. data/lib/puppet/pops/adaptable.rb +4 -4
  314. data/lib/puppet/pops/adapters.rb +114 -31
  315. data/lib/puppet/pops/binder/binder.rb +21 -17
  316. data/lib/puppet/pops/binder/binder_issues.rb +8 -6
  317. data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
  318. data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
  319. data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
  320. data/lib/puppet/pops/binder/bindings_label_provider.rb +3 -1
  321. data/lib/puppet/pops/binder/bindings_loader.rb +6 -2
  322. data/lib/puppet/pops/binder/bindings_model.rb +49 -47
  323. data/lib/puppet/pops/binder/bindings_model_meta.rb +2 -2
  324. data/lib/puppet/pops/binder/config/binder_config.rb +1 -1
  325. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
  326. data/lib/puppet/pops/binder/injector.rb +55 -50
  327. data/lib/puppet/pops/binder/key_factory.rb +10 -12
  328. data/lib/puppet/pops/binder/producers.rb +70 -65
  329. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
  330. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +68 -9
  331. data/lib/puppet/pops/evaluator/access_operator.rb +246 -147
  332. data/lib/puppet/pops/evaluator/callable_signature.rb +7 -0
  333. data/lib/puppet/pops/evaluator/closure.rb +231 -115
  334. data/lib/puppet/pops/evaluator/collector_transformer.rb +44 -15
  335. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
  336. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -2
  337. data/lib/puppet/pops/evaluator/compare_operator.rb +69 -12
  338. data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
  339. data/lib/puppet/pops/evaluator/evaluator_impl.rb +194 -106
  340. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  341. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +84 -0
  342. data/lib/puppet/pops/evaluator/literal_evaluator.rb +87 -0
  343. data/lib/puppet/pops/evaluator/relationship_operator.rb +18 -11
  344. data/lib/puppet/pops/evaluator/runtime3_converter.rb +60 -51
  345. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
  346. data/lib/puppet/pops/evaluator/runtime3_support.rb +111 -79
  347. data/lib/puppet/pops/functions/dispatch.rb +27 -7
  348. data/lib/puppet/pops/functions/dispatcher.rb +15 -20
  349. data/lib/puppet/pops/functions/function.rb +30 -4
  350. data/lib/puppet/pops/issue_reporter.rb +7 -5
  351. data/lib/puppet/pops/issues.rb +177 -17
  352. data/lib/puppet/pops/label_provider.rb +18 -4
  353. data/lib/puppet/pops/loader/base_loader.rb +74 -20
  354. data/lib/puppet/pops/loader/dependency_loader.rb +27 -2
  355. data/lib/puppet/pops/loader/loader.rb +43 -49
  356. data/lib/puppet/pops/loader/loader_paths.rb +48 -2
  357. data/lib/puppet/pops/loader/module_loaders.rb +53 -20
  358. data/lib/puppet/pops/loader/null_loader.rb +17 -1
  359. data/lib/puppet/pops/loader/predefined_loader.rb +29 -0
  360. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +26 -20
  361. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
  362. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -4
  363. data/lib/puppet/pops/loader/runtime3_type_loader.rb +96 -0
  364. data/lib/puppet/pops/loader/static_loader.rb +139 -38
  365. data/lib/puppet/pops/loader/type_definition_instantiator.rb +93 -0
  366. data/lib/puppet/pops/loader/typed_name.rb +48 -0
  367. data/lib/puppet/pops/loaders.rb +204 -26
  368. data/lib/puppet/pops/lookup/configured_data_provider.rb +93 -0
  369. data/lib/puppet/pops/lookup/context.rb +200 -0
  370. data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
  371. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +145 -0
  372. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +126 -0
  373. data/lib/puppet/pops/lookup/data_provider.rb +107 -0
  374. data/lib/puppet/pops/lookup/environment_data_provider.rb +35 -0
  375. data/lib/puppet/pops/lookup/explainer.rb +594 -0
  376. data/lib/puppet/pops/lookup/function_provider.rb +110 -0
  377. data/lib/puppet/pops/lookup/global_data_provider.rb +78 -0
  378. data/lib/puppet/pops/lookup/hiera_config.rb +782 -0
  379. data/lib/puppet/pops/lookup/interpolation.rb +153 -0
  380. data/lib/puppet/pops/lookup/invocation.rb +251 -0
  381. data/lib/puppet/pops/lookup/location_resolver.rb +99 -0
  382. data/lib/puppet/pops/lookup/lookup_adapter.rb +510 -0
  383. data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
  384. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +92 -0
  385. data/lib/puppet/pops/lookup/module_data_provider.rb +81 -0
  386. data/lib/puppet/pops/lookup/sub_lookup.rb +90 -0
  387. data/lib/puppet/pops/lookup.rb +47 -49
  388. data/lib/puppet/pops/merge_strategy.rb +183 -47
  389. data/lib/puppet/pops/migration/migration_checker.rb +4 -0
  390. data/lib/puppet/pops/model/ast_transformer.rb +8 -1
  391. data/lib/puppet/pops/model/factory.rb +254 -162
  392. data/lib/puppet/pops/model/model.rb +25 -8
  393. data/lib/puppet/pops/model/model_label_provider.rb +28 -6
  394. data/lib/puppet/pops/model/model_meta.rb +45 -2
  395. data/lib/puppet/pops/model/model_tree_dumper.rb +44 -0
  396. data/lib/puppet/pops/parser/code_merger.rb +13 -1
  397. data/lib/puppet/pops/parser/egrammar.ra +150 -32
  398. data/lib/puppet/pops/parser/eparser.rb +1887 -1321
  399. data/lib/puppet/pops/parser/epp_support.rb +15 -9
  400. data/lib/puppet/pops/parser/evaluating_parser.rb +21 -13
  401. data/lib/puppet/pops/parser/heredoc_support.rb +16 -13
  402. data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
  403. data/lib/puppet/pops/parser/lexer2.rb +465 -396
  404. data/lib/puppet/pops/parser/lexer_support.rb +85 -7
  405. data/lib/puppet/pops/parser/locator.rb +63 -9
  406. data/lib/puppet/pops/parser/parser_support.rb +40 -28
  407. data/lib/puppet/pops/parser/slurp_support.rb +23 -14
  408. data/lib/puppet/pops/patterns.rb +16 -1
  409. data/lib/puppet/pops/pcore.rb +96 -0
  410. data/lib/puppet/pops/puppet_stack.rb +43 -0
  411. data/lib/puppet/pops/resource/param.rb +55 -0
  412. data/lib/puppet/pops/resource/resource_type_impl.rb +314 -0
  413. data/lib/puppet/pops/resource/resource_type_set.pcore +22 -0
  414. data/lib/puppet/pops/serialization/abstract_reader.rb +176 -0
  415. data/lib/puppet/pops/serialization/abstract_writer.rb +207 -0
  416. data/lib/puppet/pops/serialization/deserializer.rb +77 -0
  417. data/lib/puppet/pops/serialization/extension.rb +157 -0
  418. data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
  419. data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
  420. data/lib/puppet/pops/serialization/json.rb +297 -0
  421. data/lib/puppet/pops/serialization/object.rb +71 -0
  422. data/lib/puppet/pops/serialization/rgen.rb +152 -0
  423. data/lib/puppet/pops/serialization/serializer.rb +118 -0
  424. data/lib/puppet/pops/serialization/time_factory.rb +67 -0
  425. data/lib/puppet/pops/serialization.rb +17 -0
  426. data/lib/puppet/pops/time/timespan.rb +718 -0
  427. data/lib/puppet/pops/time/timestamp.rb +148 -0
  428. data/lib/puppet/pops/types/annotatable.rb +36 -0
  429. data/lib/puppet/pops/types/class_loader.rb +25 -23
  430. data/lib/puppet/pops/types/enumeration.rb +9 -27
  431. data/lib/puppet/pops/types/implementation_registry.rb +141 -0
  432. data/lib/puppet/pops/types/iterable.rb +308 -0
  433. data/lib/puppet/pops/types/p_binary_type.rb +220 -0
  434. data/lib/puppet/pops/types/p_meta_type.rb +83 -0
  435. data/lib/puppet/pops/types/p_object_type.rb +886 -0
  436. data/lib/puppet/pops/types/p_runtime_type.rb +115 -0
  437. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +187 -0
  438. data/lib/puppet/pops/types/p_sem_ver_type.rb +141 -0
  439. data/lib/puppet/pops/types/p_sensitive_type.rb +73 -0
  440. data/lib/puppet/pops/types/p_timespan_type.rb +141 -0
  441. data/lib/puppet/pops/types/p_timestamp_type.rb +69 -0
  442. data/lib/puppet/pops/types/p_type_set_type.rb +352 -0
  443. data/lib/puppet/pops/types/puppet_object.rb +16 -0
  444. data/lib/puppet/pops/types/recursion_guard.rb +136 -0
  445. data/lib/puppet/pops/types/ruby_generator.rb +275 -0
  446. data/lib/puppet/pops/types/string_converter.rb +1033 -0
  447. data/lib/puppet/pops/types/type_acceptor.rb +25 -0
  448. data/lib/puppet/pops/types/type_asserter.rb +21 -19
  449. data/lib/puppet/pops/types/type_assertion_error.rb +1 -0
  450. data/lib/puppet/pops/types/type_calculator.rb +244 -1287
  451. data/lib/puppet/pops/types/type_conversion_error.rb +15 -0
  452. data/lib/puppet/pops/types/type_factory.rb +222 -169
  453. data/lib/puppet/pops/types/type_formatter.rb +686 -0
  454. data/lib/puppet/pops/types/type_mismatch_describer.rb +1105 -0
  455. data/lib/puppet/pops/types/type_parser.rb +364 -281
  456. data/lib/puppet/pops/types/type_set_reference.rb +59 -0
  457. data/lib/puppet/pops/types/types.rb +3286 -307
  458. data/lib/puppet/pops/utils.rb +11 -10
  459. data/lib/puppet/pops/validation/checker4_0.rb +238 -56
  460. data/lib/puppet/pops/validation/validator_factory_4_0.rb +13 -5
  461. data/lib/puppet/pops/validation.rb +31 -16
  462. data/lib/puppet/pops/visitor.rb +9 -6
  463. data/lib/puppet/pops.rb +40 -25
  464. data/lib/puppet/property/ensure.rb +1 -1
  465. data/lib/puppet/property.rb +67 -7
  466. data/lib/puppet/provider/aixobject.rb +4 -4
  467. data/lib/puppet/provider/augeas/augeas.rb +57 -2
  468. data/lib/puppet/provider/cron/crontab.rb +1 -1
  469. data/lib/puppet/provider/exec/windows.rb +1 -1
  470. data/lib/puppet/provider/exec.rb +10 -3
  471. data/lib/puppet/provider/group/aix.rb +4 -4
  472. data/lib/puppet/provider/group/directoryservice.rb +10 -0
  473. data/lib/puppet/provider/group/pw.rb +1 -0
  474. data/lib/puppet/provider/group/windows_adsi.rb +15 -3
  475. data/lib/puppet/provider/macauthorization/macauthorization.rb +11 -10
  476. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  477. data/lib/puppet/provider/mcx/mcxcontent.rb +5 -4
  478. data/lib/puppet/provider/mount/parsed.rb +16 -2
  479. data/lib/puppet/provider/nameservice/directoryservice.rb +55 -62
  480. data/lib/puppet/provider/nameservice.rb +23 -8
  481. data/lib/puppet/provider/package/appdmg.rb +7 -6
  482. data/lib/puppet/provider/package/apple.rb +1 -1
  483. data/lib/puppet/provider/package/dnf.rb +46 -0
  484. data/lib/puppet/provider/package/gem.rb +29 -3
  485. data/lib/puppet/provider/package/nim.rb +2 -2
  486. data/lib/puppet/provider/package/openbsd.rb +7 -7
  487. data/lib/puppet/provider/package/pacman.rb +11 -10
  488. data/lib/puppet/provider/package/pip.rb +72 -20
  489. data/lib/puppet/provider/package/pip3.rb +20 -0
  490. data/lib/puppet/provider/package/pkg.rb +12 -8
  491. data/lib/puppet/provider/package/pkgdmg.rb +11 -8
  492. data/lib/puppet/provider/package/pkgin.rb +4 -4
  493. data/lib/puppet/provider/package/pkgng.rb +15 -6
  494. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  495. data/lib/puppet/provider/package/portage.rb +48 -8
  496. data/lib/puppet/provider/package/puppet_gem.rb +0 -0
  497. data/lib/puppet/provider/package/rpm.rb +123 -17
  498. data/lib/puppet/provider/package/sun.rb +1 -1
  499. data/lib/puppet/provider/package/tdnf.rb +28 -0
  500. data/lib/puppet/provider/package/windows/exe_package.rb +10 -8
  501. data/lib/puppet/provider/package/windows/msi_package.rb +4 -3
  502. data/lib/puppet/provider/package/windows/package.rb +9 -1
  503. data/lib/puppet/provider/package/windows.rb +1 -1
  504. data/lib/puppet/provider/package/yum.rb +62 -83
  505. data/lib/puppet/provider/package/zypper.rb +19 -0
  506. data/lib/puppet/provider/package.rb +6 -2
  507. data/lib/puppet/provider/parsedfile.rb +2 -2
  508. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +7 -0
  509. data/lib/puppet/provider/selmodule/semodule.rb +20 -16
  510. data/lib/puppet/provider/service/base.rb +4 -3
  511. data/lib/puppet/provider/service/bsd.rb +9 -9
  512. data/lib/puppet/provider/service/daemontools.rb +5 -5
  513. data/lib/puppet/provider/service/debian.rb +14 -5
  514. data/lib/puppet/provider/service/freebsd.rb +1 -1
  515. data/lib/puppet/provider/service/init.rb +20 -3
  516. data/lib/puppet/provider/service/launchd.rb +57 -19
  517. data/lib/puppet/provider/service/rcng.rb +51 -0
  518. data/lib/puppet/provider/service/redhat.rb +2 -1
  519. data/lib/puppet/provider/service/runit.rb +4 -4
  520. data/lib/puppet/provider/service/smf.rb +59 -8
  521. data/lib/puppet/provider/service/src.rb +66 -39
  522. data/lib/puppet/provider/service/systemd.rb +141 -22
  523. data/lib/puppet/provider/service/upstart.rb +1 -1
  524. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  525. data/lib/puppet/provider/sshkey/parsed.rb +20 -10
  526. data/lib/puppet/provider/user/aix.rb +11 -5
  527. data/lib/puppet/provider/user/directoryservice.rb +43 -66
  528. data/lib/puppet/provider/user/hpux.rb +1 -1
  529. data/lib/puppet/provider/user/pw.rb +1 -0
  530. data/lib/puppet/provider/user/user_role_add.rb +19 -2
  531. data/lib/puppet/provider/user/windows_adsi.rb +11 -5
  532. data/lib/puppet/provider/yumrepo/inifile.rb +9 -6
  533. data/lib/puppet/provider/zfs/zfs.rb +2 -2
  534. data/lib/puppet/provider/zone/solaris.rb +6 -3
  535. data/lib/puppet/provider/zpool/zpool.rb +2 -2
  536. data/lib/puppet/provider.rb +9 -7
  537. data/lib/puppet/reference/configuration.rb +13 -5
  538. data/lib/puppet/reference/indirection.rb +1 -1
  539. data/lib/puppet/reference/providers.rb +2 -3
  540. data/lib/puppet/reference/report.rb +9 -12
  541. data/lib/puppet/reference/type.rb +1 -1
  542. data/lib/puppet/reports.rb +5 -1
  543. data/lib/puppet/resource/capability_finder.rb +128 -0
  544. data/lib/puppet/resource/catalog.rb +167 -36
  545. data/lib/puppet/resource/status.rb +30 -5
  546. data/lib/puppet/resource/type.rb +247 -50
  547. data/lib/puppet/resource/type_collection.rb +83 -10
  548. data/lib/puppet/resource.rb +211 -145
  549. data/lib/puppet/settings/base_setting.rb +9 -3
  550. data/lib/puppet/settings/config_file.rb +3 -2
  551. data/lib/puppet/settings/directory_setting.rb +6 -0
  552. data/lib/puppet/settings/environment_conf.rb +26 -6
  553. data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
  554. data/lib/puppet/settings/file_setting.rb +20 -9
  555. data/lib/puppet/settings/ini_file.rb +2 -2
  556. data/lib/puppet/settings/server_list_setting.rb +20 -0
  557. data/lib/puppet/settings/symbolic_enum_setting.rb +17 -0
  558. data/lib/puppet/settings.rb +98 -45
  559. data/lib/puppet/ssl/base.rb +14 -1
  560. data/lib/puppet/ssl/certificate.rb +1 -1
  561. data/lib/puppet/ssl/certificate_authority/interface.rb +166 -26
  562. data/lib/puppet/ssl/certificate_authority.rb +49 -13
  563. data/lib/puppet/ssl/certificate_factory.rb +3 -3
  564. data/lib/puppet/ssl/certificate_request.rb +5 -5
  565. data/lib/puppet/ssl/certificate_signer.rb +1 -1
  566. data/lib/puppet/ssl/configuration.rb +4 -1
  567. data/lib/puppet/ssl/host.rb +26 -4
  568. data/lib/puppet/ssl/inventory.rb +10 -3
  569. data/lib/puppet/ssl/key.rb +7 -3
  570. data/lib/puppet/ssl/oids.rb +43 -3
  571. data/lib/puppet/ssl/validator/default_validator.rb +3 -3
  572. data/lib/puppet/syntax_checkers/base64.rb +41 -0
  573. data/lib/puppet/syntax_checkers/json.rb +0 -2
  574. data/lib/puppet/test/test_helper.rb +21 -7
  575. data/lib/puppet/transaction/additional_resource_generator.rb +101 -8
  576. data/lib/puppet/transaction/event.rb +29 -2
  577. data/lib/puppet/transaction/event_manager.rb +1 -1
  578. data/lib/puppet/transaction/persistence.rb +84 -0
  579. data/lib/puppet/transaction/report.rb +86 -4
  580. data/lib/puppet/transaction/resource_harness.rb +95 -35
  581. data/lib/puppet/transaction.rb +64 -36
  582. data/lib/puppet/type/augeas.rb +13 -4
  583. data/lib/puppet/type/component.rb +11 -0
  584. data/lib/puppet/type/cron.rb +13 -13
  585. data/lib/puppet/type/exec.rb +43 -19
  586. data/lib/puppet/type/file/checksum.rb +1 -0
  587. data/lib/puppet/type/file/checksum_value.rb +53 -0
  588. data/lib/puppet/type/file/content.rb +36 -121
  589. data/lib/puppet/type/file/data_sync.rb +92 -0
  590. data/lib/puppet/type/file/ensure.rb +21 -18
  591. data/lib/puppet/type/file/selcontext.rb +1 -1
  592. data/lib/puppet/type/file/source.rb +121 -34
  593. data/lib/puppet/type/file/target.rb +2 -2
  594. data/lib/puppet/type/file.rb +145 -46
  595. data/lib/puppet/type/filebucket.rb +1 -1
  596. data/lib/puppet/type/group.rb +26 -8
  597. data/lib/puppet/type/host.rb +1 -1
  598. data/lib/puppet/type/interface.rb +8 -3
  599. data/lib/puppet/type/macauthorization.rb +1 -1
  600. data/lib/puppet/type/mount.rb +16 -1
  601. data/lib/puppet/type/notify.rb +1 -1
  602. data/lib/puppet/type/package.rb +32 -12
  603. data/lib/puppet/type/resources.rb +1 -1
  604. data/lib/puppet/type/schedule.rb +5 -5
  605. data/lib/puppet/type/scheduled_task.rb +1 -1
  606. data/lib/puppet/type/service.rb +24 -0
  607. data/lib/puppet/type/ssh_authorized_key.rb +17 -11
  608. data/lib/puppet/type/sshkey.rb +5 -3
  609. data/lib/puppet/type/stage.rb +1 -1
  610. data/lib/puppet/type/tidy.rb +7 -4
  611. data/lib/puppet/type/user.rb +51 -26
  612. data/lib/puppet/type/yumrepo.rb +23 -3
  613. data/lib/puppet/type/zone.rb +6 -6
  614. data/lib/puppet/type.rb +175 -41
  615. data/lib/puppet/util/autoload.rb +16 -11
  616. data/lib/puppet/util/character_encoding.rb +95 -0
  617. data/lib/puppet/util/checksums.rb +74 -31
  618. data/lib/puppet/util/classgen.rb +1 -1
  619. data/lib/puppet/util/command_line/trollop.rb +1 -1
  620. data/lib/puppet/util/command_line.rb +10 -2
  621. data/lib/puppet/util/execution.rb +35 -16
  622. data/lib/puppet/util/feature.rb +1 -1
  623. data/lib/puppet/util/filetype.rb +11 -5
  624. data/lib/puppet/util/http_proxy.rb +132 -0
  625. data/lib/puppet/util/inifile.rb +1 -1
  626. data/lib/puppet/util/instance_loader.rb +1 -1
  627. data/lib/puppet/util/log.rb +28 -1
  628. data/lib/puppet/util/logging.rb +46 -3
  629. data/lib/puppet/util/monkey_patches.rb +20 -7
  630. data/lib/puppet/util/multi_match.rb +51 -0
  631. data/lib/puppet/util/network_device/cisco/device.rb +24 -6
  632. data/lib/puppet/util/network_device/cisco/interface.rb +21 -9
  633. data/lib/puppet/util/network_device/config.rb +1 -1
  634. data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
  635. data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
  636. data/lib/puppet/util/plist.rb +151 -0
  637. data/lib/puppet/util/profiler/aggregate.rb +1 -1
  638. data/lib/puppet/util/profiler/around_profiler.rb +1 -1
  639. data/lib/puppet/util/profiler.rb +1 -1
  640. data/lib/puppet/util/psych_support.rb +1 -1
  641. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
  642. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
  643. data/lib/puppet/util/rdoc.rb +2 -2
  644. data/lib/puppet/util/reference.rb +4 -2
  645. data/lib/puppet/util/resource_template.rb +1 -1
  646. data/lib/puppet/util/rubygems.rb +1 -1
  647. data/lib/puppet/util/run_mode.rb +2 -2
  648. data/lib/puppet/util/skip_tags.rb +9 -0
  649. data/lib/puppet/util/splayer.rb +18 -0
  650. data/lib/puppet/util/tagging.rb +8 -2
  651. data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
  652. data/lib/puppet/util/windows/access_control_entry.rb +2 -2
  653. data/lib/puppet/util/windows/access_control_list.rb +3 -3
  654. data/lib/puppet/util/windows/adsi.rb +97 -32
  655. data/lib/puppet/util/windows/api_types.rb +24 -18
  656. data/lib/puppet/util/windows/com.rb +3 -3
  657. data/lib/puppet/util/windows/error.rb +1 -1
  658. data/lib/puppet/util/windows/file.rb +112 -19
  659. data/lib/puppet/util/windows/principal.rb +190 -0
  660. data/lib/puppet/util/windows/process.rb +88 -11
  661. data/lib/puppet/util/windows/registry.rb +22 -16
  662. data/lib/puppet/util/windows/root_certs.rb +5 -5
  663. data/lib/puppet/util/windows/security.rb +38 -37
  664. data/lib/puppet/util/windows/security_descriptor.rb +1 -1
  665. data/lib/puppet/util/windows/sid.rb +84 -15
  666. data/lib/puppet/util/windows/taskscheduler.rb +99 -43
  667. data/lib/puppet/util/windows/user.rb +32 -14
  668. data/lib/puppet/util/windows.rb +5 -0
  669. data/lib/puppet/util/yaml.rb +15 -3
  670. data/lib/puppet/util.rb +125 -23
  671. data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
  672. data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
  673. data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
  674. data/lib/puppet/vendor/pathspec/LICENSE +2 -2
  675. data/lib/puppet/vendor/pathspec/README.md +1 -1
  676. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
  677. data/lib/puppet/vendor/require_vendored.rb +0 -1
  678. data/lib/puppet/vendor/rgen/README.rdoc +1 -1
  679. data/lib/puppet/vendor/rgen_patch.rb +1 -1
  680. data/lib/puppet/vendor/semantic/lib/semantic.rb +4 -6
  681. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
  682. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
  683. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/module_release.rb +17 -5
  684. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
  685. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
  686. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
  687. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
  688. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
  689. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
  690. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
  691. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
  692. data/lib/puppet/version.rb +7 -3
  693. data/lib/puppet.rb +86 -2
  694. data/lib/puppet_x.rb +7 -1
  695. data/lib/semver.rb +36 -13
  696. data/locales/config.yaml +29 -0
  697. data/locales/puppet.pot +93 -0
  698. data/man/man5/puppet.conf.5 +13 -13
  699. data/man/man8/extlookup2hiera.8 +1 -1
  700. data/man/man8/puppet-agent.8 +2 -2
  701. data/man/man8/puppet-apply.8 +2 -2
  702. data/man/man8/puppet-ca.8 +2 -2
  703. data/man/man8/puppet-catalog.8 +2 -2
  704. data/man/man8/puppet-cert.8 +2 -2
  705. data/man/man8/puppet-certificate.8 +2 -2
  706. data/man/man8/puppet-certificate_request.8 +2 -2
  707. data/man/man8/puppet-certificate_revocation_list.8 +2 -2
  708. data/man/man8/puppet-config.8 +3 -3
  709. data/man/man8/puppet-describe.8 +1 -1
  710. data/man/man8/puppet-device.8 +1 -1
  711. data/man/man8/puppet-doc.8 +1 -1
  712. data/man/man8/puppet-epp.8 +2 -2
  713. data/man/man8/puppet-facts.8 +2 -2
  714. data/man/man8/puppet-file.8 +2 -2
  715. data/man/man8/puppet-filebucket.8 +2 -2
  716. data/man/man8/puppet-help.8 +2 -2
  717. data/man/man8/puppet-inspect.8 +2 -2
  718. data/man/man8/puppet-key.8 +2 -2
  719. data/man/man8/puppet-man.8 +2 -2
  720. data/man/man8/puppet-master.8 +2 -2
  721. data/man/man8/puppet-module.8 +9 -9
  722. data/man/man8/puppet-node.8 +2 -2
  723. data/man/man8/puppet-parser.8 +2 -2
  724. data/man/man8/puppet-plugin.8 +2 -2
  725. data/man/man8/puppet-report.8 +2 -2
  726. data/man/man8/puppet-resource.8 +2 -2
  727. data/man/man8/puppet-resource_type.8 +2 -2
  728. data/man/man8/puppet-status.8 +3 -3
  729. data/man/man8/puppet.8 +1 -1
  730. data/spec/fixtures/module.tar.gz +0 -0
  731. data/spec/fixtures/unit/application/environments/production/data/common.yaml +22 -0
  732. data/spec/fixtures/unit/application/environments/production/environment.conf +1 -0
  733. data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
  734. data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
  735. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/environment/data.pp +10 -0
  736. data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
  737. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +3 -0
  738. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +2 -0
  739. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +5 -0
  740. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +5 -0
  741. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +3 -0
  742. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +2 -0
  743. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +5 -0
  744. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +5 -0
  745. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +2 -0
  746. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +2 -0
  747. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +1 -0
  748. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +2 -0
  749. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +5 -0
  750. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +9 -0
  751. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +3 -0
  752. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +2 -0
  753. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +3 -0
  754. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +2 -0
  755. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +3 -0
  756. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +3 -0
  757. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +2 -0
  758. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +2 -0
  759. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +22 -0
  760. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +5 -0
  761. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +48 -0
  762. data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +2 -0
  763. data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +1 -0
  764. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +30 -0
  765. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +13 -0
  766. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +9 -0
  767. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
  768. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
  769. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +2 -0
  770. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
  771. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +1 -0
  772. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +3 -0
  773. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +2 -0
  774. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +3 -0
  775. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server1.yaml +1 -0
  776. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server2.yaml +1 -0
  777. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +2 -0
  778. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +2 -0
  779. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +20 -0
  780. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +5 -0
  781. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +9 -0
  782. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
  783. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
  784. data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
  785. data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
  786. data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
  787. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
  788. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
  789. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
  790. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
  791. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
  792. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
  793. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
  794. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -0
  795. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +2 -1
  796. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +2 -1
  797. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +5 -0
  798. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +9 -0
  799. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +23 -0
  800. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +5 -0
  801. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +9 -0
  802. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +2 -0
  803. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +1 -0
  804. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +1 -1
  805. data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
  806. data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
  807. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
  808. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/manifests/init.pp +2 -0
  809. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/data/empty.json +0 -0
  810. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/hiera.yaml +5 -0
  811. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/manifests/init.pp +2 -0
  812. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/metadata.json +9 -0
  813. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/data/empty_key.json +1 -0
  814. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/hiera.yaml +5 -0
  815. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/manifests/init.pp +2 -0
  816. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/metadata.json +9 -0
  817. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/data/empty_key.yaml +1 -0
  818. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/hiera.yaml +5 -0
  819. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/manifests/init.pp +2 -0
  820. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/metadata.json +9 -0
  821. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/data/empty.yaml +2 -0
  822. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/hiera.yaml +5 -0
  823. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
  824. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/metadata.json +9 -0
  825. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/data/first.json +4 -0
  826. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/hiera.yaml +8 -0
  827. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/manifests/init.pp +5 -0
  828. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/metadata.json +9 -0
  829. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +9 -0
  830. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/manifests/init.pp +3 -0
  831. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/metadata.json +9 -0
  832. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +10 -0
  833. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +23 -0
  834. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/manifests/init.pp +3 -0
  835. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/metadata.json +9 -0
  836. data/spec/fixtures/unit/module/trailing-comma.json +1 -1
  837. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -0
  838. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +3 -0
  839. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
  840. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +5 -0
  841. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
  842. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
  843. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
  844. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
  845. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
  846. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
  847. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
  848. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
  849. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
  850. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
  851. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +87 -0
  852. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
  853. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
  854. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
  855. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
  856. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -0
  857. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
  858. data/spec/fixtures/unit/provider/package/yum/yum-check-update-obsoletes.txt +195 -0
  859. data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +184 -0
  860. data/spec/fixtures/unit/provider/service/smf/svcs.out +4 -3
  861. data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
  862. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +24 -0
  863. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +24 -0
  864. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +24 -0
  865. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
  866. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
  867. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
  868. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
  869. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
  870. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
  871. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
  872. data/spec/integration/agent/logging_spec.rb +15 -14
  873. data/spec/integration/application/apply_spec.rb +383 -29
  874. data/spec/integration/application/doc_spec.rb +0 -0
  875. data/spec/integration/application/lookup_spec.rb +155 -0
  876. data/spec/integration/configurer_spec.rb +0 -0
  877. data/spec/integration/data_binding_spec.rb +195 -0
  878. data/spec/integration/defaults_spec.rb +27 -2
  879. data/spec/integration/directory_environments_spec.rb +16 -0
  880. data/spec/integration/environments/default_manifest_spec.rb +16 -16
  881. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  882. data/spec/integration/environments/settings_spec.rb +32 -4
  883. data/spec/integration/faces/ca_spec.rb +0 -0
  884. data/spec/integration/faces/config_spec.rb +80 -0
  885. data/spec/integration/faces/documentation_spec.rb +1 -1
  886. data/spec/integration/file_bucket/file_spec.rb +2 -2
  887. data/spec/integration/file_serving/fileset_spec.rb +0 -0
  888. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -0
  889. data/spec/integration/file_system/uniquefile_spec.rb +29 -0
  890. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -0
  891. data/spec/integration/indirector/direct_file_server_spec.rb +0 -0
  892. data/spec/integration/indirector/facts/facter_spec.rb +38 -0
  893. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -0
  894. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -0
  895. data/spec/integration/indirector/node/ldap_spec.rb +0 -0
  896. data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
  897. data/spec/integration/network/formats_spec.rb +0 -0
  898. data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
  899. data/spec/integration/node/environment_spec.rb +34 -0
  900. data/spec/integration/node/facts_spec.rb +0 -0
  901. data/spec/integration/node_spec.rb +0 -0
  902. data/spec/integration/parser/catalog_spec.rb +14 -2
  903. data/spec/integration/parser/collection_spec.rb +18 -0
  904. data/spec/integration/parser/compiler_spec.rb +225 -864
  905. data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
  906. data/spec/integration/parser/parameter_defaults_spec.rb +358 -0
  907. data/spec/integration/parser/pcore_resource_spec.rb +245 -0
  908. data/spec/integration/parser/resource_expressions_spec.rb +9 -7
  909. data/spec/integration/parser/scope_spec.rb +20 -2
  910. data/spec/integration/parser/undef_param_spec.rb +9 -1
  911. data/spec/integration/provider/mailalias/aliases_spec.rb +0 -0
  912. data/spec/integration/provider/mount_spec.rb +23 -36
  913. data/spec/integration/provider/service/init_spec.rb +0 -0
  914. data/spec/integration/provider/service/windows_spec.rb +3 -2
  915. data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -0
  916. data/spec/integration/provider/yumrepo_spec.rb +4 -1
  917. data/spec/integration/reference/providers_spec.rb +0 -0
  918. data/spec/integration/reports_spec.rb +0 -0
  919. data/spec/integration/resource/catalog_spec.rb +1 -1
  920. data/spec/integration/resource/type_collection_spec.rb +8 -0
  921. data/spec/integration/ssl/autosign_spec.rb +18 -3
  922. data/spec/integration/ssl/certificate_authority_spec.rb +0 -1
  923. data/spec/integration/ssl/certificate_request_spec.rb +0 -1
  924. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -1
  925. data/spec/integration/ssl/host_spec.rb +0 -1
  926. data/spec/integration/ssl/key_spec.rb +104 -0
  927. data/spec/integration/test/test_helper_spec.rb +32 -0
  928. data/spec/integration/transaction/report_spec.rb +682 -0
  929. data/spec/integration/transaction_spec.rb +125 -1
  930. data/spec/integration/type/exec_spec.rb +0 -0
  931. data/spec/integration/type/file_spec.rb +237 -12
  932. data/spec/integration/type/package_spec.rb +72 -1
  933. data/spec/integration/type/tidy_spec.rb +21 -9
  934. data/spec/integration/type/user_spec.rb +13 -6
  935. data/spec/integration/type_spec.rb +0 -0
  936. data/spec/integration/util/autoload_spec.rb +0 -0
  937. data/spec/integration/util/execution_spec.rb +30 -0
  938. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  939. data/spec/integration/util/settings_spec.rb +26 -0
  940. data/spec/integration/util/windows/adsi_spec.rb +99 -0
  941. data/spec/integration/util/windows/principal_spec.rb +250 -0
  942. data/spec/integration/util/windows/process_spec.rb +35 -2
  943. data/spec/{unit → integration}/util/windows/registry_spec.rb +92 -2
  944. data/spec/integration/util/windows/security_spec.rb +61 -16
  945. data/spec/integration/util/windows/user_spec.rb +27 -5
  946. data/spec/integration/util_spec.rb +49 -27
  947. data/spec/lib/matchers/include_in_order.rb +2 -3
  948. data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -0
  949. data/spec/lib/puppet/face/basetest.rb +0 -0
  950. data/spec/lib/puppet/face/huzzah.rb +0 -0
  951. data/spec/lib/puppet_spec/compiler.rb +32 -3
  952. data/spec/lib/puppet_spec/files.rb +16 -2
  953. data/spec/lib/puppet_spec/fixtures.rb +0 -0
  954. data/spec/lib/puppet_spec/language.rb +3 -1
  955. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
  956. data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
  957. data/spec/lib/puppet_spec/network.rb +12 -8
  958. data/spec/lib/puppet_spec/pops.rb +13 -0
  959. data/spec/lib/puppet_spec/unindent.rb +5 -0
  960. data/spec/lib/puppet_spec/verbose.rb +0 -0
  961. data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -0
  962. data/spec/shared_behaviours/file_server_terminus.rb +0 -0
  963. data/spec/shared_behaviours/file_serving.rb +0 -0
  964. data/spec/shared_behaviours/iterative_functions.rb +9 -9
  965. data/spec/shared_behaviours/memory_terminus.rb +0 -0
  966. data/spec/shared_behaviours/path_parameters.rb +0 -0
  967. data/spec/shared_behaviours/things_that_declare_options.rb +0 -0
  968. data/spec/shared_contexts/types_setup.rb +106 -0
  969. data/spec/shared_examples/rhel_package_provider.rb +357 -0
  970. data/spec/spec_helper.rb +23 -2
  971. data/spec/unit/agent/locker_spec.rb +4 -4
  972. data/spec/unit/agent_spec.rb +12 -46
  973. data/spec/unit/application/agent_spec.rb +15 -0
  974. data/spec/unit/application/apply_spec.rb +31 -1
  975. data/spec/unit/application/cert_spec.rb +20 -0
  976. data/spec/unit/application/certificate_spec.rb +0 -0
  977. data/spec/unit/application/config_spec.rb +0 -0
  978. data/spec/unit/application/describe_spec.rb +0 -0
  979. data/spec/unit/application/device_spec.rb +0 -0
  980. data/spec/unit/application/doc_spec.rb +0 -0
  981. data/spec/unit/application/face_base_spec.rb +16 -0
  982. data/spec/unit/application/facts_spec.rb +0 -0
  983. data/spec/unit/application/filebucket_spec.rb +88 -2
  984. data/spec/unit/application/indirection_base_spec.rb +0 -0
  985. data/spec/unit/application/inspect_spec.rb +28 -10
  986. data/spec/unit/application/lookup_spec.rb +532 -0
  987. data/spec/unit/application/master_spec.rb +2 -2
  988. data/spec/unit/application/resource_spec.rb +0 -0
  989. data/spec/unit/application_spec.rb +3 -3
  990. data/spec/unit/capability_spec.rb +416 -0
  991. data/spec/unit/configurer/downloader_factory_spec.rb +0 -0
  992. data/spec/unit/configurer/downloader_spec.rb +5 -5
  993. data/spec/unit/configurer/fact_handler_spec.rb +0 -0
  994. data/spec/unit/configurer/plugin_handler_spec.rb +18 -15
  995. data/spec/unit/configurer_spec.rb +336 -39
  996. data/spec/unit/confine/exists_spec.rb +0 -0
  997. data/spec/unit/confine/false_spec.rb +0 -0
  998. data/spec/unit/confine/feature_spec.rb +0 -0
  999. data/spec/unit/confine/true_spec.rb +0 -0
  1000. data/spec/unit/confine/variable_spec.rb +0 -0
  1001. data/spec/unit/confine_collection_spec.rb +0 -0
  1002. data/spec/unit/confine_spec.rb +0 -0
  1003. data/spec/unit/confiner_spec.rb +0 -0
  1004. data/spec/unit/context/trusted_information_spec.rb +24 -1
  1005. data/spec/unit/daemon_spec.rb +18 -8
  1006. data/spec/unit/data_providers/{sample_data_provider_spec.rb → custom_data_provider_spec.rb} +14 -16
  1007. data/spec/unit/data_providers/function_data_provider_spec.rb +21 -3
  1008. data/spec/unit/data_providers/hiera_data_provider_spec.rb +361 -0
  1009. data/spec/unit/defaults_spec.rb +47 -0
  1010. data/spec/unit/environments_spec.rb +26 -4
  1011. data/spec/unit/etc_spec.rb +234 -0
  1012. data/spec/unit/external/pson_spec.rb +0 -0
  1013. data/spec/unit/face/ca_spec.rb +10 -0
  1014. data/spec/unit/face/catalog_spec.rb +0 -0
  1015. data/spec/unit/face/certificate_request_spec.rb +10 -0
  1016. data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
  1017. data/spec/unit/face/certificate_spec.rb +10 -2
  1018. data/spec/unit/face/config_spec.rb +47 -0
  1019. data/spec/unit/face/epp_face_spec.rb +24 -5
  1020. data/spec/unit/face/facts_spec.rb +0 -0
  1021. data/spec/unit/face/file_spec.rb +4 -0
  1022. data/spec/unit/face/generate_spec.rb +230 -0
  1023. data/spec/unit/face/help_spec.rb +70 -0
  1024. data/spec/unit/face/key_spec.rb +10 -0
  1025. data/spec/unit/face/module/search_spec.rb +1 -1
  1026. data/spec/unit/face/node_spec.rb +1 -1
  1027. data/spec/unit/face/parser_spec.rb +49 -2
  1028. data/spec/unit/face/plugin_spec.rb +29 -4
  1029. data/spec/unit/face/status_spec.rb +10 -0
  1030. data/spec/unit/face_spec.rb +0 -0
  1031. data/spec/unit/file_bucket/dipper_spec.rb +210 -1
  1032. data/spec/unit/file_bucket/file_spec.rb +0 -0
  1033. data/spec/unit/file_serving/base_spec.rb +0 -0
  1034. data/spec/unit/file_serving/configuration/parser_spec.rb +25 -30
  1035. data/spec/unit/file_serving/configuration_spec.rb +1 -1
  1036. data/spec/unit/file_serving/content_spec.rb +0 -0
  1037. data/spec/unit/file_serving/fileset_spec.rb +0 -0
  1038. data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
  1039. data/spec/unit/file_serving/metadata_spec.rb +50 -0
  1040. data/spec/unit/file_serving/mount/file_spec.rb +0 -0
  1041. data/spec/unit/file_serving/mount/modules_spec.rb +0 -0
  1042. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -0
  1043. data/spec/unit/file_serving/mount/plugins_spec.rb +0 -0
  1044. data/spec/unit/file_serving/mount_spec.rb +0 -0
  1045. data/spec/unit/file_serving/terminus_helper_spec.rb +0 -0
  1046. data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
  1047. data/spec/unit/file_system/uniquefile_spec.rb +20 -0
  1048. data/spec/unit/file_system_spec.rb +335 -6
  1049. data/spec/unit/forge/repository_spec.rb +27 -0
  1050. data/spec/unit/functions/assert_type_spec.rb +48 -8
  1051. data/spec/unit/functions/binary_file_spec.rb +46 -0
  1052. data/spec/unit/functions/break_spec.rb +89 -0
  1053. data/spec/unit/{parser/functions → functions}/contain_spec.rb +68 -3
  1054. data/spec/unit/functions/defined_spec.rb +2 -2
  1055. data/spec/unit/functions/dig_spec.rb +58 -0
  1056. data/spec/unit/functions/epp_spec.rb +17 -9
  1057. data/spec/unit/functions/filter_spec.rb +18 -0
  1058. data/spec/unit/functions/find_file_spec.rb +69 -0
  1059. data/spec/unit/functions/hiera_spec.rb +447 -47
  1060. data/spec/unit/functions/include_spec.rb +175 -0
  1061. data/spec/unit/functions/inline_epp_spec.rb +4 -4
  1062. data/spec/unit/functions/lest_spec.rb +34 -0
  1063. data/spec/unit/functions/logging_spec.rb +54 -0
  1064. data/spec/unit/functions/lookup_fixture_spec.rb +693 -0
  1065. data/spec/unit/functions/lookup_spec.rb +2904 -265
  1066. data/spec/unit/functions/match_spec.rb +2 -2
  1067. data/spec/unit/functions/new_spec.rb +694 -0
  1068. data/spec/unit/functions/next_spec.rb +93 -0
  1069. data/spec/unit/functions/regsubst_spec.rb +26 -9
  1070. data/spec/unit/functions/require_spec.rb +83 -0
  1071. data/spec/unit/functions/return_spec.rb +105 -0
  1072. data/spec/unit/functions/reverse_each_spec.rb +108 -0
  1073. data/spec/unit/functions/scanf_spec.rb +1 -1
  1074. data/spec/unit/{parser/functions → functions}/shared.rb +15 -12
  1075. data/spec/unit/functions/split_spec.rb +3 -3
  1076. data/spec/unit/functions/step_spec.rb +113 -0
  1077. data/spec/unit/functions/strftime_spec.rb +152 -0
  1078. data/spec/unit/functions/then_spec.rb +40 -0
  1079. data/spec/unit/functions/type_spec.rb +35 -0
  1080. data/spec/unit/functions/unwrap_spec.rb +29 -0
  1081. data/spec/unit/functions/versioncmp_spec.rb +36 -0
  1082. data/spec/unit/functions4_spec.rb +270 -79
  1083. data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
  1084. data/spec/unit/graph/relationship_graph_spec.rb +0 -0
  1085. data/spec/unit/graph/sequential_prioritizer_spec.rb +1 -1
  1086. data/spec/unit/graph/simple_graph_spec.rb +1 -1
  1087. data/spec/unit/hiera/scope_spec.rb +6 -3
  1088. data/spec/unit/hiera_puppet_spec.rb +49 -8
  1089. data/spec/unit/indirector/catalog/compiler_spec.rb +752 -8
  1090. data/spec/unit/indirector/catalog/json_spec.rb +0 -0
  1091. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -0
  1092. data/spec/unit/indirector/catalog/rest_spec.rb +0 -0
  1093. data/spec/unit/indirector/catalog/static_compiler_spec.rb +38 -20
  1094. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -0
  1095. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -0
  1096. data/spec/unit/indirector/certificate/ca_spec.rb +0 -0
  1097. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -0
  1098. data/spec/unit/indirector/certificate/file_spec.rb +0 -0
  1099. data/spec/unit/indirector/certificate/rest_spec.rb +0 -0
  1100. data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -0
  1101. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -0
  1102. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -0
  1103. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -0
  1104. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -0
  1105. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -0
  1106. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -0
  1107. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -0
  1108. data/spec/unit/indirector/certificate_status/file_spec.rb +0 -0
  1109. data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -0
  1110. data/spec/unit/indirector/code_spec.rb +0 -0
  1111. data/spec/unit/indirector/data_binding/none_spec.rb +2 -2
  1112. data/spec/unit/indirector/direct_file_server_spec.rb +0 -0
  1113. data/spec/unit/indirector/envelope_spec.rb +0 -0
  1114. data/spec/unit/indirector/exec_spec.rb +0 -0
  1115. data/spec/unit/indirector/face_spec.rb +10 -2
  1116. data/spec/unit/indirector/facts/facter_spec.rb +3 -10
  1117. data/spec/unit/indirector/facts/network_device_spec.rb +0 -0
  1118. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -0
  1119. data/spec/unit/indirector/facts/yaml_spec.rb +0 -0
  1120. data/spec/unit/indirector/file_bucket_file/file_spec.rb +86 -4
  1121. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -0
  1122. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -0
  1123. data/spec/unit/indirector/file_content/file_spec.rb +0 -0
  1124. data/spec/unit/indirector/file_content/rest_spec.rb +0 -0
  1125. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -0
  1126. data/spec/unit/indirector/file_metadata/file_spec.rb +0 -0
  1127. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -0
  1128. data/spec/unit/indirector/file_server_spec.rb +0 -0
  1129. data/spec/unit/indirector/indirection_spec.rb +13 -2
  1130. data/spec/unit/indirector/json_spec.rb +1 -1
  1131. data/spec/unit/indirector/key/ca_spec.rb +0 -0
  1132. data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -0
  1133. data/spec/unit/indirector/key/file_spec.rb +1 -1
  1134. data/spec/unit/indirector/ldap_spec.rb +0 -0
  1135. data/spec/unit/indirector/memory_spec.rb +0 -0
  1136. data/spec/unit/indirector/msgpack_spec.rb +11 -1
  1137. data/spec/unit/indirector/node/exec_spec.rb +0 -0
  1138. data/spec/unit/indirector/node/ldap_spec.rb +0 -0
  1139. data/spec/unit/indirector/node/memory_spec.rb +0 -0
  1140. data/spec/unit/indirector/node/msgpack_spec.rb +0 -0
  1141. data/spec/unit/indirector/node/plain_spec.rb +0 -0
  1142. data/spec/unit/indirector/node/rest_spec.rb +0 -0
  1143. data/spec/unit/indirector/node/store_configs_spec.rb +0 -0
  1144. data/spec/unit/indirector/node/yaml_spec.rb +0 -0
  1145. data/spec/unit/indirector/plain_spec.rb +0 -0
  1146. data/spec/unit/indirector/report/msgpack_spec.rb +0 -0
  1147. data/spec/unit/indirector/report/processor_spec.rb +0 -0
  1148. data/spec/unit/indirector/report/rest_spec.rb +0 -0
  1149. data/spec/unit/indirector/report/yaml_spec.rb +0 -0
  1150. data/spec/unit/indirector/request_spec.rb +17 -8
  1151. data/spec/unit/indirector/resource/ral_spec.rb +0 -0
  1152. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -0
  1153. data/spec/unit/indirector/resource_type/parser_spec.rb +5 -0
  1154. data/spec/unit/indirector/resource_type/rest_spec.rb +0 -0
  1155. data/spec/unit/indirector/rest_spec.rb +107 -9
  1156. data/spec/unit/indirector/ssl_file_spec.rb +4 -4
  1157. data/spec/unit/indirector/status/rest_spec.rb +0 -0
  1158. data/spec/unit/indirector/store_configs_spec.rb +0 -0
  1159. data/spec/unit/indirector/terminus_spec.rb +0 -0
  1160. data/spec/unit/indirector/yaml_spec.rb +1 -1
  1161. data/spec/unit/indirector_spec.rb +0 -0
  1162. data/spec/unit/info_service_spec.rb +298 -0
  1163. data/spec/unit/interface/action_builder_spec.rb +0 -0
  1164. data/spec/unit/interface/action_manager_spec.rb +0 -0
  1165. data/spec/unit/interface/action_spec.rb +0 -0
  1166. data/spec/unit/interface/documentation_spec.rb +0 -0
  1167. data/spec/unit/interface/face_collection_spec.rb +0 -0
  1168. data/spec/unit/interface/option_builder_spec.rb +0 -0
  1169. data/spec/unit/interface/option_spec.rb +0 -0
  1170. data/spec/unit/interface_spec.rb +27 -0
  1171. data/spec/unit/man_spec.rb +1 -1
  1172. data/spec/unit/module_spec.rb +118 -74
  1173. data/spec/unit/module_tool/application_spec.rb +1 -1
  1174. data/spec/unit/module_tool/applications/builder_spec.rb +44 -9
  1175. data/spec/unit/module_tool/applications/installer_spec.rb +11 -2
  1176. data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
  1177. data/spec/unit/module_tool/applications/upgrader_spec.rb +9 -1
  1178. data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
  1179. data/spec/unit/module_tool/metadata_spec.rb +31 -2
  1180. data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
  1181. data/spec/unit/module_tool_spec.rb +3 -3
  1182. data/spec/unit/network/auth_config_parser_spec.rb +16 -0
  1183. data/spec/unit/network/authconfig_spec.rb +62 -32
  1184. data/spec/unit/network/authorization_spec.rb +30 -2
  1185. data/spec/unit/network/authstore_spec.rb +2 -2
  1186. data/spec/unit/network/format_handler_spec.rb +0 -0
  1187. data/spec/unit/network/format_spec.rb +0 -0
  1188. data/spec/unit/network/formats_spec.rb +0 -0
  1189. data/spec/unit/network/http/api/indirected_routes_spec.rb +70 -71
  1190. data/spec/unit/network/http/api/master/v3/environment_spec.rb +60 -0
  1191. data/spec/unit/network/http/api/master/v3_spec.rb +22 -4
  1192. data/spec/unit/network/http/compression_spec.rb +40 -9
  1193. data/spec/unit/network/http/connection_spec.rb +25 -19
  1194. data/spec/unit/network/http/error_spec.rb +2 -1
  1195. data/spec/unit/network/http/factory_spec.rb +18 -0
  1196. data/spec/unit/network/http/handler_spec.rb +11 -8
  1197. data/spec/unit/network/http/nocache_pool_spec.rb +0 -0
  1198. data/spec/unit/network/http/pool_spec.rb +30 -0
  1199. data/spec/unit/network/http/rack/rest_spec.rb +7 -0
  1200. data/spec/unit/network/http/rack_spec.rb +0 -0
  1201. data/spec/unit/network/http/session_spec.rb +0 -0
  1202. data/spec/unit/network/http/site_spec.rb +0 -0
  1203. data/spec/unit/network/http/webrick/rest_spec.rb +0 -0
  1204. data/spec/unit/network/http/webrick_spec.rb +1 -1
  1205. data/spec/unit/network/http_pool_spec.rb +0 -0
  1206. data/spec/unit/network/http_spec.rb +0 -0
  1207. data/spec/unit/network/resolver_spec.rb +0 -0
  1208. data/spec/unit/network/rights_spec.rb +4 -4
  1209. data/spec/unit/network/server_spec.rb +0 -0
  1210. data/spec/unit/node/environment_spec.rb +10 -0
  1211. data/spec/unit/node/facts_spec.rb +0 -0
  1212. data/spec/unit/node_spec.rb +35 -0
  1213. data/spec/unit/other/selinux_spec.rb +0 -0
  1214. data/spec/unit/parameter/path_spec.rb +0 -0
  1215. data/spec/unit/parameter/value_collection_spec.rb +0 -0
  1216. data/spec/unit/parameter/value_spec.rb +0 -0
  1217. data/spec/unit/parameter_spec.rb +11 -0
  1218. data/spec/unit/parser/ast/leaf_spec.rb +1 -1
  1219. data/spec/unit/parser/compiler_spec.rb +134 -33
  1220. data/spec/unit/parser/environment_compiler_spec.rb +688 -0
  1221. data/spec/unit/parser/files_spec.rb +0 -0
  1222. data/spec/unit/parser/functions/create_resources_spec.rb +86 -5
  1223. data/spec/unit/parser/functions/digest_spec.rb +0 -0
  1224. data/spec/unit/parser/functions/fail_spec.rb +0 -0
  1225. data/spec/unit/parser/functions/file_spec.rb +0 -0
  1226. data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -2
  1227. data/spec/unit/parser/functions/generate_spec.rb +3 -12
  1228. data/spec/unit/parser/functions/hiera_array_spec.rb +1 -1
  1229. data/spec/unit/parser/functions/hiera_hash_spec.rb +1 -1
  1230. data/spec/unit/parser/functions/hiera_include_spec.rb +1 -1
  1231. data/spec/unit/parser/functions/hiera_spec.rb +1 -1
  1232. data/spec/unit/parser/functions/inline_template_spec.rb +0 -0
  1233. data/spec/unit/parser/functions/lookup_spec.rb +1 -1
  1234. data/spec/unit/parser/functions/realize_spec.rb +0 -0
  1235. data/spec/unit/parser/functions/regsubst_spec.rb +1 -1
  1236. data/spec/unit/parser/functions/scanf_spec.rb +0 -0
  1237. data/spec/unit/parser/functions/shellquote_spec.rb +0 -0
  1238. data/spec/unit/parser/functions/split_spec.rb +1 -1
  1239. data/spec/unit/parser/functions/sprintf_spec.rb +0 -0
  1240. data/spec/unit/parser/functions/tag_spec.rb +0 -0
  1241. data/spec/unit/parser/functions/template_spec.rb +0 -0
  1242. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -0
  1243. data/spec/unit/parser/functions_spec.rb +0 -0
  1244. data/spec/unit/parser/relationship_spec.rb +0 -0
  1245. data/spec/unit/parser/resource/param_spec.rb +0 -0
  1246. data/spec/unit/parser/resource_spec.rb +31 -32
  1247. data/spec/unit/parser/scope_spec.rb +83 -16
  1248. data/spec/unit/parser/templatewrapper_spec.rb +0 -0
  1249. data/spec/unit/parser/type_loader_spec.rb +0 -0
  1250. data/spec/unit/pops/binder/config/binder_config_spec.rb +1 -1
  1251. data/spec/unit/pops/binder/injector_spec.rb +3 -3
  1252. data/spec/unit/pops/evaluator/access_ops_spec.rb +115 -19
  1253. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +170 -0
  1254. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -2
  1255. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
  1256. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +76 -23
  1257. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +29 -25
  1258. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
  1259. data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +43 -0
  1260. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +133 -0
  1261. data/spec/unit/pops/evaluator/variables_spec.rb +1 -1
  1262. data/spec/unit/pops/label_provider_spec.rb +5 -1
  1263. data/spec/unit/pops/loaders/dependency_loader_spec.rb +66 -1
  1264. data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
  1265. data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
  1266. data/spec/unit/pops/loaders/loaders_spec.rb +323 -27
  1267. data/spec/unit/pops/loaders/module_loaders_spec.rb +63 -2
  1268. data/spec/unit/pops/loaders/static_loader_spec.rb +83 -18
  1269. data/spec/unit/pops/lookup/context_spec.rb +334 -0
  1270. data/spec/unit/pops/lookup/interpolation_spec.rb +333 -0
  1271. data/spec/unit/pops/lookup/lookup_spec.rb +262 -0
  1272. data/spec/unit/pops/merge_strategy_spec.rb +18 -0
  1273. data/spec/unit/pops/parser/lexer2_spec.rb +236 -10
  1274. data/spec/unit/pops/parser/parse_application_spec.rb +35 -0
  1275. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +31 -0
  1276. data/spec/unit/pops/parser/parse_calls_spec.rb +25 -0
  1277. data/spec/unit/pops/parser/parse_capabilities_spec.rb +40 -0
  1278. data/spec/unit/pops/parser/parse_functions_spec.rb +19 -0
  1279. data/spec/unit/pops/parser/parse_lambda_spec.rb +19 -0
  1280. data/spec/unit/pops/parser/parse_site_spec.rb +51 -0
  1281. data/spec/unit/pops/parser/parser_rspec_helper.rb +6 -0
  1282. data/spec/unit/pops/parser/parser_spec.rb +28 -0
  1283. data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
  1284. data/spec/unit/pops/puppet_stack_spec.rb +79 -0
  1285. data/spec/unit/pops/resource/resource_type_impl_spec.rb +111 -0
  1286. data/spec/unit/pops/serialization/packer_spec.rb +154 -0
  1287. data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
  1288. data/spec/unit/pops/serialization/serialization_spec.rb +314 -0
  1289. data/spec/unit/pops/time/timespan_spec.rb +121 -0
  1290. data/spec/unit/pops/types/enumeration_spec.rb +13 -12
  1291. data/spec/unit/pops/types/iterable_spec.rb +262 -0
  1292. data/spec/unit/pops/types/p_binary_type_spec.rb +243 -0
  1293. data/spec/unit/pops/types/p_object_type_spec.rb +1167 -0
  1294. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +327 -0
  1295. data/spec/unit/pops/types/p_sensitive_type_spec.rb +169 -0
  1296. data/spec/unit/pops/types/p_timespan_type_spec.rb +273 -0
  1297. data/spec/unit/pops/types/p_timestamp_type_spec.rb +311 -0
  1298. data/spec/unit/pops/types/p_type_set_type_spec.rb +453 -0
  1299. data/spec/unit/pops/types/recursion_guard_spec.rb +93 -0
  1300. data/spec/unit/pops/types/ruby_generator_spec.rb +625 -0
  1301. data/spec/unit/pops/types/string_converter_spec.rb +1029 -0
  1302. data/spec/unit/pops/types/type_acceptor_spec.rb +106 -0
  1303. data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
  1304. data/spec/unit/pops/types/type_calculator_spec.rb +965 -934
  1305. data/spec/unit/pops/types/type_factory_spec.rb +132 -91
  1306. data/spec/unit/pops/types/type_formatter_spec.rb +396 -0
  1307. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +228 -0
  1308. data/spec/unit/pops/types/type_parser_spec.rb +203 -36
  1309. data/spec/unit/pops/types/types_spec.rb +599 -0
  1310. data/spec/unit/pops/validator/validator_spec.rb +400 -18
  1311. data/spec/unit/property/ensure_spec.rb +0 -0
  1312. data/spec/unit/property/keyvalue_spec.rb +0 -0
  1313. data/spec/unit/property/list_spec.rb +0 -0
  1314. data/spec/unit/property/ordered_list_spec.rb +0 -0
  1315. data/spec/unit/property_spec.rb +49 -12
  1316. data/spec/unit/provider/augeas/augeas_spec.rb +59 -0
  1317. data/spec/unit/provider/cisco_spec.rb +0 -0
  1318. data/spec/unit/provider/command_spec.rb +0 -0
  1319. data/spec/unit/provider/cron/crontab_spec.rb +0 -0
  1320. data/spec/unit/provider/cron/parsed_spec.rb +1 -0
  1321. data/spec/unit/provider/exec/posix_spec.rb +0 -0
  1322. data/spec/unit/provider/exec/shell_spec.rb +0 -0
  1323. data/spec/unit/provider/exec/windows_spec.rb +0 -0
  1324. data/spec/unit/provider/exec_spec.rb +0 -0
  1325. data/spec/unit/provider/file/posix_spec.rb +0 -0
  1326. data/spec/unit/provider/file/windows_spec.rb +0 -0
  1327. data/spec/unit/provider/group/directoryservice_spec.rb +33 -0
  1328. data/spec/unit/provider/group/groupadd_spec.rb +0 -0
  1329. data/spec/unit/provider/group/ldap_spec.rb +0 -0
  1330. data/spec/unit/provider/group/pw_spec.rb +0 -0
  1331. data/spec/unit/provider/group/windows_adsi_spec.rb +31 -9
  1332. data/spec/unit/provider/host/parsed_spec.rb +0 -0
  1333. data/spec/unit/provider/interface/cisco_spec.rb +0 -0
  1334. data/spec/unit/provider/ldap_spec.rb +0 -0
  1335. data/spec/unit/provider/macauthorization_spec.rb +5 -2
  1336. data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -0
  1337. data/spec/unit/provider/mount/parsed_spec.rb +0 -0
  1338. data/spec/unit/provider/mount_spec.rb +0 -0
  1339. data/spec/unit/provider/naginator_spec.rb +0 -0
  1340. data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
  1341. data/spec/unit/provider/nameservice_spec.rb +54 -12
  1342. data/spec/unit/provider/network_device_spec.rb +0 -0
  1343. data/spec/unit/provider/package/aix_spec.rb +0 -0
  1344. data/spec/unit/provider/package/appdmg_spec.rb +3 -3
  1345. data/spec/unit/provider/package/apt_spec.rb +0 -0
  1346. data/spec/unit/provider/package/aptitude_spec.rb +0 -0
  1347. data/spec/unit/provider/package/aptrpm_spec.rb +3 -3
  1348. data/spec/unit/provider/package/base_spec.rb +18 -0
  1349. data/spec/unit/provider/package/dnf_spec.rb +30 -0
  1350. data/spec/unit/provider/package/dpkg_spec.rb +0 -0
  1351. data/spec/unit/provider/package/freebsd_spec.rb +0 -0
  1352. data/spec/unit/provider/package/gem_spec.rb +77 -0
  1353. data/spec/unit/provider/package/hpux_spec.rb +0 -0
  1354. data/spec/unit/provider/package/macports_spec.rb +0 -0
  1355. data/spec/unit/provider/package/nim_spec.rb +6 -6
  1356. data/spec/unit/provider/package/openbsd_spec.rb +0 -0
  1357. data/spec/unit/provider/package/opkg_spec.rb +0 -0
  1358. data/spec/unit/provider/package/pacman_spec.rb +55 -0
  1359. data/spec/unit/provider/package/pip3_spec.rb +22 -0
  1360. data/spec/unit/provider/package/pip_spec.rb +164 -46
  1361. data/spec/unit/provider/package/pkg_spec.rb +139 -99
  1362. data/spec/unit/provider/package/pkgdmg_spec.rb +32 -8
  1363. data/spec/unit/provider/package/pkgin_spec.rb +23 -13
  1364. data/spec/unit/provider/package/pkgng_spec.rb +16 -2
  1365. data/spec/unit/provider/package/pkgutil_spec.rb +0 -0
  1366. data/spec/unit/provider/package/portage_spec.rb +64 -8
  1367. data/spec/unit/provider/package/puppet_gem_spec.rb +0 -0
  1368. data/spec/unit/provider/package/rpm_spec.rb +170 -12
  1369. data/spec/unit/provider/package/sun_spec.rb +0 -0
  1370. data/spec/unit/provider/package/tdnf_spec.rb +18 -0
  1371. data/spec/unit/provider/package/windows/package_spec.rb +45 -1
  1372. data/spec/unit/provider/package/windows_spec.rb +8 -2
  1373. data/spec/unit/provider/package/yum_spec.rb +29 -466
  1374. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  1375. data/spec/unit/provider/parsedfile_spec.rb +0 -0
  1376. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +211 -0
  1377. data/spec/unit/provider/selboolean_spec.rb +0 -0
  1378. data/spec/unit/provider/selmodule_spec.rb +0 -0
  1379. data/spec/unit/provider/service/base_spec.rb +6 -0
  1380. data/spec/unit/provider/service/bsd_spec.rb +130 -0
  1381. data/spec/unit/provider/service/daemontools_spec.rb +0 -0
  1382. data/spec/unit/provider/service/debian_spec.rb +34 -4
  1383. data/spec/unit/provider/service/freebsd_spec.rb +16 -0
  1384. data/spec/unit/provider/service/gentoo_spec.rb +7 -0
  1385. data/spec/unit/provider/service/init_spec.rb +24 -1
  1386. data/spec/unit/provider/service/launchd_spec.rb +124 -25
  1387. data/spec/unit/provider/service/openbsd_spec.rb +0 -0
  1388. data/spec/unit/provider/service/openrc_spec.rb +7 -0
  1389. data/spec/unit/provider/service/openwrt_spec.rb +0 -0
  1390. data/spec/unit/provider/service/rcng_spec.rb +41 -0
  1391. data/spec/unit/provider/service/redhat_spec.rb +8 -1
  1392. data/spec/unit/provider/service/runit_spec.rb +0 -0
  1393. data/spec/unit/provider/service/smf_spec.rb +77 -13
  1394. data/spec/unit/provider/service/src_spec.rb +31 -4
  1395. data/spec/unit/provider/service/systemd_spec.rb +228 -39
  1396. data/spec/unit/provider/service/upstart_spec.rb +64 -0
  1397. data/spec/unit/provider/service/windows_spec.rb +0 -0
  1398. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +2 -1
  1399. data/spec/unit/provider/sshkey/parsed_spec.rb +42 -18
  1400. data/spec/unit/provider/user/aix_spec.rb +7 -0
  1401. data/spec/unit/provider/user/directoryservice_spec.rb +164 -83
  1402. data/spec/unit/provider/user/hpux_spec.rb +0 -0
  1403. data/spec/unit/provider/user/ldap_spec.rb +0 -0
  1404. data/spec/unit/provider/user/openbsd_spec.rb +0 -0
  1405. data/spec/unit/provider/user/pw_spec.rb +0 -0
  1406. data/spec/unit/provider/user/user_role_add_spec.rb +0 -0
  1407. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  1408. data/spec/unit/provider/user/windows_adsi_spec.rb +30 -6
  1409. data/spec/unit/provider/vlan/cisco_spec.rb +0 -0
  1410. data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
  1411. data/spec/unit/provider/zfs/zfs_spec.rb +0 -0
  1412. data/spec/unit/provider/zone/solaris_spec.rb +64 -12
  1413. data/spec/unit/provider/zpool/zpool_spec.rb +0 -0
  1414. data/spec/unit/provider_spec.rb +0 -0
  1415. data/spec/unit/puppet_spec.rb +15 -1
  1416. data/spec/unit/relationship_spec.rb +0 -0
  1417. data/spec/unit/reports/http_spec.rb +0 -0
  1418. data/spec/unit/reports/store_spec.rb +0 -0
  1419. data/spec/unit/reports_spec.rb +10 -0
  1420. data/spec/unit/resource/capability_finder_spec.rb +147 -0
  1421. data/spec/unit/resource/catalog_spec.rb +235 -10
  1422. data/spec/unit/resource/status_spec.rb +0 -0
  1423. data/spec/unit/resource/type_collection_spec.rb +23 -2
  1424. data/spec/unit/resource/type_spec.rb +169 -12
  1425. data/spec/unit/resource_spec.rb +137 -48
  1426. data/spec/unit/semver_spec.rb +241 -0
  1427. data/spec/unit/settings/directory_setting_spec.rb +0 -0
  1428. data/spec/unit/settings/duration_setting_spec.rb +0 -0
  1429. data/spec/unit/settings/environment_conf_spec.rb +18 -1
  1430. data/spec/unit/settings/file_setting_spec.rb +37 -0
  1431. data/spec/unit/settings/ini_file_spec.rb +58 -1
  1432. data/spec/unit/settings/path_setting_spec.rb +0 -0
  1433. data/spec/unit/settings/priority_setting_spec.rb +0 -0
  1434. data/spec/unit/settings_spec.rb +105 -3
  1435. data/spec/unit/ssl/base_spec.rb +9 -0
  1436. data/spec/unit/ssl/certificate_authority/interface_spec.rb +180 -13
  1437. data/spec/unit/ssl/certificate_authority_spec.rb +82 -28
  1438. data/spec/unit/ssl/certificate_factory_spec.rb +2 -2
  1439. data/spec/unit/ssl/certificate_request_attributes_spec.rb +6 -0
  1440. data/spec/unit/ssl/certificate_request_spec.rb +4 -5
  1441. data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
  1442. data/spec/unit/ssl/certificate_spec.rb +1 -1
  1443. data/spec/unit/ssl/configuration_spec.rb +11 -2
  1444. data/spec/unit/ssl/host_spec.rb +3 -3
  1445. data/spec/unit/ssl/inventory_spec.rb +27 -3
  1446. data/spec/unit/ssl/key_spec.rb +7 -7
  1447. data/spec/unit/ssl/oids_spec.rb +24 -13
  1448. data/spec/unit/status_spec.rb +0 -0
  1449. data/spec/unit/transaction/additional_resource_generator_spec.rb +160 -31
  1450. data/spec/unit/transaction/event_manager_spec.rb +0 -0
  1451. data/spec/unit/transaction/event_spec.rb +3 -1
  1452. data/spec/unit/transaction/persistence_spec.rb +178 -0
  1453. data/spec/unit/transaction/report_spec.rb +138 -2
  1454. data/spec/unit/transaction/resource_harness_spec.rb +81 -37
  1455. data/spec/unit/transaction_spec.rb +50 -0
  1456. data/spec/unit/type/augeas_spec.rb +0 -0
  1457. data/spec/unit/type/component_spec.rb +0 -0
  1458. data/spec/unit/type/computer_spec.rb +0 -0
  1459. data/spec/unit/type/cron_spec.rb +0 -0
  1460. data/spec/unit/type/exec_spec.rb +57 -12
  1461. data/spec/unit/type/file/checksum_spec.rb +6 -0
  1462. data/spec/unit/type/file/checksum_value_spec.rb +286 -0
  1463. data/spec/unit/type/file/content_spec.rb +59 -208
  1464. data/spec/unit/type/file/ctime_spec.rb +0 -0
  1465. data/spec/unit/type/file/ensure_spec.rb +0 -0
  1466. data/spec/unit/type/file/group_spec.rb +0 -0
  1467. data/spec/unit/type/file/mode_spec.rb +0 -0
  1468. data/spec/unit/type/file/mtime_spec.rb +0 -0
  1469. data/spec/unit/type/file/owner_spec.rb +0 -0
  1470. data/spec/unit/type/file/selinux_spec.rb +0 -0
  1471. data/spec/unit/type/file/source_spec.rb +211 -119
  1472. data/spec/unit/type/file/type_spec.rb +0 -0
  1473. data/spec/unit/type/file_spec.rb +165 -35
  1474. data/spec/unit/type/filebucket_spec.rb +0 -0
  1475. data/spec/unit/type/group_spec.rb +0 -0
  1476. data/spec/unit/type/host_spec.rb +4 -4
  1477. data/spec/unit/type/interface_spec.rb +32 -0
  1478. data/spec/unit/type/k5login_spec.rb +0 -0
  1479. data/spec/unit/type/macauthorization_spec.rb +4 -1
  1480. data/spec/unit/type/mailalias_spec.rb +0 -0
  1481. data/spec/unit/type/maillist_spec.rb +0 -0
  1482. data/spec/unit/type/mcx_spec.rb +0 -0
  1483. data/spec/unit/type/mount_spec.rb +50 -8
  1484. data/spec/unit/type/nagios_spec.rb +0 -0
  1485. data/spec/unit/type/noop_metaparam_spec.rb +0 -0
  1486. data/spec/unit/type/package/package_settings_spec.rb +0 -0
  1487. data/spec/unit/type/package_spec.rb +1 -0
  1488. data/spec/unit/type/resources_spec.rb +0 -0
  1489. data/spec/unit/type/schedule_spec.rb +0 -0
  1490. data/spec/unit/type/selboolean_spec.rb +0 -0
  1491. data/spec/unit/type/selmodule_spec.rb +0 -0
  1492. data/spec/unit/type/service_spec.rb +21 -0
  1493. data/spec/unit/type/ssh_authorized_key_spec.rb +0 -0
  1494. data/spec/unit/type/sshkey_spec.rb +0 -0
  1495. data/spec/unit/type/stage_spec.rb +0 -0
  1496. data/spec/unit/type/tidy_spec.rb +4 -4
  1497. data/spec/unit/type/user_spec.rb +40 -7
  1498. data/spec/unit/type/vlan_spec.rb +1 -1
  1499. data/spec/unit/type/whit_spec.rb +0 -0
  1500. data/spec/unit/type/yumrepo_spec.rb +3 -7
  1501. data/spec/unit/type/zfs_spec.rb +0 -0
  1502. data/spec/unit/type/zone_spec.rb +0 -0
  1503. data/spec/unit/type/zpool_spec.rb +0 -0
  1504. data/spec/unit/type_spec.rb +119 -1
  1505. data/spec/unit/util/autoload_spec.rb +0 -0
  1506. data/spec/unit/util/backups_spec.rb +0 -0
  1507. data/spec/unit/util/character_encoding_spec.rb +88 -0
  1508. data/spec/unit/util/checksums_spec.rb +0 -0
  1509. data/spec/unit/util/colors_spec.rb +0 -0
  1510. data/spec/unit/util/command_line_spec.rb +11 -0
  1511. data/spec/unit/util/constant_inflector_spec.rb +0 -0
  1512. data/spec/unit/util/diff_spec.rb +0 -0
  1513. data/spec/unit/util/errors_spec.rb +0 -0
  1514. data/spec/unit/util/execution_spec.rb +13 -1
  1515. data/spec/unit/util/execution_stub_spec.rb +0 -0
  1516. data/spec/unit/util/feature_spec.rb +1 -1
  1517. data/spec/unit/util/filetype_spec.rb +4 -4
  1518. data/spec/unit/util/http_proxy_spec.rb +91 -0
  1519. data/spec/unit/util/ldap/connection_spec.rb +0 -0
  1520. data/spec/unit/util/ldap/generator_spec.rb +1 -1
  1521. data/spec/unit/util/ldap/manager_spec.rb +0 -0
  1522. data/spec/unit/util/log/destinations_spec.rb +0 -2
  1523. data/spec/unit/util/log_spec.rb +12 -1
  1524. data/spec/unit/util/logging_spec.rb +69 -0
  1525. data/spec/unit/util/metric_spec.rb +0 -0
  1526. data/spec/unit/util/monkey_patches_spec.rb +95 -3
  1527. data/spec/unit/util/multi_match_spec.rb +39 -0
  1528. data/spec/unit/util/nagios_maker_spec.rb +0 -0
  1529. data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
  1530. data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -0
  1531. data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -0
  1532. data/spec/unit/util/network_device/config_spec.rb +0 -0
  1533. data/spec/unit/util/network_device/ipcalc_spec.rb +0 -0
  1534. data/spec/unit/util/network_device/transport/base_spec.rb +0 -0
  1535. data/spec/unit/util/network_device/transport/ssh_spec.rb +1 -1
  1536. data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
  1537. data/spec/unit/util/network_device_spec.rb +1 -1
  1538. data/spec/unit/util/package_spec.rb +0 -0
  1539. data/spec/unit/util/plist_spec.rb +135 -0
  1540. data/spec/unit/util/posix_spec.rb +0 -0
  1541. data/spec/unit/util/rdoc_spec.rb +0 -0
  1542. data/spec/unit/util/resource_template_spec.rb +2 -2
  1543. data/spec/unit/util/retry_action_spec.rb +0 -0
  1544. data/spec/unit/util/run_mode_spec.rb +27 -3
  1545. data/spec/unit/util/selinux_spec.rb +0 -0
  1546. data/spec/unit/util/splayer_spec.rb +45 -0
  1547. data/spec/unit/util/storage_spec.rb +8 -1
  1548. data/spec/unit/util/suidmanager_spec.rb +0 -0
  1549. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -0
  1550. data/spec/unit/util/tagging_spec.rb +4 -0
  1551. data/spec/unit/util/user_attr_spec.rb +0 -0
  1552. data/spec/unit/util/warnings_spec.rb +0 -0
  1553. data/spec/unit/util/windows/adsi_spec.rb +82 -40
  1554. data/spec/unit/util/windows/api_types_spec.rb +42 -0
  1555. data/spec/unit/util/windows/file_spec.rb +89 -0
  1556. data/spec/unit/util/windows/root_certs_spec.rb +0 -0
  1557. data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
  1558. data/spec/unit/util/windows/sid_spec.rb +76 -14
  1559. data/spec/unit/util/yaml_spec.rb +13 -1
  1560. data/spec/unit/util_spec.rb +219 -15
  1561. data/spec/unit/version_spec.rb +19 -0
  1562. data/spec/watchr.rb +0 -0
  1563. data/tasks/cfpropertylist.rake +15 -0
  1564. metadata +724 -115
  1565. data/ext/puppet-nm-dispatcher +0 -13
  1566. data/ext/puppetlisten/puppetlisten.rb +0 -77
  1567. data/ext/puppetlisten/puppetrun.rb +0 -38
  1568. data/ext/systemd/puppetmaster.service +0 -11
  1569. data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +0 -175
  1570. data/lib/puppet/pops/types/types_meta.rb +0 -234
  1571. data/lib/puppet/resource/type_collection_helper.rb +0 -7
  1572. data/lib/puppet/vendor/load_plist.rb +0 -1
  1573. data/lib/puppet/vendor/plist/CHANGELOG +0 -82
  1574. data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
  1575. data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
  1576. data/lib/puppet/vendor/plist/README +0 -36
  1577. data/lib/puppet/vendor/plist/Rakefile +0 -144
  1578. data/lib/puppet/vendor/plist/docs/USAGE +0 -104
  1579. data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
  1580. data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
  1581. data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
  1582. data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
  1583. data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
  1584. data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
  1585. data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
  1586. data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
  1587. data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
  1588. data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
  1589. data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
  1590. data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
  1591. data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
  1592. data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
  1593. data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
  1594. data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
  1595. data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
  1596. data/lib/puppet/vendor/semantic/Gemfile +0 -20
  1597. data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
  1598. data/lib/puppet/vendor/semantic/Rakefile +0 -69
  1599. data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
  1600. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
  1601. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
  1602. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
  1603. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
  1604. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
  1605. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
  1606. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
  1607. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
  1608. data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
  1609. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -3
  1610. data/spec/integration/data_binding.rb +0 -104
  1611. data/spec/integration/parser/functions/require_spec.rb +0 -43
  1612. data/spec/integration/provider/package_spec.rb +0 -33
  1613. data/spec/unit/parser/functions/defined_spec.rb +0 -120
  1614. data/spec/unit/parser/functions/include_spec.rb +0 -55
  1615. data/spec/unit/parser/functions/require_spec.rb +0 -68
  1616. data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
  1617. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
  1618. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
  1619. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -0
  1620. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
  1621. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
  1622. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -0
  1623. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -0
  1624. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
  1625. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
  1626. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
  1627. /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
  1628. /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
@@ -1,16 +1,18 @@
1
+ module Puppet::Pops
2
+ module Evaluator
1
3
  # A module with bindings between the new evaluator and the 3x runtime.
2
4
  # The intention is to separate all calls into scope, compiler, resource, etc. in this module
3
5
  # to make it easier to later refactor the evaluator for better implementations of the 3x classes.
4
6
  #
5
7
  # @api private
6
- module Puppet::Pops::Evaluator::Runtime3Support
8
+ module Runtime3Support
7
9
 
8
10
  NAME_SPACE_SEPARATOR = '::'.freeze
9
11
 
10
12
  # Fails the evaluation of _semantic_ with a given issue.
11
13
  #
12
- # @param issue [Puppet::Pops::Issue] the issue to report
13
- # @param semantic [Puppet::Pops::ModelPopsObject] the object for which evaluation failed in some way. Used to determine origin.
14
+ # @param issue [Issue] the issue to report
15
+ # @param semantic [ModelPopsObject] the object for which evaluation failed in some way. Used to determine origin.
14
16
  # @param options [Hash] hash of optional named data elements for the given issue
15
17
  # @return [!] this method does not return
16
18
  # @raise [Puppet::ParseError] an evaluation error initialized from the arguments (TODO: Change to EvaluationError?)
@@ -24,8 +26,8 @@ module Puppet::Pops::Evaluator::Runtime3Support
24
26
  # Optionally (based on severity) Fails the evaluation of _semantic_ with a given issue
25
27
  # If the given issue is configured to be of severity < :error it is only reported, and the function returns.
26
28
  #
27
- # @param issue [Puppet::Pops::Issue] the issue to report
28
- # @param semantic [Puppet::Pops::ModelPopsObject] the object for which evaluation failed in some way. Used to determine origin.
29
+ # @param issue [Issue] the issue to report
30
+ # @param semantic [ModelPopsObject] the object for which evaluation failed in some way. Used to determine origin.
29
31
  # @param options [Hash] hash of optional named data elements for the given issue
30
32
  # @return [!] this method does not return
31
33
  # @raise [Puppet::ParseError] an evaluation error initialized from the arguments (TODO: Change to EvaluationError?)
@@ -57,13 +59,21 @@ module Puppet::Pops::Evaluator::Runtime3Support
57
59
  # The error is not specific enough to allow catching it - need to check the actual message text.
58
60
  # TODO: Improve the messy implementation in Scope.
59
61
  #
62
+ if name == "server_facts"
63
+ if Puppet[:trusted_server_facts] || Puppet[:strict] == :error
64
+ fail(Issues::ILLEGAL_RESERVED_ASSIGNMENT, o, {:name => name} )
65
+ elsif Puppet[:strict] == :warning
66
+ file, line = extract_file_line(o)
67
+ msg = "Assignment to $server_facts is deprecated"
68
+ Puppet.warn_once(:deprecation, msg, msg, file, line)
69
+ end
70
+ end
71
+
60
72
  if scope.bound?(name)
61
73
  if Puppet::Parser::Scope::RESERVED_VARIABLE_NAMES.include?(name)
62
- fail(Puppet::Pops::Issues::ILLEGAL_RESERVED_ASSIGNMENT, o, {:name => name} )
63
- elsif name == "server_facts" && Puppet[:trusted_server_facts]
64
- fail(Puppet::Pops::Issues::ILLEGAL_RESERVED_ASSIGNMENT, o, {:name => name} )
74
+ fail(Issues::ILLEGAL_RESERVED_ASSIGNMENT, o, {:name => name} )
65
75
  else
66
- fail(Puppet::Pops::Issues::ILLEGAL_REASSIGNMENT, o, {:name => name} )
76
+ fail(Issues::ILLEGAL_REASSIGNMENT, o, {:name => name} )
67
77
  end
68
78
  end
69
79
  scope.setvar(name, value)
@@ -80,14 +90,15 @@ module Puppet::Pops::Evaluator::Runtime3Support
80
90
  # Must convert :undef back to nil - this can happen when an undefined variable is used in a
81
91
  # parameter's default value expression - there nil must be :undef to work with the rest of 3x.
82
92
  # Now that the value comes back to 4x it is changed to nil.
83
- return (x == :undef) ? nil : x
93
+ return :undef.equal?(x) ? nil : x
84
94
  }
85
95
  # It is always ok to reference numeric variables even if they are not assigned. They are always undef
86
96
  # if not set by a match expression.
87
97
  #
88
98
  unless name =~ Puppet::Pops::Patterns::NUMERIC_VAR_NAME
89
- fail(Puppet::Pops::Issues::UNKNOWN_VARIABLE, o, {:name => name})
99
+ optionally_fail(Puppet::Pops::Issues::UNKNOWN_VARIABLE, o, {:name => name})
90
100
  end
101
+ nil # in case unknown variable is configured as a warning or ignore
91
102
  end
92
103
 
93
104
  # Returns true if the variable of the given name is set in the given most nested scope. True is returned even if
@@ -136,10 +147,8 @@ module Puppet::Pops::Evaluator::Runtime3Support
136
147
  end
137
148
 
138
149
  def set_scope_nesting_level(scope, level)
139
- # Yup, 3x uses this method to reset the level, it also supports passing :all to destroy all
140
- # ephemeral/local scopes - which is a sure way to create havoc.
141
- #
142
- scope.unset_ephemeral_var(level)
150
+ # 3x uses this method to reset the level,
151
+ scope.pop_ephemerals(level)
143
152
  end
144
153
 
145
154
  # Adds a relationship between the given `source` and `target` of the given `relationship_type`
@@ -196,20 +205,22 @@ module Puppet::Pops::Evaluator::Runtime3Support
196
205
  # And if that is not enough, a source/target may be a Collector (a baked query that will be evaluated by the
197
206
  # compiler - it is simply passed through here for processing by the compiler at the right time).
198
207
  #
199
- if source.is_a?(Puppet::Pops::Evaluator::Collectors::AbstractCollector)
208
+ if source.is_a?(Collectors::AbstractCollector)
200
209
  # use verbatim - behavior defined by 3x
201
210
  source_resource = source
202
211
  else
203
212
  # transform into the wonderful String representation in 3x
204
- type, title = Puppet::Pops::Evaluator::Runtime3Converter.instance.catalog_type_to_split_type_title(source)
213
+ type, title = Runtime3Converter.instance.catalog_type_to_split_type_title(source)
214
+ type = Runtime3ResourceSupport.find_resource_type(scope, type) unless type == 'class' || type == 'node'
205
215
  source_resource = Puppet::Resource.new(type, title)
206
216
  end
207
- if target.is_a?(Puppet::Pops::Evaluator::Collectors::AbstractCollector)
217
+ if target.is_a?(Collectors::AbstractCollector)
208
218
  # use verbatim - behavior defined by 3x
209
219
  target_resource = target
210
220
  else
211
221
  # transform into the wonderful String representation in 3x
212
- type, title = Puppet::Pops::Evaluator::Runtime3Converter.instance.catalog_type_to_split_type_title(target)
222
+ type, title = Runtime3Converter.instance.catalog_type_to_split_type_title(target)
223
+ type = Runtime3ResourceSupport.find_resource_type(scope, type) unless type == 'class' || type == 'node'
213
224
  target_resource = Puppet::Resource.new(type, title)
214
225
  end
215
226
  # Add the relationship to the compiler for later evaluation.
@@ -225,33 +236,65 @@ module Puppet::Pops::Evaluator::Runtime3Support
225
236
  # @return [Numeric] value `v` converted to Numeric.
226
237
  #
227
238
  def coerce_numeric(v, o, scope)
228
- unless n = Puppet::Pops::Utils.to_n(v)
229
- fail(Puppet::Pops::Issues::NOT_NUMERIC, o, {:value => v})
239
+ unless n = Utils.to_n(v)
240
+ fail(Issues::NOT_NUMERIC, o, {:value => v})
230
241
  end
231
242
  n
232
243
  end
233
244
 
234
- def call_function(name, args, o, scope, &block)
245
+ # Provides the ability to call a 3.x or 4.x function from the perspective of a 3.x function or ERB template.
246
+ # The arguments to the function must be an Array containing values compliant with the 4.x calling convention.
247
+ # If the targeted function is a 3.x function, the values will be transformed.
248
+ # @param name [String] the name of the function (without the 'function_' prefix used by scope)
249
+ # @param args [Array] arguments, may be empty
250
+ # @param scope [Object] the (runtime specific) scope where evaluation takes place
251
+ # @raise [ArgumentError] 'unknown function' if the function does not exist
252
+ #
253
+ def external_call_function(name, args, scope, &block)
235
254
  # Call via 4x API if the function exists there
236
255
  loaders = scope.compiler.loaders
237
- # find the loader that loaded the code, or use the private_environment_loader (sees env + all modules)
238
- adapter = Puppet::Pops::Utils.find_adapter(o, Puppet::Pops::Adapters::LoaderAdapter)
239
- loader = adapter.nil? ? loaders.private_environment_loader : adapter.loader
256
+ # Since this is a call from non puppet code, it is not possible to relate it to a module loader
257
+ # It is known where the call originates by using the scope associated module - but this is the calling scope
258
+ # and it does not defined the visibility of functions from a ruby function's perspective. Instead,
259
+ # this is done from the perspective of the environment.
260
+ loader = loaders.private_environment_loader
240
261
  if loader && func = loader.load(:function, name)
241
- return func.call(scope, *args, &block)
262
+ Puppet::Util::Profiler.profile(name, [:functions, name]) do
263
+ return func.call(scope, *args, &block)
264
+ end
242
265
  end
243
266
 
244
267
  # Call via 3x API if function exists there
245
- fail(Puppet::Pops::Issues::UNKNOWN_FUNCTION, o, {:name => name}) unless Puppet::Parser::Functions.function(name)
268
+ raise ArgumentError, "Unknown function '#{name}'" unless Puppet::Parser::Functions.function(name)
246
269
 
247
270
  # Arguments must be mapped since functions are unaware of the new and magical creatures in 4x.
248
271
  # NOTE: Passing an empty string last converts nil/:undef to empty string
249
- mapped_args = Puppet::Pops::Evaluator::Runtime3Converter.map_args(args, scope, '')
272
+ mapped_args = Runtime3FunctionArgumentConverter.map_args(args, scope, '')
250
273
  result = scope.send("function_#{name}", mapped_args, &block)
251
274
  # Prevent non r-value functions from leaking their result (they are not written to care about this)
252
275
  Puppet::Parser::Functions.rvalue?(name) ? result : nil
253
276
  end
254
277
 
278
+ def call_function(name, args, o, scope, &block)
279
+ file, line = extract_file_line(o)
280
+ loader = Adapters::LoaderAdapter.loader_for_model_object(o, file)
281
+ if loader && func = loader.load(:function, name)
282
+ Puppet::Util::Profiler.profile(name, [:functions, name]) do
283
+ # Add stack frame when calling. See Puppet::Pops::PuppetStack
284
+ return Kernel.eval('func.call(scope, *args, &block)', Kernel.binding, file || '', line)
285
+ end
286
+ end
287
+ # Call via 3x API if function exists there
288
+ fail(Issues::UNKNOWN_FUNCTION, o, {:name => name}) unless Puppet::Parser::Functions.function(name)
289
+
290
+ # Arguments must be mapped since functions are unaware of the new and magical creatures in 4x.
291
+ # NOTE: Passing an empty string last converts nil/:undef to empty string
292
+ mapped_args = Runtime3FunctionArgumentConverter.map_args(args, scope, '')
293
+ result = Puppet::Pops::PuppetStack.stack(file, line, scope, "function_#{name}", [mapped_args], &block)
294
+ # Prevent non r-value functions from leaking their result (they are not written to care about this)
295
+ Puppet::Parser::Functions.rvalue?(name) ? result : nil
296
+ end
297
+
255
298
  # The o is used for source reference
256
299
  def create_resource_parameter(o, scope, name, value, operator)
257
300
  file, line = extract_file_line(o)
@@ -264,50 +307,18 @@ module Puppet::Pops::Evaluator::Runtime3Support
264
307
  end
265
308
 
266
309
  def convert(value, scope, undef_value)
267
- Puppet::Pops::Evaluator::Runtime3Converter.convert(value, scope, undef_value)
310
+ converter = scope.environment.rich_data? ? Runtime3Converter.instance : Runtime3FunctionArgumentConverter.instance
311
+ converter.convert(value, scope, undef_value)
268
312
  end
269
313
 
270
- CLASS_STRING = 'class'.freeze
271
-
272
314
  def create_resources(o, scope, virtual, exported, type_name, resource_titles, evaluated_parameters)
273
-
274
- # TODO: Unknown resource causes creation of Resource to fail with ArgumentError, should give
275
- # a proper Issue. Now the result is "Error while evaluating a Resource Statement" with the message
276
- # from the raised exception. (It may be good enough).
277
-
278
- # resolve in scope.
279
- fully_qualified_type, resource_titles = scope.resolve_type_and_titles(type_name, resource_titles)
280
-
281
315
  # Not 100% accurate as this is the resource expression location and each title is processed separately
282
316
  # The titles are however the result of evaluation and they have no location at this point (an array
283
317
  # of positions for the source expressions are required for this to work).
284
318
  # TODO: Revisit and possible improve the accuracy.
285
319
  #
286
320
  file, line = extract_file_line(o)
287
- # Build a resource for each title
288
- resource_titles.map do |resource_title|
289
- resource = Puppet::Parser::Resource.new(
290
- fully_qualified_type, resource_title,
291
- :parameters => evaluated_parameters,
292
- :file => file,
293
- :line => line,
294
- :exported => exported,
295
- :virtual => virtual,
296
- # WTF is this? Which source is this? The file? The name of the context ?
297
- :source => scope.source,
298
- :scope => scope,
299
- :strict => true
300
- )
301
-
302
- if resource.resource_type.is_a? Puppet::Resource::Type
303
- resource.resource_type.instantiate_resource(scope, resource)
304
- end
305
- scope.compiler.add_resource(scope, resource)
306
- scope.compiler.evaluate_classes([resource_title], scope, false) if fully_qualified_type == CLASS_STRING
307
- # Turn the resource into a PType (a reference to a resource type)
308
- # weed out nil's
309
- resource_to_ptype(resource)
310
- end
321
+ Runtime3ResourceSupport.create_resources(file, line, scope, virtual, exported, type_name, resource_titles, evaluated_parameters)
311
322
  end
312
323
 
313
324
  # Defines default parameters for a type with the given name.
@@ -340,11 +351,12 @@ module Puppet::Pops::Evaluator::Runtime3Support
340
351
  # A *=> results in an array of arrays
341
352
  evaluated_parameters = evaluated_parameters.flatten
342
353
  evaluated_resources.each do |r|
343
- unless r.is_a?(Puppet::Pops::Types::PResourceType) && r.type_name != 'class'
344
- fail(Puppet::Pops::Issues::ILLEGAL_OVERRIDEN_TYPE, o, {:actual => r} )
354
+ unless r.is_a?(Types::PResourceType) && r.type_name != 'class'
355
+ fail(Issues::ILLEGAL_OVERRIDEN_TYPE, o, {:actual => r} )
345
356
  end
357
+ t = Runtime3ResourceSupport.find_resource_type(scope, r.type_name)
346
358
  resource = Puppet::Parser::Resource.new(
347
- r.type_name, r.title,
359
+ t, r.title,
348
360
  :parameters => evaluated_parameters,
349
361
  :file => file,
350
362
  :line => line,
@@ -433,27 +445,34 @@ module Puppet::Pops::Evaluator::Runtime3Support
433
445
  end
434
446
 
435
447
  def extract_file_line(o)
436
- source_pos = Puppet::Pops::Utils.find_closest_positioned(o)
437
- return [nil, -1] unless source_pos
438
- [source_pos.locator.file, source_pos.line]
448
+ positioned = find_closest_with_offset(o)
449
+ unless positioned.nil?
450
+ locator = Adapters::SourcePosAdapter.find_locator(positioned)
451
+ return [locator.file, locator.line_for_offset(positioned.offset)] unless locator.nil?
452
+ end
453
+ [nil, -1]
439
454
  end
440
455
 
441
- def find_closest_positioned(o)
442
- return nil if o.nil? || o.is_a?(Puppet::Pops::Model::Program)
443
- o.offset.nil? ? find_closest_positioned(o.eContainer) : Puppet::Pops::Adapters::SourcePosAdapter.adapt(o)
456
+ def find_closest_with_offset(o)
457
+ if o.offset.nil?
458
+ c = o.eContainer
459
+ c.nil? ? nil : find_closest_with_offset(c)
460
+ else
461
+ o
462
+ end
444
463
  end
445
464
 
446
465
  # Creates a diagnostic producer
447
466
  def diagnostic_producer
448
- Puppet::Pops::Validation::DiagnosticProducer.new(
467
+ Validation::DiagnosticProducer.new(
449
468
  ExceptionRaisingAcceptor.new(), # Raises exception on all issues
450
469
  SeverityProducer.new(), # All issues are errors
451
- Puppet::Pops::Model::ModelLabelProvider.new())
470
+ Model::ModelLabelProvider.new())
452
471
  end
453
472
 
454
473
  # Configure the severity of failures
455
- class SeverityProducer < Puppet::Pops::Validation::SeverityProducer
456
- Issues = Puppet::Pops::Issues
474
+ class SeverityProducer < Validation::SeverityProducer
475
+ Issues = Issues
457
476
 
458
477
  def initialize
459
478
  super
@@ -465,6 +484,17 @@ module Puppet::Pops::Evaluator::Runtime3Support
465
484
  p[Issues::EMPTY_RESOURCE_SPECIALIZATION] = :ignore
466
485
  end
467
486
 
487
+ # if strict variables are on, an error is raised
488
+ # if strict variables are off, the Puppet[strict] defines what is done
489
+ #
490
+ if Puppet[:strict_variables]
491
+ p[Issues::UNKNOWN_VARIABLE] = :error
492
+ elsif Puppet[:strict] == :off
493
+ p[Issues::UNKNOWN_VARIABLE] = :ignore
494
+ else
495
+ p[Issues::UNKNOWN_VARIABLE] = Puppet[:strict]
496
+ end
497
+
468
498
  # Store config issues, ignore or warning
469
499
  p[Issues::RT_NO_STORECONFIGS_EXPORT] = Puppet[:storeconfigs] ? :ignore : :warning
470
500
  p[Issues::RT_NO_STORECONFIGS] = Puppet[:storeconfigs] ? :ignore : :warning
@@ -472,11 +502,11 @@ module Puppet::Pops::Evaluator::Runtime3Support
472
502
  end
473
503
 
474
504
  # An acceptor of diagnostics that immediately raises an exception.
475
- class ExceptionRaisingAcceptor < Puppet::Pops::Validation::Acceptor
505
+ class ExceptionRaisingAcceptor < Validation::Acceptor
476
506
  def accept(diagnostic)
477
507
  super
478
- Puppet::Pops::IssueReporter.assert_and_report(self, {
479
- :message => "Evaluation Error:",
508
+ IssueReporter.assert_and_report(self, {
509
+ :message => "Evaluation Error:",
480
510
  :emit_warnings => true, # log warnings
481
511
  :exception_class => Puppet::PreformattedError
482
512
  })
@@ -489,3 +519,5 @@ module Puppet::Pops::Evaluator::Runtime3Support
489
519
  class EvaluationError < StandardError
490
520
  end
491
521
  end
522
+ end
523
+ end
@@ -1,3 +1,5 @@
1
+ module Puppet::Pops
2
+ module Functions
1
3
  # Defines a connection between a implementation method and the signature that
2
4
  # the method will handle.
3
5
  #
@@ -5,7 +7,7 @@
5
7
  # constructed using the DSL defined in {Puppet::Functions}.
6
8
  #
7
9
  # @api private
8
- class Puppet::Pops::Functions::Dispatch < Puppet::Pops::Evaluator::CallableSignature
10
+ class Dispatch < Evaluator::CallableSignature
9
11
  # @api public
10
12
  attr_reader :type
11
13
  # TODO: refactor to parameter_names since that makes it API
@@ -19,15 +21,24 @@ class Puppet::Pops::Functions::Dispatch < Puppet::Pops::Evaluator::CallableSigna
19
21
  # @api public
20
22
  attr_reader :block_name
21
23
 
24
+ # @param type [Puppet::Pops::Types::PArrayType, Puppet::Pops::Types::PTupleType] - type describing signature
25
+ # @param method_name [String] the name of the method that will be called when type matches given arguments
26
+ # @param param_names [Array<String>] names matching the number of parameters specified by type (or empty array)
27
+ # @param block_name [String,nil] name of block parameter, no nil
28
+ # @param injections [Array<Array>] injection data for weaved parameters
29
+ # @param weaving [Array<Integer,Array>] weaving knits
30
+ # @param last_captures [Boolean] true if last parameter is captures rest
31
+ # @param argument_mismatch_handler [Boolean] true if this is a dispatch for an argument mismatch
22
32
  # @api private
23
- def initialize(type, method_name, param_names, block_name, injections, weaving, last_captures)
33
+ def initialize(type, method_name, param_names, last_captures = false, block_name = nil, injections = EMPTY_ARRAY, weaving = EMPTY_ARRAY, argument_mismatch_handler = false)
24
34
  @type = type
25
35
  @method_name = method_name
26
- @param_names = param_names || []
36
+ @param_names = param_names
37
+ @last_captures = last_captures
27
38
  @block_name = block_name
28
- @injections = injections || []
39
+ @injections = injections
29
40
  @weaving = weaving
30
- @last_captures = last_captures
41
+ @argument_mismatch_handler = argument_mismatch_handler
31
42
  end
32
43
 
33
44
  # @api private
@@ -37,12 +48,19 @@ class Puppet::Pops::Functions::Dispatch < Puppet::Pops::Evaluator::CallableSigna
37
48
 
38
49
  # @api private
39
50
  def last_captures_rest?
40
- !! @last_captures
51
+ @last_captures
52
+ end
53
+
54
+ def argument_mismatch_handler?
55
+ @argument_mismatch_handler
41
56
  end
42
57
 
43
58
  # @api private
44
59
  def invoke(instance, calling_scope, args, &block)
45
- instance.send(@method_name, *weave(calling_scope, args), &block)
60
+ result = instance.send(@method_name, *weave(calling_scope, args), &block)
61
+ return_type = @type.return_type
62
+ Types::TypeAsserter.assert_instance_of(nil, return_type, result) { "value returned from function '#{@method_name}'" } unless return_type.nil?
63
+ result
46
64
  end
47
65
 
48
66
  # @api private
@@ -83,3 +101,5 @@ class Puppet::Pops::Functions::Dispatch < Puppet::Pops::Evaluator::CallableSigna
83
101
  end
84
102
  end
85
103
  end
104
+ end
105
+ end
@@ -28,28 +28,23 @@ class Puppet::Pops::Functions::Dispatcher
28
28
  #
29
29
  # @api private
30
30
  def dispatch(instance, calling_scope, args, &block)
31
- tc = Puppet::Pops::Types::TypeCalculator
32
- actual = tc.infer_set(block_given? ? args + [block] : args)
33
- found = @dispatchers.find { |d| tc.callable?(d.type, actual) }
34
- if found
35
- found.invoke(instance, calling_scope, args, &block)
36
- else
37
- raise ArgumentError, "function '#{instance.class.name}' called with mis-matched arguments\n#{Puppet::Pops::Evaluator::CallableMismatchDescriber.diff_string(instance.class.name, actual, @dispatchers)}"
31
+ found = @dispatchers.find { |d| d.type.callable_with?(args, block) }
32
+ unless found
33
+ args_type = Puppet::Pops::Types::TypeCalculator.singleton.infer_set(block_given? ? args + [block] : args)
34
+ raise ArgumentError, Puppet::Pops::Types::TypeMismatchDescriber.describe_signatures(instance.class.name, signatures, args_type)
38
35
  end
39
- end
40
36
 
41
- # Adds a regular dispatch for one method name
42
- #
43
- # @param type [Puppet::Pops::Types::PArrayType, Puppet::Pops::Types::PTupleType] - type describing signature
44
- # @param method_name [String] - the name of the method that will be called when type matches given arguments
45
- # @param names [Array<String>] - array with names matching the number of parameters specified by type (or empty array)
46
- #
47
- # @api private
48
- def add_dispatch(type, method_name, param_names, block_name, injections, weaving, last_captures)
49
- add(Puppet::Pops::Functions::Dispatch.new(type, method_name, param_names, block_name, injections, weaving, last_captures))
37
+ if found.argument_mismatch_handler?
38
+ msg = found.invoke(instance, calling_scope, args)
39
+ raise ArgumentError, "'#{instance.class.name}' #{msg}"
40
+ end
41
+
42
+ catch(:next) do
43
+ found.invoke(instance, calling_scope, args, &block)
44
+ end
50
45
  end
51
46
 
52
- # Adds a dispatch directly to the set of dispathers.
47
+ # Adds a dispatch directly to the set of dispatchers.
53
48
  # @api private
54
49
  def add(a_dispatch)
55
50
  @dispatchers << a_dispatch
@@ -62,7 +57,7 @@ class Puppet::Pops::Functions::Dispatcher
62
57
  # make a copy to make sure it can be contained by someone else (even if it is not contained here, it
63
58
  # should be treated as immutable).
64
59
  #
65
- callables = dispatchers.map { | dispatch | dispatch.type.copy }
60
+ callables = dispatchers.map { | dispatch | dispatch.type }
66
61
 
67
62
  # multiple signatures, produce a Variant type of Callable1-n (must copy them)
68
63
  # single signature, produce single Callable
@@ -71,6 +66,6 @@ class Puppet::Pops::Functions::Dispatcher
71
66
 
72
67
  # @api private
73
68
  def signatures
74
- @dispatchers
69
+ @dispatchers.reject { |dispatcher| dispatcher.argument_mismatch_handler? }
75
70
  end
76
71
  end
@@ -41,7 +41,24 @@ class Puppet::Pops::Functions::Function
41
41
  #
42
42
  # @api public
43
43
  def call(scope, *args, &block)
44
- self.class.dispatcher.dispatch(self, scope, args, &block)
44
+ begin
45
+ result = catch(:return) do
46
+ return self.class.dispatcher.dispatch(self, scope, args, &block)
47
+ end
48
+ return result.value
49
+ rescue Puppet::Pops::Evaluator::Next => jumper
50
+ begin
51
+ throw :next, jumper.value
52
+ rescue Puppet::Parser::Scope::UNCAUGHT_THROW_EXCEPTION => uncaught
53
+ raise Puppet::ParseError.new("next() from context where this is illegal", jumper.file, jumper.line)
54
+ end
55
+ rescue Puppet::Pops::Evaluator::Return => jumper
56
+ begin
57
+ throw :return, jumper
58
+ rescue Puppet::Parser::Scope::UNCAUGHT_THROW_EXCEPTION => uncaught
59
+ raise Puppet::ParseError.new("return() from context where this is illegal", jumper.file, jumper.line)
60
+ end
61
+ end
45
62
  end
46
63
 
47
64
  # Allows the implementation of a function to call other functions by name. The callable functions
@@ -57,6 +74,11 @@ class Puppet::Pops::Functions::Function
57
74
  internal_call_function(closure_scope, function_name, args, &block)
58
75
  end
59
76
 
77
+ def closure_scope
78
+ # If closure scope is explicitly set to not nil, if there is a global scope, otherwise an empty hash
79
+ @closure_scope || Puppet.lookup(:global_scope) { {} }
80
+ end
81
+
60
82
  # The dispatcher for the function
61
83
  #
62
84
  # @api private
@@ -89,18 +111,22 @@ class Puppet::Pops::Functions::Function
89
111
  raise ArgumentError, "Function #{self.class.name}(): cannot call function '#{function_name}' - no loader specified" unless the_loader
90
112
 
91
113
  func = the_loader.load(:function, function_name)
92
- return func.call(scope, *args, &block) if func
114
+ if func
115
+ Puppet::Util::Profiler.profile(function_name, [:functions, function_name]) do
116
+ return func.call(scope, *args, &block)
117
+ end
118
+ end
93
119
 
94
120
  # Check if a 3x function is present. Raise a generic error if it's not to allow upper layers to fill in the details
95
121
  # about where in a puppet manifest this error originates. (Such information is not available here).
96
122
  loader_scope = closure_scope
97
123
  func_3x = Puppet::Parser::Functions.function(function_name, loader_scope.environment) if loader_scope.is_a?(Puppet::Parser::Scope)
98
- raise ArgumentError, "Function #{self.class.name}(): cannot call function '#{function_name}' - not found" unless func_3x
124
+ raise ArgumentError, "Function #{self.class.name}(): Unknown function: '#{function_name}'" unless func_3x
99
125
 
100
126
  # Call via 3x API
101
127
  # Arguments must be mapped since functions are unaware of the new and magical creatures in 4x.
102
128
  # NOTE: Passing an empty string last converts nil/:undef to empty string
103
- result = scope.send(func_3x, Puppet::Pops::Evaluator::Runtime3Converter.map_args(args, loader_scope, ''), &block)
129
+ result = scope.send(func_3x, Puppet::Pops::Evaluator::Runtime3FunctionArgumentConverter.map_args(args, loader_scope, ''), &block)
104
130
 
105
131
  # Prevent non r-value functions from leaking their result (they are not written to care about this)
106
132
  Puppet::Parser::Functions.rvalue?(function_name) ? result : nil
@@ -1,6 +1,7 @@
1
- class Puppet::Pops::IssueReporter
1
+ module Puppet::Pops
2
+ class IssueReporter
2
3
 
3
- # @param acceptor [Puppet::Pops::Validation::Acceptor] the acceptor containing reported issues
4
+ # @param acceptor [Validation::Acceptor] the acceptor containing reported issues
4
5
  # @option options [String] :message (nil) A message text to use as prefix in
5
6
  # a single Error message
6
7
  # @option options [Boolean] :emit_warnings (false) whether warnings should be emitted
@@ -23,7 +24,7 @@ class Puppet::Pops::IssueReporter
23
24
  # If there are warnings output them
24
25
  warnings = acceptor.warnings
25
26
  if emit_warnings && warnings.size > 0
26
- formatter = Puppet::Pops::Validation::DiagnosticFormatterPuppetStyle.new
27
+ formatter = Validation::DiagnosticFormatterPuppetStyle.new
27
28
  emitted_w = 0
28
29
  emitted_dw = 0
29
30
  acceptor.warnings.each do |w|
@@ -48,7 +49,7 @@ class Puppet::Pops::IssueReporter
48
49
  unless emit_errors
49
50
  raise emit_exception.new(emit_message)
50
51
  end
51
- formatter = Puppet::Pops::Validation::DiagnosticFormatterPuppetStyle.new
52
+ formatter = Validation::DiagnosticFormatterPuppetStyle.new
52
53
  if errors.size == 1 || max_errors <= 1
53
54
  # raise immediately
54
55
  exception = create_exception(emit_exception, emit_message, formatter, errors[0])
@@ -68,7 +69,7 @@ class Puppet::Pops::IssueReporter
68
69
  break if emitted >= max_errors
69
70
  end
70
71
  warnings_message = (emit_warnings && warnings.size > 0) ? ", and #{warnings.size} warnings" : ""
71
- giving_up_message = "Found #{errors.size} errors#{warnings_message}. Giving up"
72
+ giving_up_message = "Language validation logged #{errors.size} errors#{warnings_message}. Giving up"
72
73
  exception = emit_exception.new(giving_up_message)
73
74
  exception.file = errors[0].file
74
75
  raise exception
@@ -111,3 +112,4 @@ class Puppet::Pops::IssueReporter
111
112
  end
112
113
  private_class_method :log_message
113
114
  end
115
+ end