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
@@ -5,7 +5,8 @@ require 'puppet/resource'
5
5
  describe Puppet::Resource do
6
6
  include PuppetSpec::Files
7
7
 
8
- let :basepath do make_absolute("/somepath") end
8
+ let(:basepath) { make_absolute("/somepath") }
9
+ let(:environment) { Puppet::Node::Environment.create(:testing, [], '') }
9
10
 
10
11
  [:catalog, :file, :line].each do |attr|
11
12
  it "should have an #{attr} attribute" do
@@ -120,10 +121,6 @@ describe Puppet::Resource do
120
121
  resource.should be_exported
121
122
  end
122
123
 
123
- it "should support an environment attribute" do
124
- Puppet::Resource.new("file", "/my/file", :environment => :foo).environment.name.should == :foo
125
- end
126
-
127
124
  describe "and munging its type and title" do
128
125
  describe "when modeling a builtin resource" do
129
126
  it "should be able to find the resource type" do
@@ -139,19 +136,19 @@ describe Puppet::Resource do
139
136
  describe "that exists" do
140
137
  before do
141
138
  @type = Puppet::Resource::Type.new(:definition, "foo::bar")
142
- Puppet::Node::Environment.new.known_resource_types.add @type
139
+ environment.known_resource_types.add @type
143
140
  end
144
141
 
145
142
  it "should set its type to the capitalized type name" do
146
- Puppet::Resource.new("foo::bar", "/my/file").type.should == "Foo::Bar"
143
+ Puppet::Resource.new("foo::bar", "/my/file", :environment => environment).type.should == "Foo::Bar"
147
144
  end
148
145
 
149
146
  it "should be able to find the resource type" do
150
- Puppet::Resource.new("foo::bar", "/my/file").resource_type.should equal(@type)
147
+ Puppet::Resource.new("foo::bar", "/my/file", :environment => environment).resource_type.should equal(@type)
151
148
  end
152
149
 
153
150
  it "should set its title to the provided title" do
154
- Puppet::Resource.new("foo::bar", "/my/file").title.should == "/my/file"
151
+ Puppet::Resource.new("foo::bar", "/my/file", :environment => environment).title.should == "/my/file"
155
152
  end
156
153
  end
157
154
 
@@ -179,15 +176,15 @@ describe Puppet::Resource do
179
176
  describe "that exists" do
180
177
  before do
181
178
  @type = Puppet::Resource::Type.new(:hostclass, "foo::bar")
182
- Puppet::Node::Environment.new.known_resource_types.add @type
179
+ environment.known_resource_types.add @type
183
180
  end
184
181
 
185
182
  it "should set its title to the capitalized, fully qualified resource type" do
186
- Puppet::Resource.new("class", "foo::bar").title.should == "Foo::Bar"
183
+ Puppet::Resource.new("class", "foo::bar", :environment => environment).title.should == "Foo::Bar"
187
184
  end
188
185
 
189
186
  it "should be able to find the resource type" do
190
- Puppet::Resource.new("class", "foo::bar").resource_type.should equal(@type)
187
+ Puppet::Resource.new("class", "foo::bar", :environment => environment).resource_type.should equal(@type)
191
188
  end
192
189
  end
193
190
 
@@ -207,9 +204,9 @@ describe Puppet::Resource do
207
204
  describe "and a class exists whose name is the empty string" do # this was a bit tough to track down
208
205
  it "should set its title to :main" do
209
206
  @type = Puppet::Resource::Type.new(:hostclass, "")
210
- Puppet::Node::Environment.new.known_resource_types.add @type
207
+ environment.known_resource_types.add @type
211
208
 
212
- Puppet::Resource.new("class", "").title.should == :main
209
+ Puppet::Resource.new("class", "", :environment => environment).title.should == :main
213
210
  end
214
211
  end
215
212
  end
@@ -222,9 +219,9 @@ describe Puppet::Resource do
222
219
  describe "and a class exists whose name is the empty string" do # this was a bit tough to track down
223
220
  it "should set its title to :main" do
224
221
  @type = Puppet::Resource::Type.new(:hostclass, "")
225
- Puppet::Node::Environment.new.known_resource_types.add @type
222
+ environment.known_resource_types.add @type
226
223
 
