puppet 3.4.3 → 3.5.0.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (811) hide show
  1. data/CONTRIBUTING.md +6 -6
  2. data/Gemfile +22 -16
  3. data/LICENSE +1 -1
  4. data/README.md +33 -11
  5. data/Rakefile +1 -1
  6. data/conf/auth.conf +4 -0
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/debian/control +6 -6
  9. data/ext/ips/transforms +1 -1
  10. data/ext/nagios/naggen +1 -1
  11. data/ext/project_data.yaml +21 -1
  12. data/ext/puppet-test +3 -3
  13. data/ext/redhat/puppet.spec.erb +28 -2
  14. data/ext/suse/puppet.spec +1 -1
  15. data/ext/upload_facts.rb +1 -1
  16. data/ext/windows/service/daemon.rb +99 -20
  17. data/lib/hiera_puppet.rb +2 -2
  18. data/lib/puppet.rb +68 -5
  19. data/lib/puppet/agent.rb +5 -1
  20. data/lib/puppet/application.rb +20 -11
  21. data/lib/puppet/application/agent.rb +1 -1
  22. data/lib/puppet/application/apply.rb +61 -41
  23. data/lib/puppet/application/cert.rb +3 -3
  24. data/lib/puppet/application/device.rb +7 -8
  25. data/lib/puppet/application/doc.rb +1 -1
  26. data/lib/puppet/application/filebucket.rb +3 -3
  27. data/lib/puppet/application/kick.rb +2 -2
  28. data/lib/puppet/application/master.rb +1 -1
  29. data/lib/puppet/application/queue.rb +9 -9
  30. data/lib/puppet/application/resource.rb +2 -2
  31. data/lib/puppet/bindings.rb +6 -6
  32. data/lib/puppet/configurer.rb +17 -14
  33. data/lib/puppet/configurer/fact_handler.rb +1 -1
  34. data/lib/puppet/confine/any.rb +26 -0
  35. data/lib/puppet/confine/exists.rb +1 -1
  36. data/lib/puppet/confiner.rb +1 -0
  37. data/lib/puppet/context.rb +55 -0
  38. data/lib/puppet/context/trusted_information.rb +56 -0
  39. data/lib/puppet/defaults.rb +97 -26
  40. data/lib/puppet/environments.rb +187 -0
  41. data/lib/puppet/error.rb +2 -1
  42. data/lib/puppet/external/pson/common.rb +1 -1
  43. data/lib/puppet/external/pson/pure/generator.rb +1 -1
  44. data/lib/puppet/external/pson/pure/parser.rb +1 -1
  45. data/lib/puppet/face/config.rb +73 -15
  46. data/lib/puppet/face/file/store.rb +1 -1
  47. data/lib/puppet/face/help.rb +2 -1
  48. data/lib/puppet/face/help/action.erb +1 -0
  49. data/lib/puppet/face/help/face.erb +1 -0
  50. data/lib/puppet/face/help/global.erb +1 -0
  51. data/lib/puppet/face/help/man.erb +9 -8
  52. data/lib/puppet/face/module/list.rb +13 -7
  53. data/lib/puppet/face/node/clean.rb +2 -2
  54. data/lib/puppet/face/parser.rb +11 -5
  55. data/lib/puppet/face/status.rb +1 -1
  56. data/lib/puppet/feature/external_facts.rb +2 -2
  57. data/lib/puppet/feature/libuser.rb +1 -1
  58. data/lib/puppet/feature/msgpack.rb +2 -0
  59. data/lib/puppet/feature/rails.rb +2 -2
  60. data/lib/puppet/file_bucket/dipper.rb +9 -9
  61. data/lib/puppet/file_bucket/file.rb +9 -5
  62. data/lib/puppet/file_serving/base.rb +1 -1
  63. data/lib/puppet/file_serving/configuration.rb +1 -1
  64. data/lib/puppet/file_serving/configuration/parser.rb +3 -3
  65. data/lib/puppet/file_serving/content.rb +2 -2
  66. data/lib/puppet/file_serving/fileset.rb +4 -4
  67. data/lib/puppet/file_serving/metadata.rb +69 -15
  68. data/lib/puppet/file_serving/mount/file.rb +1 -1
  69. data/lib/puppet/file_system.rb +361 -1
  70. data/lib/puppet/file_system/file18.rb +3 -3
  71. data/lib/puppet/file_system/file19.rb +3 -3
  72. data/lib/puppet/file_system/file19windows.rb +18 -23
  73. data/lib/puppet/file_system/file_impl.rb +145 -0
  74. data/lib/puppet/file_system/memory_file.rb +23 -9
  75. data/lib/puppet/file_system/memory_impl.rb +64 -0
  76. data/lib/puppet/forge.rb +4 -3
  77. data/lib/puppet/forge/repository.rb +0 -1
  78. data/lib/puppet/graph/relationship_graph.rb +7 -7
  79. data/lib/puppet/indirector.rb +1 -0
  80. data/lib/puppet/indirector/catalog/compiler.rb +3 -30
  81. data/lib/puppet/indirector/catalog/msgpack.rb +6 -0
  82. data/lib/puppet/indirector/catalog/static_compiler.rb +3 -7
  83. data/lib/puppet/indirector/data_binding/hiera.rb +1 -1
  84. data/lib/puppet/indirector/direct_file_server.rb +2 -2
  85. data/lib/puppet/indirector/exec.rb +1 -1
  86. data/lib/puppet/indirector/face.rb +3 -2
  87. data/lib/puppet/indirector/facts/facter.rb +1 -1
  88. data/lib/puppet/indirector/file_bucket_file/file.rb +25 -15
  89. data/lib/puppet/indirector/file_metadata/file.rb +1 -1
  90. data/lib/puppet/indirector/file_server.rb +1 -1
  91. data/lib/puppet/indirector/indirection.rb +1 -1
  92. data/lib/puppet/indirector/json.rb +4 -4
  93. data/lib/puppet/indirector/key/file.rb +8 -5
  94. data/lib/puppet/indirector/ldap.rb +1 -1
  95. data/lib/puppet/indirector/memory.rb +4 -0
  96. data/lib/puppet/indirector/msgpack.rb +82 -0
  97. data/lib/puppet/indirector/node/exec.rb +1 -1
  98. data/lib/puppet/indirector/node/ldap.rb +3 -3
  99. data/lib/puppet/indirector/node/msgpack.rb +7 -0
  100. data/lib/puppet/indirector/node/yaml.rb +15 -0
  101. data/lib/puppet/indirector/queue.rb +3 -2
  102. data/lib/puppet/indirector/report/msgpack.rb +11 -0
  103. data/lib/puppet/indirector/request.rb +17 -20
  104. data/lib/puppet/indirector/resource/rest.rb +1 -1
  105. data/lib/puppet/indirector/resource_type/parser.rb +3 -13
  106. data/lib/puppet/indirector/rest.rb +6 -7
  107. data/lib/puppet/indirector/ssl_file.rb +7 -7
  108. data/lib/puppet/indirector/yaml.rb +9 -13
  109. data/lib/puppet/metatype/manager.rb +12 -7
  110. data/lib/puppet/module.rb +14 -9
  111. data/lib/puppet/module_tool.rb +21 -26
  112. data/lib/puppet/module_tool/applications/application.rb +1 -1
  113. data/lib/puppet/module_tool/applications/generator.rb +2 -1
  114. data/lib/puppet/module_tool/applications/installer.rb +9 -4
  115. data/lib/puppet/module_tool/applications/uninstaller.rb +10 -7
  116. data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
  117. data/lib/puppet/module_tool/applications/upgrader.rb +11 -8
  118. data/lib/puppet/module_tool/checksums.rb +1 -1
  119. data/lib/puppet/module_tool/contents_description.rb +2 -0
  120. data/lib/puppet/module_tool/dependency.rb +4 -5
  121. data/lib/puppet/module_tool/errors.rb +2 -0
  122. data/lib/puppet/module_tool/install_directory.rb +3 -0
  123. data/lib/puppet/module_tool/metadata.rb +3 -5
  124. data/lib/puppet/module_tool/modulefile.rb +3 -0
  125. data/lib/puppet/module_tool/shared_behaviors.rb +6 -1
  126. data/lib/puppet/module_tool/skeleton.rb +3 -0
  127. data/lib/puppet/module_tool/tar.rb +3 -0
  128. data/lib/puppet/network/auth_config_parser.rb +1 -1
  129. data/lib/puppet/network/authconfig.rb +5 -2
  130. data/lib/puppet/network/authentication.rb +7 -2
  131. data/lib/puppet/network/authorization.rb +2 -2
  132. data/lib/puppet/network/format_support.rb +4 -0
  133. data/lib/puppet/network/formats.rb +9 -14
  134. data/lib/puppet/network/http.rb +11 -0
  135. data/lib/puppet/network/http/api.rb +0 -2
  136. data/lib/puppet/network/http/api/v1.rb +146 -11
  137. data/lib/puppet/network/http/api/v2.rb +32 -0
  138. data/lib/puppet/network/http/api/v2/authorization.rb +13 -0
  139. data/lib/puppet/network/http/api/v2/environments.rb +21 -0
  140. data/lib/puppet/network/http/connection.rb +94 -37
  141. data/lib/puppet/network/http/error.rb +69 -0
  142. data/lib/puppet/network/http/handler.rb +28 -196
  143. data/lib/puppet/network/http/issues.rb +9 -0
  144. data/lib/puppet/network/http/memory_response.rb +13 -0
  145. data/lib/puppet/network/http/rack/rest.rb +10 -18
  146. data/lib/puppet/network/http/request.rb +56 -0
  147. data/lib/puppet/network/http/response.rb +11 -0
  148. data/lib/puppet/network/http/route.rb +91 -0
  149. data/lib/puppet/network/http/webrick.rb +1 -1
  150. data/lib/puppet/network/http/webrick/rest.rb +7 -12
  151. data/lib/puppet/network/http_pool.rb +3 -3
  152. data/lib/puppet/network/rights.rb +4 -4
  153. data/lib/puppet/node.rb +23 -14
  154. data/lib/puppet/node/environment.rb +149 -125
  155. data/lib/puppet/node/facts.rb +6 -5
  156. data/lib/puppet/parameter.rb +1 -1
  157. data/lib/puppet/parser/ast.rb +1 -1
  158. data/lib/puppet/parser/ast/block_expression.rb +1 -6
  159. data/lib/puppet/parser/ast/collexpr.rb +54 -2
  160. data/lib/puppet/parser/ast/lambda.rb +9 -0
  161. data/lib/puppet/parser/ast/leaf.rb +15 -0
  162. data/lib/puppet/parser/ast/pops_bridge.rb +168 -0
  163. data/lib/puppet/parser/code_merger.rb +13 -0
  164. data/lib/puppet/parser/collector.rb +1 -1
  165. data/lib/puppet/parser/compiler.rb +28 -30
  166. data/lib/puppet/parser/e4_parser_adapter.rb +81 -0
  167. data/lib/puppet/parser/e_parser_adapter.rb +0 -1
  168. data/lib/puppet/parser/files.rb +12 -7
  169. data/lib/puppet/parser/functions.rb +36 -29
  170. data/lib/puppet/parser/functions/collect.rb +1 -1
  171. data/lib/puppet/parser/functions/defined.rb +40 -16
  172. data/lib/puppet/parser/functions/each.rb +55 -41
  173. data/lib/puppet/parser/functions/epp.rb +41 -0
  174. data/lib/puppet/parser/functions/extlookup.rb +2 -2
  175. data/lib/puppet/parser/functions/file.rb +1 -1
  176. data/lib/puppet/parser/functions/filter.rb +68 -16
  177. data/lib/puppet/parser/functions/generate.rb +1 -1
  178. data/lib/puppet/parser/functions/include.rb +3 -2
  179. data/lib/puppet/parser/functions/inline_epp.rb +79 -0
  180. data/lib/puppet/parser/functions/inline_template.rb +1 -1
  181. data/lib/puppet/parser/functions/lookup.rb +127 -27
  182. data/lib/puppet/parser/functions/map.rb +64 -12
  183. data/lib/puppet/parser/functions/reduce.rb +40 -16
  184. data/lib/puppet/parser/functions/select.rb +1 -1
  185. data/lib/puppet/parser/functions/slice.rb +42 -23
  186. data/lib/puppet/parser/grammar.ra +3 -0
  187. data/lib/puppet/parser/lexer.rb +10 -9
  188. data/lib/puppet/parser/parser.rb +15 -12
  189. data/lib/puppet/parser/parser_factory.rb +26 -1
  190. data/lib/puppet/parser/parser_support.rb +13 -4
  191. data/lib/puppet/parser/resource.rb +1 -1
  192. data/lib/puppet/parser/scope.rb +246 -97
  193. data/lib/puppet/parser/templatewrapper.rb +1 -1
  194. data/lib/puppet/parser/type_loader.rb +13 -2
  195. data/lib/puppet/pops.rb +15 -1
  196. data/lib/puppet/pops/adapters.rb +64 -32
  197. data/lib/puppet/pops/binder/binder.rb +122 -150
  198. data/lib/puppet/pops/binder/binder_issues.rb +1 -21
  199. data/lib/puppet/pops/binder/bindings_checker.rb +0 -20
  200. data/lib/puppet/pops/binder/bindings_composer.rb +4 -70
  201. data/lib/puppet/pops/binder/bindings_factory.rb +16 -58
  202. data/lib/puppet/pops/binder/bindings_label_provider.rb +0 -3
  203. data/lib/puppet/pops/binder/bindings_loader.rb +13 -4
  204. data/lib/puppet/pops/binder/bindings_model.rb +17 -31
  205. data/lib/puppet/pops/binder/bindings_model_dumper.rb +2 -20
  206. data/lib/puppet/pops/binder/config/binder_config.rb +8 -40
  207. data/lib/puppet/pops/binder/config/binder_config_checker.rb +2 -43
  208. data/lib/puppet/pops/binder/config/issues.rb +1 -21
  209. data/lib/puppet/pops/binder/injector.rb +86 -7
  210. data/lib/puppet/pops/binder/injector_entry.rb +6 -2
  211. data/lib/puppet/pops/binder/key_factory.rb +7 -1
  212. data/lib/puppet/pops/binder/lookup.rb +191 -0
  213. data/lib/puppet/pops/binder/producers.rb +5 -5
  214. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +2 -3
  215. data/lib/puppet/pops/binder/system_bindings.rb +4 -16
  216. data/lib/puppet/pops/containment.rb +72 -5
  217. data/lib/puppet/pops/evaluator/access_operator.rb +548 -0
  218. data/lib/puppet/pops/evaluator/closure.rb +57 -0
  219. data/lib/puppet/pops/evaluator/compare_operator.rb +168 -0
  220. data/lib/puppet/pops/evaluator/epp_evaluator.rb +87 -0
  221. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1069 -0
  222. data/lib/puppet/pops/evaluator/external_syntax_support.rb +49 -0
  223. data/lib/puppet/pops/evaluator/relationship_operator.rb +156 -0
  224. data/lib/puppet/pops/evaluator/runtime3_support.rb +489 -0
  225. data/lib/puppet/pops/issue_reporter.rb +8 -4
  226. data/lib/puppet/pops/issues.rb +199 -4
  227. data/lib/puppet/pops/label_provider.rb +5 -0
  228. data/lib/puppet/pops/model/ast_transformer.rb +55 -31
  229. data/lib/puppet/pops/model/ast_tree_dumper.rb +9 -1
  230. data/lib/puppet/pops/model/factory.rb +265 -111
  231. data/lib/puppet/pops/model/model.rb +179 -140
  232. data/lib/puppet/pops/model/model_label_provider.rb +38 -9
  233. data/lib/puppet/pops/model/model_tree_dumper.rb +38 -13
  234. data/lib/puppet/pops/parser/code_merger.rb +17 -0
  235. data/lib/puppet/pops/parser/egrammar.ra +110 -61
  236. data/lib/puppet/pops/parser/eparser.rb +1415 -1092
  237. data/lib/puppet/pops/parser/epp_parser.rb +51 -0
  238. data/lib/puppet/pops/parser/epp_support.rb +247 -0
  239. data/lib/puppet/pops/parser/evaluating_parser.rb +53 -15
  240. data/lib/puppet/pops/parser/heredoc_support.rb +139 -0
  241. data/lib/puppet/pops/parser/interpolation_support.rb +227 -0
  242. data/lib/puppet/pops/parser/lexer.rb +83 -192
  243. data/lib/puppet/pops/parser/lexer2.rb +684 -0
  244. data/lib/puppet/pops/parser/lexer_support.rb +107 -0
  245. data/lib/puppet/pops/parser/locatable.rb +23 -0
  246. data/lib/puppet/pops/parser/locator.rb +291 -0
  247. data/lib/puppet/pops/parser/makefile +1 -8
  248. data/lib/puppet/pops/parser/parser_support.rb +76 -48
  249. data/lib/puppet/pops/parser/slurp_support.rb +95 -0
  250. data/lib/puppet/pops/patterns.rb +13 -4
  251. data/lib/puppet/pops/types/class_loader.rb +2 -2
  252. data/lib/puppet/pops/types/enumeration.rb +34 -0
  253. data/lib/puppet/pops/types/type_calculator.rb +983 -58
  254. data/lib/puppet/pops/types/type_factory.rb +203 -15
  255. data/lib/puppet/pops/types/type_parser.rb +355 -12
  256. data/lib/puppet/pops/types/types.rb +314 -24
  257. data/lib/puppet/pops/utils.rb +23 -7
  258. data/lib/puppet/pops/validation.rb +14 -8
  259. data/lib/puppet/pops/validation/checker3_1.rb +17 -12
  260. data/lib/puppet/pops/validation/checker4_0.rb +514 -0
  261. data/lib/puppet/pops/validation/validator_factory_4_0.rb +31 -0
  262. data/lib/puppet/pops/visitor.rb +146 -4
  263. data/lib/puppet/property.rb +1 -1
  264. data/lib/puppet/property/ensure.rb +1 -1
  265. data/lib/puppet/provider.rb +47 -26
  266. data/lib/puppet/provider/aixobject.rb +3 -3
  267. data/lib/puppet/provider/augeas/augeas.rb +11 -11
  268. data/lib/puppet/provider/cron/crontab.rb +10 -1
  269. data/lib/puppet/provider/exec.rb +1 -1
  270. data/lib/puppet/provider/exec/posix.rb +1 -1
  271. data/lib/puppet/provider/exec/windows.rb +1 -1
  272. data/lib/puppet/provider/file/posix.rb +2 -2
  273. data/lib/puppet/provider/file/windows.rb +15 -9
  274. data/lib/puppet/provider/group/aix.rb +2 -2
  275. data/lib/puppet/provider/macauthorization/macauthorization.rb +3 -3
  276. data/lib/puppet/provider/mount.rb +7 -0
  277. data/lib/puppet/provider/mount/parsed.rb +0 -1
  278. data/lib/puppet/provider/naginator.rb +1 -1
  279. data/lib/puppet/provider/nameservice.rb +3 -3
  280. data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
  281. data/lib/puppet/provider/package/aix.rb +1 -1
  282. data/lib/puppet/provider/package/appdmg.rb +1 -4
  283. data/lib/puppet/provider/package/apple.rb +1 -1
  284. data/lib/puppet/provider/package/apt.rb +1 -1
  285. data/lib/puppet/provider/package/blastwave.rb +1 -1
  286. data/lib/puppet/provider/package/fink.rb +1 -1
  287. data/lib/puppet/provider/package/gem.rb +3 -3
  288. data/lib/puppet/provider/package/openbsd.rb +6 -4
  289. data/lib/puppet/provider/package/pacman.rb +58 -5
  290. data/lib/puppet/provider/package/pip.rb +2 -2
  291. data/lib/puppet/provider/package/pkgdmg.rb +25 -10
  292. data/lib/puppet/provider/package/pkgin.rb +48 -23
  293. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  294. data/lib/puppet/provider/package/ports.rb +1 -1
  295. data/lib/puppet/provider/package/portupgrade.rb +7 -7
  296. data/lib/puppet/provider/package/rpm.rb +16 -8
  297. data/lib/puppet/provider/package/windows.rb +1 -1
  298. data/lib/puppet/provider/package/windows/package.rb +1 -1
  299. data/lib/puppet/provider/parsedfile.rb +1 -1
  300. data/lib/puppet/provider/selboolean/getsetsebool.rb +1 -1
  301. data/lib/puppet/provider/selmodule/semodule.rb +5 -5
  302. data/lib/puppet/provider/service/base.rb +1 -1
  303. data/lib/puppet/provider/service/bsd.rb +3 -3
  304. data/lib/puppet/provider/service/daemontools.rb +20 -20
  305. data/lib/puppet/provider/service/debian.rb +1 -1
  306. data/lib/puppet/provider/service/freebsd.rb +3 -3
  307. data/lib/puppet/provider/service/gentoo.rb +2 -2
  308. data/lib/puppet/provider/service/init.rb +5 -5
  309. data/lib/puppet/provider/service/launchd.rb +4 -4
  310. data/lib/puppet/provider/service/redhat.rb +2 -2
  311. data/lib/puppet/provider/service/runit.rb +4 -4
  312. data/lib/puppet/provider/service/service.rb +3 -4
  313. data/lib/puppet/provider/service/smf.rb +1 -1
  314. data/lib/puppet/provider/service/src.rb +3 -3
  315. data/lib/puppet/provider/service/systemd.rb +4 -4
  316. data/lib/puppet/provider/service/upstart.rb +22 -7
  317. data/lib/puppet/provider/service/windows.rb +7 -7
  318. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +3 -3
  319. data/lib/puppet/provider/user/aix.rb +5 -5
  320. data/lib/puppet/provider/user/directoryservice.rb +8 -5
  321. data/lib/puppet/provider/user/ldap.rb +1 -1
  322. data/lib/puppet/provider/user/pw.rb +1 -1
  323. data/lib/puppet/provider/user/user_role_add.rb +2 -2
  324. data/lib/puppet/provider/user/useradd.rb +19 -5
  325. data/lib/puppet/provider/yumrepo/inifile.rb +187 -0
  326. data/lib/puppet/provider/zone/solaris.rb +4 -4
  327. data/lib/puppet/rails.rb +16 -11
  328. data/lib/puppet/rails/benchmark.rb +1 -1
  329. data/lib/puppet/rails/resource.rb +5 -1
  330. data/lib/puppet/reference/configuration.rb +1 -1
  331. data/lib/puppet/reference/report.rb +1 -1
  332. data/lib/puppet/relationship.rb +10 -5
  333. data/lib/puppet/reports/http.rb +8 -2
  334. data/lib/puppet/reports/rrdgraph.rb +1 -1
  335. data/lib/puppet/reports/store.rb +3 -3
  336. data/lib/puppet/reports/tagmail.rb +4 -4
  337. data/lib/puppet/resource.rb +37 -44
  338. data/lib/puppet/resource/catalog.rb +18 -20
  339. data/lib/puppet/resource/status.rb +7 -6
  340. data/lib/puppet/resource/type.rb +6 -5
  341. data/lib/puppet/resource/type_collection.rb +2 -2
  342. data/lib/puppet/run.rb +9 -8
  343. data/lib/puppet/settings.rb +395 -244
  344. data/lib/puppet/settings/base_setting.rb +10 -4
  345. data/lib/puppet/settings/config_file.rb +81 -44
  346. data/lib/puppet/settings/directory_setting.rb +1 -2
  347. data/lib/puppet/settings/file_setting.rb +12 -5
  348. data/lib/puppet/settings/ini_file.rb +171 -0
  349. data/lib/puppet/ssl/base.rb +4 -0
  350. data/lib/puppet/ssl/certificate_authority.rb +16 -11
  351. data/lib/puppet/ssl/certificate_authority/interface.rb +3 -2
  352. data/lib/puppet/ssl/certificate_factory.rb +50 -5
  353. data/lib/puppet/ssl/certificate_request.rb +2 -2
  354. data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
  355. data/lib/puppet/ssl/certificate_revocation_list.rb +3 -1
  356. data/lib/puppet/ssl/host.rb +9 -8
  357. data/lib/puppet/ssl/inventory.rb +1 -1
  358. data/lib/puppet/ssl/key.rb +1 -1
  359. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  360. data/lib/puppet/status.rb +8 -7
  361. data/lib/puppet/test/test_helper.rb +35 -4
  362. data/lib/puppet/transaction/event.rb +6 -5
  363. data/lib/puppet/transaction/report.rb +10 -10
  364. data/lib/puppet/type.rb +1 -3
  365. data/lib/puppet/type/augeas.rb +2 -1
  366. data/lib/puppet/type/cron.rb +41 -11
  367. data/lib/puppet/type/exec.rb +5 -5
  368. data/lib/puppet/type/file.rb +42 -4
  369. data/lib/puppet/type/file/content.rb +5 -6
  370. data/lib/puppet/type/file/ensure.rb +3 -3
  371. data/lib/puppet/type/file/source.rb +12 -6
  372. data/lib/puppet/type/file/target.rb +5 -5
  373. data/lib/puppet/type/k5login.rb +4 -4
  374. data/lib/puppet/type/mount.rb +1 -1
  375. data/lib/puppet/type/package.rb +79 -3
  376. data/lib/puppet/type/resources.rb +34 -5
  377. data/lib/puppet/type/selboolean.rb +1 -1
  378. data/lib/puppet/type/selmodule.rb +1 -1
  379. data/lib/puppet/type/ssh_authorized_key.rb +2 -1
  380. data/lib/puppet/type/sshkey.rb +2 -1
  381. data/lib/puppet/type/tidy.rb +1 -1
  382. data/lib/puppet/type/user.rb +4 -1
  383. data/lib/puppet/type/yumrepo.rb +219 -344
  384. data/lib/puppet/type/zone.rb +15 -5
  385. data/lib/puppet/util.rb +14 -13
  386. data/lib/puppet/util/adsi.rb +19 -3
  387. data/lib/puppet/util/autoload.rb +27 -24
  388. data/lib/puppet/util/backups.rb +6 -6
  389. data/lib/puppet/util/checksums.rb +2 -2
  390. data/lib/puppet/util/classgen.rb +1 -1
  391. data/lib/puppet/util/colors.rb +4 -12
  392. data/lib/puppet/util/command_line.rb +2 -2
  393. data/lib/puppet/util/command_line/trollop.rb +3 -3
  394. data/lib/puppet/util/docs.rb +2 -2
  395. data/lib/puppet/util/errors.rb +8 -1
  396. data/lib/puppet/util/execution.rb +12 -5
  397. data/lib/puppet/util/filetype.rb +5 -5
  398. data/lib/puppet/util/inifile.rb +19 -4
  399. data/lib/puppet/util/instrumentation/data.rb +5 -0
  400. data/lib/puppet/util/instrumentation/indirection_probe.rb +6 -1
  401. data/lib/puppet/util/instrumentation/listener.rb +6 -1
  402. data/lib/puppet/util/json_lockfile.rb +4 -1
  403. data/lib/puppet/util/ldap/connection.rb +1 -1
  404. data/lib/puppet/util/lockfile.rb +10 -6
  405. data/lib/puppet/util/log.rb +6 -1
  406. data/lib/puppet/util/log/destinations.rb +2 -2
  407. data/lib/puppet/util/metric.rb +9 -4
  408. data/lib/puppet/util/nagios_maker.rb +26 -1
  409. data/lib/puppet/util/network_device.rb +1 -1
  410. data/lib/puppet/util/network_device/config.rb +1 -1
  411. data/lib/puppet/util/network_device/transport/ssh.rb +3 -3
  412. data/lib/puppet/util/plugins.rb +1 -1
  413. data/lib/puppet/util/profiler.rb +13 -1
  414. data/lib/puppet/util/pson.rb +1 -1
  415. data/lib/puppet/util/queue/stomp.rb +2 -2
  416. data/lib/puppet/util/rdoc.rb +1 -1
  417. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
  418. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +19 -19
  419. data/lib/puppet/util/reference.rb +1 -1
  420. data/lib/puppet/util/resource_template.rb +1 -1
  421. data/lib/puppet/util/retryaction.rb +1 -1
  422. data/lib/puppet/util/selinux.rb +2 -2
  423. data/lib/puppet/util/storage.rb +3 -3
  424. data/lib/puppet/util/symbolic_file_mode.rb +1 -1
  425. data/lib/puppet/util/tag_set.rb +15 -3
  426. data/lib/puppet/util/tagging.rb +12 -17
  427. data/lib/puppet/util/watched_file.rb +1 -1
  428. data/lib/puppet/util/watcher.rb +1 -1
  429. data/lib/puppet/util/windows/error.rb +2 -2
  430. data/lib/puppet/util/windows/file.rb +20 -4
  431. data/lib/puppet/util/windows/registry.rb +2 -2
  432. data/lib/puppet/vendor/safe_yaml/CHANGES.md +1 -1
  433. data/lib/puppet/version.rb +1 -1
  434. data/lib/puppetx.rb +1 -21
  435. data/lib/puppetx/puppet/syntax_checker.rb +1 -1
  436. data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +9 -11
  437. data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +2 -0
  438. data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +6 -0
  439. data/spec/fixtures/{unit/pops/binder/hiera2/yaml_backend/empty/common.yaml → integration/node/environment/sitedir/03_empty.pp} +0 -0
  440. data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +2 -0
  441. data/spec/fixtures/integration/provider/cron/crontab/purged +8 -0
  442. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +1 -1
  443. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +3 -12
  444. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +10 -0
  445. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +20 -0
  446. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/{awesome/lib/puppetx/awesome → awesome2/lib/puppetx/awesome2}/echo_scheme_handler.rb +2 -2
  447. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +5 -0
  448. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +6 -0
  449. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +2 -2
  450. data/spec/fixtures/unit/provider/service/systemd/{list_units → list_units_services} +0 -1
  451. data/spec/integration/agent/logging_spec.rb +1 -1
  452. data/spec/integration/application/apply_spec.rb +78 -3
  453. data/spec/integration/application/doc_spec.rb +3 -2
  454. data/spec/integration/configurer_spec.rb +5 -3
  455. data/spec/integration/directory_environments_spec.rb +50 -0
  456. data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
  457. data/spec/integration/indirector/file_content/file_server_spec.rb +4 -5
  458. data/spec/integration/network/authconfig_spec.rb +4 -4
  459. data/spec/integration/network/formats_spec.rb +1 -1
  460. data/spec/integration/node/environment_spec.rb +67 -15
  461. data/spec/integration/node/facts_spec.rb +1 -1
  462. data/spec/integration/node_spec.rb +1 -1
  463. data/spec/integration/parser/catalog_spec.rb +100 -60
  464. data/spec/integration/parser/compiler_spec.rb +102 -13
  465. data/spec/integration/parser/future_compiler_spec.rb +416 -0
  466. data/spec/integration/parser/parser_spec.rb +44 -105
  467. data/spec/integration/parser/scope_spec.rb +614 -528
  468. data/spec/integration/provider/cron/crontab_spec.rb +21 -0
  469. data/spec/integration/provider/mount_spec.rb +15 -2
  470. data/spec/integration/resource/catalog_spec.rb +1 -1
  471. data/spec/integration/resource/type_collection_spec.rb +3 -4
  472. data/spec/integration/ssl/autosign_spec.rb +1 -1
  473. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  474. data/spec/integration/ssl/host_spec.rb +1 -1
  475. data/spec/integration/transaction_spec.rb +13 -13
  476. data/spec/integration/type/exec_spec.rb +2 -2
  477. data/spec/integration/type/file_spec.rb +114 -41
  478. data/spec/integration/type/nagios_spec.rb +80 -0
  479. data/spec/integration/type/tidy_spec.rb +2 -2
  480. data/spec/integration/util/execution_spec.rb +17 -0
  481. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  482. data/spec/integration/util/settings_spec.rb +1 -1
  483. data/spec/integration/util/windows/security_spec.rb +27 -2
  484. data/spec/lib/matchers/include.rb +27 -0
  485. data/spec/lib/matchers/include_spec.rb +32 -0
  486. data/spec/lib/matchers/json.rb +135 -79
  487. data/spec/lib/matchers/match_tokens2.rb +74 -0
  488. data/spec/lib/matchers/resource.rb +35 -0
  489. data/spec/lib/puppet/indirector/indirector_testing/memory.rb +7 -0
  490. data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +6 -0
  491. data/spec/lib/puppet/indirector_testing.rb +12 -2
  492. data/spec/lib/puppet_spec/files.rb +1 -0
  493. data/spec/lib/puppet_spec/matchers.rb +5 -0
  494. data/spec/lib/puppet_spec/modules.rb +1 -1
  495. data/spec/lib/puppet_spec/scope.rb +14 -0
  496. data/spec/shared_behaviours/file_server_terminus.rb +2 -2
  497. data/spec/spec_helper.rb +47 -17
  498. data/spec/unit/agent_spec.rb +8 -1
  499. data/spec/unit/application/agent_spec.rb +5 -4
  500. data/spec/unit/application/apply_spec.rb +34 -15
  501. data/spec/unit/application/device_spec.rb +27 -32
  502. data/spec/unit/application/doc_spec.rb +4 -4
  503. data/spec/unit/application/filebucket_spec.rb +1 -1
  504. data/spec/unit/application/master_spec.rb +2 -2
  505. data/spec/unit/application_spec.rb +1 -1
  506. data/spec/unit/configurer/downloader_spec.rb +1 -1
  507. data/spec/unit/configurer/fact_handler_spec.rb +5 -16
  508. data/spec/unit/configurer_spec.rb +2 -2
  509. data/spec/unit/confine/exists_spec.rb +5 -5
  510. data/spec/unit/context/trusted_information_spec.rb +124 -0
  511. data/spec/unit/context_spec.rb +74 -0
  512. data/spec/unit/environments_spec.rb +126 -0
  513. data/spec/unit/face/config_spec.rb +31 -16
  514. data/spec/unit/face/module/build_spec.rb +1 -0
  515. data/spec/unit/face/module/install_spec.rb +21 -104
  516. data/spec/unit/face/module/list_spec.rb +52 -36
  517. data/spec/unit/face/module/uninstall_spec.rb +18 -25
  518. data/spec/unit/face/parser_spec.rb +39 -23
  519. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  520. data/spec/unit/file_serving/base_spec.rb +9 -13
  521. data/spec/unit/file_serving/configuration/parser_spec.rb +8 -2
  522. data/spec/unit/file_serving/configuration_spec.rb +7 -7
  523. data/spec/unit/file_serving/content_spec.rb +7 -12
  524. data/spec/unit/file_serving/fileset_spec.rb +49 -53
  525. data/spec/unit/file_serving/metadata_spec.rb +83 -32
  526. data/spec/unit/file_serving/mount/file_spec.rb +10 -10
  527. data/spec/unit/file_system/tempfile_spec.rb +3 -3
  528. data/spec/unit/file_system_spec.rb +508 -0
  529. data/spec/unit/forge/errors_spec.rb +1 -1
  530. data/spec/unit/forge/repository_spec.rb +1 -3
  531. data/spec/unit/hiera/scope_spec.rb +6 -2
  532. data/spec/unit/hiera_puppet_spec.rb +13 -6
  533. data/spec/unit/indirector/catalog/msgpack_spec.rb +12 -0
  534. data/spec/unit/indirector/catalog/static_compiler_spec.rb +42 -11
  535. data/spec/unit/indirector/direct_file_server_spec.rb +6 -6
  536. data/spec/unit/indirector/facts/facter_spec.rb +5 -5
  537. data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -4
  538. data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
  539. data/spec/unit/indirector/file_server_spec.rb +4 -4
  540. data/spec/unit/indirector/json_spec.rb +6 -6
  541. data/spec/unit/indirector/key/file_spec.rb +8 -8
  542. data/spec/unit/indirector/msgpack_spec.rb +191 -0
  543. data/spec/unit/indirector/node/active_record_spec.rb +1 -1
  544. data/spec/unit/indirector/node/ldap_spec.rb +16 -7
  545. data/spec/unit/indirector/node/msgpack_spec.rb +24 -0
  546. data/spec/unit/indirector/node/plain_spec.rb +1 -1
  547. data/spec/unit/indirector/queue_spec.rb +1 -1
  548. data/spec/unit/indirector/report/msgpack_spec.rb +28 -0
  549. data/spec/unit/indirector/request_spec.rb +16 -8
  550. data/spec/unit/indirector/rest_spec.rb +0 -4
  551. data/spec/unit/indirector/ssl_file_spec.rb +12 -11
  552. data/spec/unit/indirector/yaml_spec.rb +4 -4
  553. data/spec/unit/man_spec.rb +32 -0
  554. data/spec/unit/module_spec.rb +60 -46
  555. data/spec/unit/module_tool/applications/checksummer_spec.rb +1 -1
  556. data/spec/unit/module_tool/applications/installer_spec.rb +53 -16
  557. data/spec/unit/module_tool/applications/uninstaller_spec.rb +26 -25
  558. data/spec/unit/module_tool/tar_spec.rb +1 -1
  559. data/spec/unit/module_tool_spec.rb +17 -90
  560. data/spec/unit/network/authconfig_spec.rb +3 -4
  561. data/spec/unit/network/authentication_spec.rb +20 -6
  562. data/spec/unit/network/authorization_spec.rb +11 -1
  563. data/spec/unit/network/formats_spec.rb +32 -9
  564. data/spec/unit/network/http/api/v1_spec.rb +365 -62
  565. data/spec/unit/network/http/api/v2/authorization_spec.rb +57 -0
  566. data/spec/unit/network/http/api/v2/environments_spec.rb +42 -0
  567. data/spec/unit/network/http/api/v2_spec.rb +14 -0
  568. data/spec/unit/network/http/connection_spec.rb +39 -5
  569. data/spec/unit/network/http/error_spec.rb +30 -0
  570. data/spec/unit/network/http/handler_spec.rb +69 -419
  571. data/spec/unit/network/http/rack/rest_spec.rb +20 -28
  572. data/spec/unit/network/http/route_spec.rb +75 -0
  573. data/spec/unit/network/http/webrick/rest_spec.rb +21 -58
  574. data/spec/unit/network/http_pool_spec.rb +3 -3
  575. data/spec/unit/network/rights_spec.rb +2 -2
  576. data/spec/unit/node/environment_spec.rb +108 -89
  577. data/spec/unit/node/facts_spec.rb +5 -12
  578. data/spec/unit/node_spec.rb +22 -22
  579. data/spec/unit/parser/ast/collection_spec.rb +1 -1
  580. data/spec/unit/parser/ast/leaf_spec.rb +2 -0
  581. data/spec/unit/parser/ast/resource_spec.rb +1 -1
  582. data/spec/unit/parser/compiler_spec.rb +5 -3
  583. data/spec/unit/parser/files_spec.rb +40 -50
  584. data/spec/unit/parser/functions/defined_spec.rb +80 -18
  585. data/spec/unit/parser/functions/epp_spec.rb +88 -0
  586. data/spec/unit/parser/functions/fqdn_rand_spec.rb +4 -1
  587. data/spec/unit/parser/functions/generate_spec.rb +6 -2
  588. data/spec/unit/parser/functions/hiera_array_spec.rb +5 -2
  589. data/spec/unit/parser/functions/hiera_hash_spec.rb +4 -1
  590. data/spec/unit/parser/functions/hiera_include_spec.rb +6 -3
  591. data/spec/unit/parser/functions/hiera_spec.rb +5 -2
  592. data/spec/unit/parser/functions/include_spec.rb +0 -1
  593. data/spec/unit/parser/functions/inline_epp_spec.rb +82 -0
  594. data/spec/unit/parser/functions/lookup_spec.rb +66 -16
  595. data/spec/unit/parser/functions_spec.rb +25 -91
  596. data/spec/unit/parser/lexer_spec.rb +1 -1
  597. data/spec/unit/parser/methods/filter_spec.rb +56 -0
  598. data/spec/unit/parser/methods/map_spec.rb +94 -5
  599. data/spec/unit/parser/methods/reduce_spec.rb +10 -0
  600. data/spec/unit/parser/methods/shared.rb +2 -18
  601. data/spec/unit/parser/methods/slice_spec.rb +39 -1
  602. data/spec/unit/parser/parser_spec.rb +14 -10
  603. data/spec/unit/parser/resource_spec.rb +3 -9
  604. data/spec/unit/parser/scope_spec.rb +81 -78
  605. data/spec/unit/parser/type_loader_spec.rb +0 -4
  606. data/spec/unit/pops/benchmark_spec.rb +142 -0
  607. data/spec/unit/pops/binder/binder_spec.rb +15 -34
  608. data/spec/unit/pops/binder/bindings_checker_spec.rb +0 -41
  609. data/spec/unit/pops/binder/bindings_composer_spec.rb +6 -31
  610. data/spec/unit/pops/binder/config/binder_config_spec.rb +5 -18
  611. data/spec/unit/pops/binder/injector_spec.rb +76 -81
  612. data/spec/unit/pops/evaluator/access_ops_spec.rb +376 -0
  613. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +77 -0
  614. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +103 -0
  615. data/spec/unit/pops/evaluator/collections_ops_spec.rb +111 -0
  616. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +256 -0
  617. data/spec/unit/pops/evaluator/conditionals_spec.rb +190 -0
  618. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1045 -0
  619. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +75 -0
  620. data/spec/unit/pops/evaluator/logical_ops_spec.rb +90 -0
  621. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +44 -0
  622. data/spec/unit/pops/evaluator/variables_spec.rb +194 -0
  623. data/spec/unit/pops/factory_spec.rb +6 -29
  624. data/spec/unit/pops/issues_spec.rb +1 -1
  625. data/spec/unit/pops/model/ast_transformer_spec.rb +6 -9
  626. data/spec/unit/pops/model/model_spec.rb +2 -2
  627. data/spec/unit/pops/parser/epp_parser_spec.rb +86 -0
  628. data/spec/unit/pops/parser/evaluating_parser_spec.rb +4 -2
  629. data/spec/unit/pops/parser/lexer2_spec.rb +428 -0
  630. data/spec/unit/pops/parser/lexer_spec.rb +25 -86
  631. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +29 -4
  632. data/spec/unit/pops/parser/parse_calls_spec.rb +10 -6
  633. data/spec/unit/pops/parser/parse_conditionals_spec.rb +0 -9
  634. data/spec/unit/pops/parser/parse_containers_spec.rb +43 -12
  635. data/spec/unit/pops/parser/parse_heredoc_spec.rb +73 -0
  636. data/spec/unit/pops/parser/parse_resource_spec.rb +14 -0
  637. data/spec/unit/pops/parser/parser_spec.rb +3 -1
  638. data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +4 -4
  639. data/spec/unit/pops/transformer/transform_calls_spec.rb +41 -6
  640. data/spec/unit/pops/transformer/transform_conditionals_spec.rb +0 -9
  641. data/spec/unit/pops/transformer/transform_containers_spec.rb +12 -4
  642. data/spec/unit/pops/types/enumeration_spec.rb +50 -0
  643. data/spec/unit/pops/types/type_calculator_spec.rb +1171 -196
  644. data/spec/unit/pops/types/type_factory_spec.rb +108 -4
  645. data/spec/unit/pops/types/type_parser_spec.rb +114 -10
  646. data/spec/unit/pops/validator/validator_spec.rb +36 -1
  647. data/spec/unit/provider/augeas/augeas_spec.rb +39 -16
  648. data/spec/unit/provider/cron/parsed_spec.rb +27 -31
  649. data/spec/unit/provider/file/posix_spec.rb +2 -2
  650. data/spec/unit/provider/group/windows_adsi_spec.rb +1 -0
  651. data/spec/unit/provider/mount_spec.rb +12 -1
  652. data/spec/unit/provider/nameservice/directoryservice_spec.rb +3 -3
  653. data/spec/unit/provider/package/apt_spec.rb +1 -1
  654. data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
  655. data/spec/unit/provider/package/gem_spec.rb +12 -0
  656. data/spec/unit/provider/package/msi_spec.rb +4 -0
  657. data/spec/unit/provider/package/openbsd_spec.rb +10 -10
  658. data/spec/unit/provider/package/pacman_spec.rb +36 -7
  659. data/spec/unit/provider/package/pkgin_spec.rb +57 -55
  660. data/spec/unit/provider/package/rpm_spec.rb +51 -6
  661. data/spec/unit/provider/service/base_spec.rb +4 -4
  662. data/spec/unit/provider/service/daemontools_spec.rb +8 -13
  663. data/spec/unit/provider/service/freebsd_spec.rb +3 -3
  664. data/spec/unit/provider/service/gentoo_spec.rb +24 -24
  665. data/spec/unit/provider/service/init_spec.rb +15 -15
  666. data/spec/unit/provider/service/openbsd_spec.rb +16 -16
  667. data/spec/unit/provider/service/openrc_spec.rb +20 -20
  668. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  669. data/spec/unit/provider/service/runit_spec.rb +5 -8
  670. data/spec/unit/provider/service/src_spec.rb +4 -4
  671. data/spec/unit/provider/service/systemd_spec.rb +24 -14
  672. data/spec/unit/provider/service/upstart_spec.rb +12 -4
  673. data/spec/unit/provider/service/windows_spec.rb +1 -1
  674. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +21 -23
  675. data/spec/unit/provider/user/directoryservice_spec.rb +7 -7
  676. data/spec/unit/provider/user/useradd_spec.rb +43 -15
  677. data/spec/unit/provider/user/windows_adsi_spec.rb +1 -0
  678. data/spec/unit/provider/yumrepo/inifile_spec.rb +105 -0
  679. data/spec/unit/provider/zone/solaris_spec.rb +1 -1
  680. data/spec/unit/provider_spec.rb +120 -62
  681. data/spec/unit/rails/host_spec.rb +1 -1
  682. data/spec/unit/rails/param_value_spec.rb +4 -0
  683. data/spec/unit/relationship_spec.rb +4 -4
  684. data/spec/unit/reports/http_spec.rb +14 -3
  685. data/spec/unit/reports/rrdgraph_spec.rb +0 -1
  686. data/spec/unit/reports/store_spec.rb +2 -2
  687. data/spec/unit/resource/catalog_spec.rb +17 -29
  688. data/spec/unit/resource/status_spec.rb +1 -1
  689. data/spec/unit/resource/type_collection_spec.rb +28 -47
  690. data/spec/unit/resource/type_spec.rb +12 -23
  691. data/spec/unit/resource_spec.rb +54 -93
  692. data/spec/unit/run_spec.rb +3 -3
  693. data/spec/unit/settings/autosign_setting_spec.rb +1 -1
  694. data/spec/unit/settings/config_file_spec.rb +68 -15
  695. data/spec/unit/settings/file_setting_spec.rb +2 -2
  696. data/spec/unit/settings/ini_file_spec.rb +184 -0
  697. data/spec/unit/settings_spec.rb +137 -79
  698. data/spec/unit/ssl/certificate_authority/interface_spec.rb +3 -1
  699. data/spec/unit/ssl/certificate_authority_spec.rb +11 -9
  700. data/spec/unit/ssl/certificate_factory_spec.rb +19 -4
  701. data/spec/unit/ssl/certificate_request_attributes_spec.rb +1 -1
  702. data/spec/unit/ssl/certificate_revocation_list_spec.rb +101 -72
  703. data/spec/unit/ssl/host_spec.rb +8 -20
  704. data/spec/unit/ssl/inventory_spec.rb +2 -2
  705. data/spec/unit/ssl/key_spec.rb +4 -4
  706. data/spec/unit/status_spec.rb +6 -4
  707. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -11
  708. data/spec/unit/transaction/event_spec.rb +2 -2
  709. data/spec/unit/transaction/report_spec.rb +24 -15
  710. data/spec/unit/transaction/resource_harness_spec.rb +1 -1
  711. data/spec/unit/type/cron_spec.rb +39 -1
  712. data/spec/unit/type/file/content_spec.rb +4 -5
  713. data/spec/unit/type/file/ctime_spec.rb +1 -1
  714. data/spec/unit/type/file/mode_spec.rb +5 -4
  715. data/spec/unit/type/file/mtime_spec.rb +1 -1
  716. data/spec/unit/type/file/source_spec.rb +30 -7
  717. data/spec/unit/type/file_spec.rb +8 -8
  718. data/spec/unit/type/k5login_spec.rb +3 -3
  719. data/spec/unit/type/nagios_spec.rb +6 -0
  720. data/spec/unit/type/package/package_settings_spec.rb +135 -0
  721. data/spec/unit/type/package_spec.rb +13 -1
  722. data/spec/unit/type/resources_spec.rb +155 -0
  723. data/spec/unit/type/service_spec.rb +3 -3
  724. data/spec/unit/type/ssh_authorized_key_spec.rb +96 -93
  725. data/spec/unit/type/sshkey_spec.rb +39 -30
  726. data/spec/unit/type/tidy_spec.rb +19 -12
  727. data/spec/unit/type/user_spec.rb +47 -2
  728. data/spec/unit/type/whit_spec.rb +2 -2
  729. data/spec/unit/type/yumrepo_spec.rb +32 -177
  730. data/spec/unit/type/zone_spec.rb +2 -2
  731. data/spec/unit/type_spec.rb +11 -0
  732. data/spec/unit/util/adsi_spec.rb +48 -1
  733. data/spec/unit/util/autoload_spec.rb +24 -39
  734. data/spec/unit/util/backups_spec.rb +25 -28
  735. data/spec/unit/util/checksums_spec.rb +1 -3
  736. data/spec/unit/util/colors_spec.rb +14 -0
  737. data/spec/unit/util/docs_spec.rb +9 -0
  738. data/spec/unit/util/execution_spec.rb +1 -1
  739. data/spec/unit/util/filetype_spec.rb +7 -7
  740. data/spec/unit/util/instrumentation/data_spec.rb +3 -1
  741. data/spec/unit/util/instrumentation/indirection_probe_spec.rb +2 -0
  742. data/spec/unit/util/instrumentation/listener_spec.rb +3 -2
  743. data/spec/unit/util/json_lockfile_spec.rb +25 -4
  744. data/spec/unit/util/lockfile_spec.rb +49 -7
  745. data/spec/unit/util/log/destinations_spec.rb +1 -0
  746. data/spec/unit/util/log_spec.rb +1 -1
  747. data/spec/unit/util/metric_spec.rb +1 -1
  748. data/spec/unit/util/pidlock_spec.rb +6 -6
  749. data/spec/unit/util/pson_spec.rb +2 -2
  750. data/spec/unit/util/rdoc/parser_spec.rb +32 -29
  751. data/spec/unit/util/resource_template_spec.rb +3 -3
  752. data/spec/unit/util/selinux_spec.rb +5 -5
  753. data/spec/unit/util/storage_spec.rb +4 -4
  754. data/spec/unit/util/tag_set_spec.rb +1 -1
  755. data/spec/unit/util/watcher_spec.rb +1 -4
  756. data/spec/unit/util/yaml_spec.rb +2 -2
  757. data/spec/unit/util_spec.rb +7 -7
  758. data/tasks/benchmark.rake +0 -1
  759. data/tasks/parallel.rake +408 -0
  760. data/tasks/yard.rake +59 -0
  761. metadata +2889 -2782
  762. checksums.yaml +0 -7
  763. data/README_DEVELOPER.md +0 -809
  764. data/lib/puppet/file_system/file.rb +0 -271
  765. data/lib/puppet/network/http/rack/httphandler.rb +0 -13
  766. data/lib/puppet/pops/binder/hiera2.rb +0 -10
  767. data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +0 -148
  768. data/lib/puppet/pops/binder/hiera2/config.rb +0 -69
  769. data/lib/puppet/pops/binder/hiera2/config_checker.rb +0 -68
  770. data/lib/puppet/pops/binder/hiera2/diagnostic_producer.rb +0 -36
  771. data/lib/puppet/pops/binder/hiera2/issues.rb +0 -67
  772. data/lib/puppet/pops/binder/hiera2/json_backend.rb +0 -18
  773. data/lib/puppet/pops/binder/hiera2/yaml_backend.rb +0 -21
  774. data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +0 -67
  775. data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +0 -92
  776. data/lib/puppet/pops/parser/grammar.ra +0 -746
  777. data/lib/puppet/provider/port/parsed.rb +0 -173
  778. data/lib/puppet/type/port.rb +0 -119
  779. data/lib/puppetx/puppet/hiera2_backend.rb +0 -31
  780. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/binder_config.yaml +0 -18
  781. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/hiera.yaml +0 -8
  782. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/common.yaml +0 -1
  783. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/hiera.yaml +0 -10
  784. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/common.yaml +0 -1
  785. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/hiera.yaml +0 -11
  786. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/localhost.yaml +0 -1
  787. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/common.yaml +0 -3
  788. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/hiera.yaml +0 -13
  789. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppet/bindings/awesome/default.rb +0 -4
  790. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_backend.rb +0 -11
  791. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/localhost.yaml +0 -1
  792. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/common.yaml +0 -3
  793. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/hiera_config.yaml +0 -9
  794. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/common.yaml +0 -2
  795. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/hiera.yaml +0 -11
  796. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/hiera.yaml +0 -9
  797. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.json +0 -9
  798. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.yaml +0 -5
  799. data/spec/fixtures/unit/pops/binder/hiera2/config/bad_syntax/hiera.yaml +0 -10
  800. data/spec/fixtures/unit/pops/binder/hiera2/config/malformed_hierarchy/hiera.yaml +0 -8
  801. data/spec/fixtures/unit/pops/binder/hiera2/config/missing/foo.txt +0 -1
  802. data/spec/fixtures/unit/pops/binder/hiera2/config/no_backends/hiera.yaml +0 -7
  803. data/spec/fixtures/unit/pops/binder/hiera2/config/no_hierarchy/hiera.yaml +0 -4
  804. data/spec/fixtures/unit/pops/binder/hiera2/config/not_a_hash/hiera.yaml +0 -2
  805. data/spec/fixtures/unit/pops/binder/hiera2/config/ok/hiera.yaml +0 -8
  806. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/invalid/common.yaml +0 -1
  807. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/ok/common.yaml +0 -2
  808. data/spec/unit/file_system/file_spec.rb +0 -486
  809. data/spec/unit/pops/binder/hiera2/bindings_provider_spec.rb +0 -74
  810. data/spec/unit/pops/binder/hiera2/config_spec.rb +0 -61
  811. data/spec/unit/pops/binder/hiera2/yaml_backend_spec.rb +0 -33
