puppet 4.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2045) hide show
  1. data/COMMITTERS.md +2 -2
  2. data/CONTRIBUTING.md +51 -10
  3. data/Gemfile +27 -14
  4. data/LICENSE +3 -3
  5. data/MAINTAINERS +66 -0
  6. data/README.md +9 -11
  7. data/Rakefile +36 -0
  8. data/conf/auth.conf +23 -2
  9. data/conf/fileserver.conf +7 -12
  10. data/conf/hiera.yaml +11 -0
  11. data/conf/puppet.conf +1 -1
  12. data/ext/README.environment +1 -1
  13. data/ext/build_defaults.yaml +10 -37
  14. data/ext/debian/README.source +1 -1
  15. data/ext/debian/control +3 -5
  16. data/ext/debian/copyright +4 -4
  17. data/ext/debian/puppet-common.install +0 -1
  18. data/ext/debian/puppet-common.manpages +0 -2
  19. data/ext/debian/puppet.default +0 -5
  20. data/ext/debian/puppet.init +1 -16
  21. data/ext/debian/puppet.logrotate +14 -5
  22. data/ext/debian/puppetmaster.README.debian +11 -9
  23. data/ext/envpuppet +2 -2
  24. data/ext/hiera/hiera.yaml +15 -0
  25. data/ext/ips/puppetagent.xml +1 -1
  26. data/ext/ips/puppetmaster.xml +1 -1
  27. data/ext/logcheck/puppet +1 -1
  28. data/ext/osx/puppet.plist +30 -0
  29. data/ext/project_data.yaml +29 -16
  30. data/ext/puppet-test +3 -27
  31. data/ext/rack/config.ru +2 -2
  32. data/ext/rack/example-passenger-vhost.conf +1 -1
  33. data/ext/redhat/client.init +67 -17
  34. data/ext/redhat/client.sysconfig +1 -10
  35. data/ext/redhat/logrotate +15 -3
  36. data/ext/redhat/puppet.spec.erb +6 -14
  37. data/ext/redhat/server.init +1 -1
  38. data/ext/regexp_nodes/regexp_nodes.rb +1 -1
  39. data/ext/solaris/pkginfo +1 -1
  40. data/ext/solaris/smf/puppet +44 -0
  41. data/ext/solaris/smf/puppet.xml +44 -0
  42. data/ext/suse/client.init +30 -33
  43. data/ext/suse/puppet.spec +2 -2
  44. data/ext/suse/server.init +2 -2
  45. data/ext/systemd/puppet.service +13 -1
  46. data/ext/upload_facts.rb +1 -1
  47. data/ext/windows/puppet_interactive.bat +6 -0
  48. data/ext/windows/puppet_shell.bat +9 -0
  49. data/ext/windows/run_puppet_interactive.bat +9 -0
  50. data/ext/windows/service/daemon.rb +10 -15
  51. data/ext/yaml_nodes.rb +1 -1
  52. data/install.rb +99 -66
  53. data/lib/hiera/puppet_function.rb +28 -18
  54. data/lib/hiera/scope.rb +12 -14
  55. data/lib/hiera_puppet.rb +6 -14
  56. data/lib/puppet/agent/disabler.rb +3 -3
  57. data/lib/puppet/agent/locker.rb +12 -3
  58. data/lib/puppet/agent.rb +35 -39
  59. data/lib/puppet/application/agent.rb +53 -25
  60. data/lib/puppet/application/apply.rb +83 -28
  61. data/lib/puppet/application/ca.rb +1 -0
  62. data/lib/puppet/application/cert.rb +54 -5
  63. data/lib/puppet/application/describe.rb +2 -2
  64. data/lib/puppet/application/device.rb +80 -50
  65. data/lib/puppet/application/doc.rb +9 -9
  66. data/lib/puppet/application/face_base.rb +11 -12
  67. data/lib/puppet/application/filebucket.rb +84 -10
  68. data/lib/puppet/application/generate.rb +5 -0
  69. data/lib/puppet/application/lookup.rb +357 -0
  70. data/lib/puppet/application/master.rb +33 -26
  71. data/lib/puppet/application/resource.rb +22 -23
  72. data/lib/puppet/application.rb +31 -15
  73. data/lib/puppet/application_support.rb +1 -1
  74. data/lib/puppet/compilable_resource_type.rb +15 -0
  75. data/lib/puppet/configurer/downloader.rb +2 -2
  76. data/lib/puppet/configurer/fact_handler.rb +13 -4
  77. data/lib/puppet/configurer/plugin_handler.rb +7 -5
  78. data/lib/puppet/configurer.rb +198 -55
  79. data/lib/puppet/context/trusted_information.rb +22 -2
  80. data/lib/puppet/context.rb +20 -5
  81. data/lib/puppet/daemon.rb +17 -13
  82. data/lib/puppet/data_binding.rb +4 -2
  83. data/lib/puppet/defaults.rb +309 -123
  84. data/lib/puppet/environments.rb +105 -10
  85. data/lib/puppet/error.rb +32 -2
  86. data/lib/puppet/etc.rb +161 -0
  87. data/lib/puppet/external/dot.rb +1 -1
  88. data/lib/puppet/external/pson/common.rb +4 -0
  89. data/lib/puppet/face/ca.rb +56 -44
  90. data/lib/puppet/face/catalog/select.rb +4 -4
  91. data/lib/puppet/face/catalog.rb +3 -3
  92. data/lib/puppet/face/certificate.rb +28 -22
  93. data/lib/puppet/face/certificate_request.rb +3 -1
  94. data/lib/puppet/face/certificate_revocation_list.rb +3 -1
  95. data/lib/puppet/face/config.rb +12 -12
  96. data/lib/puppet/face/epp.rb +96 -50
  97. data/lib/puppet/face/facts.rb +5 -5
  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 +37 -29
  102. data/lib/puppet/face/key.rb +4 -3
  103. data/lib/puppet/face/man.rb +12 -10
  104. data/lib/puppet/face/module/build.rb +7 -7
  105. data/lib/puppet/face/module/changes.rb +8 -7
  106. data/lib/puppet/face/module/generate.rb +25 -25
  107. data/lib/puppet/face/module/install.rb +19 -15
  108. data/lib/puppet/face/module/list.rb +16 -12
  109. data/lib/puppet/face/module/search.rb +4 -4
  110. data/lib/puppet/face/module/uninstall.rb +13 -10
  111. data/lib/puppet/face/module/upgrade.rb +11 -7
  112. data/lib/puppet/face/module.rb +3 -3
  113. data/lib/puppet/face/node/clean.rb +8 -8
  114. data/lib/puppet/face/node.rb +6 -6
  115. data/lib/puppet/face/parser.rb +28 -25
  116. data/lib/puppet/face/plugin.rb +14 -21
  117. data/lib/puppet/face/report.rb +10 -10
  118. data/lib/puppet/face/resource.rb +13 -13
  119. data/lib/puppet/face/status.rb +9 -6
  120. data/lib/puppet/feature/base.rb +13 -5
  121. data/lib/puppet/feature/cfpropertylist.rb +3 -0
  122. data/lib/puppet/feature/eventlog.rb +1 -1
  123. data/lib/puppet/feature/hiera_eyaml.rb +3 -0
  124. data/lib/puppet/feature/hocon.rb +3 -0
  125. data/lib/puppet/feature/telnet.rb +9 -0
  126. data/lib/puppet/file_bucket/dipper.rb +62 -6
  127. data/lib/puppet/file_bucket/file.rb +4 -17
  128. data/lib/puppet/file_serving/base.rb +3 -3
  129. data/lib/puppet/file_serving/configuration/parser.rb +12 -12
  130. data/lib/puppet/file_serving/configuration.rb +3 -3
  131. data/lib/puppet/file_serving/content.rb +1 -1
  132. data/lib/puppet/file_serving/fileset.rb +7 -5
  133. data/lib/puppet/file_serving/http_metadata.rb +46 -0
  134. data/lib/puppet/file_serving/metadata.rb +33 -12
  135. data/lib/puppet/file_serving/mount/file.rb +6 -6
  136. data/lib/puppet/file_serving/mount/modules.rb +1 -1
  137. data/lib/puppet/file_serving/mount.rb +1 -1
  138. data/lib/puppet/file_serving/terminus_helper.rb +7 -8
  139. data/lib/puppet/file_serving/terminus_selector.rb +3 -1
  140. data/lib/puppet/file_system/file_impl.rb +13 -4
  141. data/lib/puppet/file_system/memory_impl.rb +10 -2
  142. data/lib/puppet/file_system/path_pattern.rb +7 -6
  143. data/lib/puppet/file_system/uniquefile.rb +5 -5
  144. data/lib/puppet/file_system/windows.rb +39 -16
  145. data/lib/puppet/file_system.rb +46 -5
  146. data/lib/puppet/forge/cache.rb +1 -0
  147. data/lib/puppet/forge/errors.rb +12 -12
  148. data/lib/puppet/forge/repository.rb +5 -36
  149. data/lib/puppet/forge.rb +17 -15
  150. data/lib/puppet/functions/alert.rb +14 -0
  151. data/lib/puppet/functions/annotate.rb +108 -0
  152. data/lib/puppet/functions/assert_type.rb +53 -19
  153. data/lib/puppet/functions/binary_file.rb +19 -0
  154. data/lib/puppet/functions/break.rb +22 -0
  155. data/lib/puppet/functions/call.rb +42 -0
  156. data/lib/puppet/functions/contain.rb +33 -0
  157. data/lib/puppet/functions/crit.rb +14 -0
  158. data/lib/puppet/functions/debug.rb +14 -0
  159. data/lib/puppet/functions/defined.rb +160 -0
  160. data/lib/puppet/functions/dig.rb +23 -0
  161. data/lib/puppet/functions/each.rb +89 -39
  162. data/lib/puppet/functions/emerg.rb +14 -0
  163. data/lib/puppet/functions/epp.rb +29 -37
  164. data/lib/puppet/functions/err.rb +14 -0
  165. data/lib/puppet/functions/eyaml_lookup_key.rb +94 -0
  166. data/lib/puppet/functions/filter.rb +64 -38
  167. data/lib/puppet/functions/find_file.rb +31 -0
  168. data/lib/puppet/functions/hiera.rb +83 -3
  169. data/lib/puppet/functions/hiera_array.rb +73 -4
  170. data/lib/puppet/functions/hiera_hash.rb +82 -2
  171. data/lib/puppet/functions/hiera_include.rb +93 -6
  172. data/lib/puppet/functions/hocon_data.rb +41 -0
  173. data/lib/puppet/functions/include.rb +21 -0
  174. data/lib/puppet/functions/info.rb +14 -0
  175. data/lib/puppet/functions/inline_epp.rb +44 -71
  176. data/lib/puppet/functions/json_data.rb +33 -0
  177. data/lib/puppet/functions/lest.rb +17 -0
  178. data/lib/puppet/functions/lookup.rb +172 -184
  179. data/lib/puppet/functions/map.rb +60 -33
  180. data/lib/puppet/functions/match.rb +32 -14
  181. data/lib/puppet/functions/new.rb +31 -0
  182. data/lib/puppet/functions/next.rb +23 -0
  183. data/lib/puppet/functions/notice.rb +14 -0
  184. data/lib/puppet/functions/reduce.rb +112 -71
  185. data/lib/puppet/functions/regsubst.rb +23 -26
  186. data/lib/puppet/functions/require.rb +37 -0
  187. data/lib/puppet/functions/return.rb +22 -0
  188. data/lib/puppet/functions/reverse_each.rb +25 -0
  189. data/lib/puppet/functions/scanf.rb +15 -18
  190. data/lib/puppet/functions/slice.rb +25 -39
  191. data/lib/puppet/functions/split.rb +3 -3
  192. data/lib/puppet/functions/step.rb +26 -0
  193. data/lib/puppet/functions/strftime.rb +43 -0
  194. data/lib/puppet/functions/then.rb +14 -0
  195. data/lib/puppet/functions/type.rb +31 -0
  196. data/lib/puppet/functions/unique.rb +132 -0
  197. data/lib/puppet/functions/unwrap.rb +40 -0
  198. data/lib/puppet/functions/versioncmp.rb +36 -0
  199. data/lib/puppet/functions/warning.rb +14 -0
  200. data/lib/puppet/functions/with.rb +15 -7
  201. data/lib/puppet/functions/yaml_data.rb +42 -0
  202. data/lib/puppet/functions.rb +226 -76
  203. data/lib/puppet/generate/models/type/property.rb +70 -0
  204. data/lib/puppet/generate/models/type/type.rb +62 -0
  205. data/lib/puppet/generate/templates/type/pcore.erb +42 -0
  206. data/lib/puppet/generate/type.rb +239 -0
  207. data/lib/puppet/graph/rb_tree_map.rb +1 -1
  208. data/lib/puppet/graph/relationship_graph.rb +4 -1
  209. data/lib/puppet/graph/simple_graph.rb +51 -74
  210. data/lib/puppet/indirector/catalog/compiler.rb +242 -38
  211. data/lib/puppet/indirector/catalog/json.rb +18 -0
  212. data/lib/puppet/indirector/certificate/disabled_ca.rb +1 -1
  213. data/lib/puppet/indirector/certificate_request/ca.rb +3 -3
  214. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +1 -1
  215. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +1 -1
  216. data/lib/puppet/indirector/certificate_status/file.rb +6 -6
  217. data/lib/puppet/indirector/data_binding/none.rb +4 -1
  218. data/lib/puppet/indirector/exec.rb +2 -2
  219. data/lib/puppet/indirector/face.rb +24 -19
  220. data/lib/puppet/indirector/facts/facter.rb +9 -1
  221. data/lib/puppet/indirector/file_bucket_file/file.rb +142 -29
  222. data/lib/puppet/indirector/file_content/http.rb +15 -0
  223. data/lib/puppet/indirector/file_metadata/http.rb +27 -0
  224. data/lib/puppet/indirector/file_server.rb +10 -2
  225. data/lib/puppet/indirector/generic_http.rb +16 -0
  226. data/lib/puppet/indirector/hiera.rb +12 -4
  227. data/lib/puppet/indirector/indirection.rb +25 -18
  228. data/lib/puppet/indirector/json.rb +11 -12
  229. data/lib/puppet/indirector/key/ca.rb +2 -2
  230. data/lib/puppet/indirector/key/disabled_ca.rb +1 -1
  231. data/lib/puppet/indirector/key/file.rb +4 -3
  232. data/lib/puppet/indirector/ldap.rb +6 -5
  233. data/lib/puppet/indirector/memory.rb +1 -1
  234. data/lib/puppet/indirector/msgpack.rb +9 -8
  235. data/lib/puppet/indirector/node/exec.rb +9 -7
  236. data/lib/puppet/indirector/node/ldap.rb +10 -8
  237. data/lib/puppet/indirector/node/plain.rb +2 -1
  238. data/lib/puppet/indirector/node/write_only_yaml.rb +6 -1
  239. data/lib/puppet/indirector/node/yaml.rb +0 -9
  240. data/lib/puppet/indirector/report/processor.rb +2 -2
  241. data/lib/puppet/indirector/report/rest.rb +13 -0
  242. data/lib/puppet/indirector/request.rb +40 -23
  243. data/lib/puppet/indirector/resource/ral.rb +1 -1
  244. data/lib/puppet/indirector/resource/validator.rb +1 -1
  245. data/lib/puppet/indirector/rest.rb +103 -10
  246. data/lib/puppet/indirector/ssl_file.rb +33 -12
  247. data/lib/puppet/indirector/terminus.rb +7 -7
  248. data/lib/puppet/indirector/yaml.rb +5 -5
  249. data/lib/puppet/indirector.rb +2 -2
  250. data/lib/puppet/info_service/class_information_service.rb +110 -0
  251. data/lib/puppet/info_service.rb +7 -0
  252. data/lib/puppet/interface/documentation.rb +1 -1
  253. data/lib/puppet/interface/face_collection.rb +7 -2
  254. data/lib/puppet/interface.rb +12 -4
  255. data/lib/puppet/loaders.rb +6 -0
  256. data/lib/puppet/metatype/manager.rb +25 -8
  257. data/lib/puppet/module.rb +73 -34
  258. data/lib/puppet/module_tool/applications/application.rb +8 -9
  259. data/lib/puppet/module_tool/applications/builder.rb +9 -9
  260. data/lib/puppet/module_tool/applications/checksummer.rb +2 -2
  261. data/lib/puppet/module_tool/applications/installer.rb +21 -20
  262. data/lib/puppet/module_tool/applications/searcher.rb +1 -1
  263. data/lib/puppet/module_tool/applications/uninstaller.rb +2 -1
  264. data/lib/puppet/module_tool/applications/unpacker.rb +4 -4
  265. data/lib/puppet/module_tool/applications/upgrader.rb +19 -18
  266. data/lib/puppet/module_tool/checksums.rb +1 -1
  267. data/lib/puppet/module_tool/contents_description.rb +1 -1
  268. data/lib/puppet/module_tool/dependency.rb +0 -1
  269. data/lib/puppet/module_tool/errors/installer.rb +23 -23
  270. data/lib/puppet/module_tool/errors/shared.rb +44 -42
  271. data/lib/puppet/module_tool/errors/uninstaller.rb +13 -9
  272. data/lib/puppet/module_tool/errors/upgrader.rb +11 -11
  273. data/lib/puppet/module_tool/install_directory.rb +1 -1
  274. data/lib/puppet/module_tool/installed_modules.rb +10 -10
  275. data/lib/puppet/module_tool/local_tarball.rb +7 -7
  276. data/lib/puppet/module_tool/metadata.rb +47 -21
  277. data/lib/puppet/module_tool/shared_behaviors.rb +6 -6
  278. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +14 -3
  279. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +48 -38
  280. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +19 -4
  281. data/lib/puppet/module_tool/skeleton/templates/generator/{tests → examples}/init.pp.erb +3 -3
  282. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +25 -18
  283. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -2
  284. data/lib/puppet/module_tool/tar/mini.rb +3 -3
  285. data/lib/puppet/module_tool/tar.rb +5 -4
  286. data/lib/puppet/module_tool.rb +11 -7
  287. data/lib/puppet/network/auth_config_parser.rb +13 -12
  288. data/lib/puppet/network/authconfig.rb +23 -3
  289. data/lib/puppet/network/authorization.rb +8 -1
  290. data/lib/puppet/network/authstore.rb +2 -2
  291. data/lib/puppet/network/format.rb +7 -7
  292. data/lib/puppet/network/format_handler.rb +12 -9
  293. data/lib/puppet/network/format_support.rb +11 -5
  294. data/lib/puppet/network/formats.rb +38 -27
  295. data/lib/puppet/network/http/api/indirected_routes.rb +86 -58
  296. data/lib/puppet/network/http/api/master/v3/environment.rb +82 -0
  297. data/lib/puppet/network/http/api/master/v3.rb +7 -1
  298. data/lib/puppet/network/http/compression.rb +12 -8
  299. data/lib/puppet/network/http/connection.rb +21 -15
  300. data/lib/puppet/network/http/error.rb +14 -10
  301. data/lib/puppet/network/http/factory.rb +8 -4
  302. data/lib/puppet/network/http/handler.rb +11 -6
  303. data/lib/puppet/network/http/issues.rb +1 -0
  304. data/lib/puppet/network/http/pool.rb +10 -1
  305. data/lib/puppet/network/http/rack/rest.rb +27 -3
  306. data/lib/puppet/network/http/rack.rb +2 -2
  307. data/lib/puppet/network/http/request.rb +34 -20
  308. data/lib/puppet/network/http/response.rb +13 -1
  309. data/lib/puppet/network/http/webrick/rest.rb +2 -2
  310. data/lib/puppet/network/http/webrick.rb +7 -6
  311. data/lib/puppet/network/rights.rb +7 -17
  312. data/lib/puppet/network/server.rb +2 -2
  313. data/lib/puppet/node/environment.rb +73 -17
  314. data/lib/puppet/node/facts.rb +1 -6
  315. data/lib/puppet/node.rb +61 -18
  316. data/lib/puppet/parameter/boolean.rb +1 -1
  317. data/lib/puppet/parameter/package_options.rb +1 -1
  318. data/lib/puppet/parameter/path.rb +3 -3
  319. data/lib/puppet/parameter/value.rb +1 -1
  320. data/lib/puppet/parameter/value_collection.rb +4 -4
  321. data/lib/puppet/parameter.rb +24 -29
  322. data/lib/puppet/parser/ast/node.rb +1 -1
  323. data/lib/puppet/parser/ast/pops_bridge.rb +103 -29
  324. data/lib/puppet/parser/ast/resource.rb +5 -0
  325. data/lib/puppet/parser/ast/resource_instance.rb +5 -1
  326. data/lib/puppet/parser/ast/resourceparam.rb +5 -0
  327. data/lib/puppet/parser/ast.rb +5 -0
  328. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
  329. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +57 -0
  330. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
  331. data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
  332. data/lib/puppet/parser/compiler.rb +351 -128
  333. data/lib/puppet/parser/e4_parser_adapter.rb +14 -14
  334. data/lib/puppet/parser/environment_compiler.rb +199 -0
  335. data/lib/puppet/parser/functions/assert_type.rb +47 -17
  336. data/lib/puppet/parser/functions/binary_file.rb +24 -0
  337. data/lib/puppet/parser/functions/break.rb +39 -0
  338. data/lib/puppet/parser/functions/contain.rb +7 -15
  339. data/lib/puppet/parser/functions/create_resources.rb +49 -25
  340. data/lib/puppet/parser/functions/defined.rb +106 -69
  341. data/lib/puppet/parser/functions/dig.rb +29 -0
  342. data/lib/puppet/parser/functions/each.rb +86 -28
  343. data/lib/puppet/parser/functions/epp.rb +30 -38
  344. data/lib/puppet/parser/functions/file.rb +4 -2
  345. data/lib/puppet/parser/functions/filter.rb +60 -24
  346. data/lib/puppet/parser/functions/find_file.rb +28 -0
  347. data/lib/puppet/parser/functions/fqdn_rand.rb +3 -3
  348. data/lib/puppet/parser/functions/generate.rb +5 -4
  349. data/lib/puppet/parser/functions/hiera.rb +98 -28
  350. data/lib/puppet/parser/functions/hiera_array.rb +86 -29
  351. data/lib/puppet/parser/functions/hiera_hash.rb +96 -31
  352. data/lib/puppet/parser/functions/hiera_include.rb +96 -41
  353. data/lib/puppet/parser/functions/include.rb +5 -8
  354. data/lib/puppet/parser/functions/inline_epp.rb +36 -61
  355. data/lib/puppet/parser/functions/inline_template.rb +3 -3
  356. data/lib/puppet/parser/functions/lest.rb +49 -0
  357. data/lib/puppet/parser/functions/lookup.rb +129 -151
  358. data/lib/puppet/parser/functions/map.rb +56 -21
  359. data/lib/puppet/parser/functions/match.rb +29 -13
  360. data/lib/puppet/parser/functions/new.rb +939 -0
  361. data/lib/puppet/parser/functions/next.rb +38 -0
  362. data/lib/puppet/parser/functions/reduce.rb +98 -61
  363. data/lib/puppet/parser/functions/regsubst.rb +4 -2
  364. data/lib/puppet/parser/functions/require.rb +4 -27
  365. data/lib/puppet/parser/functions/return.rb +71 -0
  366. data/lib/puppet/parser/functions/reverse_each.rb +83 -0
  367. data/lib/puppet/parser/functions/scanf.rb +25 -31
  368. data/lib/puppet/parser/functions/slice.rb +18 -25
  369. data/lib/puppet/parser/functions/split.rb +2 -2
  370. data/lib/puppet/parser/functions/step.rb +84 -0
  371. data/lib/puppet/parser/functions/strftime.rb +185 -0
  372. data/lib/puppet/parser/functions/then.rb +73 -0
  373. data/lib/puppet/parser/functions/type.rb +53 -0
  374. data/lib/puppet/parser/functions/with.rb +17 -9
  375. data/lib/puppet/parser/functions.rb +39 -21
  376. data/lib/puppet/parser/parser_factory.rb +0 -30
  377. data/lib/puppet/parser/relationship.rb +49 -20
  378. data/lib/puppet/parser/resource/param.rb +0 -3
  379. data/lib/puppet/parser/resource.rb +165 -50
  380. data/lib/puppet/parser/scope.rb +419 -200
  381. data/lib/puppet/parser/templatewrapper.rb +4 -3
  382. data/lib/puppet/parser/type_loader.rb +2 -2
  383. data/lib/puppet/parser.rb +3 -1
  384. data/lib/puppet/plugins/configuration.rb +15 -58
  385. data/lib/puppet/plugins/syntax_checkers.rb +6 -11
  386. data/lib/puppet/pops/adaptable.rb +12 -7
  387. data/lib/puppet/pops/adapters.rb +102 -73
  388. data/lib/puppet/pops/evaluator/access_operator.rb +248 -158
  389. data/lib/puppet/pops/evaluator/callable_signature.rb +7 -0
  390. data/lib/puppet/pops/evaluator/closure.rb +251 -109
  391. data/lib/puppet/pops/evaluator/collector_transformer.rb +51 -37
  392. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
  393. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +6 -2
  394. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +8 -5
  395. data/lib/puppet/pops/evaluator/compare_operator.rb +113 -13
  396. data/lib/puppet/pops/evaluator/epp_evaluator.rb +17 -11
  397. data/lib/puppet/pops/evaluator/evaluator_impl.rb +281 -151
  398. data/lib/puppet/pops/evaluator/external_syntax_support.rb +2 -9
  399. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +82 -0
  400. data/lib/puppet/pops/evaluator/literal_evaluator.rb +87 -0
  401. data/lib/puppet/pops/evaluator/puppet_proc.rb +1 -1
  402. data/lib/puppet/pops/evaluator/relationship_operator.rb +44 -20
  403. data/lib/puppet/pops/evaluator/runtime3_converter.rb +74 -49
  404. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +117 -0
  405. data/lib/puppet/pops/evaluator/runtime3_support.rb +142 -91
  406. data/lib/puppet/pops/functions/dispatch.rb +34 -14
  407. data/lib/puppet/pops/functions/dispatcher.rb +17 -16
  408. data/lib/puppet/pops/functions/function.rb +30 -4
  409. data/lib/puppet/pops/issue_reporter.rb +49 -21
  410. data/lib/puppet/pops/issues.rb +404 -102
  411. data/lib/puppet/pops/label_provider.rb +18 -4
  412. data/lib/puppet/pops/loader/base_loader.rb +74 -20
  413. data/lib/puppet/pops/loader/dependency_loader.rb +27 -2
  414. data/lib/puppet/pops/loader/gem_support.rb +2 -2
  415. data/lib/puppet/pops/loader/loader.rb +57 -48
  416. data/lib/puppet/pops/loader/loader_paths.rb +113 -6
  417. data/lib/puppet/pops/loader/module_loaders.rb +128 -35
  418. data/lib/puppet/pops/loader/null_loader.rb +17 -1
  419. data/lib/puppet/pops/loader/predefined_loader.rb +24 -0
  420. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +84 -0
  421. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +79 -0
  422. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +19 -7
  423. data/lib/puppet/pops/loader/runtime3_type_loader.rb +96 -0
  424. data/lib/puppet/pops/loader/static_loader.rb +111 -41
  425. data/lib/puppet/pops/loader/type_definition_instantiator.rb +93 -0
  426. data/lib/puppet/pops/loader/typed_name.rb +54 -0
  427. data/lib/puppet/pops/loaders.rb +213 -31
  428. data/lib/puppet/pops/lookup/configured_data_provider.rb +93 -0
  429. data/lib/puppet/pops/lookup/context.rb +200 -0
  430. data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
  431. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +145 -0
  432. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +126 -0
  433. data/lib/puppet/pops/lookup/data_provider.rb +92 -0
  434. data/lib/puppet/pops/lookup/environment_data_provider.rb +35 -0
  435. data/lib/puppet/pops/lookup/explainer.rb +594 -0
  436. data/lib/puppet/pops/lookup/function_provider.rb +110 -0
  437. data/lib/puppet/pops/lookup/global_data_provider.rb +75 -0
  438. data/lib/puppet/pops/lookup/hiera_config.rb +761 -0
  439. data/lib/puppet/pops/lookup/interpolation.rb +154 -0
  440. data/lib/puppet/pops/lookup/invocation.rb +261 -0
  441. data/lib/puppet/pops/lookup/location_resolver.rb +99 -0
  442. data/lib/puppet/pops/lookup/lookup_adapter.rb +471 -0
  443. data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
  444. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +92 -0
  445. data/lib/puppet/pops/lookup/module_data_provider.rb +89 -0
  446. data/lib/puppet/pops/lookup/sub_lookup.rb +92 -0
  447. data/lib/puppet/pops/lookup.rb +49 -49
  448. data/lib/puppet/pops/merge_strategy.rb +197 -46
  449. data/lib/puppet/pops/migration/migration_checker.rb +58 -0
  450. data/lib/puppet/pops/model/ast.pp +692 -0
  451. data/lib/puppet/pops/model/ast.rb +4833 -0
  452. data/lib/puppet/pops/model/ast_transformer.rb +15 -9
  453. data/lib/puppet/pops/model/factory.rb +550 -527
  454. data/lib/puppet/pops/model/model_label_provider.rb +33 -8
  455. data/lib/puppet/pops/model/model_tree_dumper.rb +52 -7
  456. data/lib/puppet/pops/parser/code_merger.rb +13 -1
  457. data/lib/puppet/pops/parser/egrammar.ra +190 -67
  458. data/lib/puppet/pops/parser/eparser.rb +1823 -1338
  459. data/lib/puppet/pops/parser/epp_support.rb +27 -12
  460. data/lib/puppet/pops/parser/evaluating_parser.rb +31 -17
  461. data/lib/puppet/pops/parser/heredoc_support.rb +20 -16
  462. data/lib/puppet/pops/parser/interpolation_support.rb +18 -5
  463. data/lib/puppet/pops/parser/lexer2.rb +460 -383
  464. data/lib/puppet/pops/parser/lexer_support.rb +132 -25
  465. data/lib/puppet/pops/parser/locator.rb +86 -9
  466. data/lib/puppet/pops/parser/parser_support.rb +59 -54
  467. data/lib/puppet/pops/parser/slurp_support.rb +37 -12
  468. data/lib/puppet/pops/patterns.rb +16 -1
  469. data/lib/puppet/pops/pcore.rb +103 -0
  470. data/lib/puppet/pops/puppet_stack.rb +43 -0
  471. data/lib/puppet/pops/resource/param.rb +55 -0
  472. data/lib/puppet/pops/resource/resource_type_impl.rb +314 -0
  473. data/lib/puppet/pops/resource/resource_type_set.pcore +22 -0
  474. data/lib/puppet/pops/semantic_error.rb +12 -0
  475. data/lib/puppet/pops/serialization/abstract_reader.rb +176 -0
  476. data/lib/puppet/pops/serialization/abstract_writer.rb +215 -0
  477. data/lib/puppet/pops/serialization/deserializer.rb +80 -0
  478. data/lib/puppet/pops/serialization/extension.rb +157 -0
  479. data/lib/puppet/pops/serialization/from_data_converter.rb +181 -0
  480. data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
  481. data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
  482. data/lib/puppet/pops/serialization/json.rb +297 -0
  483. data/lib/puppet/pops/serialization/json_path.rb +126 -0
  484. data/lib/puppet/pops/serialization/object.rb +71 -0
  485. data/lib/puppet/pops/serialization/serializer.rb +139 -0
  486. data/lib/puppet/pops/serialization/time_factory.rb +67 -0
  487. data/lib/puppet/pops/serialization/to_data_converter.rb +292 -0
  488. data/lib/puppet/pops/serialization.rb +41 -0
  489. data/lib/puppet/pops/time/timespan.rb +718 -0
  490. data/lib/puppet/pops/time/timestamp.rb +148 -0
  491. data/lib/puppet/pops/types/annotatable.rb +36 -0
  492. data/lib/puppet/pops/types/annotation.rb +71 -0
  493. data/lib/puppet/pops/types/class_loader.rb +29 -29
  494. data/lib/puppet/pops/types/enumeration.rb +9 -27
  495. data/lib/puppet/pops/types/implementation_registry.rb +141 -0
  496. data/lib/puppet/pops/types/iterable.rb +308 -0
  497. data/lib/puppet/pops/types/p_binary_type.rb +226 -0
  498. data/lib/puppet/pops/types/p_meta_type.rb +87 -0
  499. data/lib/puppet/pops/types/p_object_type.rb +925 -0
  500. data/lib/puppet/pops/types/p_runtime_type.rb +115 -0
  501. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +191 -0
  502. data/lib/puppet/pops/types/p_sem_ver_type.rb +141 -0
  503. data/lib/puppet/pops/types/p_sensitive_type.rb +73 -0
  504. data/lib/puppet/pops/types/p_timespan_type.rb +192 -0
  505. data/lib/puppet/pops/types/p_timestamp_type.rb +69 -0
  506. data/lib/puppet/pops/types/p_type_set_type.rb +360 -0
  507. data/lib/puppet/pops/types/puppet_object.rb +26 -0
  508. data/lib/puppet/pops/types/recursion_guard.rb +136 -0
  509. data/lib/puppet/pops/types/ruby_generator.rb +439 -0
  510. data/lib/puppet/pops/types/ruby_method.rb +31 -0
  511. data/lib/puppet/pops/types/string_converter.rb +1099 -0
  512. data/lib/puppet/pops/types/type_acceptor.rb +25 -0
  513. data/lib/puppet/pops/types/type_asserter.rb +21 -19
  514. data/lib/puppet/pops/types/type_assertion_error.rb +1 -0
  515. data/lib/puppet/pops/types/type_calculator.rb +252 -1232
  516. data/lib/puppet/pops/types/type_conversion_error.rb +15 -0
  517. data/lib/puppet/pops/types/type_factory.rb +300 -166
  518. data/lib/puppet/pops/types/type_formatter.rb +734 -0
  519. data/lib/puppet/pops/types/type_mismatch_describer.rb +1106 -0
  520. data/lib/puppet/pops/types/type_parser.rb +382 -275
  521. data/lib/puppet/pops/types/type_set_reference.rb +59 -0
  522. data/lib/puppet/pops/types/types.rb +3287 -289
  523. data/lib/puppet/pops/utils.rb +7 -30
  524. data/lib/puppet/pops/validation/checker4_0.rb +353 -125
  525. data/lib/puppet/pops/validation/validator_factory_4_0.rb +13 -5
  526. data/lib/puppet/pops/validation.rb +50 -18
  527. data/lib/puppet/pops/visitor.rb +30 -6
  528. data/lib/puppet/pops.rb +46 -57
  529. data/lib/puppet/property/ensure.rb +4 -4
  530. data/lib/puppet/property/list.rb +1 -10
  531. data/lib/puppet/property.rb +84 -21
  532. data/lib/puppet/provider/aixobject.rb +11 -11
  533. data/lib/puppet/provider/augeas/augeas.rb +89 -34
  534. data/lib/puppet/provider/command.rb +1 -1
  535. data/lib/puppet/provider/cron/crontab.rb +3 -3
  536. data/lib/puppet/provider/exec/posix.rb +4 -4
  537. data/lib/puppet/provider/exec/windows.rb +4 -4
  538. data/lib/puppet/provider/exec.rb +14 -7
  539. data/lib/puppet/provider/file/posix.rb +5 -5
  540. data/lib/puppet/provider/file/windows.rb +4 -4
  541. data/lib/puppet/provider/group/aix.rb +6 -6
  542. data/lib/puppet/provider/group/directoryservice.rb +10 -0
  543. data/lib/puppet/provider/group/groupadd.rb +2 -2
  544. data/lib/puppet/provider/group/pw.rb +2 -1
  545. data/lib/puppet/provider/group/windows_adsi.rb +23 -7
  546. data/lib/puppet/provider/host/parsed.rb +1 -1
  547. data/lib/puppet/provider/macauthorization/macauthorization.rb +20 -19
  548. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  549. data/lib/puppet/provider/maillist/mailman.rb +2 -2
  550. data/lib/puppet/provider/mcx/mcxcontent.rb +6 -5
  551. data/lib/puppet/provider/mount/parsed.rb +162 -3
  552. data/lib/puppet/provider/mount.rb +2 -1
  553. data/lib/puppet/provider/naginator.rb +1 -1
  554. data/lib/puppet/provider/nameservice/directoryservice.rb +65 -72
  555. data/lib/puppet/provider/nameservice.rb +40 -17
  556. data/lib/puppet/provider/network_device.rb +2 -1
  557. data/lib/puppet/provider/package/aix.rb +5 -5
  558. data/lib/puppet/provider/package/appdmg.rb +7 -6
  559. data/lib/puppet/provider/package/apple.rb +2 -2
  560. data/lib/puppet/provider/package/apt.rb +5 -5
  561. data/lib/puppet/provider/package/aptitude.rb +1 -1
  562. data/lib/puppet/provider/package/aptrpm.rb +2 -2
  563. data/lib/puppet/provider/package/blastwave.rb +4 -4
  564. data/lib/puppet/provider/package/dnf.rb +46 -0
  565. data/lib/puppet/provider/package/dpkg.rb +3 -3
  566. data/lib/puppet/provider/package/fink.rb +3 -3
  567. data/lib/puppet/provider/package/freebsd.rb +1 -1
  568. data/lib/puppet/provider/package/gem.rb +35 -9
  569. data/lib/puppet/provider/package/hpux.rb +1 -1
  570. data/lib/puppet/provider/package/nim.rb +17 -14
  571. data/lib/puppet/provider/package/openbsd.rb +11 -11
  572. data/lib/puppet/provider/package/opkg.rb +1 -1
  573. data/lib/puppet/provider/package/pacman.rb +20 -19
  574. data/lib/puppet/provider/package/pip.rb +83 -22
  575. data/lib/puppet/provider/package/pip3.rb +20 -0
  576. data/lib/puppet/provider/package/pkg.rb +21 -17
  577. data/lib/puppet/provider/package/pkgdmg.rb +12 -9
  578. data/lib/puppet/provider/package/pkgin.rb +6 -6
  579. data/lib/puppet/provider/package/pkgng.rb +143 -0
  580. data/lib/puppet/provider/package/pkgutil.rb +7 -7
  581. data/lib/puppet/provider/package/portage.rb +183 -35
  582. data/lib/puppet/provider/package/ports.rb +3 -6
  583. data/lib/puppet/provider/package/portupgrade.rb +4 -4
  584. data/lib/puppet/provider/package/puppet_gem.rb +0 -0
  585. data/lib/puppet/provider/package/rpm.rb +130 -21
  586. data/lib/puppet/provider/package/rug.rb +1 -1
  587. data/lib/puppet/provider/package/sun.rb +4 -3
  588. data/lib/puppet/provider/package/tdnf.rb +28 -0
  589. data/lib/puppet/provider/package/up2date.rb +1 -1
  590. data/lib/puppet/provider/package/urpmi.rb +1 -1
  591. data/lib/puppet/provider/package/windows/exe_package.rb +10 -9
  592. data/lib/puppet/provider/package/windows/msi_package.rb +4 -4
  593. data/lib/puppet/provider/package/windows/package.rb +12 -4
  594. data/lib/puppet/provider/package/windows.rb +5 -5
  595. data/lib/puppet/provider/package/yum.rb +73 -94
  596. data/lib/puppet/provider/package/zypper.rb +70 -16
  597. data/lib/puppet/provider/package.rb +6 -2
  598. data/lib/puppet/provider/parsedfile.rb +3 -3
  599. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +39 -7
  600. data/lib/puppet/provider/selmodule/semodule.rb +20 -16
  601. data/lib/puppet/provider/service/base.rb +4 -3
  602. data/lib/puppet/provider/service/bsd.rb +9 -9
  603. data/lib/puppet/provider/service/daemontools.rb +5 -5
  604. data/lib/puppet/provider/service/debian.rb +14 -5
  605. data/lib/puppet/provider/service/freebsd.rb +1 -1
  606. data/lib/puppet/provider/service/init.rb +27 -3
  607. data/lib/puppet/provider/service/launchd.rb +57 -19
  608. data/lib/puppet/provider/service/rcng.rb +51 -0
  609. data/lib/puppet/provider/service/redhat.rb +2 -1
  610. data/lib/puppet/provider/service/runit.rb +4 -4
  611. data/lib/puppet/provider/service/smf.rb +59 -8
  612. data/lib/puppet/provider/service/src.rb +66 -39
  613. data/lib/puppet/provider/service/systemd.rb +141 -22
  614. data/lib/puppet/provider/service/upstart.rb +1 -3
  615. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  616. data/lib/puppet/provider/sshkey/parsed.rb +20 -10
  617. data/lib/puppet/provider/user/aix.rb +12 -6
  618. data/lib/puppet/provider/user/directoryservice.rb +43 -66
  619. data/lib/puppet/provider/user/hpux.rb +1 -1
  620. data/lib/puppet/provider/user/ldap.rb +1 -1
  621. data/lib/puppet/provider/user/openbsd.rb +1 -0
  622. data/lib/puppet/provider/user/pw.rb +1 -0
  623. data/lib/puppet/provider/user/user_role_add.rb +19 -2
  624. data/lib/puppet/provider/user/useradd.rb +1 -1
  625. data/lib/puppet/provider/user/windows_adsi.rb +51 -2
  626. data/lib/puppet/provider/yumrepo/inifile.rb +12 -9
  627. data/lib/puppet/provider/zfs/zfs.rb +2 -2
  628. data/lib/puppet/provider/zone/solaris.rb +6 -3
  629. data/lib/puppet/provider/zpool/zpool.rb +2 -2
  630. data/lib/puppet/provider.rb +11 -7
  631. data/lib/puppet/reference/configuration.rb +13 -5
  632. data/lib/puppet/reference/indirection.rb +3 -3
  633. data/lib/puppet/reference/metaparameter.rb +1 -1
  634. data/lib/puppet/reference/providers.rb +8 -9
  635. data/lib/puppet/reference/report.rb +9 -12
  636. data/lib/puppet/reference/type.rb +3 -3
  637. data/lib/puppet/relationship.rb +7 -9
  638. data/lib/puppet/reports/http.rb +6 -2
  639. data/lib/puppet/reports.rb +5 -1
  640. data/lib/puppet/resource/capability_finder.rb +128 -0
  641. data/lib/puppet/resource/catalog.rb +163 -51
  642. data/lib/puppet/resource/status.rb +34 -20
  643. data/lib/puppet/resource/type.rb +246 -97
  644. data/lib/puppet/resource/type_collection.rb +97 -17
  645. data/lib/puppet/resource.rb +242 -199
  646. data/lib/puppet/settings/array_setting.rb +1 -1
  647. data/lib/puppet/settings/autosign_setting.rb +1 -1
  648. data/lib/puppet/settings/base_setting.rb +9 -3
  649. data/lib/puppet/settings/boolean_setting.rb +1 -1
  650. data/lib/puppet/settings/config_file.rb +4 -3
  651. data/lib/puppet/settings/directory_setting.rb +6 -0
  652. data/lib/puppet/settings/duration_setting.rb +1 -1
  653. data/lib/puppet/settings/enum_setting.rb +1 -1
  654. data/lib/puppet/settings/environment_conf.rb +28 -8
  655. data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
  656. data/lib/puppet/settings/file_setting.rb +22 -11
  657. data/lib/puppet/settings/ini_file.rb +2 -2
  658. data/lib/puppet/settings/priority_setting.rb +1 -1
  659. data/lib/puppet/settings/server_list_setting.rb +20 -0
  660. data/lib/puppet/settings/symbolic_enum_setting.rb +17 -0
  661. data/lib/puppet/settings/terminus_setting.rb +1 -1
  662. data/lib/puppet/settings/ttl_setting.rb +2 -2
  663. data/lib/puppet/settings.rb +118 -46
  664. data/lib/puppet/ssl/base.rb +16 -3
  665. data/lib/puppet/ssl/certificate.rb +1 -1
  666. data/lib/puppet/ssl/certificate_authority/interface.rb +172 -32
  667. data/lib/puppet/ssl/certificate_authority.rb +67 -31
  668. data/lib/puppet/ssl/certificate_factory.rb +5 -5
  669. data/lib/puppet/ssl/certificate_request.rb +19 -19
  670. data/lib/puppet/ssl/certificate_request_attributes.rb +3 -3
  671. data/lib/puppet/ssl/certificate_revocation_list.rb +3 -3
  672. data/lib/puppet/ssl/certificate_signer.rb +1 -1
  673. data/lib/puppet/ssl/configuration.rb +4 -1
  674. data/lib/puppet/ssl/host.rb +47 -25
  675. data/lib/puppet/ssl/inventory.rb +11 -4
  676. data/lib/puppet/ssl/key.rb +8 -4
  677. data/lib/puppet/ssl/oids.rb +48 -8
  678. data/lib/puppet/ssl/validator/default_validator.rb +6 -7
  679. data/lib/puppet/syntax_checkers/base64.rb +41 -0
  680. data/lib/puppet/syntax_checkers/json.rb +5 -7
  681. data/lib/puppet/test/test_helper.rb +21 -11
  682. data/lib/puppet/transaction/additional_resource_generator.rb +105 -11
  683. data/lib/puppet/transaction/event.rb +45 -7
  684. data/lib/puppet/transaction/event_manager.rb +7 -7
  685. data/lib/puppet/transaction/persistence.rb +84 -0
  686. data/lib/puppet/transaction/report.rb +113 -37
  687. data/lib/puppet/transaction/resource_harness.rb +99 -37
  688. data/lib/puppet/transaction.rb +100 -54
  689. data/lib/puppet/type/augeas.rb +15 -6
  690. data/lib/puppet/type/component.rb +11 -0
  691. data/lib/puppet/type/cron.rb +27 -44
  692. data/lib/puppet/type/exec.rb +82 -52
  693. data/lib/puppet/type/file/checksum.rb +1 -0
  694. data/lib/puppet/type/file/checksum_value.rb +53 -0
  695. data/lib/puppet/type/file/content.rb +37 -122
  696. data/lib/puppet/type/file/data_sync.rb +92 -0
  697. data/lib/puppet/type/file/ensure.rb +22 -19
  698. data/lib/puppet/type/file/group.rb +3 -3
  699. data/lib/puppet/type/file/mode.rb +10 -6
  700. data/lib/puppet/type/file/owner.rb +3 -3
  701. data/lib/puppet/type/file/selcontext.rb +19 -2
  702. data/lib/puppet/type/file/source.rb +134 -37
  703. data/lib/puppet/type/file/target.rb +2 -2
  704. data/lib/puppet/type/file.rb +160 -61
  705. data/lib/puppet/type/filebucket.rb +3 -8
  706. data/lib/puppet/type/group.rb +28 -10
  707. data/lib/puppet/type/host.rb +7 -7
  708. data/lib/puppet/type/interface.rb +9 -4
  709. data/lib/puppet/type/k5login.rb +1 -1
  710. data/lib/puppet/type/macauthorization.rb +2 -2
  711. data/lib/puppet/type/mailalias.rb +2 -18
  712. data/lib/puppet/type/maillist.rb +1 -1
  713. data/lib/puppet/type/mount.rb +31 -8
  714. data/lib/puppet/type/notify.rb +3 -1
  715. data/lib/puppet/type/package.rb +37 -17
  716. data/lib/puppet/type/resources.rb +7 -7
  717. data/lib/puppet/type/schedule.rb +14 -14
  718. data/lib/puppet/type/scheduled_task.rb +18 -5
  719. data/lib/puppet/type/service.rb +25 -1
  720. data/lib/puppet/type/ssh_authorized_key.rb +20 -30
  721. data/lib/puppet/type/sshkey.rb +9 -7
  722. data/lib/puppet/type/stage.rb +1 -1
  723. data/lib/puppet/type/tidy.rb +24 -15
  724. data/lib/puppet/type/user.rb +112 -53
  725. data/lib/puppet/type/yumrepo.rb +36 -16
  726. data/lib/puppet/type/zone.rb +13 -13
  727. data/lib/puppet/type/zpool.rb +3 -3
  728. data/lib/puppet/type.rb +175 -47
  729. data/lib/puppet/util/at_fork/noop.rb +18 -0
  730. data/lib/puppet/util/at_fork/solaris.rb +158 -0
  731. data/lib/puppet/util/at_fork.rb +35 -0
  732. data/lib/puppet/util/autoload.rb +18 -13
  733. data/lib/puppet/util/backups.rb +6 -6
  734. data/lib/puppet/util/character_encoding.rb +98 -0
  735. data/lib/puppet/util/checksums.rb +74 -31
  736. data/lib/puppet/util/classgen.rb +5 -5
  737. data/lib/puppet/util/command_line/puppet_option_parser.rb +3 -3
  738. data/lib/puppet/util/command_line/trollop.rb +32 -32
  739. data/lib/puppet/util/command_line.rb +14 -6
  740. data/lib/puppet/util/diff.rb +1 -1
  741. data/lib/puppet/util/errors.rb +4 -4
  742. data/lib/puppet/util/execution.rb +42 -23
  743. data/lib/puppet/util/feature.rb +5 -5
  744. data/lib/puppet/util/fileparsing.rb +8 -8
  745. data/lib/puppet/util/filetype.rb +26 -20
  746. data/lib/puppet/util/http_proxy.rb +132 -0
  747. data/lib/puppet/util/inifile.rb +5 -5
  748. data/lib/puppet/util/instance_loader.rb +2 -2
  749. data/lib/puppet/util/json_lockfile.rb +4 -4
  750. data/lib/puppet/util/ldap/connection.rb +2 -2
  751. data/lib/puppet/util/ldap/manager.rb +2 -2
  752. data/lib/puppet/util/limits.rb +1 -1
  753. data/lib/puppet/util/log/destinations.rb +33 -18
  754. data/lib/puppet/util/log.rb +92 -16
  755. data/lib/puppet/util/logging.rb +88 -6
  756. data/lib/puppet/util/metric.rb +9 -6
  757. data/lib/puppet/util/monkey_patches.rb +41 -65
  758. data/lib/puppet/util/multi_match.rb +51 -0
  759. data/lib/puppet/util/network_device/cisco/device.rb +29 -11
  760. data/lib/puppet/util/network_device/cisco/interface.rb +21 -9
  761. data/lib/puppet/util/network_device/config.rb +7 -7
  762. data/lib/puppet/util/network_device/transport/ssh.rb +13 -9
  763. data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
  764. data/lib/puppet/util/network_device.rb +1 -1
  765. data/lib/puppet/util/plist.rb +153 -0
  766. data/lib/puppet/util/posix.rb +5 -5
  767. data/lib/puppet/util/profiler/aggregate.rb +1 -1
  768. data/lib/puppet/util/profiler/around_profiler.rb +1 -1
  769. data/lib/puppet/util/profiler/wall_clock.rb +1 -1
  770. data/lib/puppet/util/profiler.rb +1 -1
  771. data/lib/puppet/util/provider_features.rb +1 -1
  772. data/lib/puppet/util/psych_support.rb +4 -12
  773. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +3 -3
  774. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
  775. data/lib/puppet/util/rdoc.rb +6 -6
  776. data/lib/puppet/util/reference.rb +9 -7
  777. data/lib/puppet/util/resource_template.rb +2 -2
  778. data/lib/puppet/util/retry_action.rb +2 -2
  779. data/lib/puppet/util/rubygems.rb +1 -1
  780. data/lib/puppet/util/run_mode.rb +3 -16
  781. data/lib/puppet/util/selinux.rb +54 -12
  782. data/lib/puppet/util/skip_tags.rb +9 -0
  783. data/lib/puppet/util/splayer.rb +18 -0
  784. data/lib/puppet/util/storage.rb +5 -5
  785. data/lib/puppet/util/suidmanager.rb +4 -4
  786. data/lib/puppet/util/symbolic_file_mode.rb +9 -9
  787. data/lib/puppet/util/tag_set.rb +1 -4
  788. data/lib/puppet/util/tagging.rb +9 -3
  789. data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
  790. data/lib/puppet/util/windows/access_control_entry.rb +2 -2
  791. data/lib/puppet/util/windows/access_control_list.rb +3 -3
  792. data/lib/puppet/util/windows/adsi.rb +222 -85
  793. data/lib/puppet/util/windows/api_types.rb +28 -19
  794. data/lib/puppet/util/windows/com.rb +7 -7
  795. data/lib/puppet/util/windows/error.rb +3 -3
  796. data/lib/puppet/util/windows/eventlog.rb +192 -0
  797. data/lib/puppet/util/windows/file.rb +115 -22
  798. data/lib/puppet/util/windows/principal.rb +191 -0
  799. data/lib/puppet/util/windows/process.rb +90 -13
  800. data/lib/puppet/util/windows/registry.rb +31 -25
  801. data/lib/puppet/util/windows/root_certs.rb +6 -6
  802. data/lib/puppet/util/windows/security.rb +52 -51
  803. data/lib/puppet/util/windows/security_descriptor.rb +1 -1
  804. data/lib/puppet/util/windows/sid.rb +89 -20
  805. data/lib/puppet/util/windows/taskscheduler.rb +154 -98
  806. data/lib/puppet/util/windows/user.rb +38 -20
  807. data/lib/puppet/util/windows.rb +7 -0
  808. data/lib/puppet/util/yaml.rb +15 -3
  809. data/lib/puppet/util.rb +259 -33
  810. data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
  811. data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
  812. data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
  813. data/lib/puppet/vendor/pathspec/LICENSE +2 -2
  814. data/lib/puppet/vendor/pathspec/README.md +1 -1
  815. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
  816. data/lib/puppet/vendor/require_vendored.rb +0 -1
  817. data/lib/puppet/vendor/semantic/lib/semantic.rb +4 -6
  818. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
  819. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
  820. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/module_release.rb +17 -5
  821. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
  822. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
  823. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
  824. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
  825. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +203 -0
  826. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +758 -0
  827. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +9 -0
  828. data/lib/puppet/vendor/semantic_puppet/locales/config.yaml +21 -0
  829. data/lib/puppet/version.rb +7 -3
  830. data/lib/puppet.rb +104 -6
  831. data/lib/puppet_x.rb +7 -1
  832. data/locales/config.yaml +29 -0
  833. data/locales/puppet.pot +7995 -0
  834. data/man/man5/puppet.conf.5 +61 -41
  835. data/man/man8/puppet-agent.8 +6 -3
  836. data/man/man8/puppet-apply.8 +6 -3
  837. data/man/man8/puppet-ca.8 +3 -3
  838. data/man/man8/puppet-catalog.8 +3 -3
  839. data/man/man8/puppet-cert.8 +3 -3
  840. data/man/man8/puppet-certificate.8 +3 -3
  841. data/man/man8/puppet-certificate_request.8 +3 -3
  842. data/man/man8/puppet-certificate_revocation_list.8 +3 -3
  843. data/man/man8/puppet-config.8 +4 -4
  844. data/man/man8/puppet-describe.8 +2 -2
  845. data/man/man8/puppet-device.8 +7 -4
  846. data/man/man8/puppet-doc.8 +2 -2
  847. data/man/man8/puppet-epp.8 +3 -3
  848. data/man/man8/puppet-facts.8 +3 -3
  849. data/man/man8/puppet-filebucket.8 +3 -3
  850. data/man/man8/puppet-help.8 +3 -3
  851. data/man/man8/puppet-inspect.8 +3 -3
  852. data/man/man8/puppet-key.8 +3 -3
  853. data/man/man8/puppet-man.8 +3 -3
  854. data/man/man8/puppet-master.8 +6 -3
  855. data/man/man8/puppet-module.8 +10 -10
  856. data/man/man8/puppet-node.8 +3 -3
  857. data/man/man8/puppet-parser.8 +3 -3
  858. data/man/man8/puppet-plugin.8 +3 -3
  859. data/man/man8/puppet-report.8 +3 -3
  860. data/man/man8/puppet-resource.8 +3 -3
  861. data/man/man8/puppet-status.8 +4 -4
  862. data/man/man8/puppet.8 +2 -2
  863. data/spec/fixtures/module.tar.gz +0 -0
  864. data/spec/fixtures/unit/application/environments/production/data/common.yaml +22 -0
  865. data/spec/fixtures/unit/application/environments/production/environment.conf +1 -0
  866. data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
  867. data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
  868. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/environment/data.pp +10 -0
  869. data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
  870. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +3 -0
  871. data/spec/fixtures/unit/data_providers/environments/{sample → hiera_bad_syntax_json}/environment.conf +1 -1
  872. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +5 -0
  873. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +5 -0
  874. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +3 -0
  875. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +2 -0
  876. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +5 -0
  877. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +5 -0
  878. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +2 -0
  879. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +2 -0
  880. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +1 -0
  881. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +2 -0
  882. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +5 -0
  883. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +9 -0
  884. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +3 -0
  885. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +2 -0
  886. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +3 -0
  887. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +2 -0
  888. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +3 -0
  889. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +3 -0
  890. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +2 -0
  891. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +2 -0
  892. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +22 -0
  893. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +5 -0
  894. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +48 -0
  895. data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +2 -0
  896. data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +1 -0
  897. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +30 -0
  898. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +13 -0
  899. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +9 -0
  900. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
  901. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
  902. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +2 -0
  903. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
  904. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +1 -0
  905. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +3 -0
  906. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +2 -0
  907. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +3 -0
  908. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server1.yaml +1 -0
  909. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server2.yaml +1 -0
  910. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +2 -0
  911. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +2 -0
  912. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +20 -0
  913. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +5 -0
  914. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +9 -0
  915. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
  916. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
  917. data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
  918. data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
  919. data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
  920. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
  921. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
  922. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
  923. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
  924. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
  925. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
  926. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
  927. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -0
  928. data/spec/fixtures/unit/data_providers/environments/production/lib/puppet/functions/environment/data.rb +3 -1
  929. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +2 -1
  930. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +2 -1
  931. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json +9 -0
  932. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/functions/data.pp +6 -0
  933. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/manifests/init.pp +9 -0
  934. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json +9 -0
  935. data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
  936. data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
  937. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json +9 -0
  938. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
  939. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/manifests/init.pp +2 -0
  940. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json +9 -0
  941. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json +9 -0
  942. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/data/empty.json +0 -0
  943. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/hiera.yaml +5 -0
  944. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/manifests/init.pp +2 -0
  945. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/metadata.json +9 -0
  946. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/data/empty_key.json +1 -0
  947. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/hiera.yaml +5 -0
  948. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/manifests/init.pp +2 -0
  949. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/metadata.json +9 -0
  950. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/data/empty_key.yaml +1 -0
  951. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/hiera.yaml +5 -0
  952. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/manifests/init.pp +2 -0
  953. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/metadata.json +9 -0
  954. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/data/empty.yaml +2 -0
  955. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/hiera.yaml +5 -0
  956. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
  957. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/metadata.json +9 -0
  958. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/data/first.json +4 -0
  959. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/hiera.yaml +8 -0
  960. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/manifests/init.pp +5 -0
  961. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/metadata.json +9 -0
  962. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +9 -0
  963. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/manifests/init.pp +3 -0
  964. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/metadata.json +9 -0
  965. data/spec/fixtures/unit/module/trailing-comma.json +1 -1
  966. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -0
  967. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +3 -0
  968. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
  969. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +5 -0
  970. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
  971. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
  972. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
  973. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
  974. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
  975. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
  976. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
  977. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
  978. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
  979. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
  980. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +87 -0
  981. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
  982. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
  983. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
  984. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcalled.pp +3 -0
  985. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller.pp +3 -0
  986. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller4.pp +3 -0
  987. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/callingpuppet.rb +5 -0
  988. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/functions/hello.pp +3 -0
  989. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/manifests/init.pp +3 -0
  990. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/metadata.json +10 -0
  991. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
  992. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/hello.pp +3 -0
  993. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/subspace/hello.pp +3 -0
  994. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +1 -10
  995. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -0
  996. data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +93 -85
  997. data/spec/fixtures/unit/provider/mount/parsed/aix.mount +11 -7
  998. data/spec/fixtures/unit/provider/package/pkgng/pkg.info +8 -0
  999. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +1 -0
  1000. data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +1 -0
  1001. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +3 -0
  1002. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
  1003. data/spec/fixtures/unit/provider/package/yum/yum-check-update-obsoletes.txt +195 -0
  1004. data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +184 -0
  1005. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-empty.out +3 -0
  1006. data/spec/fixtures/unit/provider/service/smf/svcs.out +4 -3
  1007. data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
  1008. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +24 -0
  1009. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +24 -0
  1010. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +24 -0
  1011. 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
  1012. 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
  1013. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
  1014. 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
  1015. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
  1016. 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
  1017. 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
  1018. data/spec/integration/agent/logging_spec.rb +15 -14
  1019. data/spec/integration/application/apply_spec.rb +442 -32
  1020. data/spec/integration/application/doc_spec.rb +0 -0
  1021. data/spec/integration/application/lookup_spec.rb +155 -0
  1022. data/spec/integration/configurer_spec.rb +1 -1
  1023. data/spec/integration/data_binding_spec.rb +195 -0
  1024. data/spec/integration/defaults_spec.rb +29 -4
  1025. data/spec/integration/directory_environments_spec.rb +16 -0
  1026. data/spec/integration/environments/default_manifest_spec.rb +16 -16
  1027. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  1028. data/spec/integration/environments/settings_spec.rb +32 -4
  1029. data/spec/integration/faces/ca_spec.rb +0 -0
  1030. data/spec/integration/faces/config_spec.rb +80 -0
  1031. data/spec/integration/faces/documentation_spec.rb +2 -2
  1032. data/spec/integration/faces/plugin_spec.rb +0 -4
  1033. data/spec/integration/file_bucket/file_spec.rb +2 -2
  1034. data/spec/integration/file_serving/fileset_spec.rb +0 -0
  1035. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -0
  1036. data/spec/integration/file_system/uniquefile_spec.rb +29 -0
  1037. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -0
  1038. data/spec/integration/indirector/direct_file_server_spec.rb +0 -0
  1039. data/spec/integration/indirector/facts/facter_spec.rb +97 -0
  1040. data/spec/integration/indirector/file_content/file_server_spec.rb +1 -0
  1041. data/spec/integration/indirector/file_metadata/file_server_spec.rb +1 -0
  1042. data/spec/integration/indirector/node/ldap_spec.rb +0 -0
  1043. data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
  1044. data/spec/integration/network/formats_spec.rb +0 -0
  1045. data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
  1046. data/spec/integration/node/environment_spec.rb +34 -0
  1047. data/spec/integration/node/facts_spec.rb +0 -0
  1048. data/spec/integration/node_spec.rb +0 -0
  1049. data/spec/integration/parser/catalog_spec.rb +15 -3
  1050. data/spec/integration/parser/class_spec.rb +6 -6
  1051. data/spec/integration/parser/collection_spec.rb +18 -0
  1052. data/spec/integration/parser/compiler_spec.rb +911 -658
  1053. data/spec/integration/parser/dynamic_scoping_spec.rb +66 -0
  1054. data/spec/integration/parser/parameter_defaults_spec.rb +358 -0
  1055. data/spec/integration/parser/pcore_resource_spec.rb +260 -0
  1056. data/spec/integration/parser/resource_expressions_spec.rb +10 -5
  1057. data/spec/integration/parser/scope_spec.rb +99 -11
  1058. data/spec/integration/parser/undef_param_spec.rb +9 -1
  1059. data/spec/integration/provider/mailalias/aliases_spec.rb +0 -0
  1060. data/spec/integration/provider/mount_spec.rb +23 -36
  1061. data/spec/integration/provider/service/init_spec.rb +0 -0
  1062. data/spec/integration/provider/service/windows_spec.rb +3 -2
  1063. data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -0
  1064. data/spec/integration/provider/yumrepo_spec.rb +4 -1
  1065. data/spec/integration/reference/providers_spec.rb +0 -0
  1066. data/spec/integration/reports_spec.rb +0 -0
  1067. data/spec/integration/resource/catalog_spec.rb +1 -5
  1068. data/spec/integration/resource/type_collection_spec.rb +14 -0
  1069. data/spec/integration/ssl/autosign_spec.rb +18 -3
  1070. data/spec/integration/ssl/certificate_authority_spec.rb +0 -1
  1071. data/spec/integration/ssl/certificate_request_spec.rb +0 -1
  1072. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -1
  1073. data/spec/integration/ssl/host_spec.rb +0 -1
  1074. data/spec/integration/ssl/key_spec.rb +104 -0
  1075. data/spec/integration/test/test_helper_spec.rb +32 -0
  1076. data/spec/integration/transaction/report_spec.rb +683 -1
  1077. data/spec/integration/transaction_spec.rb +128 -4
  1078. data/spec/integration/type/exec_spec.rb +0 -0
  1079. data/spec/integration/type/file_spec.rb +582 -51
  1080. data/spec/integration/type/package_spec.rb +79 -2
  1081. data/spec/integration/type/tidy_spec.rb +21 -9
  1082. data/spec/integration/type/user_spec.rb +13 -6
  1083. data/spec/integration/type_spec.rb +0 -0
  1084. data/spec/integration/util/autoload_spec.rb +0 -0
  1085. data/spec/integration/util/execution_spec.rb +30 -0
  1086. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  1087. data/spec/integration/util/settings_spec.rb +26 -0
  1088. data/spec/integration/util/windows/adsi_spec.rb +99 -0
  1089. data/spec/integration/util/windows/principal_spec.rb +250 -0
  1090. data/spec/integration/util/windows/process_spec.rb +35 -2
  1091. data/spec/{unit → integration}/util/windows/registry_spec.rb +92 -2
  1092. data/spec/integration/util/windows/security_spec.rb +75 -21
  1093. data/spec/integration/util/windows/user_spec.rb +27 -5
  1094. data/spec/integration/util_spec.rb +49 -27
  1095. data/spec/lib/matchers/include_in_order.rb +2 -3
  1096. data/spec/lib/matchers/json.rb +3 -3
  1097. data/spec/lib/matchers/resource.rb +22 -1
  1098. data/spec/lib/puppet/face/1.0.0/huzzah.rb +1 -1
  1099. data/spec/lib/puppet/face/basetest.rb +1 -1
  1100. data/spec/lib/puppet/face/huzzah.rb +1 -1
  1101. data/spec/lib/puppet/face/version_matching.rb +1 -1
  1102. data/spec/lib/puppet/indirector_testing.rb +4 -0
  1103. data/spec/lib/puppet_spec/character_encoding.rb +12 -0
  1104. data/spec/lib/puppet_spec/compiler.rb +40 -4
  1105. data/spec/lib/puppet_spec/files.rb +16 -2
  1106. data/spec/lib/puppet_spec/fixtures.rb +0 -0
  1107. data/spec/lib/puppet_spec/language.rb +3 -1
  1108. data/spec/lib/puppet_spec/matchers.rb +6 -4
  1109. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
  1110. data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
  1111. data/spec/lib/puppet_spec/modules.rb +2 -2
  1112. data/spec/lib/puppet_spec/network.rb +22 -14
  1113. data/spec/lib/puppet_spec/pops.rb +13 -0
  1114. data/spec/lib/puppet_spec/unindent.rb +5 -0
  1115. data/spec/lib/puppet_spec/verbose.rb +0 -0
  1116. data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -0
  1117. data/spec/shared_behaviours/file_server_terminus.rb +0 -0
  1118. data/spec/shared_behaviours/file_serving.rb +0 -0
  1119. data/spec/shared_behaviours/iterative_functions.rb +9 -9
  1120. data/spec/shared_behaviours/memory_terminus.rb +0 -0
  1121. data/spec/shared_behaviours/path_parameters.rb +0 -0
  1122. data/spec/shared_behaviours/things_that_declare_options.rb +0 -0
  1123. data/spec/shared_contexts/types_setup.rb +143 -0
  1124. data/spec/shared_examples/rhel_package_provider.rb +356 -0
  1125. data/spec/spec_helper.rb +23 -13
  1126. data/spec/unit/agent/locker_spec.rb +4 -4
  1127. data/spec/unit/agent_spec.rb +23 -46
  1128. data/spec/unit/application/agent_spec.rb +22 -0
  1129. data/spec/unit/application/apply_spec.rb +59 -14
  1130. data/spec/unit/application/cert_spec.rb +20 -0
  1131. data/spec/unit/application/certificate_spec.rb +0 -0
  1132. data/spec/unit/application/config_spec.rb +0 -0
  1133. data/spec/unit/application/describe_spec.rb +19 -0
  1134. data/spec/unit/application/device_spec.rb +41 -2
  1135. data/spec/unit/application/doc_spec.rb +0 -0
  1136. data/spec/unit/application/face_base_spec.rb +22 -6
  1137. data/spec/unit/application/facts_spec.rb +0 -0
  1138. data/spec/unit/application/filebucket_spec.rb +88 -2
  1139. data/spec/unit/application/indirection_base_spec.rb +0 -0
  1140. data/spec/unit/application/lookup_spec.rb +532 -0
  1141. data/spec/unit/application/master_spec.rb +53 -11
  1142. data/spec/unit/application/resource_spec.rb +39 -1
  1143. data/spec/unit/application_spec.rb +3 -9
  1144. data/spec/unit/capability_spec.rb +412 -0
  1145. data/spec/unit/configurer/downloader_factory_spec.rb +0 -0
  1146. data/spec/unit/configurer/downloader_spec.rb +5 -5
  1147. data/spec/unit/configurer/fact_handler_spec.rb +76 -20
  1148. data/spec/unit/configurer/plugin_handler_spec.rb +5 -8
  1149. data/spec/unit/configurer_spec.rb +372 -58
  1150. data/spec/unit/confine/exists_spec.rb +0 -0
  1151. data/spec/unit/confine/false_spec.rb +0 -0
  1152. data/spec/unit/confine/feature_spec.rb +0 -0
  1153. data/spec/unit/confine/true_spec.rb +0 -0
  1154. data/spec/unit/confine/variable_spec.rb +0 -0
  1155. data/spec/unit/confine_collection_spec.rb +0 -0
  1156. data/spec/unit/confine_spec.rb +0 -0
  1157. data/spec/unit/confiner_spec.rb +0 -0
  1158. data/spec/unit/context/trusted_information_spec.rb +24 -1
  1159. data/spec/unit/daemon_spec.rb +18 -8
  1160. data/spec/unit/data_providers/function_data_provider_spec.rb +30 -3
  1161. data/spec/unit/data_providers/hiera_data_provider_spec.rb +361 -0
  1162. data/spec/unit/defaults_spec.rb +34 -17
  1163. data/spec/unit/environments_spec.rb +26 -4
  1164. data/spec/unit/etc_spec.rb +442 -0
  1165. data/spec/unit/external/pson_spec.rb +0 -0
  1166. data/spec/unit/face/ca_spec.rb +10 -0
  1167. data/spec/unit/face/catalog_spec.rb +0 -0
  1168. data/spec/unit/face/certificate_request_spec.rb +10 -0
  1169. data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
  1170. data/spec/unit/face/certificate_spec.rb +10 -2
  1171. data/spec/unit/face/config_spec.rb +47 -0
  1172. data/spec/unit/face/epp_face_spec.rb +24 -5
  1173. data/spec/unit/face/facts_spec.rb +0 -0
  1174. data/spec/unit/face/generate_spec.rb +230 -0
  1175. data/spec/unit/face/help_spec.rb +70 -0
  1176. data/spec/unit/face/key_spec.rb +10 -0
  1177. data/spec/unit/face/module/list_spec.rb +60 -0
  1178. data/spec/unit/face/module/search_spec.rb +1 -1
  1179. data/spec/unit/face/node_spec.rb +1 -1
  1180. data/spec/unit/face/parser_spec.rb +49 -2
  1181. data/spec/unit/face/plugin_spec.rb +29 -4
  1182. data/spec/unit/face/status_spec.rb +10 -0
  1183. data/spec/unit/face_spec.rb +0 -0
  1184. data/spec/unit/file_bucket/dipper_spec.rb +210 -1
  1185. data/spec/unit/file_bucket/file_spec.rb +3 -3
  1186. data/spec/unit/file_serving/base_spec.rb +0 -0
  1187. data/spec/unit/file_serving/configuration/parser_spec.rb +25 -30
  1188. data/spec/unit/file_serving/configuration_spec.rb +1 -1
  1189. data/spec/unit/file_serving/content_spec.rb +0 -0
  1190. data/spec/unit/file_serving/fileset_spec.rb +0 -0
  1191. data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
  1192. data/spec/unit/file_serving/metadata_spec.rb +85 -9
  1193. data/spec/unit/file_serving/mount/file_spec.rb +0 -0
  1194. data/spec/unit/file_serving/mount/modules_spec.rb +0 -0
  1195. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -0
  1196. data/spec/unit/file_serving/mount/plugins_spec.rb +0 -0
  1197. data/spec/unit/file_serving/mount_spec.rb +0 -0
  1198. data/spec/unit/file_serving/terminus_helper_spec.rb +2 -3
  1199. data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
  1200. data/spec/unit/file_system/uniquefile_spec.rb +20 -0
  1201. data/spec/unit/file_system_spec.rb +373 -6
  1202. data/spec/unit/forge/forge_spec.rb +112 -0
  1203. data/spec/unit/forge/repository_spec.rb +31 -4
  1204. data/spec/unit/functions/annotate_spec.rb +175 -0
  1205. data/spec/unit/functions/assert_type_spec.rb +48 -8
  1206. data/spec/unit/functions/binary_file_spec.rb +46 -0
  1207. data/spec/unit/functions/break_spec.rb +117 -0
  1208. data/spec/unit/functions/call_spec.rb +77 -0
  1209. data/spec/unit/{parser/functions → functions}/contain_spec.rb +69 -4
  1210. data/spec/unit/functions/defined_spec.rb +289 -0
  1211. data/spec/unit/functions/dig_spec.rb +58 -0
  1212. data/spec/unit/functions/epp_spec.rb +17 -9
  1213. data/spec/unit/functions/filter_spec.rb +18 -0
  1214. data/spec/unit/functions/find_file_spec.rb +69 -0
  1215. data/spec/unit/functions/hiera_spec.rb +451 -49
  1216. data/spec/unit/functions/include_spec.rb +175 -0
  1217. data/spec/unit/functions/inline_epp_spec.rb +4 -4
  1218. data/spec/unit/functions/lest_spec.rb +34 -0
  1219. data/spec/unit/functions/logging_spec.rb +54 -0
  1220. data/spec/unit/functions/lookup_fixture_spec.rb +688 -0
  1221. data/spec/unit/functions/lookup_spec.rb +3108 -264
  1222. data/spec/unit/functions/match_spec.rb +2 -2
  1223. data/spec/unit/functions/new_spec.rb +694 -0
  1224. data/spec/unit/functions/next_spec.rb +93 -0
  1225. data/spec/unit/functions/regsubst_spec.rb +30 -9
  1226. data/spec/unit/functions/require_spec.rb +83 -0
  1227. data/spec/unit/functions/return_spec.rb +105 -0
  1228. data/spec/unit/functions/reverse_each_spec.rb +108 -0
  1229. data/spec/unit/functions/scanf_spec.rb +1 -1
  1230. data/spec/unit/{parser/functions → functions}/shared.rb +15 -12
  1231. data/spec/unit/functions/split_spec.rb +11 -3
  1232. data/spec/unit/functions/step_spec.rb +113 -0
  1233. data/spec/unit/functions/strftime_spec.rb +152 -0
  1234. data/spec/unit/functions/then_spec.rb +40 -0
  1235. data/spec/unit/functions/type_spec.rb +35 -0
  1236. data/spec/unit/functions/unique_spec.rb +111 -0
  1237. data/spec/unit/functions/unwrap_spec.rb +29 -0
  1238. data/spec/unit/functions/versioncmp_spec.rb +36 -0
  1239. data/spec/unit/functions4_spec.rb +352 -107
  1240. data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
  1241. data/spec/unit/graph/relationship_graph_spec.rb +0 -0
  1242. data/spec/unit/graph/sequential_prioritizer_spec.rb +1 -1
  1243. data/spec/unit/graph/simple_graph_spec.rb +59 -56
  1244. data/spec/unit/hiera/scope_spec.rb +6 -3
  1245. data/spec/unit/hiera_puppet_spec.rb +49 -8
  1246. data/spec/unit/indirector/catalog/compiler_spec.rb +887 -83
  1247. data/spec/unit/indirector/catalog/json_spec.rb +50 -1
  1248. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -0
  1249. data/spec/unit/indirector/catalog/rest_spec.rb +0 -0
  1250. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -0
  1251. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -0
  1252. data/spec/unit/indirector/certificate/ca_spec.rb +0 -0
  1253. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -0
  1254. data/spec/unit/indirector/certificate/file_spec.rb +0 -0
  1255. data/spec/unit/indirector/certificate/rest_spec.rb +0 -0
  1256. data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -0
  1257. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -0
  1258. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -0
  1259. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -0
  1260. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -0
  1261. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -0
  1262. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -0
  1263. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -0
  1264. data/spec/unit/indirector/certificate_status/file_spec.rb +0 -0
  1265. data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -0
  1266. data/spec/unit/indirector/code_spec.rb +0 -0
  1267. data/spec/unit/indirector/data_binding/none_spec.rb +2 -2
  1268. data/spec/unit/indirector/direct_file_server_spec.rb +0 -0
  1269. data/spec/unit/indirector/envelope_spec.rb +0 -0
  1270. data/spec/unit/indirector/exec_spec.rb +0 -0
  1271. data/spec/unit/indirector/face_spec.rb +10 -2
  1272. data/spec/unit/indirector/facts/facter_spec.rb +6 -7
  1273. data/spec/unit/indirector/facts/network_device_spec.rb +0 -0
  1274. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -0
  1275. data/spec/unit/indirector/facts/yaml_spec.rb +0 -0
  1276. data/spec/unit/indirector/file_bucket_file/file_spec.rb +86 -4
  1277. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -0
  1278. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -0
  1279. data/spec/unit/indirector/file_content/file_spec.rb +0 -0
  1280. data/spec/unit/indirector/file_content/rest_spec.rb +0 -0
  1281. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -0
  1282. data/spec/unit/indirector/file_metadata/file_spec.rb +0 -0
  1283. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -0
  1284. data/spec/unit/indirector/file_server_spec.rb +17 -2
  1285. data/spec/unit/indirector/indirection_spec.rb +14 -38
  1286. data/spec/unit/indirector/json_spec.rb +27 -6
  1287. data/spec/unit/indirector/key/ca_spec.rb +0 -0
  1288. data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -0
  1289. data/spec/unit/indirector/key/file_spec.rb +1 -1
  1290. data/spec/unit/indirector/ldap_spec.rb +0 -0
  1291. data/spec/unit/indirector/memory_spec.rb +0 -0
  1292. data/spec/unit/indirector/msgpack_spec.rb +11 -1
  1293. data/spec/unit/indirector/node/exec_spec.rb +12 -12
  1294. data/spec/unit/indirector/node/ldap_spec.rb +29 -8
  1295. data/spec/unit/indirector/node/memory_spec.rb +0 -0
  1296. data/spec/unit/indirector/node/msgpack_spec.rb +0 -0
  1297. data/spec/unit/indirector/node/plain_spec.rb +16 -6
  1298. data/spec/unit/indirector/node/rest_spec.rb +0 -0
  1299. data/spec/unit/indirector/node/store_configs_spec.rb +0 -0
  1300. data/spec/unit/indirector/node/write_only_yaml_spec.rb +12 -0
  1301. data/spec/unit/indirector/node/yaml_spec.rb +0 -0
  1302. data/spec/unit/indirector/plain_spec.rb +0 -0
  1303. data/spec/unit/indirector/report/msgpack_spec.rb +0 -0
  1304. data/spec/unit/indirector/report/processor_spec.rb +2 -2
  1305. data/spec/unit/indirector/report/rest_spec.rb +29 -3
  1306. data/spec/unit/indirector/report/yaml_spec.rb +0 -0
  1307. data/spec/unit/indirector/request_spec.rb +32 -12
  1308. data/spec/unit/indirector/resource/ral_spec.rb +0 -0
  1309. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -0
  1310. data/spec/unit/indirector/rest_spec.rb +158 -18
  1311. data/spec/unit/indirector/ssl_file_spec.rb +4 -4
  1312. data/spec/unit/indirector/status/rest_spec.rb +0 -0
  1313. data/spec/unit/indirector/store_configs_spec.rb +0 -0
  1314. data/spec/unit/indirector/terminus_spec.rb +0 -0
  1315. data/spec/unit/indirector/yaml_spec.rb +1 -1
  1316. data/spec/unit/indirector_spec.rb +0 -0
  1317. data/spec/unit/info_service_spec.rb +298 -0
  1318. data/spec/unit/interface/action_builder_spec.rb +0 -0
  1319. data/spec/unit/interface/action_manager_spec.rb +0 -0
  1320. data/spec/unit/interface/action_spec.rb +0 -0
  1321. data/spec/unit/interface/documentation_spec.rb +0 -0
  1322. data/spec/unit/interface/face_collection_spec.rb +7 -7
  1323. data/spec/unit/interface/option_builder_spec.rb +0 -0
  1324. data/spec/unit/interface/option_spec.rb +0 -0
  1325. data/spec/unit/interface_spec.rb +27 -0
  1326. data/spec/unit/man_spec.rb +1 -1
  1327. data/spec/unit/module_spec.rb +126 -74
  1328. data/spec/unit/module_tool/application_spec.rb +1 -1
  1329. data/spec/unit/module_tool/applications/builder_spec.rb +44 -9
  1330. data/spec/unit/module_tool/applications/installer_spec.rb +11 -3
  1331. data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
  1332. data/spec/unit/module_tool/applications/upgrader_spec.rb +9 -2
  1333. data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
  1334. data/spec/unit/module_tool/metadata_spec.rb +31 -2
  1335. data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
  1336. data/spec/unit/module_tool/tar_spec.rb +16 -10
  1337. data/spec/unit/module_tool_spec.rb +3 -3
  1338. data/spec/unit/network/auth_config_parser_spec.rb +16 -0
  1339. data/spec/unit/network/authconfig_spec.rb +62 -32
  1340. data/spec/unit/network/authorization_spec.rb +30 -2
  1341. data/spec/unit/network/authstore_spec.rb +2 -2
  1342. data/spec/unit/network/format_handler_spec.rb +11 -11
  1343. data/spec/unit/network/format_spec.rb +9 -0
  1344. data/spec/unit/network/formats_spec.rb +322 -138
  1345. data/spec/unit/network/http/api/indirected_routes_spec.rb +125 -116
  1346. data/spec/unit/network/http/api/master/v3/environment_spec.rb +186 -0
  1347. data/spec/unit/network/http/api/master/v3_spec.rb +23 -5
  1348. data/spec/unit/network/http/api_spec.rb +1 -1
  1349. data/spec/unit/network/http/compression_spec.rb +132 -84
  1350. data/spec/unit/network/http/connection_spec.rb +25 -19
  1351. data/spec/unit/network/http/error_spec.rb +1 -1
  1352. data/spec/unit/network/http/factory_spec.rb +18 -0
  1353. data/spec/unit/network/http/handler_spec.rb +17 -18
  1354. data/spec/unit/network/http/nocache_pool_spec.rb +0 -0
  1355. data/spec/unit/network/http/pool_spec.rb +30 -0
  1356. data/spec/unit/network/http/rack/rest_spec.rb +9 -2
  1357. data/spec/unit/network/http/rack_spec.rb +0 -0
  1358. data/spec/unit/network/http/request_spec.rb +110 -0
  1359. data/spec/unit/network/http/response_spec.rb +108 -0
  1360. data/spec/unit/network/http/session_spec.rb +0 -0
  1361. data/spec/unit/network/http/site_spec.rb +0 -0
  1362. data/spec/unit/network/http/webrick/rest_spec.rb +0 -0
  1363. data/spec/unit/network/http/webrick_spec.rb +1 -1
  1364. data/spec/unit/network/http_pool_spec.rb +0 -0
  1365. data/spec/unit/network/http_spec.rb +0 -0
  1366. data/spec/unit/network/resolver_spec.rb +0 -0
  1367. data/spec/unit/network/rights_spec.rb +4 -4
  1368. data/spec/unit/network/server_spec.rb +0 -0
  1369. data/spec/unit/node/environment_spec.rb +10 -0
  1370. data/spec/unit/node/facts_spec.rb +13 -13
  1371. data/spec/unit/node_spec.rb +74 -10
  1372. data/spec/unit/other/selinux_spec.rb +0 -0
  1373. data/spec/unit/parameter/path_spec.rb +0 -0
  1374. data/spec/unit/parameter/value_collection_spec.rb +0 -0
  1375. data/spec/unit/parameter/value_spec.rb +0 -0
  1376. data/spec/unit/parameter_spec.rb +84 -5
  1377. data/spec/unit/parser/ast/leaf_spec.rb +1 -1
  1378. data/spec/unit/parser/compiler_spec.rb +135 -34
  1379. data/spec/unit/parser/environment_compiler_spec.rb +686 -0
  1380. data/spec/unit/parser/files_spec.rb +0 -0
  1381. data/spec/unit/parser/functions/create_resources_spec.rb +132 -10
  1382. data/spec/unit/parser/functions/digest_spec.rb +0 -0
  1383. data/spec/unit/parser/functions/fail_spec.rb +0 -0
  1384. data/spec/unit/parser/functions/file_spec.rb +7 -1
  1385. data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -2
  1386. data/spec/unit/parser/functions/generate_spec.rb +3 -12
  1387. data/spec/unit/parser/functions/hiera_array_spec.rb +1 -1
  1388. data/spec/unit/parser/functions/hiera_hash_spec.rb +1 -1
  1389. data/spec/unit/parser/functions/hiera_include_spec.rb +1 -1
  1390. data/spec/unit/parser/functions/hiera_spec.rb +1 -1
  1391. data/spec/unit/parser/functions/inline_template_spec.rb +0 -0
  1392. data/spec/unit/parser/functions/lookup_spec.rb +1 -1
  1393. data/spec/unit/parser/functions/realize_spec.rb +0 -0
  1394. data/spec/unit/parser/functions/regsubst_spec.rb +1 -1
  1395. data/spec/unit/parser/functions/scanf_spec.rb +0 -0
  1396. data/spec/unit/parser/functions/shellquote_spec.rb +0 -0
  1397. data/spec/unit/parser/functions/split_spec.rb +1 -1
  1398. data/spec/unit/parser/functions/sprintf_spec.rb +0 -0
  1399. data/spec/unit/parser/functions/tag_spec.rb +0 -0
  1400. data/spec/unit/parser/functions/template_spec.rb +1 -1
  1401. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -0
  1402. data/spec/unit/parser/functions_spec.rb +0 -0
  1403. data/spec/unit/parser/relationship_spec.rb +0 -0
  1404. data/spec/unit/parser/resource/param_spec.rb +0 -0
  1405. data/spec/unit/parser/resource_spec.rb +115 -54
  1406. data/spec/unit/parser/scope_spec.rb +84 -86
  1407. data/spec/unit/parser/templatewrapper_spec.rb +1 -1
  1408. data/spec/unit/parser/type_loader_spec.rb +0 -0
  1409. data/spec/unit/pops/benchmark_spec.rb +8 -26
  1410. data/spec/unit/pops/containment_spec.rb +0 -26
  1411. data/spec/unit/pops/evaluator/access_ops_spec.rb +214 -99
  1412. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +223 -0
  1413. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +5 -6
  1414. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +29 -26
  1415. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +218 -47
  1416. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +29 -25
  1417. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
  1418. data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +43 -0
  1419. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +168 -0
  1420. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +10 -10
  1421. data/spec/unit/pops/evaluator/variables_spec.rb +2 -2
  1422. data/spec/unit/pops/factory_rspec_helper.rb +0 -4
  1423. data/spec/unit/pops/factory_spec.rb +83 -83
  1424. data/spec/unit/pops/issues_spec.rb +16 -16
  1425. data/spec/unit/pops/label_provider_spec.rb +5 -1
  1426. data/spec/unit/pops/loaders/dependency_loader_spec.rb +66 -1
  1427. data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
  1428. data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
  1429. data/spec/unit/pops/loaders/loaders_spec.rb +541 -57
  1430. data/spec/unit/pops/loaders/module_loaders_spec.rb +63 -2
  1431. data/spec/unit/pops/loaders/static_loader_spec.rb +80 -19
  1432. data/spec/unit/pops/lookup/context_spec.rb +334 -0
  1433. data/spec/unit/pops/lookup/interpolation_spec.rb +373 -0
  1434. data/spec/unit/pops/lookup/lookup_spec.rb +294 -0
  1435. data/spec/unit/pops/merge_strategy_spec.rb +18 -0
  1436. data/spec/unit/pops/migration_spec.rb +53 -0
  1437. data/spec/unit/pops/model/model_spec.rb +10 -10
  1438. data/spec/unit/pops/parser/epp_parser_spec.rb +1 -1
  1439. data/spec/unit/pops/parser/lexer2_spec.rb +380 -10
  1440. data/spec/unit/pops/parser/locator_spec.rb +24 -0
  1441. data/spec/unit/pops/parser/parse_application_spec.rb +32 -0
  1442. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +35 -4
  1443. data/spec/unit/pops/parser/parse_calls_spec.rb +25 -0
  1444. data/spec/unit/pops/parser/parse_capabilities_spec.rb +37 -0
  1445. data/spec/unit/pops/parser/parse_containers_spec.rb +17 -19
  1446. data/spec/unit/pops/parser/parse_functions_spec.rb +19 -0
  1447. data/spec/unit/pops/parser/parse_heredoc_spec.rb +26 -0
  1448. data/spec/unit/pops/parser/parse_lambda_spec.rb +19 -0
  1449. data/spec/unit/pops/parser/parse_site_spec.rb +48 -0
  1450. data/spec/unit/pops/parser/parser_rspec_helper.rb +6 -0
  1451. data/spec/unit/pops/parser/parser_spec.rb +32 -6
  1452. data/spec/unit/pops/puppet_stack_spec.rb +79 -0
  1453. data/spec/unit/pops/resource/resource_type_impl_spec.rb +109 -0
  1454. data/spec/unit/pops/serialization/packer_spec.rb +154 -0
  1455. data/spec/unit/pops/serialization/serialization_spec.rb +426 -0
  1456. data/spec/unit/pops/serialization/to_from_hr_spec.rb +494 -0
  1457. data/spec/unit/pops/time/timespan_spec.rb +121 -0
  1458. data/spec/unit/pops/time/timestamp_spec.rb +13 -0
  1459. data/spec/unit/pops/types/enumeration_spec.rb +13 -12
  1460. data/spec/unit/pops/types/iterable_spec.rb +262 -0
  1461. data/spec/unit/pops/types/p_binary_type_spec.rb +243 -0
  1462. data/spec/unit/pops/types/p_object_type_spec.rb +1253 -0
  1463. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +322 -0
  1464. data/spec/unit/pops/types/p_sensitive_type_spec.rb +169 -0
  1465. data/spec/unit/pops/types/p_timespan_type_spec.rb +273 -0
  1466. data/spec/unit/pops/types/p_timestamp_type_spec.rb +311 -0
  1467. data/spec/unit/pops/types/p_type_set_type_spec.rb +445 -0
  1468. data/spec/unit/pops/types/recursion_guard_spec.rb +93 -0
  1469. data/spec/unit/pops/types/ruby_generator_spec.rb +662 -0
  1470. data/spec/unit/pops/types/string_converter_spec.rb +1132 -0
  1471. data/spec/unit/pops/types/type_acceptor_spec.rb +106 -0
  1472. data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
  1473. data/spec/unit/pops/types/type_calculator_spec.rb +1249 -901
  1474. data/spec/unit/pops/types/type_factory_spec.rb +137 -96
  1475. data/spec/unit/pops/types/type_formatter_spec.rb +409 -0
  1476. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +228 -0
  1477. data/spec/unit/pops/types/type_parser_spec.rb +207 -40
  1478. data/spec/unit/pops/types/types_spec.rb +650 -0
  1479. data/spec/unit/pops/validation_spec.rb +66 -0
  1480. data/spec/unit/pops/validator/validator_spec.rb +395 -21
  1481. data/spec/unit/pops/visitor_spec.rb +1 -1
  1482. data/spec/unit/property/ensure_spec.rb +0 -0
  1483. data/spec/unit/property/keyvalue_spec.rb +0 -0
  1484. data/spec/unit/property/list_spec.rb +2 -2
  1485. data/spec/unit/property/ordered_list_spec.rb +0 -0
  1486. data/spec/unit/property_spec.rb +49 -12
  1487. data/spec/unit/provider/augeas/augeas_spec.rb +60 -1
  1488. data/spec/unit/provider/cisco_spec.rb +0 -0
  1489. data/spec/unit/provider/command_spec.rb +0 -0
  1490. data/spec/unit/provider/cron/crontab_spec.rb +0 -0
  1491. data/spec/unit/provider/cron/parsed_spec.rb +1 -0
  1492. data/spec/unit/provider/exec/posix_spec.rb +0 -0
  1493. data/spec/unit/provider/exec/shell_spec.rb +0 -0
  1494. data/spec/unit/provider/exec/windows_spec.rb +0 -0
  1495. data/spec/unit/provider/exec_spec.rb +0 -0
  1496. data/spec/unit/provider/file/posix_spec.rb +0 -0
  1497. data/spec/unit/provider/file/windows_spec.rb +0 -0
  1498. data/spec/unit/provider/group/directoryservice_spec.rb +33 -0
  1499. data/spec/unit/provider/group/groupadd_spec.rb +0 -0
  1500. data/spec/unit/provider/group/ldap_spec.rb +0 -0
  1501. data/spec/unit/provider/group/pw_spec.rb +0 -0
  1502. data/spec/unit/provider/group/windows_adsi_spec.rb +88 -18
  1503. data/spec/unit/provider/host/parsed_spec.rb +0 -0
  1504. data/spec/unit/provider/interface/cisco_spec.rb +0 -0
  1505. data/spec/unit/provider/ldap_spec.rb +0 -0
  1506. data/spec/unit/provider/macauthorization_spec.rb +5 -2
  1507. data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -0
  1508. data/spec/unit/provider/mount/parsed_spec.rb +31 -5
  1509. data/spec/unit/provider/mount_spec.rb +0 -0
  1510. data/spec/unit/provider/naginator_spec.rb +0 -0
  1511. data/spec/unit/provider/nameservice/directoryservice_spec.rb +16 -19
  1512. data/spec/unit/provider/nameservice_spec.rb +167 -15
  1513. data/spec/unit/provider/network_device_spec.rb +0 -0
  1514. data/spec/unit/provider/package/aix_spec.rb +0 -0
  1515. data/spec/unit/provider/package/appdmg_spec.rb +3 -3
  1516. data/spec/unit/provider/package/apt_spec.rb +5 -0
  1517. data/spec/unit/provider/package/aptitude_spec.rb +0 -0
  1518. data/spec/unit/provider/package/aptrpm_spec.rb +3 -3
  1519. data/spec/unit/provider/package/base_spec.rb +18 -0
  1520. data/spec/unit/provider/package/dnf_spec.rb +30 -0
  1521. data/spec/unit/provider/package/dpkg_spec.rb +0 -0
  1522. data/spec/unit/provider/package/freebsd_spec.rb +0 -0
  1523. data/spec/unit/provider/package/gem_spec.rb +77 -0
  1524. data/spec/unit/provider/package/hpux_spec.rb +0 -0
  1525. data/spec/unit/provider/package/macports_spec.rb +0 -0
  1526. data/spec/unit/provider/package/nim_spec.rb +6 -6
  1527. data/spec/unit/provider/package/openbsd_spec.rb +0 -0
  1528. data/spec/unit/provider/package/opkg_spec.rb +0 -0
  1529. data/spec/unit/provider/package/pacman_spec.rb +55 -0
  1530. data/spec/unit/provider/package/pip3_spec.rb +22 -0
  1531. data/spec/unit/provider/package/pip_spec.rb +173 -46
  1532. data/spec/unit/provider/package/pkg_spec.rb +139 -99
  1533. data/spec/unit/provider/package/pkgdmg_spec.rb +32 -8
  1534. data/spec/unit/provider/package/pkgin_spec.rb +23 -13
  1535. data/spec/unit/provider/package/pkgng_spec.rb +186 -0
  1536. data/spec/unit/provider/package/pkgutil_spec.rb +0 -0
  1537. data/spec/unit/provider/package/portage_spec.rb +150 -8
  1538. data/spec/unit/provider/package/puppet_gem_spec.rb +0 -0
  1539. data/spec/unit/provider/package/rpm_spec.rb +183 -12
  1540. data/spec/unit/provider/package/sun_spec.rb +0 -0
  1541. data/spec/unit/provider/package/tdnf_spec.rb +18 -0
  1542. data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -1
  1543. data/spec/unit/provider/package/windows/msi_package_spec.rb +0 -1
  1544. data/spec/unit/provider/package/windows/package_spec.rb +45 -1
  1545. data/spec/unit/provider/package/windows_spec.rb +8 -2
  1546. data/spec/unit/provider/package/yum_spec.rb +29 -466
  1547. data/spec/unit/provider/package/zypper_spec.rb +64 -19
  1548. data/spec/unit/provider/parsedfile_spec.rb +0 -0
  1549. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +523 -70
  1550. data/spec/unit/provider/selboolean_spec.rb +0 -0
  1551. data/spec/unit/provider/selmodule_spec.rb +0 -0
  1552. data/spec/unit/provider/service/base_spec.rb +44 -27
  1553. data/spec/unit/provider/service/bsd_spec.rb +130 -0
  1554. data/spec/unit/provider/service/daemontools_spec.rb +0 -0
  1555. data/spec/unit/provider/service/debian_spec.rb +38 -0
  1556. data/spec/unit/provider/service/freebsd_spec.rb +17 -0
  1557. data/spec/unit/provider/service/gentoo_spec.rb +8 -0
  1558. data/spec/unit/provider/service/init_spec.rb +42 -1
  1559. data/spec/unit/provider/service/launchd_spec.rb +124 -25
  1560. data/spec/unit/provider/service/openbsd_spec.rb +1 -0
  1561. data/spec/unit/provider/service/openrc_spec.rb +7 -0
  1562. data/spec/unit/provider/service/openwrt_spec.rb +0 -0
  1563. data/spec/unit/provider/service/rcng_spec.rb +41 -0
  1564. data/spec/unit/provider/service/redhat_spec.rb +9 -1
  1565. data/spec/unit/provider/service/runit_spec.rb +0 -0
  1566. data/spec/unit/provider/service/smf_spec.rb +77 -13
  1567. data/spec/unit/provider/service/src_spec.rb +31 -4
  1568. data/spec/unit/provider/service/systemd_spec.rb +228 -39
  1569. data/spec/unit/provider/service/upstart_spec.rb +64 -0
  1570. data/spec/unit/provider/service/windows_spec.rb +0 -0
  1571. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +2 -1
  1572. data/spec/unit/provider/sshkey/parsed_spec.rb +42 -18
  1573. data/spec/unit/provider/user/aix_spec.rb +7 -0
  1574. data/spec/unit/provider/user/directoryservice_spec.rb +171 -90
  1575. data/spec/unit/provider/user/hpux_spec.rb +0 -0
  1576. data/spec/unit/provider/user/ldap_spec.rb +0 -0
  1577. data/spec/unit/provider/user/openbsd_spec.rb +0 -0
  1578. data/spec/unit/provider/user/pw_spec.rb +0 -0
  1579. data/spec/unit/provider/user/user_role_add_spec.rb +0 -0
  1580. data/spec/unit/provider/user/useradd_spec.rb +14 -0
  1581. data/spec/unit/provider/user/windows_adsi_spec.rb +160 -7
  1582. data/spec/unit/provider/vlan/cisco_spec.rb +0 -0
  1583. data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
  1584. data/spec/unit/provider/zfs/zfs_spec.rb +0 -0
  1585. data/spec/unit/provider/zone/solaris_spec.rb +64 -12
  1586. data/spec/unit/provider/zpool/zpool_spec.rb +0 -0
  1587. data/spec/unit/provider_spec.rb +0 -0
  1588. data/spec/unit/puppet_spec.rb +16 -3
  1589. data/spec/unit/relationship_spec.rb +15 -36
  1590. data/spec/unit/reports/http_spec.rb +11 -8
  1591. data/spec/unit/reports/store_spec.rb +0 -0
  1592. data/spec/unit/reports_spec.rb +10 -0
  1593. data/spec/unit/resource/capability_finder_spec.rb +147 -0
  1594. data/spec/unit/resource/catalog_spec.rb +294 -41
  1595. data/spec/unit/resource/status_spec.rb +114 -103
  1596. data/spec/unit/resource/type_collection_spec.rb +28 -7
  1597. data/spec/unit/resource/type_spec.rb +172 -82
  1598. data/spec/unit/resource_spec.rb +161 -76
  1599. data/spec/unit/settings/directory_setting_spec.rb +0 -0
  1600. data/spec/unit/settings/duration_setting_spec.rb +0 -0
  1601. data/spec/unit/settings/environment_conf_spec.rb +18 -1
  1602. data/spec/unit/settings/file_setting_spec.rb +37 -0
  1603. data/spec/unit/settings/ini_file_spec.rb +58 -1
  1604. data/spec/unit/settings/path_setting_spec.rb +0 -0
  1605. data/spec/unit/settings/priority_setting_spec.rb +0 -0
  1606. data/spec/unit/settings_spec.rb +120 -5
  1607. data/spec/unit/ssl/base_spec.rb +9 -0
  1608. data/spec/unit/ssl/certificate_authority/interface_spec.rb +180 -13
  1609. data/spec/unit/ssl/certificate_authority_spec.rb +82 -28
  1610. data/spec/unit/ssl/certificate_factory_spec.rb +2 -2
  1611. data/spec/unit/ssl/certificate_request_attributes_spec.rb +6 -0
  1612. data/spec/unit/ssl/certificate_request_spec.rb +4 -5
  1613. data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
  1614. data/spec/unit/ssl/certificate_spec.rb +1 -1
  1615. data/spec/unit/ssl/configuration_spec.rb +11 -2
  1616. data/spec/unit/ssl/host_spec.rb +37 -37
  1617. data/spec/unit/ssl/inventory_spec.rb +27 -3
  1618. data/spec/unit/ssl/key_spec.rb +7 -7
  1619. data/spec/unit/ssl/oids_spec.rb +24 -13
  1620. data/spec/unit/status_spec.rb +7 -7
  1621. data/spec/unit/transaction/additional_resource_generator_spec.rb +160 -31
  1622. data/spec/unit/transaction/event_manager_spec.rb +0 -0
  1623. data/spec/unit/transaction/event_spec.rb +18 -13
  1624. data/spec/unit/transaction/persistence_spec.rb +178 -0
  1625. data/spec/unit/transaction/report_spec.rb +214 -40
  1626. data/spec/unit/transaction/resource_harness_spec.rb +84 -40
  1627. data/spec/unit/transaction_spec.rb +102 -7
  1628. data/spec/unit/type/augeas_spec.rb +0 -0
  1629. data/spec/unit/type/component_spec.rb +0 -0
  1630. data/spec/unit/type/computer_spec.rb +0 -0
  1631. data/spec/unit/type/cron_spec.rb +0 -0
  1632. data/spec/unit/type/exec_spec.rb +57 -12
  1633. data/spec/unit/type/file/checksum_spec.rb +6 -0
  1634. data/spec/unit/type/file/checksum_value_spec.rb +286 -0
  1635. data/spec/unit/type/file/content_spec.rb +59 -208
  1636. data/spec/unit/type/file/ctime_spec.rb +0 -0
  1637. data/spec/unit/type/file/ensure_spec.rb +0 -0
  1638. data/spec/unit/type/file/group_spec.rb +2 -2
  1639. data/spec/unit/type/file/mode_spec.rb +9 -9
  1640. data/spec/unit/type/file/mtime_spec.rb +0 -0
  1641. data/spec/unit/type/file/owner_spec.rb +2 -2
  1642. data/spec/unit/type/file/selinux_spec.rb +2 -0
  1643. data/spec/unit/type/file/source_spec.rb +224 -119
  1644. data/spec/unit/type/file/type_spec.rb +0 -0
  1645. data/spec/unit/type/file_spec.rb +211 -35
  1646. data/spec/unit/type/filebucket_spec.rb +0 -0
  1647. data/spec/unit/type/group_spec.rb +0 -0
  1648. data/spec/unit/type/host_spec.rb +4 -4
  1649. data/spec/unit/type/interface_spec.rb +32 -0
  1650. data/spec/unit/type/k5login_spec.rb +0 -0
  1651. data/spec/unit/type/macauthorization_spec.rb +4 -1
  1652. data/spec/unit/type/mailalias_spec.rb +0 -0
  1653. data/spec/unit/type/maillist_spec.rb +0 -0
  1654. data/spec/unit/type/mcx_spec.rb +0 -0
  1655. data/spec/unit/type/mount_spec.rb +50 -8
  1656. data/spec/unit/type/nagios_spec.rb +0 -0
  1657. data/spec/unit/type/noop_metaparam_spec.rb +0 -0
  1658. data/spec/unit/type/package/package_settings_spec.rb +0 -0
  1659. data/spec/unit/type/package_spec.rb +1 -0
  1660. data/spec/unit/type/resources_spec.rb +0 -0
  1661. data/spec/unit/type/schedule_spec.rb +0 -0
  1662. data/spec/unit/type/selboolean_spec.rb +0 -0
  1663. data/spec/unit/type/selmodule_spec.rb +0 -0
  1664. data/spec/unit/type/service_spec.rb +21 -0
  1665. data/spec/unit/type/ssh_authorized_key_spec.rb +2 -2
  1666. data/spec/unit/type/sshkey_spec.rb +0 -0
  1667. data/spec/unit/type/stage_spec.rb +0 -0
  1668. data/spec/unit/type/tidy_spec.rb +4 -4
  1669. data/spec/unit/type/user_spec.rb +38 -7
  1670. data/spec/unit/type/vlan_spec.rb +1 -1
  1671. data/spec/unit/type/whit_spec.rb +0 -0
  1672. data/spec/unit/type/yumrepo_spec.rb +3 -7
  1673. data/spec/unit/type/zfs_spec.rb +0 -0
  1674. data/spec/unit/type/zone_spec.rb +0 -0
  1675. data/spec/unit/type/zpool_spec.rb +0 -0
  1676. data/spec/unit/type_spec.rb +119 -1
  1677. data/spec/unit/util/at_fork_spec.rb +150 -0
  1678. data/spec/unit/util/autoload_spec.rb +0 -0
  1679. data/spec/unit/util/backups_spec.rb +0 -0
  1680. data/spec/unit/util/character_encoding_spec.rb +229 -0
  1681. data/spec/unit/util/checksums_spec.rb +0 -0
  1682. data/spec/unit/util/colors_spec.rb +0 -0
  1683. data/spec/unit/util/command_line_spec.rb +11 -0
  1684. data/spec/unit/util/constant_inflector_spec.rb +0 -0
  1685. data/spec/unit/util/diff_spec.rb +0 -0
  1686. data/spec/unit/util/errors_spec.rb +0 -0
  1687. data/spec/unit/util/execution_spec.rb +44 -3
  1688. data/spec/unit/util/execution_stub_spec.rb +0 -0
  1689. data/spec/unit/util/feature_spec.rb +1 -1
  1690. data/spec/unit/util/filetype_spec.rb +4 -4
  1691. data/spec/unit/util/http_proxy_spec.rb +91 -0
  1692. data/spec/unit/util/ldap/connection_spec.rb +0 -0
  1693. data/spec/unit/util/ldap/generator_spec.rb +1 -1
  1694. data/spec/unit/util/ldap/manager_spec.rb +0 -0
  1695. data/spec/unit/util/log/destinations_spec.rb +5 -8
  1696. data/spec/unit/util/log_spec.rb +187 -18
  1697. data/spec/unit/util/logging_spec.rb +69 -0
  1698. data/spec/unit/util/metric_spec.rb +9 -2
  1699. data/spec/unit/util/monkey_patches_spec.rb +37 -127
  1700. data/spec/unit/util/multi_match_spec.rb +39 -0
  1701. data/spec/unit/util/nagios_maker_spec.rb +0 -0
  1702. data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
  1703. data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -0
  1704. data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -0
  1705. data/spec/unit/util/network_device/config_spec.rb +0 -0
  1706. data/spec/unit/util/network_device/ipcalc_spec.rb +0 -0
  1707. data/spec/unit/util/network_device/transport/base_spec.rb +0 -0
  1708. data/spec/unit/util/network_device/transport/ssh_spec.rb +1 -1
  1709. data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
  1710. data/spec/unit/util/network_device_spec.rb +1 -1
  1711. data/spec/unit/util/package_spec.rb +0 -0
  1712. data/spec/unit/util/plist_spec.rb +135 -0
  1713. data/spec/unit/util/posix_spec.rb +0 -0
  1714. data/spec/unit/util/rdoc_spec.rb +0 -0
  1715. data/spec/unit/util/resource_template_spec.rb +2 -2
  1716. data/spec/unit/util/retry_action_spec.rb +0 -0
  1717. data/spec/unit/util/run_mode_spec.rb +44 -13
  1718. data/spec/unit/util/selinux_spec.rb +0 -0
  1719. data/spec/unit/util/splayer_spec.rb +45 -0
  1720. data/spec/unit/util/storage_spec.rb +8 -1
  1721. data/spec/unit/util/suidmanager_spec.rb +0 -0
  1722. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -0
  1723. data/spec/unit/util/tag_set_spec.rb +2 -2
  1724. data/spec/unit/util/tagging_spec.rb +59 -0
  1725. data/spec/unit/util/user_attr_spec.rb +0 -0
  1726. data/spec/unit/util/warnings_spec.rb +0 -0
  1727. data/spec/unit/util/windows/adsi_spec.rb +196 -60
  1728. data/spec/unit/util/windows/api_types_spec.rb +42 -0
  1729. data/spec/unit/util/windows/eventlog_spec.rb +123 -0
  1730. data/spec/unit/util/windows/file_spec.rb +89 -0
  1731. data/spec/unit/util/windows/root_certs_spec.rb +0 -0
  1732. data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
  1733. data/spec/unit/util/windows/sid_spec.rb +76 -24
  1734. data/spec/unit/util/yaml_spec.rb +13 -1
  1735. data/spec/unit/util_spec.rb +456 -17
  1736. data/spec/unit/version_spec.rb +19 -0
  1737. data/spec/watchr.rb +0 -0
  1738. data/tasks/benchmark.rake +3 -3
  1739. data/tasks/cfpropertylist.rake +15 -0
  1740. data/tasks/generate_ast_model.rake +78 -0
  1741. metadata +3474 -3068
  1742. checksums.yaml +0 -7
  1743. data/bin/extlookup2hiera +0 -56
  1744. data/ext/emacs/puppet-mode-init.el +0 -6
  1745. data/ext/emacs/puppet-mode.el +0 -433
  1746. data/ext/puppet-nm-dispatcher +0 -13
  1747. data/ext/puppetlisten/puppetlisten.rb +0 -77
  1748. data/ext/puppetlisten/puppetrun.rb +0 -38
  1749. data/ext/systemd/puppetmaster.service +0 -11
  1750. data/ext/vim/README +0 -3
  1751. data/ext/vim/ftdetect/puppet.vim +0 -2
  1752. data/ext/vim/ftplugin/puppet.vim +0 -94
  1753. data/ext/vim/indent/puppet.vim +0 -76
  1754. data/ext/vim/syntax/puppet.vim +0 -115
  1755. data/lib/puppet/application/file.rb +0 -4
  1756. data/lib/puppet/application/inspect.rb +0 -179
  1757. data/lib/puppet/application/resource_type.rb +0 -7
  1758. data/lib/puppet/data_providers/data_adapter.rb +0 -91
  1759. data/lib/puppet/data_providers/data_function_support.rb +0 -45
  1760. data/lib/puppet/data_providers/function_env_data_provider.rb +0 -28
  1761. data/lib/puppet/data_providers/function_module_data_provider.rb +0 -39
  1762. data/lib/puppet/data_providers.rb +0 -31
  1763. data/lib/puppet/face/file/download.rb +0 -56
  1764. data/lib/puppet/face/file/store.rb +0 -21
  1765. data/lib/puppet/face/file.rb +0 -47
  1766. data/lib/puppet/face/resource_type.rb +0 -84
  1767. data/lib/puppet/feature/cfacter.rb +0 -14
  1768. data/lib/puppet/feature/external_facts.rb +0 -5
  1769. data/lib/puppet/indirector/catalog/static_compiler.rb +0 -213
  1770. data/lib/puppet/indirector/resource_type/parser.rb +0 -101
  1771. data/lib/puppet/indirector/resource_type/rest.rb +0 -7
  1772. data/lib/puppet/indirector/resource_type.rb +0 -5
  1773. data/lib/puppet/parser/yaml_trimmer.rb +0 -7
  1774. data/lib/puppet/plugins/binding_schemes.rb +0 -140
  1775. data/lib/puppet/plugins/data_providers.rb +0 -90
  1776. data/lib/puppet/pops/binder/binder.rb +0 -394
  1777. data/lib/puppet/pops/binder/binder_issues.rb +0 -122
  1778. data/lib/puppet/pops/binder/bindings_checker.rb +0 -197
  1779. data/lib/puppet/pops/binder/bindings_composer.rb +0 -177
  1780. data/lib/puppet/pops/binder/bindings_factory.rb +0 -809
  1781. data/lib/puppet/pops/binder/bindings_label_provider.rb +0 -43
  1782. data/lib/puppet/pops/binder/bindings_loader.rb +0 -83
  1783. data/lib/puppet/pops/binder/bindings_model.rb +0 -68
  1784. data/lib/puppet/pops/binder/bindings_model_dumper.rb +0 -215
  1785. data/lib/puppet/pops/binder/bindings_model_meta.rb +0 -215
  1786. data/lib/puppet/pops/binder/bindings_validator_factory.rb +0 -28
  1787. data/lib/puppet/pops/binder/config/binder_config.rb +0 -107
  1788. data/lib/puppet/pops/binder/config/binder_config_checker.rb +0 -142
  1789. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +0 -32
  1790. data/lib/puppet/pops/binder/config/issues.rb +0 -90
  1791. data/lib/puppet/pops/binder/injector.rb +0 -766
  1792. data/lib/puppet/pops/binder/injector_entry.rb +0 -57
  1793. data/lib/puppet/pops/binder/key_factory.rb +0 -67
  1794. data/lib/puppet/pops/binder/producers.rb +0 -826
  1795. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +0 -34
  1796. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +0 -84
  1797. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +0 -53
  1798. data/lib/puppet/pops/binder/system_bindings.rb +0 -60
  1799. data/lib/puppet/pops/containment.rb +0 -104
  1800. data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +0 -175
  1801. data/lib/puppet/pops/model/model.rb +0 -114
  1802. data/lib/puppet/pops/model/model_meta.rb +0 -582
  1803. data/lib/puppet/pops/types/types_meta.rb +0 -223
  1804. data/lib/puppet/resource/type_collection_helper.rb +0 -7
  1805. data/lib/puppet/vendor/load_plist.rb +0 -1
  1806. data/lib/puppet/vendor/load_rgen.rb +0 -2
  1807. data/lib/puppet/vendor/plist/CHANGELOG +0 -82
  1808. data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
  1809. data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
  1810. data/lib/puppet/vendor/plist/README +0 -36
  1811. data/lib/puppet/vendor/plist/Rakefile +0 -144
  1812. data/lib/puppet/vendor/plist/docs/USAGE +0 -104
  1813. data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
  1814. data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
  1815. data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
  1816. data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
  1817. data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
  1818. data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
  1819. data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
  1820. data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
  1821. data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
  1822. data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
  1823. data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
  1824. data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
  1825. data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
  1826. data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
  1827. data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
  1828. data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
  1829. data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
  1830. data/lib/puppet/vendor/rgen/CHANGELOG +0 -197
  1831. data/lib/puppet/vendor/rgen/MIT-LICENSE +0 -20
  1832. data/lib/puppet/vendor/rgen/PUPPET_README.md +0 -6
  1833. data/lib/puppet/vendor/rgen/README.rdoc +0 -78
  1834. data/lib/puppet/vendor/rgen/Rakefile +0 -41
  1835. data/lib/puppet/vendor/rgen/TODO +0 -41
  1836. data/lib/puppet/vendor/rgen/anounce.txt +0 -61
  1837. data/lib/puppet/vendor/rgen/design_rationale.txt +0 -71
  1838. data/lib/puppet/vendor/rgen/lib/ea_support/ea_support.rb +0 -54
  1839. data/lib/puppet/vendor/rgen/lib/ea_support/id_store.rb +0 -32
  1840. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel.rb +0 -562
  1841. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_ext.rb +0 -45
  1842. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_generator.rb +0 -43
  1843. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_to_uml13.rb +0 -103
  1844. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_to_uml13_ea.rb +0 -89
  1845. data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel.rb +0 -559
  1846. data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel_ext.rb +0 -26
  1847. data/lib/puppet/vendor/rgen/lib/mmgen/metamodel_generator.rb +0 -20
  1848. data/lib/puppet/vendor/rgen/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +0 -91
  1849. data/lib/puppet/vendor/rgen/lib/mmgen/mmgen.rb +0 -28
  1850. data/lib/puppet/vendor/rgen/lib/mmgen/templates/annotations.tpl +0 -37
  1851. data/lib/puppet/vendor/rgen/lib/mmgen/templates/metamodel_generator.tpl +0 -172
  1852. data/lib/puppet/vendor/rgen/lib/rgen/array_extensions.rb +0 -45
  1853. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore.rb +0 -218
  1854. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_builder_methods.rb +0 -81
  1855. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_ext.rb +0 -69
  1856. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_interface.rb +0 -47
  1857. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_to_ruby.rb +0 -167
  1858. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ruby_to_ecore.rb +0 -91
  1859. data/lib/puppet/vendor/rgen/lib/rgen/environment.rb +0 -129
  1860. data/lib/puppet/vendor/rgen/lib/rgen/fragment/dump_file_cache.rb +0 -63
  1861. data/lib/puppet/vendor/rgen/lib/rgen/fragment/fragmented_model.rb +0 -140
  1862. data/lib/puppet/vendor/rgen/lib/rgen/fragment/model_fragment.rb +0 -289
  1863. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_instantiator.rb +0 -66
  1864. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_xml_instantiator.rb +0 -66
  1865. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/default_xml_instantiator.rb +0 -117
  1866. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/ecore_xml_instantiator.rb +0 -169
  1867. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_instantiator.rb +0 -126
  1868. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.rb +0 -331
  1869. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.y +0 -94
  1870. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/nodebased_xml_instantiator.rb +0 -137
  1871. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/qualified_name_resolver.rb +0 -97
  1872. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/reference_resolver.rb +0 -128
  1873. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/resolution_helper.rb +0 -47
  1874. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/xmi11_instantiator.rb +0 -168
  1875. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_extensions.rb +0 -556
  1876. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_runtime.rb +0 -174
  1877. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/constant_order_helper.rb +0 -89
  1878. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/data_types.rb +0 -77
  1879. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/annotation.rb +0 -30
  1880. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/feature.rb +0 -168
  1881. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/mm_multiple.rb +0 -23
  1882. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/module_extension.rb +0 -42
  1883. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder.rb +0 -224
  1884. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/builder_context.rb +0 -334
  1885. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/model_serializer.rb +0 -225
  1886. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/reference_resolver.rb +0 -156
  1887. data/lib/puppet/vendor/rgen/lib/rgen/model_builder.rb +0 -32
  1888. data/lib/puppet/vendor/rgen/lib/rgen/serializer/json_serializer.rb +0 -121
  1889. data/lib/puppet/vendor/rgen/lib/rgen/serializer/opposite_reference_filter.rb +0 -18
  1890. data/lib/puppet/vendor/rgen/lib/rgen/serializer/qualified_name_provider.rb +0 -47
  1891. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi11_serializer.rb +0 -116
  1892. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi20_serializer.rb +0 -71
  1893. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xml_serializer.rb +0 -98
  1894. data/lib/puppet/vendor/rgen/lib/rgen/template_language/directory_template_container.rb +0 -83
  1895. data/lib/puppet/vendor/rgen/lib/rgen/template_language/output_handler.rb +0 -87
  1896. data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_container.rb +0 -234
  1897. data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_helper.rb +0 -26
  1898. data/lib/puppet/vendor/rgen/lib/rgen/template_language.rb +0 -297
  1899. data/lib/puppet/vendor/rgen/lib/rgen/transformer.rb +0 -475
  1900. data/lib/puppet/vendor/rgen/lib/rgen/util/auto_class_creator.rb +0 -61
  1901. data/lib/puppet/vendor/rgen/lib/rgen/util/cached_glob.rb +0 -67
  1902. data/lib/puppet/vendor/rgen/lib/rgen/util/file_cache_map.rb +0 -124
  1903. data/lib/puppet/vendor/rgen/lib/rgen/util/file_change_detector.rb +0 -84
  1904. data/lib/puppet/vendor/rgen/lib/rgen/util/method_delegation.rb +0 -114
  1905. data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator.rb +0 -68
  1906. data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator_base.rb +0 -142
  1907. data/lib/puppet/vendor/rgen/lib/rgen/util/model_dumper.rb +0 -29
  1908. data/lib/puppet/vendor/rgen/lib/rgen/util/name_helper.rb +0 -42
  1909. data/lib/puppet/vendor/rgen/lib/rgen/util/pattern_matcher.rb +0 -329
  1910. data/lib/puppet/vendor/rgen/lib/transformers/ecore_to_uml13.rb +0 -79
  1911. data/lib/puppet/vendor/rgen/lib/transformers/uml13_to_ecore.rb +0 -127
  1912. data/lib/puppet/vendor/rgen/test/array_extensions_test.rb +0 -64
  1913. data/lib/puppet/vendor/rgen/test/ea_instantiator_test.rb +0 -35
  1914. data/lib/puppet/vendor/rgen/test/ea_serializer_test.rb +0 -23
  1915. data/lib/puppet/vendor/rgen/test/ecore_self_test.rb +0 -54
  1916. data/lib/puppet/vendor/rgen/test/environment_test.rb +0 -90
  1917. data/lib/puppet/vendor/rgen/test/json_test.rb +0 -171
  1918. data/lib/puppet/vendor/rgen/test/metamodel_builder_test.rb +0 -1482
  1919. data/lib/puppet/vendor/rgen/test/metamodel_from_ecore_test.rb +0 -57
  1920. data/lib/puppet/vendor/rgen/test/metamodel_order_test.rb +0 -131
  1921. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/TestModel.rb +0 -70
  1922. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel.ecore +0 -42
  1923. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +0 -44
  1924. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/using_builtin_types.ecore +0 -9
  1925. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test.rb +0 -98
  1926. data/lib/puppet/vendor/rgen/test/method_delegation_test.rb +0 -178
  1927. data/lib/puppet/vendor/rgen/test/model_builder/builder_context_test.rb +0 -59
  1928. data/lib/puppet/vendor/rgen/test/model_builder/builder_test.rb +0 -242
  1929. data/lib/puppet/vendor/rgen/test/model_builder/ecore_original.rb +0 -163
  1930. data/lib/puppet/vendor/rgen/test/model_builder/ecore_original_regenerated.rb +0 -163
  1931. data/lib/puppet/vendor/rgen/test/model_builder/reference_resolver_test.rb +0 -156
  1932. data/lib/puppet/vendor/rgen/test/model_builder/serializer_test.rb +0 -94
  1933. data/lib/puppet/vendor/rgen/test/model_builder/statemachine_metamodel.rb +0 -42
  1934. data/lib/puppet/vendor/rgen/test/model_builder/test_model/statemachine1.rb +0 -23
  1935. data/lib/puppet/vendor/rgen/test/model_builder_test.rb +0 -6
  1936. data/lib/puppet/vendor/rgen/test/model_fragment_test.rb +0 -30
  1937. data/lib/puppet/vendor/rgen/test/output_handler_test.rb +0 -58
  1938. data/lib/puppet/vendor/rgen/test/qualified_name_provider_test.rb +0 -48
  1939. data/lib/puppet/vendor/rgen/test/qualified_name_resolver_test.rb +0 -102
  1940. data/lib/puppet/vendor/rgen/test/reference_resolver_test.rb +0 -117
  1941. data/lib/puppet/vendor/rgen/test/rgen_test.rb +0 -26
  1942. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result1.txt +0 -29
  1943. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result2.txt +0 -9
  1944. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result3.txt +0 -4
  1945. data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestDefaultIndent.out +0 -1
  1946. data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestTabIndent.out +0 -1
  1947. data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/a.tpl +0 -12
  1948. data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/b.tpl +0 -5
  1949. data/lib/puppet/vendor/rgen/test/template_language_test/templates/code/array.tpl +0 -11
  1950. data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/author.tpl +0 -7
  1951. data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/chapter.tpl +0 -5
  1952. data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/local.tpl +0 -8
  1953. data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/test.tpl +0 -8
  1954. data/lib/puppet/vendor/rgen/test/template_language_test/templates/evaluate_test/test.tpl +0 -7
  1955. data/lib/puppet/vendor/rgen/test/template_language_test/templates/indent_string_test.tpl +0 -12
  1956. data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/c/cmod.tpl +0 -1
  1957. data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/chapter.tpl +0 -3
  1958. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_backslash_r_test.tpl +0 -5
  1959. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/no_indent.tpl +0 -3
  1960. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/sub1/no_indent.tpl +0 -3
  1961. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test.tpl +0 -24
  1962. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test2.tpl +0 -13
  1963. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test3.tpl +0 -10
  1964. data/lib/puppet/vendor/rgen/test/template_language_test/templates/null_context_test.tpl +0 -17
  1965. data/lib/puppet/vendor/rgen/test/template_language_test/templates/root.tpl +0 -31
  1966. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1/sub1.tpl +0 -3
  1967. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1.tpl +0 -9
  1968. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/test.tpl +0 -4
  1969. data/lib/puppet/vendor/rgen/test/template_language_test/testout.txt +0 -29
  1970. data/lib/puppet/vendor/rgen/test/template_language_test.rb +0 -163
  1971. data/lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb +0 -119
  1972. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.eap +0 -0
  1973. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.xml +0 -1029
  1974. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel_partial.xml +0 -317
  1975. data/lib/puppet/vendor/rgen/test/testmodel/ecore_model_checker.rb +0 -101
  1976. data/lib/puppet/vendor/rgen/test/testmodel/manual_testmodel.xml +0 -22
  1977. data/lib/puppet/vendor/rgen/test/testmodel/object_model_checker.rb +0 -67
  1978. data/lib/puppet/vendor/rgen/test/transformer_test.rb +0 -254
  1979. data/lib/puppet/vendor/rgen/test/util/file_cache_map_test.rb +0 -99
  1980. data/lib/puppet/vendor/rgen/test/util/pattern_matcher_test.rb +0 -97
  1981. data/lib/puppet/vendor/rgen/test/util_test.rb +0 -5
  1982. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_ecore_model_checker.rb +0 -94
  1983. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_ecore_instantiator.rb +0 -53
  1984. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_metamodel.rb +0 -49
  1985. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_to_ecore.rb +0 -75
  1986. data/lib/puppet/vendor/rgen/test/xml_instantiator_test.rb +0 -160
  1987. data/lib/puppet/vendor/rgen_patch.rb +0 -132
  1988. data/lib/puppet/vendor/semantic/Gemfile +0 -20
  1989. data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
  1990. data/lib/puppet/vendor/semantic/Rakefile +0 -69
  1991. data/lib/puppet/vendor/semantic/lib/semantic/version.rb +0 -168
  1992. data/lib/puppet/vendor/semantic/lib/semantic/version_range.rb +0 -424
  1993. data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
  1994. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
  1995. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
  1996. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
  1997. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
  1998. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
  1999. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
  2000. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
  2001. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
  2002. data/lib/semver.rb +0 -123
  2003. data/man/man8/extlookup2hiera.8 +0 -10
  2004. data/man/man8/puppet-file.8 +0 -189
  2005. data/man/man8/puppet-resource_type.8 +0 -188
  2006. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -9
  2007. data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
  2008. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet/bindings/dataprovider/default.rb +0 -54
  2009. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +0 -31
  2010. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +0 -32
  2011. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +0 -5
  2012. data/spec/fixtures/unit/functions/lookup/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -9
  2013. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -9
  2014. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -3
  2015. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -9
  2016. data/spec/integration/data_binding.rb +0 -104
  2017. data/spec/integration/parser/functions/require_spec.rb +0 -43
  2018. data/spec/integration/provider/package_spec.rb +0 -33
  2019. data/spec/unit/application/inspect_spec.rb +0 -287
  2020. data/spec/unit/data_providers/sample_data_provider_spec.rb +0 -52
  2021. data/spec/unit/face/file_spec.rb +0 -10
  2022. data/spec/unit/indirector/catalog/static_compiler_spec.rb +0 -237
  2023. data/spec/unit/indirector/resource_type/parser_spec.rb +0 -254
  2024. data/spec/unit/indirector/resource_type/rest_spec.rb +0 -14
  2025. data/spec/unit/parser/functions/defined_spec.rb +0 -120
  2026. data/spec/unit/parser/functions/include_spec.rb +0 -55
  2027. data/spec/unit/parser/functions/require_spec.rb +0 -68
  2028. data/spec/unit/pops/binder/binder_spec.rb +0 -43
  2029. data/spec/unit/pops/binder/bindings_checker_spec.rb +0 -155
  2030. data/spec/unit/pops/binder/bindings_composer_spec.rb +0 -64
  2031. data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +0 -18
  2032. data/spec/unit/pops/binder/config/binder_config_spec.rb +0 -42
  2033. data/spec/unit/pops/binder/injector_spec.rb +0 -768
  2034. data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +0 -23
  2035. data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
  2036. data/spec/unit/semver_spec.rb +0 -305
  2037. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
  2038. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
  2039. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
  2040. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
  2041. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
  2042. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
  2043. /data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
  2044. /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
  2045. /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
