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