@@ -13,659 +13,745 @@ describe "Two step scoping for variables" do
13
13
  Puppet.expects(:deprecation_warning).never
14
14
  end
15
15
 
16
- describe "fully qualified variable names" do
17
- it "keeps nodescope separate from topscope" do
18
- expect_the_message_to_be('topscope') do <<-MANIFEST
19
- $c = "topscope"
20
- node default {
21
- $c = "nodescope"
22
- notify { 'something': message => $::c }
23
- }
24
- MANIFEST
16
+ context 'using current parser' do
17
+ describe "using plussignment to change in a new scope" do
18
+ it "does not change a string in the parent scope" do
19
+ # Expects to be able to concatenate string using +=
20
+ expect_the_message_to_be('top_msg') do <<-MANIFEST
21
+ $var = "top_msg"
22
+ class override {
23
+ $var += "override"
24
+ include foo
25
+ }
26
+ class foo {
27
+ notify { 'something': message => $var, }
28
+ }
29
+
30
+ include override
31
+ MANIFEST
32
+ end
25
33
  end
26
34
  end
27
35
  end
28
36
 
29
- describe "when colliding class and variable names" do
30
- it "finds a topscope variable with the same name as a class" do
31
- expect_the_message_to_be('topscope') do <<-MANIFEST
32
- $c = "topscope"
33
- class c { }
34
- node default {
35
- include c
36
- notify { 'something': message => $c }
37
- }
38
- MANIFEST
39
- end
37
+ context 'using future parser' do
38
+ before(:each) do
39
+ Puppet[:parser] = 'future'
40
40
  end