@@ -1,4 +1,5 @@
1
-
1
+ module Puppet::Pops
2
+ module Loader
2
3
  # =ModuleLoaders
3
4
  # A ModuleLoader loads items from a single module.
4
5
  # The ModuleLoaders (ruby) module contains various such loaders. There is currently one concrete
@@ -14,12 +15,12 @@
14
15
  # internal layout etc.)
15
16
  #
16
17
  # A module loader is also not aware of the mapping of name to relative paths - this is performed by the
17
- # included module Puppet::Pops::Loader::PathBasedInstantatorConfig which knows about the map from type/name to
18
+ # included module PathBasedInstantatorConfig which knows about the map from type/name to
18
19
  # relative path, and the logic that can instantiate what is expected to be found in the content of that path.
19
20
  #
20
21
  # @api private
21
22
  #
22
- module Puppet::Pops::Loader::ModuleLoaders
23
+ module ModuleLoaders
23
24
  def self.system_loader_from(parent_loader, loaders)
24
25
  # Puppet system may be installed in a fixed location via RPM, installed as a Gem, via source etc.
25
26
  # The only way to find this across the different ways puppet can be installed is
@@ -27,22 +28,43 @@ module Puppet::Pops::Loader::ModuleLoaders
27
28
  # puppet.
28
29
  #