227
- Puppet::Resource.new("class", :main).title.should == :main
224
+ Puppet::Resource.new("class", :main, :environment => environment).title.should == :main
228
225
  end
229
226
  end
230
227
  end
@@ -237,8 +234,8 @@ describe Puppet::Resource do
237
234
 
238
235
  it "should not fail when an invalid parameter is used and strict mode is disabled" do
239
236
  type = Puppet::Resource::Type.new(:definition, "foobar")
240
- Puppet::Node::Environment.new.known_resource_types.add type
241
- resource = Puppet::Resource.new("foobar", "/my/file")
237
+ environment.known_resource_types.add type
238
+ resource = Puppet::Resource.new("foobar", "/my/file", :environment => environment)
242
239
  resource[:yay] = true
243
240
  end
244
241
 
@@ -267,7 +264,7 @@ describe Puppet::Resource do
267
264
  end
268
265
 
269
266
  describe "when setting default parameters" do
270
- let(:foo_node) { Puppet::Node.new('foo') }
267
+ let(:foo_node) { Puppet::Node.new('foo', :environment => environment) }
271
268
  let(:compiler) { Puppet::Parser::Compiler.new(foo_node) }
272
269
  let(:scope) { Puppet::Parser::Scope.new(compiler) }
273
270
 
@@ -276,15 +273,15 @@ describe Puppet::Resource do
276
273
  end
277
274
 
278
275
  it "should fail when asked to set default values and it is not a parser resource" do