41
41
 
42
- it "finds a node scope variable with the same name as a class" do
43
- expect_the_message_to_be('nodescope') do <<-MANIFEST
44
- class c { }
45
- node default {
46
- $c = "nodescope"
47
- include c
48
- notify { 'something': message => $c }
49
- }
50
- MANIFEST
51
- end
52
- end
42
+ describe "using plussignment to change in a new scope" do
43
+ it "does not change a string in the parent scope" do
44
+ # Expects to be able to concatenate string using +=
45
+ expect do
46
+ catalog = compile_to_catalog(<<-MANIFEST, Puppet::Node.new('the node'))
47
+ $var = "top_msg"
48
+ class override {
49
+ $var += "override"
50
+ include foo
51
+ }
52
+ class foo {
53
+ notify { 'something': message => $var, }
54
+ }
53
55
 
54
- it "finds a class variable when the class collides with a nodescope variable" do
55
- expect_the_message_to_be('class') do <<-MANIFEST
56
- class c { $b = "class" }
57
- node default {
58
- $c = "nodescope"
59
- include c
60
- notify { 'something': message => $c::b }
61
- }
62
- MANIFEST
56
+ include override
57
+ MANIFEST
58
+ end.to raise_error(/The value 'top_msg' cannot be converted to Numeric/)
63
59
  end