29
30
  puppet_lib = File.join(File.dirname(__FILE__), '../../..')
30
- Puppet::Pops::Loader::ModuleLoaders::FileBased.new(parent_loader,
31
+ ModuleLoaders::FileBased.new(parent_loader,
31
32
  loaders,
32
33
  nil,
33
- puppet_lib,
34
- 'puppet_system')
34
+ puppet_lib, # may or may not have a 'lib' above 'puppet'
35
+ 'puppet_system',
36
+ [:func_4x] # only load ruby functions from "puppet"
37
+ )
38
+ end
39
+
40
+ def self.environment_loader_from(parent_loader, loaders, env_path)
41
+ ModuleLoaders::FileBased.new(parent_loader,
42
+ loaders,
43
+ ENVIRONMENT,
44
+ File.join(env_path, 'lib'),
45
+ ENVIRONMENT
46
+ )
35
47
  end
36
48
 
37
49
  def self.module_loader_from(parent_loader, loaders, module_name, module_path)
38
- Puppet::Pops::Loader::ModuleLoaders::FileBased.new(parent_loader,
50
+ ModuleLoaders::FileBased.new(parent_loader,
39
51
  loaders,
40
52
  module_name,
41
53
  File.join(module_path, 'lib'),
42
- module_name)
54
+ module_name
55
+ )
43
56
  end