279
- Puppet::Node::Environment.new.known_resource_types.add(
276
+ environment.known_resource_types.add(
280
277
  Puppet::Resource::Type.new(:definition, "default_param", :arguments => {"a" => ast_string("default")})
281
278
  )
282
- resource = Puppet::Resource.new("default_param", "name")
279
+ resource = Puppet::Resource.new("default_param", "name", :environment => environment)
283
280
  lambda { resource.set_default_parameters(scope) }.should raise_error(Puppet::DevError)
284
281
  end
285
282
 
286
283
  it "should evaluate and set any default values when no value is provided" do
287
- Puppet::Node::Environment.new.known_resource_types.add(
284
+ environment.known_resource_types.add(
288
285
  Puppet::Resource::Type.new(:definition, "default_param", :arguments => {"a" => ast_string("a_default_value")})
289
286
  )
290
287
  resource = Puppet::Parser::Resource.new("default_param", "name", :scope => scope)
@@ -293,7 +290,7 @@ describe Puppet::Resource do
293
290
  end
294
291
 
295
292
  it "should skip attributes with no default value" do
296
- Puppet::Node::Environment.new.known_resource_types.add(
293
+ environment.known_resource_types.add(
297
294
  Puppet::Resource::Type.new(:definition, "no_default_param", :arguments => {"a" => ast_string("a_default_value")})
298
295
  )
299
296
  resource = Puppet::Parser::Resource.new("no_default_param", "name", :scope => scope)
@@ -301,7 +298,7 @@ describe Puppet::Resource do
301
298
  end
302
299
 
303
300
  it "should return the list of default parameters set" do
304
- Puppet::Node::Environment.new.known_resource_types.add(
301
+ environment.known_resource_types.add(
305
302
  Puppet::Resource::Type.new(:definition, "default_param", :arguments => {"a" => ast_string("a_default_value")})
306
303
  )
307
304
  resource = Puppet::Parser::Resource.new("default_param", "name", :scope => scope)
@@ -315,11 +312,10 @@ describe Puppet::Resource do
315
312
  let(:apache) { Puppet::Resource::Type.new(:hostclass, 'apache', :arguments => { 'port' => port }) }
316
313
 
317
314
  before do
318
- environment = Puppet::Node::Environment.new(environment_name)
319
315
  environment.known_resource_types.add(apache)
320
316
 
321
317
  scope.stubs(:host).returns('host')
322
- scope.stubs(:environment).returns(Puppet::Node::Environment.new(environment_name))
318
+ scope.stubs(:environment).returns(environment)
323
319
  scope.stubs(:facts).returns(Puppet::Node::Facts.new("facts", fact_values))
324
320
  end
325
321
 
@@ -338,14 +334,6 @@ describe Puppet::Resource do
338
334
  resource.set_default_parameters(scope)
339
335
  end
340
336
 
341
- it "should query the injector using a namespaced key" do
342
- compiler.injector.expects(:lookup).with(scope, 'apache::port').returns("8081")
343
-
344
- resource.set_default_parameters(scope)
345
-
346
- resource[:port].should == "8081"
347
- end
348
-
349
337
  it "should use the value from the data_binding terminus" do
350
338
  Puppet::DataBinding.indirection.expects(:find).returns('443')
351
339
 
@@ -354,23 +342,6 @@ describe Puppet::Resource do
354
342
  resource[:port].should == '443'
355
343
  end
356
344
 
357
- it "should use the value from the injector" do
358
- compiler.injector.expects(:lookup).with(scope, 'apache::port').returns('443')
359
-
360
- resource.set_default_parameters(scope)
361
-
362
- resource[:port].should == '443'
363
- end
364
-
365
- it "should not call the DataBinding terminus when injector produces a value" do
366
- compiler.injector.expects(:lookup).with(scope, 'apache::port').returns('443')
367
- Puppet::DataBinding.indirection.expects(:find).never()
368
-
369
- resource.set_default_parameters(scope)
370
-
371
- resource[:port].should == '443'
372
- end
373
-
374
345
  it "should use the default value if the data_binding terminus returns nil" do
375
346
  Puppet::DataBinding.indirection.expects(:find).returns(nil)
376
347
 
@@ -386,14 +357,6 @@ describe Puppet::Resource do
386
357
  }.to raise_error(Puppet::Error, /Error from DataBinding 'hiera' while looking up 'apache::port':.*Forgettabotit/)
387
358
  end
388
359
 
389
- it "should use the default value if the injector returns nil" do
390
- compiler.injector.expects(:lookup).returns(nil)
391
- Puppet::DataBinding.indirection.expects(:find).returns(nil)
392
-
393
- resource.set_default_parameters(scope)
394
-
395
- resource[:port].should == '80'
396
- end
397
360
  end
398
361
 
399
362
  context "when a value is provided" do
@@ -431,17 +394,17 @@ describe Puppet::Resource do
431
394
 
432
395
  describe "when validating all required parameters are present" do
433
396
  it "should be able to validate that all required parameters are present" do
434
- Puppet::Node::Environment.new.known_resource_types.add(
397
+ environment.known_resource_types.add(
435
398
  Puppet::Resource::Type.new(:definition, "required_param", :arguments => {"a" => nil})
436
399
  )
437
- lambda { Puppet::Resource.new("required_param", "name").validate_complete }.should raise_error(Puppet::ParseError)
400
+ lambda { Puppet::Resource.new("required_param", "name", :environment => environment).validate_complete }.should raise_error(Puppet::ParseError)
438
401
  end
439
402
 
440
403
  it "should not fail when all required parameters are present" do
441
- Puppet::Node::Environment.new.known_resource_types.add(
404
+ environment.known_resource_types.add(
442
405
  Puppet::Resource::Type.new(:definition, "no_required_param")
443
406
  )
444
- resource = Puppet::Resource.new("no_required_param", "name")
407
+ resource = Puppet::Resource.new("no_required_param", "name", :environment => environment)
445
408
  resource["a"] = "meh"
446
409
  lambda { resource.validate_complete }.should_not raise_error
447
410
  end
@@ -488,14 +451,14 @@ describe Puppet::Resource do
488
451
 
489
452
  it "should correctly detect when provided parameters are not valid for defined resource types" do
490
453
  type = Puppet::Resource::Type.new(:definition, "foobar")
491
- Puppet::Node::Environment.new.known_resource_types.add type
492
- Puppet::Resource.new("foobar", "/my/file").should_not be_valid_parameter("myparam")
454
+ environment.known_resource_types.add type
455
+ Puppet::Resource.new("foobar", "/my/file", :environment => environment).should_not be_valid_parameter("myparam")
493
456
  end
494
457
 
495
458
  it "should correctly detect when provided parameters are valid for defined resource types" do
496
459
  type = Puppet::Resource::Type.new(:definition, "foobar", :arguments => {"myparam" => nil})
497
- Puppet::Node::Environment.new.known_resource_types.add type
498
- Puppet::Resource.new("foobar", "/my/file").should be_valid_parameter("myparam")
460
+ environment.known_resource_types.add type
461
+ Puppet::Resource.new("foobar", "/my/file", :environment => environment).should be_valid_parameter("myparam")
499
462
  end
500
463
 
501
464
  it "should allow setting and retrieving of parameters" do
@@ -636,11 +599,9 @@ describe Puppet::Resource do
636
599
  describe "when serializing a defined type" do
637
600
  before do
638
601
  type = Puppet::Resource::Type.new(:definition, "foo::bar")
639
- Puppet::Node::Environment.new.known_resource_types.add type
640
- end
602
+ environment.known_resource_types.add type
641
603
 
642
- before :each do
643
- @resource = Puppet::Resource.new('foo::bar', 'xyzzy')
604
+ @resource = Puppet::Resource.new('foo::bar', 'xyzzy', :environment => environment)
644
605
  @resource['one'] = 'test'
645
606
  @resource['two'] = 'other'
646
607
  @resource.resource_type
@@ -710,45 +671,45 @@ describe Puppet::Resource do
710
671
  # trap the actual data structure then.
711
672
 
712
673
  it "should set its type to the provided type" do
713
- Puppet::Resource.from_pson(PSON.parse(Puppet::Resource.new("File", "/foo").to_pson)).type.should == "File"
674
+ Puppet::Resource.from_data_hash(PSON.parse(Puppet::Resource.new("File", "/foo").to_pson)).type.should == "File"
714
675
  end
715
676
 
716
677
  it "should set its title to the provided title" do
717
- Puppet::Resource.from_pson(PSON.parse(Puppet::Resource.new("File", "/foo").to_pson)).title.should == "/foo"
678
+ Puppet::Resource.from_data_hash(PSON.parse(Puppet::Resource.new("File", "/foo").to_pson)).title.should == "/foo"
718
679
  end
719
680
 
720
681
  it "should include all tags from the resource" do
721
682
  resource = Puppet::Resource.new("File", "/foo")
722
683
  resource.tag("yay")
723
684
 
724
- Puppet::Resource.from_pson(PSON.parse(resource.to_pson)).tags.should == resource.tags
685
+ Puppet::Resource.from_data_hash(PSON.parse(resource.to_pson)).tags.should == resource.tags
725
686
  end
726
687
 
727
688
  it "should include the file if one is set" do
728
689
  resource = Puppet::Resource.new("File", "/foo")
729
690
  resource.file = "/my/file"
730
691
 
731
- Puppet::Resource.from_pson(PSON.parse(resource.to_pson)).file.should == "/my/file"
692
+ Puppet::Resource.from_data_hash(PSON.parse(resource.to_pson)).file.should == "/my/file"
732
693
  end
733
694
 
734
695
  it "should include the line if one is set" do
735
696
  resource = Puppet::Resource.new("File", "/foo")
736
697
  resource.line = 50
737
698
 
738
- Puppet::Resource.from_pson(PSON.parse(resource.to_pson)).line.should == 50
699
+ Puppet::Resource.from_data_hash(PSON.parse(resource.to_pson)).line.should == 50
739
700
  end
740
701
 
741
702
  it "should include the 'exported' value if one is set" do
742
703
  resource = Puppet::Resource.new("File", "/foo")
743
704
  resource.exported = true
744
705
 
745
- Puppet::Resource.from_pson(PSON.parse(resource.to_pson)).exported?.should be_true
706
+ Puppet::Resource.from_data_hash(PSON.parse(resource.to_pson)).exported?.should be_true
746
707
  end
747
708
 
748
709
  it "should set 'exported' to false if no value is set" do
749
710
  resource = Puppet::Resource.new("File", "/foo")
750
711
 
751
- Puppet::Resource.from_pson(PSON.parse(resource.to_pson)).exported?.should be_false
712
+ Puppet::Resource.from_data_hash(PSON.parse(resource.to_pson)).exported?.should be_false
752
713
  end
753
714
 
754
715
  it "should set all of its parameters as the 'parameters' entry" do
@@ -756,7 +717,7 @@ describe Puppet::Resource do
756
717
  resource[:foo] = %w{bar eh}
757
718
  resource[:fee] = %w{baz}
758
719
 
759
- result = Puppet::Resource.from_pson(PSON.parse(resource.to_pson))
720
+ result = Puppet::Resource.from_data_hash(PSON.parse(resource.to_pson))
760
721
  result["foo"].should == %w{bar eh}
761
722
  result["fee"].should == %w{baz}
762
723
  end
@@ -764,14 +725,14 @@ describe Puppet::Resource do
764
725
  it "should serialize relationships as reference strings" do
765
726
  resource = Puppet::Resource.new("File", "/foo")
766
727
  resource[:requires] = Puppet::Resource.new("File", "/bar")
767
- result = Puppet::Resource.from_pson(PSON.parse(resource.to_pson))
728
+ result = Puppet::Resource.from_data_hash(PSON.parse(resource.to_pson))
768
729
  result[:requires].should == "File[/bar]"
769
730
  end
770
731
 
771
732
  it "should serialize multiple relationships as arrays of reference strings" do
772
733
  resource = Puppet::Resource.new("File", "/foo")
773
734
  resource[:requires] = [Puppet::Resource.new("File", "/bar"), Puppet::Resource.new("File", "/baz")]
774
- result = Puppet::Resource.from_pson(PSON.parse(resource.to_pson))
735
+ result = Puppet::Resource.from_data_hash(PSON.parse(resource.to_pson))
775
736
  result[:requires].should == [ "File[/bar]", "File[/baz]" ]
776
737
  end
777
738
  end
@@ -789,64 +750,64 @@ describe Puppet::Resource do
789
750
  end
790
751
 
791
752
  it "should set its type to the provided type" do
792
- Puppet::Resource.from_pson(@data).type.should == "File"
753
+ Puppet::Resource.from_data_hash(@data).type.should == "File"
793
754
  end
794
755
 
795
756
  it "should set its title to the provided title" do
796
- Puppet::Resource.from_pson(@data).title.should == basepath+"/yay"
757
+ Puppet::Resource.from_data_hash(@data).title.should == basepath+"/yay"
797
758
  end
798
759
 
799
760
  it "should tag the resource with any provided tags" do
800
761
  @data['tags'] = %w{foo bar}
801
- resource = Puppet::Resource.from_pson(@data)
762
+ resource = Puppet::Resource.from_data_hash(@data)
802
763
  resource.tags.should be_include("foo")
803
764
  resource.tags.should be_include("bar")
804
765
  end
805
766
 
806
767
  it "should set its file to the provided file" do
807
768
  @data['file'] = "/foo/bar"
808
- Puppet::Resource.from_pson(@data).file.should == "/foo/bar"
769
+ Puppet::Resource.from_data_hash(@data).file.should == "/foo/bar"
809
770
  end
810
771
 
811
772
  it "should set its line to the provided line" do
812
773
  @data['line'] = 50
813
- Puppet::Resource.from_pson(@data).line.should == 50
774
+ Puppet::Resource.from_data_hash(@data).line.should == 50
814
775
  end
815
776
 
816
777
  it "should 'exported' to true if set in the pson data" do
817
778
  @data['exported'] = true
818
- Puppet::Resource.from_pson(@data).exported.should be_true
779
+ Puppet::Resource.from_data_hash(@data).exported.should be_true
819
780
  end
820
781
 
821
782
  it "should 'exported' to false if not set in the pson data" do
822
- Puppet::Resource.from_pson(@data).exported.should be_false
783
+ Puppet::Resource.from_data_hash(@data).exported.should be_false
823
784
  end
824
785
 
825
786
  it "should fail if no title is provided" do
826
787
  @data.delete('title')
827
- expect { Puppet::Resource.from_pson(@data) }.to raise_error(ArgumentError)
788
+ expect { Puppet::Resource.from_data_hash(@data) }.to raise_error(ArgumentError)
828
789
  end
829
790
 
830
791
  it "should fail if no type is provided" do
831
792
  @data.delete('type')
832
- expect { Puppet::Resource.from_pson(@data) }.to raise_error(ArgumentError)
793
+ expect { Puppet::Resource.from_data_hash(@data) }.to raise_error(ArgumentError)
833
794
  end
834
795
 
835
796
  it "should set each of the provided parameters" do
836
797
  @data['parameters'] = {'foo' => %w{one two}, 'fee' => %w{three four}}
837
- resource = Puppet::Resource.from_pson(@data)
798
+ resource = Puppet::Resource.from_data_hash(@data)
838
799
  resource['foo'].should == %w{one two}
839
800
  resource['fee'].should == %w{three four}
840
801
  end
841
802
 
842
803
  it "should convert single-value array parameters to normal values" do
843
804
  @data['parameters'] = {'foo' => %w{one}}
844
- resource = Puppet::Resource.from_pson(@data)
805
+ resource = Puppet::Resource.from_data_hash(@data)
845
806
  resource['foo'].should == %w{one}
846
807
  end
847
808
  end
848
809
 
849
- describe "it should implement copy_as_resource" do
810
+ it "implements copy_as_resource" do
850
811
  resource = Puppet::Resource.new("file", "/my/file")
851
812
  resource.copy_as_resource.should == resource
852
813
  end
@@ -121,14 +121,14 @@ describe Puppet::Run do
121
121
  end
122
122
  end
123
123
 
124
- describe ".from_pson" do
124
+ describe ".from_data_hash" do
125
125
  it "should read from a hash that represents the 'options' to initialize" do
126
126
  options = {
127
127
  "tags" => "whatever",
128
128
  "background" => true,
129
129
  "ignoreschedules" => false,
130
130
  }
131
- run = Puppet::Run.from_pson(options)
131
+ run = Puppet::Run.from_data_hash(options)
132
132
 
133
133
  run.options.should == {
134
134
  :tags => "whatever",
@@ -145,7 +145,7 @@ describe Puppet::Run do
145
145
  "tags" => [],
146
146
  "ignoreschedules" => false},
147
147
  "status" => "success"}
148
- run = Puppet::Run.from_pson(hash)
148
+ run = Puppet::Run.from_data_hash(hash)
149
149
 
150
150
  run.options.should == {
151
151
  :pluginsync => true,
@@ -74,7 +74,7 @@ describe Puppet::Settings::AutosignSetting do
74
74
  it "converts the file path to a file resource" do
75
75
  path = File.expand_path('/path/to/autosign.conf')
76
76
  settings.stubs(:value).with('autosign').returns(path)
77
- Puppet::FileSystem::File.stubs(:exist?).with(path).returns true
77
+ Puppet::FileSystem.stubs(:exist?).with(path).returns true
78
78
  Puppet.stubs(:features).returns(stub(:root? => true, :microsoft_windows? => false))
79
79
 
80
80
  setting.mode = '0664'
@@ -20,8 +20,15 @@ describe Puppet::Settings::ConfigFile do
20
20
 
21
21
  let(:filename) { "a/fake/filename.conf" }
22
22
 
23
+ Conf = Puppet::Settings::ConfigFile::Conf
24
+ Section = Puppet::Settings::ConfigFile::Section
25
+ Meta = Puppet::Settings::ConfigFile::Meta
26
+ NO_META = Puppet::Settings::ConfigFile::NO_META
27
+
23
28
  it "interprets an empty file to contain a main section with no entries" do
24
- the_parse_of("").should == { :main => section_containing(NOTHING) }
29
+ result = the_parse_of("")
30
+
31
+ expect(result).to eq(Conf.new.with_section(Section.new(:main)))
25
32
  end
26
33
 
27
34
  it "interprets an empty main section the same as an empty file" do
@@ -29,39 +36,71 @@ describe Puppet::Settings::ConfigFile do
29
36
  end
30
37
 
31
38
  it "places an entry in no section in main" do
32
- the_parse_of("var = value").should == { :main => section_containing(:var => "value") }
39
+ result = the_parse_of("var = value")
40
+
41
+ expect(result).to eq(Conf.new.with_section(Section.new(:main).with_setting(:var, "value", NO_META)))
33
42
  end
34
43
 
35
44
  it "places an entry after a section header in that section" do
36
- the_parse_of("[section]", "var = value").should == { :main => section_containing(NOTHING),
37
- :section => section_containing(:var => "value") }
45
+ result = the_parse_of("[section]", "var = value")
46
+
47
+ expect(result).to eq(Conf.new.
48
+ with_section(Section.new(:main)).
49
+ with_section(Section.new(:section).
50
+ with_setting(:var, "value", NO_META)))
38
51
  end
39
52
 
40
53
  it "does not include trailing whitespace in the value" do
41
- the_parse_of("var = value\t ").should == { :main => section_containing(:var => "value") }
54
+ result = the_parse_of("var = value\t ")
55
+
56
+ expect(result).to eq(Conf.new.
57
+ with_section(Section.new(:main).
58
+ with_setting(:var, "value", NO_META)))
42
59
  end
43
60
 
44
61
  it "does not include leading whitespace in the name" do
45
- the_parse_of(" \t var=value").should == { :main => section_containing(:var => "value") }
62
+ result = the_parse_of(" \t var=value")
63
+
64
+ expect(result).to eq(Conf.new.
65
+ with_section(Section.new(:main).
66
+ with_setting(:var, "value", NO_META)))
46
67
  end
47
68
 
48
69
  it "skips lines that are commented out" do
49
- the_parse_of("#var = value").should == { :main => section_containing(NOTHING) }
70
+ result = the_parse_of("#var = value")
71
+
72
+ expect(result).to eq(Conf.new.with_section(Section.new(:main)))
50
73
  end
51
74
 
52
75
  it "skips lines that are entirely whitespace" do
53
- the_parse_of(" \t ").should == { :main => section_containing(NOTHING) }
76
+ result = the_parse_of(" \t ")
77
+
78
+ expect(result).to eq(Conf.new.with_section(Section.new(:main)))
54
79
  end
55
80
 
56
81
  it "errors when a line is not a known form" do
57
82
  expect { the_parse_of("unknown") }.to raise_error Puppet::Settings::ParseError, /Could not match line/
58
83
  end
59
84
 
85
+ it "errors providing correct line number when line is not a known form" do
86
+ multi_line_config = <<-EOF
87
+ [main]
88
+ foo=bar
89
+ badline
90
+ EOF
91
+ expect { the_parse_of(multi_line_config) }.to(
92
+ raise_error(Puppet::Settings::ParseError, /Could not match line/) do |exception|
93
+ expect(exception.line).to eq(3)
94
+ end
95
+ )
96
+ end
97
+
60
98
  it "stores file meta information in the _meta section" do
61
- the_parse_of("var = value { owner = me, group = you, mode = 0666 }").should ==
62
- { :main => section_containing(:var => "value", :meta => { :var => { :owner => "me",
63
- :group => "you",
64
- :mode => "0666" } }) }
99
+ result = the_parse_of("var = value { owner = me, group = you, mode = 0666 }")
100
+
101
+ expect(result).to eq(Conf.new.with_section(Section.new(:main).
102
+ with_setting(:var, "value",
103
+ Meta.new("me", "you", "0666"))))
65
104
  end
66
105
 
67
106
  it "errors when there is unknown meta information" do
@@ -82,19 +121,33 @@ describe Puppet::Settings::ConfigFile do
82
121
  it "errors when an application_defaults section is created" do
83
122
  expect { the_parse_of("[application_defaults]") }.
84
123
  to raise_error Puppet::Error,
85
- "Illegal section 'application_defaults' in config file #{filename} at line [application_defaults]"
124
+ "Illegal section 'application_defaults' in config file #{filename} at line 1"
125
+ end
126
+
127
+ it "errors when a global_defaults section is created" do
128
+ expect { the_parse_of("[main]\n[global_defaults]") }.
129
+ to raise_error Puppet::Error,
130
+ "Illegal section 'global_defaults' in config file #{filename} at line 2"
86
131
  end
87
132
 
88
133
  it "transforms values with the given function" do
89
134
  config = Puppet::Settings::ConfigFile.new(Proc.new { |value| value + " changed" })
90
135
 
91
- config.parse_file(filename, "var = value").should == { :main => section_containing(:var => "value changed") }
136
+ result = config.parse_file(filename, "var = value")
137
+
138
+ expect(result).to eq(Conf.new.
139
+ with_section(Section.new(:main).
140
+ with_setting(:var, "value changed", NO_META)))
92
141
  end
93
142
 
94
143
  it "does not try to transform an entry named 'mode'" do
95
144
  config = Puppet::Settings::ConfigFile.new(Proc.new { raise "Should not transform" })
96
145
 
97
- config.parse_file(filename, "mode = value").should == { :main => section_containing(:mode => "value") }
146
+ result = config.parse_file(filename, "mode = value")
147
+
148
+ expect(result).to eq(Conf.new.
149
+ with_section(Section.new(:main).
150
+ with_setting(:mode, "value", NO_META)))
98
151
  end
99
152
  end
100
153