64
60
  end
65
61
 
66
- it "finds a class variable when the class collides with a topscope variable" do
67
- expect_the_message_to_be('class') do <<-MANIFEST
68
- $c = "topscope"
69
- class c { $b = "class" }
62
+ it "when using a template ignores the dynamic value of the var when using the @varname syntax" do
63
+ expect_the_message_to_be('node_msg') do <<-MANIFEST
70
64
  node default {
71
- include c
72
- notify { 'something': message => $::c::b }
73
- }
74
- MANIFEST
75
- end
76
- end
77
- end
78
-
79
- describe "when using shadowing and inheritance" do
80
- it "finds value define in the inherited node" do
81
- expect_the_message_to_be('parent_msg') do <<-MANIFEST
82
- $var = "top_msg"
83
- node parent {
84
- $var = "parent_msg"
85
- }
86
- node default inherits parent {
65
+ $var = "node_msg"
87
66
  include foo
88
67
  }
89
68
  class foo {
90
- notify { 'something': message => $var, }
69
+ $var = "foo_msg"
70
+ include bar
71
+ }
72
+ class bar {
73
+ notify { 'something': message => inline_template("<%= @var %>"), }
91
74
  }
92
75
  MANIFEST
93
76
  end
94
77
  end
78
+ end
95
79
 