44
57
 
45
- class AbstractPathBasedModuleLoader < Puppet::Pops::Loader::BaseLoader
58
+ def self.pcore_resource_type_loader_from(parent_loader, loaders, environment_path)
59
+ ModuleLoaders::FileBased.new(parent_loader,
60
+ loaders,
61
+ nil,
62
+ environment_path,
63
+ 'pcore_resource_types'
64
+ )
65
+ end
66
+
67
+ class AbstractPathBasedModuleLoader < BaseLoader
46
68
 
47
69
  # The name of the module, or nil, if this is a global "component"
48
70
  attr_reader :module_name
@@ -61,27 +83,39 @@ module Puppet::Pops::Loader::ModuleLoaders
61
83
  attr_accessor :private_loader
62
84
 
63
85
  # Initialize a kind of ModuleLoader for one module
64
- # @param parent_loader [Puppet::Pops::Loader] loader with higher priority
86
+ # @param parent_loader [Loader] loader with higher priority
87
+ # @param loaders [Loaders] the container for this loader
65
88
  # @param module_name [String] the name of the module (non qualified name), may be nil for a global "component"
66
89
  # @param path [String] the path to the root of the module (semantics defined by subclass)
67
90
  # @param loader_name [String] a name that is used for human identification (useful when module_name is nil)
68
91
  #
69
- def initialize(parent_loader, loaders, module_name, path, loader_name)
92
+ def initialize(parent_loader, loaders, module_name, path, loader_name, loadables)
70
93
  super parent_loader, loader_name
71
94
 
72
95
  @module_name = module_name
73
96
  @path = path
74
- @smart_paths = Puppet::Pops::Loader::LoaderPaths::SmartPaths.new(self)
97
+ @smart_paths = LoaderPaths::SmartPaths.new(self)
75
98
  @loaders = loaders
99
+ @loadables = loadables
100
+ unless (loadables - LOADABLE_KINDS).empty?
101
+ raise ArgumentError, 'given loadables are not of supported loadable kind'
102
+ end
103
+ loaders.add_loader_by_name(self)
104
+ end
105
+
106
+ def loadables
107
+ @loadables
76
108
  end
77
109
 
78
110
  # Finds typed/named entity in this module
79
- # @param typed_name [Puppet::Pops::Loader::TypedName] the type/name to find
80
- # @return [Puppet::Pops::Loader::Loader::NamedEntry, nil found/created entry, or nil if not found
111
+ # @param typed_name [TypedName] the type/name to find
112
+ # @return [Loader::NamedEntry, nil found/created entry, or nil if not found
81
113
  #
82
114
  def find(typed_name)