96
- it "finds top scope when the class is included before the node defines the var" do
97
- expect_the_message_to_be('top_msg') do <<-MANIFEST
98
- $var = "top_msg"
99
- node parent {
100
- include foo
101
- }
102
- node default inherits parent {
103
- $var = "default_msg"
104
- }
105
- class foo {
106
- notify { 'something': message => $var, }
107
- }
108
- MANIFEST
80
+ shared_examples_for "the scope" do
81
+
82
+ describe "fully qualified variable names" do
83
+ it "keeps nodescope separate from topscope" do
84
+ expect_the_message_to_be('topscope') do <<-MANIFEST
85
+ $c = "topscope"
86
+ node default {
87
+ $c = "nodescope"
88
+ notify { 'something': message => $::c }
89
+ }
90
+ MANIFEST
91
+ end
109
92
  end
110
93
  end
111
94
 
112
- it "finds top scope when the class is included before the node defines the var" do
113
- expect_the_message_to_be('top_msg') do <<-MANIFEST
114
- $var = "top_msg"
115
- node parent {
116
- include foo
117
- }
118
- node default inherits parent {
119
- $var = "default_msg"
120
- }
121
- class foo {
122
- notify { 'something': message => $var, }
123
- }
124
- MANIFEST
95
+ describe "when colliding class and variable names" do
96
+ it "finds a topscope variable with the same name as a class" do
97
+ expect_the_message_to_be('topscope') do <<-MANIFEST
98
+ $c = "topscope"
99
+ class c { }
100
+ node default {
101
+ include c
102
+ notify { 'something': message => $c }
103
+ }
104
+ MANIFEST
105
+ end
125
106
  end