115
+ # This loader is tailored to only find entries in the current runtime
116
+ return nil unless typed_name.name_authority == Pcore::RUNTIME_NAME_AUTHORITY
117
+
83
118
  # Assume it is a global name, and that all parts of the name should be used when looking up
84
- name_part_index = 0
85
119
  name_parts = typed_name.name_parts
86
120
 
87
121
  # Certain types and names can be disqualified up front
@@ -93,10 +127,6 @@ module Puppet::Pops::Loader::ModuleLoaders
93
127
  # ok since such a "module" cannot have namespaced content).
94
128
  #
95
129
  return nil unless name_parts[0] == module_name
96
-
97
- # Skip the first part of the name when computing the path since the path already contains the name of the
98
- # module
99
- name_part_index = 1
100
130
  else
101
131
  # The name is in the global name space.
102
132
 
@@ -104,6 +134,23 @@ module Puppet::Pops::Loader::ModuleLoaders
104
134
  case typed_name.type
105
135
  when :function
106
136
  when :resource_type
137
+ when :resource_type_pp
138
+ when :type
139
+ if !global?
140
+ # Global name can only be the module typeset
141
+ return nil unless name_parts[0] == module_name
142
+
143
+ origin, smart_path = find_existing_path(init_typeset_name)
144
+ return nil unless smart_path
145
+
146
+ value = smart_path.instantiator.create(self, typed_name, origin, get_contents(origin))
147
+ if value.is_a?(Types::PTypeSetType)
148
+ # cache the entry and return it
149
+ return set_entry(typed_name, value, origin)
150
+ end
151
+
152
+ raise ArgumentError,"The code loaded from #{origin} does not define the TypeSet '#{module_name.capitalize}'"
153
+ end
107
154
  else
108
155
  # anything else cannot possibly be in this module
109
156
  # TODO: should not be allowed anyway... may have to revisit this decision
@@ -114,17 +161,31 @@ module Puppet::Pops::Loader::ModuleLoaders
114
161
  # Get the paths that actually exist in this module (they are lazily processed once and cached).
115
162
  # The result is an array (that may be empty).
116
163
  # Find the file to instantiate, and instantiate the entity if file is found
117
- origin = nil
118
- if (smart_path = smart_paths.effective_paths(typed_name.type).find do |sp|
119
- origin = sp.effective_path(typed_name, name_part_index)
120
- existing_path(origin)
121
- end)
164
+ origin, smart_path = find_existing_path(typed_name)
165
+ if smart_path
122
166
  value = smart_path.instantiator.create(self, typed_name, origin, get_contents(origin))
123
167
  # cache the entry and return it
124
- set_entry(typed_name, value, origin)
125
- else
126
- nil
168
+ return set_entry(typed_name, value, origin)
169
+ end
170
+
171
+ return nil unless typed_name.type == :type && typed_name.qualified?
172
+
173
+ # Search for TypeSet using parent name
174
+ ts_name = typed_name.parent
175
+ while ts_name
176
+ # Do not traverse parents here. This search must be confined to this loader
177
+ tse = get_entry(ts_name)
178
+ tse = find(ts_name) if tse.nil? || tse.value.nil?
179
+ if tse && (ts = tse.value).is_a?(Types::PTypeSetType)
180
+ # The TypeSet might be unresolved at this point. If so, it must be resolved using
181
+ # this loader. That in turn, adds all contained types to this loader.
182
+ ts.resolve(Types::TypeParser.singleton, self)
183
+ te = get_entry(typed_name)
184
+ return te unless te.nil?
185
+ end
186
+ ts_name = ts_name.parent
127
187
  end
188
+ nil
128
189
  end
129
190
 
130
191
  # Abstract method that subclasses override that checks if it is meaningful to search using a generic smart path.
@@ -172,12 +233,42 @@ module Puppet::Pops::Loader::ModuleLoaders
172
233
  raise NotImplementedError.new
173
234
  end
174
235
 
236
+ # Answers the question if this loader represents a global component (true for resource type loader and environment loader)
237
+ #
238
+ # @return [Boolean] `true` if this loader represents a global component
239
+ #
240
+ def global?
241
+ module_name.nil? || module_name == ENVIRONMENT
242
+ end
243
+
175
244
  # Produces the private loader for the module. If this module is not already resolved, this will trigger resolution
176
245
  #
177
246
  def private_loader
178
247
  # The system loader has a nil module_name and it does not have a private_loader as there are no functions
179
- # that can only by called by puppet runtime - if so, it acts as the privuate loader directly.
180
- @private_loader ||= ((module_name.nil? && self) || @loaders.private_loader_for_module(module_name))
248
+ # that can only by called by puppet runtime - if so, it acts as the private loader directly.
249
+ @private_loader ||= (global? ? self : @loaders.private_loader_for_module(module_name))
250
+ end
251
+
252
+ private
253
+
254
+ # @return [TypedName] the fake typed name that maps to the init_typeset path for this module
255
+ def init_typeset_name
256
+ @init_typeset_name ||= TypedName.new(:type, "#{module_name}::init_typeset")
257
+ end
258
+
259
+ # Find an existing path for the given `typed_name`. Return `nil` if no such path is found
260
+ # @param typed_name [TypedName] the `typed_name` to find a path for
261
+ # @return [Array,nil] `nil`or a two element array an effective path `String` and the `SmartPath` that produced the effective path.
262
+ def find_existing_path(typed_name)
263
+ is_global = global?
264
+ smart_paths.effective_paths(typed_name.type).each do |sp|
265
+ origin = sp.effective_path(typed_name, is_global ? 0 : 1)
266
+ unless origin.nil?
267
+ existing = existing_path(origin)
268
+ return [origin, sp] unless existing.nil?
269
+ end
270
+ end
271
+ nil
181
272
  end