126
- end
127
107
 
128
- it "finds values in its local scope" do
129
- expect_the_message_to_be('local_msg') do <<-MANIFEST
130
- node default {
131
- include baz
132
- }
133
- class foo {
134
- }
135
- class bar inherits foo {
136
- $var = "local_msg"
137
- notify { 'something': message => $var, }
138
- }
139
- class baz {
140
- include bar
141
- }
142
- MANIFEST
108
+ it "finds a node scope variable with the same name as a class" do
109
+ expect_the_message_to_be('nodescope') do <<-MANIFEST
110
+ class c { }
111
+ node default {
112
+ $c = "nodescope"
113
+ include c
114
+ notify { 'something': message => $c }
115
+ }
116
+ MANIFEST
117
+ end
143
118
  end
144
- end
145
119
 
146
- it "finds values in its inherited scope" do
147
- expect_the_message_to_be('foo_msg') do <<-MANIFEST
148
- node default {
149
- include baz
150
- }
151
- class foo {
152
- $var = "foo_msg"
153
- }
154
- class bar inherits foo {
155
- notify { 'something': message => $var, }
156
- }
157
- class baz {
158
- include bar
159
- }
160
- MANIFEST
120
+ it "finds a class variable when the class collides with a nodescope variable" do
121
+ expect_the_message_to_be('class') do <<-MANIFEST
122
+ class c { $b = "class" }
123
+ node default {
124
+ $c = "nodescope"
125
+ include c
126
+ notify { 'something': message => $c::b }
127
+ }
128
+ MANIFEST
129
+ end
161
130
  end
162
- end
163
131
 
164
- it "prefers values in its local scope over values in the inherited scope" do
165
- expect_the_message_to_be('local_msg') do <<-MANIFEST
166
- include bar
132
+ it "finds a class variable when the class collides with a topscope variable" do
133
+ expect_the_message_to_be('class') do <<-MANIFEST
134
+ $c = "topscope"
135
+ class c { $b = "class" }
136
+ node default {
137
+ include c
138
+ notify { 'something': message => $::c::b }
139
+ }
140
+ MANIFEST
141
+ end
142
+ end
143
+ end
167
144
 
168
- class foo {
169
- $var = "inherited"
170
- }
145
+ describe "when using shadowing and inheritance" do
146
+ it "finds value define in the inherited node" do
147
+ expect_the_message_to_be('parent_msg') do <<-MANIFEST
148
+ $var = "top_msg"
149
+ node parent {
150
+ $var = "parent_msg"
151
+ }
152
+ node default inherits parent {
153
+ include foo
154
+ }
155
+ class foo {
156
+ notify { 'something': message => $var, }
157
+ }
158
+ MANIFEST
159
+ end
160
+ end
171
161
 
172
- class bar inherits foo {
173
- $var = "local_msg"
174
- notify { 'something': message => $var, }
175
- }
176
- MANIFEST
162
+ it "finds top scope when the class is included before the node defines the var" do
163
+ expect_the_message_to_be('top_msg') do <<-MANIFEST
164
+ $var = "top_msg"
165
+ node parent {
166
+ include foo
167
+ }
168
+ node default inherits parent {
169
+ $var = "default_msg"
170
+ }
171
+ class foo {
172
+ notify { 'something': message => $var, }
173
+ }
174
+ MANIFEST
175
+ end
177
176
  end
178
- end
179
177
 
180
- it "finds a qualified variable by following parent scopes of the specified scope" do
181
- expect_the_message_to_be("from node") do <<-MANIFEST
182
- class c {
183
- notify { 'something': message => "$a::b" }
184
- }
178
+ it "finds top scope when the class is included before the node defines the var" do
179
+ expect_the_message_to_be('top_msg') do <<-MANIFEST
180
+ $var = "top_msg"
181
+ node parent {
182
+ include foo
183
+ }
184
+ node default inherits parent {
185
+ $var = "default_msg"
186
+ }
187
+ class foo {
188
+ notify { 'something': message => $var, }
189
+ }
190
+ MANIFEST
191
+ end
192
+ end
185
193
 
186
- class a { }
194
+ it "finds values in its local scope" do
195
+ expect_the_message_to_be('local_msg') do <<-MANIFEST
196
+ node default {
197
+ include baz
198
+ }
199
+ class foo {
200
+ }
201
+ class bar inherits foo {
202
+ $var = "local_msg"
203
+ notify { 'something': message => $var, }
204
+ }
205
+ class baz {
206
+ include bar
207
+ }
208
+ MANIFEST
209
+ end
210
+ end
187
211
 
188
- node default {
189
- $b = "from node"
190
- include a
191
- include c
192
- }
193
- MANIFEST
212
+ it "finds values in its inherited scope" do
213
+ expect_the_message_to_be('foo_msg') do <<-MANIFEST
214
+ node default {
215
+ include baz
216
+ }
217
+ class foo {
218
+ $var = "foo_msg"
219
+ }
220
+ class bar inherits foo {
221
+ notify { 'something': message => $var, }
222
+ }
223
+ class baz {
224
+ include bar
225
+ }
226
+ MANIFEST
227
+ end
194
228
  end
195
- end
196
229
 
197
- it "finds values in its inherited scope when the inherited class is qualified to the top" do
198
- expect_the_message_to_be('foo_msg') do <<-MANIFEST
199
- node default {
200
- include baz
201
- }
202
- class foo {
203
- $var = "foo_msg"
204
- }
205
- class bar inherits ::foo {
206
- notify { 'something': message => $var, }
207
- }
208
- class baz {
230
+ it "prefers values in its local scope over values in the inherited scope" do
231
+ expect_the_message_to_be('local_msg') do <<-MANIFEST
209
232
  include bar
210
- }
211
- MANIFEST
233
+
234
+ class foo {
235
+ $var = "inherited"
236
+ }
237
+
238
+ class bar inherits foo {
239
+ $var = "local_msg"
240
+ notify { 'something': message => $var, }
241
+ }
242
+ MANIFEST
243
+ end
212
244
  end
213
- end
214
245
 
215
- it "prefers values in its local scope over values in the inherited scope when the inherited class is fully qualified" do
216
- expect_the_message_to_be('local_msg') do <<-MANIFEST
217
- include bar
246
+ it "finds a qualified variable by following parent scopes of the specified scope" do
247
+ expect_the_message_to_be("from node") do <<-MANIFEST
248
+ class c {
249
+ notify { 'something': message => "$a::b" }
250
+ }
218
251
 
219
- class foo {
220
- $var = "inherited"
221
- }
252
+ class a { }
222
253
 
223
- class bar inherits ::foo {
224
- $var = "local_msg"
225
- notify { 'something': message => $var, }
226
- }
227
- MANIFEST
254
+ node default {
255
+ $b = "from node"
256
+ include a
257
+ include c
258
+ }
259
+ MANIFEST
260
+ end
228
261
  end
229
- end
230
262
 
231
- it "finds values in top scope when the inherited class is qualified to the top" do
232
- expect_the_message_to_be('top msg') do <<-MANIFEST
233
- $var = "top msg"
234
- class foo {
235
- }
263
+ it "finds values in its inherited scope when the inherited class is qualified to the top" do
264
+ expect_the_message_to_be('foo_msg') do <<-MANIFEST
265
+ node default {
266
+ include baz
267
+ }
268
+ class foo {
269
+ $var = "foo_msg"
270
+ }
271
+ class bar inherits ::foo {
272
+ notify { 'something': message => $var, }
273
+ }
274
+ class baz {
275
+ include bar
276
+ }
277
+ MANIFEST
278
+ end
279
+ end
236
280
 
237
- class bar inherits ::foo {
238
- notify { 'something': message => $var, }
239
- }
281
+ it "prefers values in its local scope over values in the inherited scope when the inherited class is fully qualified" do
282
+ expect_the_message_to_be('local_msg') do <<-MANIFEST
283
+ include bar
240
284
 
241
- include bar
242
- MANIFEST
285
+ class foo {
286
+ $var = "inherited"
287
+ }
288
+
289
+ class bar inherits ::foo {
290
+ $var = "local_msg"
291
+ notify { 'something': message => $var, }
292
+ }
293
+ MANIFEST
294
+ end
243
295
  end
244
- end
245
296
 