182
273
  end
183
274
 
@@ -190,12 +281,12 @@ module Puppet::Pops::Loader::ModuleLoaders
190
281
 
191
282
  # Create a kind of ModuleLoader for one module (Puppet Module, or module like)
192
283
  #
193
- # @param parent_loader [Puppet::Pops::Loader::Loader] typically the loader for the environment or root
284
+ # @param parent_loader [Loader] typically the loader for the environment or root
194
285
  # @param module_name [String] the name of the module (non qualified name), may be nil for "modules" only containing globals
195
286
  # @param path [String] the path to the root of the module (semantics defined by subclass)
196
287
  # @param loader_name [String] a name that identifies the loader
197
288
  #
198
- def initialize(parent_loader, loaders, module_name, path, loader_name)
289
+ def initialize(parent_loader, loaders, module_name, path, loader_name, loadables = LOADABLE_KINDS)
199
290
  super
200
291
  @path_index = Set.new()
201
292
  end
@@ -220,7 +311,7 @@ module Puppet::Pops::Loader::ModuleLoaders
220
311
  end
221
312
 
222
313
  def get_contents(effective_path)
223
- Puppet::FileSystem.read(effective_path)
314
+ Puppet::FileSystem.read(effective_path, :encoding => 'utf-8')
224
315
  end
225
316
  end
226
317
 
@@ -235,7 +326,7 @@ module Puppet::Pops::Loader::ModuleLoaders
235
326
  # @api private
236
327
  #
237
328
  class GemBased < FileBased
238
- include Puppet::Pops::Loader::GemSupport
329
+ include GemSupport
239
330
 
240
331
  attr_reader :gem_ref
241
332
 
@@ -246,9 +337,9 @@ module Puppet::Pops::Loader::ModuleLoaders
246
337
  # * gem_ref - [URI, String] gem reference to the root of the module (URI, gem://gemname/optional/path/in/gem), or
247
338
  # just the gem's name as a String.
248
339
  #
249
- def initialize(parent_loader, loaders, module_name, gem_ref, loader_name)
340
+ def initialize(parent_loader, loaders, module_name, gem_ref, loader_name, loadables = LOADABLE_KINDS)
250
341
  @gem_ref = gem_ref
251
- super parent_loader, loaders, module_name, gem_dir(gem_ref), loader_name
342
+ super parent_loader, loaders, module_name, gem_dir(gem_ref), loader_name, loadables
252
343
  end
253
344
 
254
345
  def to_s()
@@ -256,3 +347,5 @@ module Puppet::Pops::Loader::ModuleLoaders
256
347
  end
257
348
  end
258
349
  end
350
+ end
351
+ end
@@ -6,7 +6,7 @@ class Puppet::Pops::Loader::NullLoader < Puppet::Pops::Loader::Loader
6
6
  # Construct a NullLoader, optionally with a parent loader
7
7
  #
8
8
  def initialize(parent_loader=nil, loader_name = "null-loader")
9
- @loader_name = loader_name
9
+ super(loader_name)
10
10
  @parent = parent_loader
11
11
  end
12
12
 
@@ -15,6 +15,14 @@ class Puppet::Pops::Loader::NullLoader < Puppet::Pops::Loader::Loader
15
15
  @parent
16
16
  end
17
17
 
18
+ def find(typed_name)
19
+ if @parent.nil?
20
+ nil
21
+ else
22
+ @parent.find(typed_name)
23
+ end
24
+ end
25
+
18
26
  def load_typed(typed_name)
19
27
  if @parent.nil?
20
28
  nil
@@ -23,6 +31,14 @@ class Puppet::Pops::Loader::NullLoader < Puppet::Pops::Loader::Loader
23
31
  end
24
32
  end
25
33
 
34
+ def loaded_entry(typed_name, check_dependencies = false)
35
+ if @parent.nil?
36
+ nil
37
+ else
38
+ @parent.loaded_entry(typed_name, check_dependencies)
39
+ end
40
+ end
41
+
26
42
  # Has no entries on its own - always nil
27
43
  def get_entry(typed_name)
28
44
  nil
@@ -0,0 +1,24 @@
1
+ module Puppet::Pops::Loader
2
+
3
+ # A PredefinedLoader is a loader that is manually populated with loaded elements
4
+ # before being used. It never loads anything on its own.
5
+ #
6
+ class PredefinedLoader < BaseLoader
7
+ def find(typed_name)
8
+ nil
9
+ end
10
+
11
+ def to_s()
12
+ "(PredefinedLoader '#{loader_name}')"
13
+ end
14
+
15
+ # Allows shadowing since this loader is used internally for things like function local types
16
+ # And they should win as there is otherwise a risk that the local types clash with built in types
17
+ # that were added after the function was written, or by resource types loaded by the 3x auto loader.
18
+ #
19
+ def allow_shadowing?
20
+ true
21
+ end
22
+ end
23
+
24
+ end
@@ -0,0 +1,84 @@
1
+ module Puppet::Pops
2
+ module Loader
3
+ # The PuppetFunctionInstantiator instantiates a Puppet::Functions::PuppetFunction given a Puppet Programming language
4
+ # source that when called evaluates the Puppet logic it contains.
5
+ #
6
+ class PuppetFunctionInstantiator
7
+ # Produces an instance of the Function class with the given typed_name, or fails with an error if the
8
+ # given puppet source does not produce this instance when evaluated.
9
+ #
10
+ # @param loader [Loader] The loader the function is associated with
11
+ # @param typed_name [TypedName] the type / name of the function to load
12
+ # @param source_ref [URI, String] a reference to the source / origin of the puppet code to evaluate
13
+ # @param pp_code_string [String] puppet code in a string
14
+ #
15
+ # @return [Functions::Function] - an instantiated function with global scope closure associated with the given loader
16
+ #
17
+ def self.create(loader, typed_name, source_ref, pp_code_string)
18
+ parser = Parser::EvaluatingParser.new()
19
+
20
+ # parse and validate
21
+ result = parser.parse_string(pp_code_string, source_ref)
22
+ # Only one function is allowed (and no other definitions)
23
+ case result.definitions.size
24
+ when 0
25
+ raise ArgumentError, _("The code loaded from %{source_ref} does not define the function '%{func_name}' - it is empty.") % { source_ref: source_ref, func_name: typed_name.name }
26
+ when 1
27
+ # ok
28
+ else
29
+ raise ArgumentError, _("The code loaded from %{source_ref} must contain only the function '%{type_name}' - it has additional definitions.") % { source_ref: source_ref, type_name: typed_name.name }
30
+ end
31
+ the_function_definition = result.definitions[0]
32
+
33
+ unless the_function_definition.is_a?(Model::FunctionDefinition)
34
+ raise ArgumentError, _("The code loaded from %{source_ref} does not define the function '%{type_name}' - no function found.") % { source_ref: source_ref, type_name: typed_name.name }
35
+ end
36
+ unless the_function_definition.name == typed_name.name
37
+ expected = typed_name.name
38
+ actual = the_function_definition.name
39
+ raise ArgumentError, _("The code loaded from %{source_ref} produced function with the wrong name, expected %{expected}, actual %{actual}") % { source_ref: source_ref, expected: expected, actual: actual }
40
+ end
41
+ unless result.body == the_function_definition
42
+ raise ArgumentError, _("The code loaded from %{source} contains additional logic - can only contain the function %{name}") % { source: source_ref, name: typed_name.name }
43
+ end
44
+
45
+ # Adapt the function definition with loader - this is used from logic contained in it body to find the
46
+ # loader to use when making calls to the new function API. Such logic have a hard time finding the closure (where
47
+ # the loader is known - hence this mechanism
48
+ private_loader = loader.private_loader
49
+ Adapters::LoaderAdapter.adapt(the_function_definition).loader_name = private_loader.loader_name
50
+
51
+ # Cannot bind loaded functions to global scope, that must be done without binding that scope as
52
+ # loaders survive a compilation.
53
+ closure_scope = nil # Puppet.lookup(:global_scope) { {} }
54
+
55
+ created = create_function_class(the_function_definition)
56
+ # create the function instance - it needs closure (scope), and loader (i.e. where it should start searching for things
57
+ # when calling functions etc.
58
+ # It should be bound to global scope
59
+
60
+ created.new(closure_scope, private_loader)
61
+ end
62
+
63
+ # Creates Function class and instantiates it based on a FunctionDefinition model
64
+ # @return [Array<TypedName, Functions.Function>] - array of
65
+ # typed name, and an instantiated function with global scope closure associated with the given loader
66
+ #
67
+ def self.create_from_model(function_definition, loader)
68
+ created = create_function_class(function_definition)
69
+ typed_name = TypedName.new(:function, function_definition.name)
70
+ [typed_name, created.new(nil, loader)]
71
+ end
72
+
73
+ def self.create_function_class(function_definition)
74
+ # Create a 4x function wrapper around a named closure
75
+ Puppet::Functions.create_function(function_definition.name, Puppet::Functions::PuppetFunction) do
76
+ # TODO: should not create a new evaluator per function
77
+ init_dispatch(Evaluator::Closure::Named.new(
78
+ function_definition.name,
79
+ Evaluator::EvaluatorImpl.new(), function_definition))
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,79 @@
1
+ module Puppet::Pops
2
+ module Loader
3
+ # The PuppetResourceTypeImplInstantiator instantiates a Puppet::Pops::ResourceTypeImpl object.
4
+ # given a Puppet Programming language source that when called evaluates the Puppet logic it contains.
5
+ #
6
+ class PuppetResourceTypeImplInstantiator
7
+ # Produces an instance of Puppet::Pops::ResourceTypeImpl, or fails with an error if the
8
+ # given puppet source does not produce such an instance when evaluated.
9
+ #
10
+ # @param loader [Loader] The loader the function is associated with
11
+ # @param typed_name [TypedName] the type / name of the resoure type impl to load
12
+ # @param source_ref [URI, String] a reference to the source / origin of the puppet code to evaluate
13
+ # @param pp_code_string [String] puppet code in a string
14
+ #
15
+ # @return [Puppet::Pops::ResourceTypeImpl] - an instantiated ResourceTypeImpl
16
+ #
17
+ def self.create(loader, typed_name, source_ref, pp_code_string)
18
+ parser = Parser::EvaluatingParser.new()
19
+
20
+ # parse and validate
21
+ model = parser.parse_string(pp_code_string, source_ref)
22
+ statements = if model.is_a?(Model::Program)
23
+ if model.body.is_a?(Model::BlockExpression)
24
+ statements = model.body.statements
25
+ else
26
+ statements = [model.body]
27
+ end
28
+ else
29
+ statements = EMPTY_ARRAY
30
+ end
31
+ statements = statements.reject { |s| s.is_a?(Model::Nop) }
32
+ if statements.empty?
33
+ raise ArgumentError, _("The code loaded from %{source_ref} does not create the resource type '%{type_name}' - it is empty") % { source_ref: source_ref, type_name: typed_name.name }
34
+ end
35
+
36
+ rname = Resource::ResourceTypeImpl._pcore_type.name
37
+ unless statements.find do |s|
38
+ if s.is_a?(Model::CallMethodExpression)
39
+ functor_expr = s.functor_expr
40
+ functor_expr.is_a?(Model::NamedAccessExpression) &&
41
+ functor_expr.left_expr.is_a?(Model::QualifiedReference) &&
42
+ functor_expr.left_expr.cased_value == rname &&
43
+ functor_expr.right_expr.is_a?(Model::QualifiedName) &&
44
+ functor_expr.right_expr.value == _('new')
45
+ else
46
+ false
47
+ end
48
+ end
49
+ raise ArgumentError, _("The code loaded from %{source_ref} does not create the resource type '%{type_name}' - no call to %{rname}.new found.") % { source_ref: source_ref, type_name: typed_name.name, rname: rname }
50
+ end
51
+
52
+ unless statements.size == 1
53
+ raise ArgumentError, _("The code loaded from %{source_ref} must contain only the creation of resource type '%{type_name}' - it has additional logic.") % { source_ref: source_ref, type_name: typed_name.name }
54
+ end
55
+
56
+ closure_scope = Puppet.lookup(:global_scope) { {} }
57
+ resource_type_impl = parser.evaluate(closure_scope, model)
58
+
59
+ unless resource_type_impl.is_a?(Puppet::Pops::Resource::ResourceTypeImpl)
60
+ got = resource_type.class
61
+ raise ArgumentError, _("The code loaded from %{source_ref} does not define the resource type '%{type_name}' - got '%{got}'.") % { source_ref: source_ref, type_name: typed_name.name, got: got }
62
+ end
63
+
64
+ unless resource_type_impl.name == typed_name.name
65
+ expected = typed_name.name
66
+ actual = resource_type_impl.name
67
+ raise ArgumentError, _("The code loaded from %{source_ref} produced resource type with the wrong name, expected '%{expected}', actual '%{actual}'") % { source_ref: source_ref, expected: expected, actual: actual }
68
+ end
69
+
70
+ # Adapt the resource type definition with loader - this is used from logic contained in it body to find the
71
+ # loader to use when making calls to the new function API. Such logic have a hard time finding the closure (where
72
+ # the loader is known - hence this mechanism
73
+ Adapters::LoaderAdapter.adapt(resource_type_impl).loader_name = loader.loader_name
74
+ resource_type_impl
75
+ end
76
+
77
+ end
78
+ end
79
+ end
@@ -14,21 +14,33 @@ class Puppet::Pops::Loader::RubyFunctionInstantiator
14
14
  #
15
15
  def self.create(loader, typed_name, source_ref, ruby_code_string)
16
16
  unless ruby_code_string.is_a?(String) && ruby_code_string =~ /Puppet\:\:Functions\.create_function/
17
- raise ArgumentError, "The code loaded from #{source_ref} does not seem to be a Puppet 4x API function - no create_function call."
17
+ raise ArgumentError, _("The code loaded from %{source_ref} does not seem to be a Puppet 4x API function - no create_function call.") % { source_ref: source_ref }
18
18
  end
19
- created = eval(ruby_code_string, nil, source_ref, 1)
19
+ # make the private loader available in a binding to allow it to be passed on
20
+ loader_for_function = loader.private_loader
21
+ here = get_binding(loader_for_function)
22
+ created = eval(ruby_code_string, here, source_ref, 1)
20
23
  unless created.is_a?(Class)
21
- raise ArgumentError, "The code loaded from #{source_ref} did not produce a Function class when evaluated. Got '#{created.class}'"
24
+ raise ArgumentError, _("The code loaded from %{source_ref} did not produce a Function class when evaluated. Got '%{klass}'") % { source_ref: source_ref, klass: created.class }
22
25
  end
23
26
  unless created.name.to_s == typed_name.name()
24
- raise ArgumentError, "The code loaded from #{source_ref} produced mis-matched name, expected '#{typed_name.name}', got #{created.name}"
27
+ raise ArgumentError, _("The code loaded from %{source_ref} produced mis-matched name, expected '%{type_name}', got %{created_name}") % { source_ref: source_ref, type_name: typed_name.name, created_name: created.name }
25
28
  end
26
29
  # create the function instance - it needs closure (scope), and loader (i.e. where it should start searching for things
27
30
  # when calling functions etc.
28
31
  # It should be bound to global scope
29
32
 
30
- # TODO: Cheating wrt. scope - assuming it is found in the context
31
- closure_scope = Puppet.lookup(:global_scope) { {} }
32
- created.new(closure_scope, loader.private_loader)
33
+ # Sets closure scope to nil, to let it be picked up at runtime from Puppet.lookup(:global_scope)
34
+ # If function definition used the loader from the binding to create a new loader, that loader wins
35
+ created.new(nil, loader_for_function)
36
+ end
37
+
38
+ private
39
+
40
+ # Produces a binding where the given loader is bound as a local variable (loader_injected_arg). This variable can be used in loaded
41
+ # ruby code - e.g. to call Puppet::Function.create_loaded_function(:name, loader,...)
42
+ #
43
+ def self.get_binding(loader_injected_arg)
44
+ binding
33
45
  end
34
46
  end
@@ -0,0 +1,96 @@
1
+ module Puppet::Pops
2
+ module Loader
3
+
4
+ # Runtime3TypeLoader
5
+ # ===
6
+ # Loads a resource type using the 3.x type loader
7
+ #
8
+ # @api private
9
+ class Runtime3TypeLoader < BaseLoader
10
+ def initialize(parent_loader, loaders, environment, env_path)
11
+ super(parent_loader, environment.name)
12
+ @environment = environment
13
+ @resource_3x_loader = env_path.nil? ? nil : ModuleLoaders.pcore_resource_type_loader_from(parent_loader, loaders, env_path)
14
+ end
15
+
16
+ def to_s()
17
+ "(Runtime3TypeLoader '#{loader_name()}')"
18
+ end
19
+
20
+ # Finds typed/named entity in this module
21
+ # @param typed_name [TypedName] the type/name to find
22
+ # @return [Loader::NamedEntry, nil found/created entry, or nil if not found
23
+ #
24
+ def find(typed_name)
25
+ return nil unless typed_name.name_authority == Pcore::RUNTIME_NAME_AUTHORITY
26
+ case typed_name.type
27
+ when :type
28
+ value = nil
29
+ name = typed_name.name
30
+ if @resource_3x_loader.nil?
31
+ value = Puppet::Type.type(name) unless typed_name.qualified?
32
+ if value.nil?
33
+ # Look for a user defined type
34
+ value = @environment.known_resource_types.find_definition(name)
35
+ end
36
+ else
37
+ impl_te = find_impl(TypedName.new(:resource_type_pp, name, typed_name.name_authority))
38
+ value = impl_te.value unless impl_te.nil?
39
+ end
40
+
41
+ if value.nil?
42
+ # Cache the fact that it wasn't found
43
+ set_entry(typed_name, nil)
44
+ return nil
45
+ end
46
+
47
+ # Loaded types doesn't have the same life cycle as this loader, so we must start by
48
+ # checking if the type was created. If it was, an entry will already be stored in
49
+ # this loader. If not, then it was created before this loader was instantiated and
50
+ # we must therefore add it.
51
+ te = get_entry(typed_name)
52
+ te = set_entry(typed_name, Types::TypeFactory.resource(value.name.to_s)) if te.nil? || te.value.nil?
53
+ te
54
+ when :resource_type_pp
55
+ @resource_3x_loader.nil? ? nil : find_impl(typed_name)
56
+ else
57
+ nil
58
+ end
59
+ end
60
+
61
+ # Find the implementation for the resource type by first consulting the internal loader for pp defined 'Puppet::Resource::ResourceType3'
62
+ # instances, then check for a Puppet::Type and lastly check for a defined type.
63
+ #
64
+ def find_impl(typed_name)
65
+ name = typed_name.name
66
+ te = StaticLoader::BUILTIN_TYPE_NAMES_LC.include?(name) ? nil : @resource_3x_loader.load_typed(typed_name)
67
+ if te.nil? || te.value.nil?
68
+ # Look for Puppet::Type
69
+ value = Puppet::Type.type(name) unless typed_name.qualified?
70
+ if value.nil?
71
+ # Look for a user defined type
72
+ value = @environment.known_resource_types.find_definition(name)
73
+ if value.nil?
74
+ # Cache the fact that it wasn't found
75
+ @resource_3x_loader.set_entry(typed_name, nil)
76
+ return nil
77
+ end
78
+ end
79
+ te = @resource_3x_loader.get_entry(typed_name)
80
+ te = @resource_3x_loader.set_entry(typed_name, value) if te.nil? || te.value.nil?
81
+ end
82
+ te
83
+ end
84
+ private :find_impl
85
+
86
+ # Allows shadowing since this loader is populalted with all loaded resource types at time
87
+ # of loading. This loading will, for built in types override the aliases configured in the static
88
+ # loader.
89
+ #
90
+ def allow_shadowing?
91
+ true
92
+ end
93
+
94
+ end
95
+ end
96
+ end