246
- it "finds values in its inherited scope when the inherited class is a nested class that shadows another class at the top" do
247
- expect_the_message_to_be('inner baz') do <<-MANIFEST
248
- node default {
249
- include foo::bar
250
- }
251
- class baz {
252
- $var = "top baz"
253
- }
254
- class foo {
255
- class baz {
256
- $var = "inner baz"
297
+ it "finds values in top scope when the inherited class is qualified to the top" do
298
+ expect_the_message_to_be('top msg') do <<-MANIFEST
299
+ $var = "top msg"
300
+ class foo {
257
301
  }
258
302
 
259
- class bar inherits baz {
303
+ class bar inherits ::foo {
260
304
  notify { 'something': message => $var, }
261
305
  }
262
- }
263
- MANIFEST
306
+
307
+ include bar
308
+ MANIFEST
309
+ end
264
310
  end
265
- end
266
311
 
267
- it "finds values in its inherited scope when the inherited class is qualified to a nested class and qualified to the top" do
268
- expect_the_message_to_be('top baz') do <<-MANIFEST
269
- node default {
270
- include foo::bar
271
- }
272
- class baz {
273
- $var = "top baz"
274
- }
275
- class foo {
312
+ it "finds values in its inherited scope when the inherited class is a nested class that shadows another class at the top" do
313
+ expect_the_message_to_be('inner baz') do <<-MANIFEST
314
+ node default {
315
+ include foo::bar
316
+ }
317
+ class baz {
318
+ $var = "top baz"
319
+ }
320
+ class foo {
321
+ class baz {
322
+ $var = "inner baz"
323
+ }
324
+
325
+ class bar inherits baz {
326
+ notify { 'something': message => $var, }
327
+ }
328
+ }
329
+ MANIFEST
330
+ end
331
+ end
332
+
333
+ it "finds values in its inherited scope when the inherited class is qualified to a nested class and qualified to the top" do
334
+ expect_the_message_to_be('top baz') do <<-MANIFEST
335
+ node default {
336
+ include foo::bar
337
+ }
276
338
  class baz {
277
- $var = "inner baz"
339
+ $var = "top baz"
340
+ }
341
+ class foo {
342
+ class baz {
343
+ $var = "inner baz"
344
+ }
345
+
346
+ class bar inherits ::baz {
347
+ notify { 'something': message => $var, }
348
+ }
278
349
  }
350
+ MANIFEST
351
+ end
352
+ end
279
353
 
280
- class bar inherits ::baz {
354
+ it "finds values in its inherited scope when the inherited class is qualified" do
355
+ expect_the_message_to_be('foo_msg') do <<-MANIFEST
356
+ node default {
357
+ include bar
358
+ }
359
+ class foo {
360
+ class baz {
361
+ $var = "foo_msg"
362
+ }
363
+ }
364
+ class bar inherits foo::baz {
281
365
  notify { 'something': message => $var, }
282
366
  }
283
- }
284
- MANIFEST
367
+ MANIFEST
368
+ end
285
369
  end
286
- end
287
370
 
288
- it "finds values in its inherited scope when the inherited class is qualified" do
289
- expect_the_message_to_be('foo_msg') do <<-MANIFEST
290
- node default {
291
- include bar
292
- }
293
- class foo {
294
- class baz {
371
+ it "prefers values in its inherited scope over those in the node (with intermediate inclusion)" do
372
+ expect_the_message_to_be('foo_msg') do <<-MANIFEST
373
+ node default {
374
+ $var = "node_msg"
375
+ include baz
376
+ }
377
+ class foo {
295
378
  $var = "foo_msg"
296
379
  }
297
- }
298
- class bar inherits foo::baz {
299
- notify { 'something': message => $var, }
300
- }
301
- MANIFEST
380
+ class bar inherits foo {
381
+ notify { 'something': message => $var, }
382
+ }
383
+ class baz {
384
+ include bar
385
+ }
386
+ MANIFEST
387
+ end
302
388
  end
303
- end
304
389
 
305
- it "prefers values in its inherited scope over those in the node (with intermediate inclusion)" do
306
- expect_the_message_to_be('foo_msg') do <<-MANIFEST
307
- node default {
308
- $var = "node_msg"
309
- include baz
310
- }
311
- class foo {
312
- $var = "foo_msg"
313
- }
314
- class bar inherits foo {
315
- notify { 'something': message => $var, }
316
- }
317
- class baz {
318
- include bar
319
- }
320
- MANIFEST
390
+ it "prefers values in its inherited scope over those in the node (without intermediate inclusion)" do
391
+ expect_the_message_to_be('foo_msg') do <<-MANIFEST
392
+ node default {
393
+ $var = "node_msg"
394
+ include bar
395
+ }
396
+ class foo {
397
+ $var = "foo_msg"
398
+ }
399
+ class bar inherits foo {
400
+ notify { 'something': message => $var, }
401
+ }
402
+ MANIFEST
403
+ end
321
404
  end
322
- end
323
405
 
324
- it "prefers values in its inherited scope over those in the node (without intermediate inclusion)" do
325
- expect_the_message_to_be('foo_msg') do <<-MANIFEST
326
- node default {
327
- $var = "node_msg"
328
- include bar
329
- }
330
- class foo {
331
- $var = "foo_msg"
332
- }
333
- class bar inherits foo {
334
- notify { 'something': message => $var, }
335
- }
336
- MANIFEST
406
+ it "prefers values in its inherited scope over those from where it is included" do
407
+ expect_the_message_to_be('foo_msg') do <<-MANIFEST
408
+ node default {
409
+ include baz
410
+ }
411
+ class foo {
412
+ $var = "foo_msg"
413
+ }
414
+ class bar inherits foo {
415
+ notify { 'something': message => $var, }
416
+ }
417
+ class baz {
418
+ $var = "baz_msg"
419
+ include bar
420
+ }
421
+ MANIFEST
422
+ end
337
423
  end
338
- end
339
424
 
340
- it "prefers values in its inherited scope over those from where it is included" do
341
- expect_the_message_to_be('foo_msg') do <<-MANIFEST
342
- node default {
343
- include baz
344
- }
345
- class foo {
346
- $var = "foo_msg"
347
- }
348
- class bar inherits foo {
349
- notify { 'something': message => $var, }
350
- }
351
- class baz {
352
- $var = "baz_msg"
353
- include bar
354
- }
355
- MANIFEST
425
+ it "does not used variables from classes included in the inherited scope" do
426
+ expect_the_message_to_be('node_msg') do <<-MANIFEST
427
+ node default {
428
+ $var = "node_msg"
429
+ include bar
430
+ }
431
+ class quux {
432
+ $var = "quux_msg"
433
+ }
434
+ class foo inherits quux {
435
+ }
436
+ class baz {
437
+ include foo
438
+ }
439
+ class bar inherits baz {
440
+ notify { 'something': message => $var, }
441
+ }
442
+ MANIFEST
443
+ end
356
444
  end
357
- end
358
445
 
359
- it "does not used variables from classes included in the inherited scope" do
360
- expect_the_message_to_be('node_msg') do <<-MANIFEST
361
- node default {
362
- $var = "node_msg"
363
- include bar
364
- }
365
- class quux {
366
- $var = "quux_msg"
367
- }
368
- class foo inherits quux {
369
- }
370
- class baz {
371
- include foo
372
- }
373
- class bar inherits baz {
374
- notify { 'something': message => $var, }
375
- }
376
- MANIFEST
446
+ it "does not use a variable from a scope lexically enclosing it" do
447
+ expect_the_message_to_be('node_msg') do <<-MANIFEST
448
+ node default {
449
+ $var = "node_msg"
450
+ include other::bar
451
+ }
452
+ class other {
453
+ $var = "other_msg"
454
+ class bar {
455
+ notify { 'something': message => $var, }
456
+ }
457
+ }
458
+ MANIFEST
459
+ end
377
460
  end
378
- end
379
461
 
380
- it "does not use a variable from a scope lexically enclosing it" do
381
- expect_the_message_to_be('node_msg') do <<-MANIFEST
382
- node default {
383
- $var = "node_msg"
384
- include other::bar
385
- }
386
- class other {
387
- $var = "other_msg"
388
- class bar {
462
+ it "finds values in its node scope" do
463
+ expect_the_message_to_be('node_msg') do <<-MANIFEST
464
+ node default {
465
+ $var = "node_msg"
466
+ include baz
467
+ }
468
+ class foo {
469
+ }
470
+ class bar inherits foo {
389
471
  notify { 'something': message => $var, }
390
472
  }
391
- }
392
- MANIFEST
473
+ class baz {
474
+ include bar
475
+ }
476
+ MANIFEST
477
+ end
393
478
  end
394
- end
395
479
 
396
- it "finds values in its node scope" do
397
- expect_the_message_to_be('node_msg') do <<-MANIFEST
398
- node default {
399
- $var = "node_msg"
400
- include baz
401
- }
402
- class foo {
403
- }
404
- class bar inherits foo {
405
- notify { 'something': message => $var, }
406
- }
407
- class baz {
408
- include bar
409
- }
410
- MANIFEST
480
+ it "finds values in its top scope" do
481
+ expect_the_message_to_be('top_msg') do <<-MANIFEST
482
+ $var = "top_msg"
483
+ node default {
484
+ include baz
485
+ }
486
+ class foo {
487
+ }
488
+ class bar inherits foo {
489
+ notify { 'something': message => $var, }
490
+ }
491
+ class baz {
492
+ include bar
493
+ }
494
+ MANIFEST
495
+ end
411
496
  end
412
- end
413
497
 
414
- it "finds values in its top scope" do
415
- expect_the_message_to_be('top_msg') do <<-MANIFEST
416
- $var = "top_msg"
417
- node default {
418
- include baz
419
- }
420
- class foo {
421
- }
422
- class bar inherits foo {
423
- notify { 'something': message => $var, }
424
- }
425
- class baz {
426
- include bar
427
- }
428
- MANIFEST
498
+ it "prefers variables from the node over those in the top scope" do
499
+ expect_the_message_to_be('node_msg') do <<-MANIFEST
500
+ $var = "top_msg"
501
+ node default {
502
+ $var = "node_msg"
503
+ include foo
504
+ }
505
+ class foo {
506
+ notify { 'something': message => $var, }
507
+ }
508
+ MANIFEST
509
+ end
429
510
  end
430
- end
431
511
 
432
- it "prefers variables from the node over those in the top scope" do
433
- expect_the_message_to_be('node_msg') do <<-MANIFEST
434
- $var = "top_msg"
435
- node default {
436
- $var = "node_msg"
437
- include foo
438
- }
439
- class foo {
440
- notify { 'something': message => $var, }
441
- }
442
- MANIFEST
512
+ it "finds top scope variables referenced inside a defined type" do
513
+ expect_the_message_to_be('top_msg') do <<-MANIFEST
514
+ $var = "top_msg"
515
+ node default {
516
+ foo { "testing": }
517
+ }
518
+ define foo() {
519
+ notify { 'something': message => $var, }
520
+ }
521
+ MANIFEST
522
+ end
443
523
  end
444
- end
445
524
 
446
- it "finds top scope variables referenced inside a defined type" do
447
- expect_the_message_to_be('top_msg') do <<-MANIFEST
448
- $var = "top_msg"
449
- node default {
450
- foo { "testing": }
451
- }
452
- define foo() {
453
- notify { 'something': message => $var, }
454
- }
455
- MANIFEST
525
+ it "finds node scope variables referenced inside a defined type" do
526
+ expect_the_message_to_be('node_msg') do <<-MANIFEST
527
+ $var = "top_msg"
528
+ node default {
529
+ $var = "node_msg"
530
+ foo { "testing": }
531
+ }
532
+ define foo() {
533
+ notify { 'something': message => $var, }
534
+ }
535
+ MANIFEST
536
+ end
456
537
  end
457
538
  end
458
539
 
459
- it "finds node scope variables referenced inside a defined type" do
460
- expect_the_message_to_be('node_msg') do <<-MANIFEST
461
- $var = "top_msg"
462
- node default {
463
- $var = "node_msg"
464
- foo { "testing": }
465
- }
466
- define foo() {
467
- notify { 'something': message => $var, }
468
- }
469
- MANIFEST
540
+ describe "in situations that used to have dynamic lookup" do
541
+ it "ignores the dynamic value of the var" do
542
+ expect_the_message_to_be('node_msg') do <<-MANIFEST
543
+ node default {
544
+ $var = "node_msg"
545
+ include foo
546
+ }
547
+ class baz {
548
+ $var = "baz_msg"
549
+ include bar
550
+ }
551
+ class foo inherits baz {
552
+ }
553
+ class bar {
554
+ notify { 'something': message => $var, }
555
+ }
556
+ MANIFEST
557
+ end
470
558
  end
471
- end
472
- end
473
559
 
474
- describe "in situations that used to have dynamic lookup" do
475
- it "ignores the dynamic value of the var" do
476
- expect_the_message_to_be('node_msg') do <<-MANIFEST
477
- node default {
478
- $var = "node_msg"
479
- include foo
480
- }
481
- class baz {
482
- $var = "baz_msg"
483
- include bar
484
- }
485
- class foo inherits baz {
486
- }
487
- class bar {
488
- notify { 'something': message => $var, }
489
- }
490
- MANIFEST
560
+ it "finds nil when the only set variable is in the dynamic scope" do
561
+ expect_the_message_to_be(nil) do <<-MANIFEST
562
+ node default {
563
+ include baz
564
+ }
565
+ class foo {
566
+ }
567
+ class bar inherits foo {
568
+ notify { 'something': message => $var, }
569
+ }
570
+ class baz {
571
+ $var = "baz_msg"
572
+ include bar
573
+ }
574
+ MANIFEST
575
+ end
491
576
  end
492
- end
493
577
 
494
- it "finds nil when the only set variable is in the dynamic scope" do
495
- expect_the_message_to_be(nil) do <<-MANIFEST
496
- node default {
497
- include baz
498
- }
499
- class foo {
500
- }
501
- class bar inherits foo {
502
- notify { 'something': message => $var, }
503
- }
504
- class baz {
505
- $var = "baz_msg"
506
- include bar
507
- }
508
- MANIFEST
578
+ it "ignores the value in the dynamic scope for a defined type" do
579
+ expect_the_message_to_be('node_msg') do <<-MANIFEST
580
+ node default {
581
+ $var = "node_msg"
582
+ include foo
583
+ }
584
+ class foo {
585
+ $var = "foo_msg"
586
+ bar { "testing": }
587
+ }
588
+ define bar() {
589
+ notify { 'something': message => $var, }
590
+ }
591
+ MANIFEST
592
+ end
509
593
  end
510
- end
511
594
 
512
- it "ignores the value in the dynamic scope for a defined type" do
513
- expect_the_message_to_be('node_msg') do <<-MANIFEST
514
- node default {
515
- $var = "node_msg"
516
- include foo
517
- }
518
- class foo {
519
- $var = "foo_msg"
520
- bar { "testing": }
521
- }
522
- define bar() {
523
- notify { 'something': message => $var, }
524
- }
525
- MANIFEST
595
+ it "when using a template ignores the dynamic value of the var when using scope.lookupvar" do
596
+ expect_the_message_to_be('node_msg') do <<-MANIFEST
597
+ node default {
598
+ $var = "node_msg"
599
+ include foo
600
+ }
601
+ class foo {
602
+ $var = "foo_msg"
603
+ include bar
604
+ }
605
+ class bar {
606
+ notify { 'something': message => inline_template("<%= scope.lookupvar('var') %>"), }
607
+ }
608
+ MANIFEST
609
+ end
526
610
  end
527
611
  end
528
- end
529
612
 
530
- describe "using plussignment to change in a new scope" do
531
- it "does not change a string in the parent scope" do
532
- expect_the_message_to_be('top_msg') do <<-MANIFEST
533
- $var = "top_msg"
534
- class override {
535
- $var += "override"
536
- include foo
537
- }
538
- class foo {
539
- notify { 'something': message => $var, }
540
- }
613
+ describe "using plussignment to change in a new scope" do
541
614
 
542
- include override
543
- MANIFEST
615
+ it "does not change an array in the parent scope" do
616
+ expect_the_message_to_be('top_msg') do <<-MANIFEST
617
+ $var = ["top_msg"]
618
+ class override {
619
+ $var += ["override"]
620
+ include foo
621
+ }
622
+ class foo {
623
+ notify { 'something': message => $var, }
624
+ }
625
+
626
+ include override
627
+ MANIFEST
628
+ end
544
629
  end
545
- end
546
630
 
547
- it "does not change an array in the parent scope" do
548
- expect_the_message_to_be('top_msg') do <<-MANIFEST
549
- $var = ["top_msg"]
550
- class override {
551
- $var += ["override"]
552
- include foo
553
- }
554
- class foo {
555
- notify { 'something': message => $var, }
556
- }
631
+ it "concatenates two arrays" do
632
+ expect_the_message_to_be(['top_msg', 'override']) do <<-MANIFEST
633
+ $var = ["top_msg"]
634
+ class override {
635
+ $var += ["override"]
636
+ notify { 'something': message => $var, }
637
+ }
557
638
 
558
- include override
559
- MANIFEST
639
+ include override
640
+ MANIFEST
641
+ end
560
642
  end
561
- end
562
643
 
563
- it "concatenates two arrays" do
564
- expect_the_message_to_be(['top_msg', 'override']) do <<-MANIFEST
565
- $var = ["top_msg"]
566
- class override {
567
- $var += ["override"]
568
- notify { 'something': message => $var, }
569
- }
644
+ it "leaves an array of arrays unflattened" do
645
+ expect_the_message_to_be([['top_msg'], ['override']]) do <<-MANIFEST
646
+ $var = [["top_msg"]]
647
+ class override {
648
+ $var += [["override"]]
649
+ notify { 'something': message => $var, }
650
+ }
570
651
 
571
- include override
572
- MANIFEST
652
+ include override
653
+ MANIFEST
654
+ end
573
655
  end
574
- end
575
656
 
576
- it "leaves an array of arrays unflattened" do
577
- expect_the_message_to_be([['top_msg'], ['override']]) do <<-MANIFEST
578
- $var = [["top_msg"]]
579
- class override {
580
- $var += [["override"]]
581
- notify { 'something': message => $var, }
582
- }
657
+ it "does not change a hash in the parent scope" do
658
+ expect_the_message_to_be({"key"=>"top_msg"}) do <<-MANIFEST
659
+ $var = { "key" => "top_msg" }
660
+ class override {
661
+ $var += { "other" => "override" }
662
+ include foo
663
+ }
664
+ class foo {
665
+ notify { 'something': message => $var, }
666
+ }
583
667
 
584
- include override
585
- MANIFEST
668
+ include override
669
+ MANIFEST
670
+ end
586
671
  end
587
- end
588
672
 
589
- it "does not change a hash in the parent scope" do
590
- expect_the_message_to_be({"key"=>"top_msg"}) do <<-MANIFEST
591
- $var = { "key" => "top_msg" }
592
- class override {
593
- $var += { "other" => "override" }
594
- include foo
595
- }
596
- class foo {
597
- notify { 'something': message => $var, }
598
- }
673
+ it "replaces a value of a key in the hash instead of merging the values" do
674
+ expect_the_message_to_be({"key"=>"override"}) do <<-MANIFEST
675
+ $var = { "key" => "top_msg" }
676
+ class override {
677
+ $var += { "key" => "override" }
678
+ notify { 'something': message => $var, }
679
+ }
599
680
 
600
- include override
601
- MANIFEST
681
+ include override
682
+ MANIFEST
683
+ end
602
684
  end
603
685
  end
604
686
 
605
- it "replaces a value of a key in the hash instead of merging the values" do
606
- expect_the_message_to_be({"key"=>"override"}) do <<-MANIFEST
607
- $var = { "key" => "top_msg" }
608
- class override {
609
- $var += { "key" => "override" }
687
+ describe "when using an enc" do
688
+ it "places enc parameters in top scope" do
689
+ enc_node = Puppet::Node.new("the node", { :parameters => { "var" => 'from_enc' } })
690
+
691
+ expect_the_message_to_be('from_enc', enc_node) do <<-MANIFEST
610
692
  notify { 'something': message => $var, }
611
- }
693
+ MANIFEST
694
+ end
695
+ end
612
696
 
613
- include override
614
- MANIFEST
697
+ it "does not allow the enc to specify an existing top scope var" do
698
+ enc_node = Puppet::Node.new("the_node", { :parameters => { "var" => 'from_enc' } })
699
+
700
+ expect {
701
+ compile_to_catalog("$var = 'top scope'", enc_node)
702
+ }.to raise_error(
703
+ Puppet::Error,
704
+ /Cannot reassign variable var at line 1(\:6)? on node the_node/
705
+ )
615
706
  end
616
- end
617
- end
618
707
 
619
- describe "when using an enc" do
620
- it "places enc parameters in top scope" do
621
- enc_node = Puppet::Node.new("the node", { :parameters => { "var" => 'from_enc' } })
708
+ it "evaluates enc classes in top scope when there is no node" do
709
+ enc_node = Puppet::Node.new("the node", { :classes => ['foo'], :parameters => { "var" => 'from_enc' } })
622
710
 
623
- expect_the_message_to_be('from_enc', enc_node) do <<-MANIFEST
624
- notify { 'something': message => $var, }
625
- MANIFEST
711
+ expect_the_message_to_be('from_enc', enc_node) do <<-MANIFEST
712
+ class foo {
713
+ notify { 'something': message => $var, }
714
+ }
715
+ MANIFEST
716
+ end
626
717
  end
627
- end
628
718
 
629
- it "does not allow the enc to specify an existing top scope var" do
630
- enc_node = Puppet::Node.new("the_node", { :parameters => { "var" => 'from_enc' } })
719
+ it "evaluates enc classes in the node scope when there is a matching node" do
720
+ enc_node = Puppet::Node.new("the_node", { :classes => ['foo'] })
631
721
 
632
- expect {
633
- compile_to_catalog("$var = 'top scope'", enc_node)
634
- }.to raise_error(
635
- Puppet::Error,
636
- "Cannot reassign variable var at line 1 on node the_node"
637
- )
638
- end
722
+ expect_the_message_to_be('from matching node', enc_node) do <<-MANIFEST
723
+ node inherited {
724
+ $var = "from inherited"
725
+ }
639
726
 
640
- it "evaluates enc classes in top scope when there is no node" do
641
- enc_node = Puppet::Node.new("the node", { :classes => ['foo'], :parameters => { "var" => 'from_enc' } })
727
+ node the_node inherits inherited {
728
+ $var = "from matching node"
729
+ }
642
730
 
643
- expect_the_message_to_be('from_enc', enc_node) do <<-MANIFEST
644
- class foo {
645
- notify { 'something': message => $var, }
646
- }
647
- MANIFEST
731
+ class foo {
732
+ notify { 'something': message => $var, }
733
+ }
734
+ MANIFEST
735
+ end
648
736
  end
649
737
  end
738
+ end
650
739
 
651
- it "evaluates enc classes in the node scope when there is a matching node" do
652
- enc_node = Puppet::Node.new("the_node", { :classes => ['foo'] })
653
-
654
- expect_the_message_to_be('from matching node', enc_node) do <<-MANIFEST
655
- node inherited {
656
- $var = "from inherited"
657
- }
658
-
659
- node the_node inherits inherited {
660
- $var = "from matching node"
661
- }
740
+ describe 'using classic parser' do
741
+ before :each do
742
+ Puppet[:parser] = 'current'
743
+ end
744
+ it_behaves_like 'the scope' do
745
+ end
746
+ end
662
747
 
663
- class foo {
664
- notify { 'something': message => $var, }
665
- }
666
- MANIFEST
667
- end
748
+ describe 'using future parser' do
749
+ before :each do
750
+ Puppet[:parser] = 'future'
751
+ end
752
+ it_behaves_like 'the scope' do
668
753
  end
669
754
  end
755
+
670
756
  end
671
757