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
@@ -139,14 +139,14 @@ describe Puppet::Settings::FileSetting do
139
139
  it "should skip non-existent files if 'create_files' is not enabled" do
140
140
  @file.expects(:create_files?).returns false
141
141
  @file.expects(:type).returns :file
142
- Puppet::FileSystem::File.expects(:exist?).with(@basepath).returns false
142
+ Puppet::FileSystem.expects(:exist?).with(@basepath).returns false
143
143
  @file.to_resource.should be_nil
144
144
  end
145
145
 
146
146
  it "should manage existent files even if 'create_files' is not enabled" do
147
147
  @file.expects(:create_files?).returns false
148
148
  @file.expects(:type).returns :file
149
- Puppet::FileSystem::File.expects(:exist?).with(@basepath).returns true
149
+ Puppet::FileSystem.expects(:exist?).with(@basepath).returns true
150
150
  @file.to_resource.should be_instance_of(Puppet::Resource)
151
151
  end
152
152
 
@@ -0,0 +1,184 @@
1
+ require 'spec_helper'
2
+ require 'stringio'
3
+
4
+ require 'puppet/settings/ini_file'
5
+
6
+ describe Puppet::Settings::IniFile do
7
+ it "preserves the file when no changes are made" do
8
+ original_config = <<-CONFIG
9
+ # comment
10
+ [section]
11
+ name = value
12
+ CONFIG
13
+ config_fh = a_config_file_containing(original_config)
14
+
15
+ Puppet::Settings::IniFile.update(config_fh) do; end
16
+
17
+ expect(config_fh.string).to eq original_config
18
+ end
19
+
20
+ it "adds a set name and value to an empty file" do
21
+ config_fh = a_config_file_containing("")
22
+
23
+ Puppet::Settings::IniFile.update(config_fh) do |config|
24
+ config.set("the_section", "name", "value")
25
+ end
26
+
27
+ expect(config_fh.string).to eq "[the_section]\nname = value\n"
28
+ end
29
+
30
+ it "does not add a [main] section to a file when it isn't needed" do
31
+ config_fh = a_config_file_containing(<<-CONF)
32
+ [section]
33
+ name = different value
34
+ CONF
35
+
36
+
37
+ Puppet::Settings::IniFile.update(config_fh) do |config|
38
+ config.set("main", "name", "value")
39
+ end
40
+
41
+ expect(config_fh.string).to eq(<<-CONF)
42
+ name = value
43
+ [section]
44
+ name = different value
45
+ CONF
46
+ end
47
+
48
+ it "preserves comments when writing a new name and value" do
49
+ config_fh = a_config_file_containing("# this is a comment")
50
+
51
+ Puppet::Settings::IniFile.update(config_fh) do |config|
52
+ config.set("the_section", "name", "value")
53
+ end
54
+
55
+ expect(config_fh.string).to eq "# this is a comment\n[the_section]\nname = value\n"
56
+ end
57
+
58
+ it "updates existing names and values in place" do
59
+ config_fh = a_config_file_containing(<<-CONFIG)
60
+ # this is the preceeding comment
61
+ [section]
62
+ name = original value
63
+ # this is the trailing comment
64
+ CONFIG
65
+
66
+ Puppet::Settings::IniFile.update(config_fh) do |config|
67
+ config.set("section", "name", "changed value")
68
+ end
69
+
70
+ expect(config_fh.string).to eq <<-CONFIG
71
+ # this is the preceeding comment
72
+ [section]
73
+ name = changed value
74
+ # this is the trailing comment
75
+ CONFIG
76
+ end
77
+
78
+ it "updates only the value in the selected section" do
79
+ config_fh = a_config_file_containing(<<-CONFIG)
80
+ [other_section]
81
+ name = does not change
82
+ [section]
83
+ name = original value
84
+ CONFIG
85
+
86
+ Puppet::Settings::IniFile.update(config_fh) do |config|
87
+ config.set("section", "name", "changed value")
88
+ end
89
+
90
+ expect(config_fh.string).to eq <<-CONFIG
91
+ [other_section]
92
+ name = does not change
93
+ [section]
94
+ name = changed value
95
+ CONFIG
96
+ end
97
+
98
+ it "considers settings outside a section to be in section 'main'" do
99
+ config_fh = a_config_file_containing(<<-CONFIG)
100
+ name = original value
101
+ CONFIG
102
+
103
+ Puppet::Settings::IniFile.update(config_fh) do |config|
104
+ config.set("main", "name", "changed value")
105
+ end
106
+
107
+ expect(config_fh.string).to eq <<-CONFIG
108
+ name = changed value
109
+ CONFIG
110
+ end
111
+
112
+ it "adds new settings to an existing section" do
113
+ config_fh = a_config_file_containing(<<-CONFIG)
114
+ [section]
115
+ original = value
116
+
117
+ # comment about 'other' section
118
+ [other]
119
+ dont = change
120
+ CONFIG
121
+
122
+ Puppet::Settings::IniFile.update(config_fh) do |config|
123
+ config.set("section", "updated", "new")
124
+ end
125
+
126
+ expect(config_fh.string).to eq <<-CONFIG
127
+ [section]
128
+ original = value
129
+ updated = new
130
+
131
+ # comment about 'other' section
132
+ [other]
133
+ dont = change
134
+ CONFIG
135
+ end
136
+
137
+ it "adds a new setting into an existing, yet empty section" do
138
+ config_fh = a_config_file_containing(<<-CONFIG)
139
+ [section]
140
+ [other]
141
+ dont = change
142
+ CONFIG
143
+
144
+ Puppet::Settings::IniFile.update(config_fh) do |config|
145
+ config.set("section", "updated", "new")
146
+ end
147
+
148
+ expect(config_fh.string).to eq <<-CONFIG
149
+ [section]
150
+ updated = new
151
+ [other]
152
+ dont = change
153
+ CONFIG
154
+ end
155
+
156
+ it "finds settings when the section is split up" do
157
+ config_fh = a_config_file_containing(<<-CONFIG)
158
+ [section]
159
+ name = original value
160
+ [different]
161
+ name = other value
162
+ [section]
163
+ other_name = different original value
164
+ CONFIG
165
+
166
+ Puppet::Settings::IniFile.update(config_fh) do |config|
167
+ config.set("section", "name", "changed value")
168
+ config.set("section", "other_name", "other changed value")
169
+ end
170
+
171
+ expect(config_fh.string).to eq <<-CONFIG
172
+ [section]
173
+ name = changed value
174
+ [different]
175
+ name = other value
176
+ [section]
177
+ other_name = other changed value
178
+ CONFIG
179
+ end
180
+
181
+ def a_config_file_containing(text)
182
+ StringIO.new(text)
183
+ end
184
+ end
@@ -103,8 +103,8 @@ describe Puppet::Settings do
103
103
  end
104
104
 
105
105
  describe "#call_hooks_deferred_to_application_initialization" do
106
- let (:good_default) { "yay" }
107
- let (:bad_default) { "$doesntexist" }
106
+ let(:good_default) { "yay" }
107
+ let(:bad_default) { "$doesntexist" }
108
108
  before(:each) do
109
109
  @settings = Puppet::Settings.new
110
110
  end
@@ -148,7 +148,7 @@ describe Puppet::Settings do
148
148
  )
149
149
  expect do
150
150
  @settings.send(:call_hooks_deferred_to_application_initialization, options)
151
- end.to raise_error Puppet::Settings::InterpolationError
151
+ end.to raise_error(Puppet::Settings::InterpolationError)
152
152
  end
153
153
  it "should contain the setting name in error message" do
154
154
  hook_values = []
@@ -163,7 +163,7 @@ describe Puppet::Settings do
163
163
  )
164
164
  expect do
165
165
  @settings.send(:call_hooks_deferred_to_application_initialization, options)
166
- end.to raise_error Puppet::Settings::InterpolationError, /badhook/
166
+ end.to raise_error(Puppet::Settings::InterpolationError, /badhook/)
167
167
  end
168
168
  end
169
169
  describe "if no interpolation error" do
@@ -205,48 +205,40 @@ describe Puppet::Settings do
205
205
  end
206
206
 
207
207
  it "should support a getopt-specific mechanism for turning booleans off" do
208
- @settings[:bool] = true
208
+ @settings.override_default(:bool, true)
209
209
  @settings.handlearg("--no-bool", "")
210
210
  @settings[:bool].should == false
211
211
  end
212
212
 
213
213
  it "should support a getopt-specific mechanism for turning booleans on" do
214
214
  # Turn it off first
215
- @settings[:bool] = false
215
+ @settings.override_default(:bool, false)
216
216
  @settings.handlearg("--bool", "")
217
217
  @settings[:bool].should == true
218
218
  end
219
219
 
220
220
  it "should consider a cli setting with no argument to be a boolean" do
221
221
  # Turn it off first
222
- @settings[:bool] = false
222
+ @settings.override_default(:bool, false)
223
223
  @settings.handlearg("--bool")
224
224
  @settings[:bool].should == true
225
225
  end
226
226
 
227
- it "should consider a cli setting with an empty string as an argument to be a boolean, if the setting itself is a boolean" do
228
- # Turn it off first
229
- @settings[:bool] = false
230
- @settings.handlearg("--bool", "")
231
- @settings[:bool].should == true
232
- end
233
-
234
227
  it "should consider a cli setting with an empty string as an argument to be an empty argument, if the setting itself is not a boolean" do
235
- @settings[:myval] = "bob"
228
+ @settings.override_default(:myval, "bob")
236
229
  @settings.handlearg("--myval", "")
237
230
  @settings[:myval].should == ""
238
231
  end
239
232
 
240
233
  it "should consider a cli setting with a boolean as an argument to be a boolean" do
241
234
  # Turn it off first
242
- @settings[:bool] = false
235
+ @settings.override_default(:bool, false)
243
236
  @settings.handlearg("--bool", "true")
244
237
  @settings[:bool].should == true
245
238
  end
246
239
 
247
240
  it "should not consider a cli setting of a non boolean with a boolean as an argument to be a boolean" do
248
- # Turn it off first
249
- @settings[:myval] = "bob"
241
+ @settings.override_default(:myval, "bob")
250
242
  @settings.handlearg("--no-myval", "")
251
243
  @settings[:myval].should == ""
252
244
  end
@@ -257,7 +249,6 @@ describe Puppet::Settings do
257
249
  end
258
250
 
259
251
  it "should flag bool settings from the CLI" do
260
- @settings[:bool] = false
261
252
  @settings.handlearg("--bool")
262
253
  @settings.set_by_cli?(:bool).should be_true
263
254
  end
@@ -269,7 +260,7 @@ describe Puppet::Settings do
269
260
 
270
261
  describe "setbycli" do
271
262
  it "should generate a deprecation warning" do
272
- Puppet.expects(:deprecation_warning)
263
+ Puppet.expects(:deprecation_warning).at_least(1)
273
264
  @settings.setting(:myval).setbycli = true
274
265
  end
275
266
  it "should set the value" do
@@ -281,7 +272,7 @@ describe Puppet::Settings do
281
272
  @settings.handlearg("--myval", "blah")
282
273
  expect do
283
274
  @settings.setting(:myval).setbycli = nil
284
- end.to raise_error ArgumentError, /unset/
275
+ end.to raise_error(ArgumentError, /unset/)
285
276
  end
286
277
  end
287
278
 
@@ -318,12 +309,12 @@ describe Puppet::Settings do
318
309
  it "should raise error if no hook defined" do
319
310
  expect do
320
311
  @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => val})
321
- end.to raise_error ArgumentError, /no :hook/
312
+ end.to raise_error(ArgumentError, /no :hook/)
322
313
  end
323
314
  it "should include the setting name in the error message" do
324
315
  expect do
325
316
  @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => val})
326
- end.to raise_error ArgumentError, /for :hooker/
317
+ end.to raise_error(ArgumentError, /for :hooker/)
327
318
  end
328
319
  end
329
320
  describe "and definition valid" do
@@ -360,7 +351,7 @@ describe Puppet::Settings do
360
351
  it "should raise an error" do
361
352
  expect do
362
353
  @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => :foo, :hook => lambda { |v| hook_values << v }})
363
- end.to raise_error ArgumentError, /invalid.*call_hook/i
354
+ end.to raise_error(ArgumentError, /invalid.*call_hook/i)
364
355
  end
365
356
  end
366
357
 
@@ -457,10 +448,11 @@ describe Puppet::Settings do
457
448
  @settings[:bool].should == false
458
449
  end
459
450
 
460
- it "should prefer cli values to values set in Ruby code" do
461
- @settings.handlearg("--myval", "cliarg")
451
+ it "should prefer values set in ruby to values set on the cli" do
462
452
  @settings[:myval] = "memarg"
463
- @settings[:myval].should == "cliarg"
453
+ @settings.handlearg("--myval", "cliarg")
454
+
455
+ @settings[:myval].should == "memarg"
464
456
  end
465
457
 
466
458
  it "should clear the list of environments" do
@@ -471,7 +463,13 @@ describe Puppet::Settings do
471
463
  it "should raise an error if we try to set a setting that hasn't been defined'" do
472
464
  lambda{
473
465
  @settings[:why_so_serious] = "foo"
474
- }.should raise_error(ArgumentError, /unknown configuration parameter/)
466
+ }.should raise_error(ArgumentError, /unknown setting/)
467
+ end
468
+
469
+ it "allows overriding cli args based on the cli-set value" do
470
+ @settings.handlearg("--myval", "cliarg")
471
+ @settings.set_value(:myval, "modified #{@settings[:myval]}", :cli)
472
+ expect(@settings[:myval]).to eq("modified cliarg")
475
473
  end
476
474
  end
477
475
 
@@ -485,7 +483,7 @@ describe Puppet::Settings do
485
483
  :three => { :default => "$one $two THREE", :desc => "c"},
486
484
  :four => { :default => "$two $three FOUR", :desc => "d"},
487
485
  :five => { :default => nil, :desc => "e" }
488
- Puppet::FileSystem::File.stubs(:exist?).returns true
486
+ Puppet::FileSystem.stubs(:exist?).returns true
489
487
  end
490
488
 
491
489
  describe "call_on_define" do
@@ -509,6 +507,20 @@ describe Puppet::Settings do
509
507
  @settings[:one].should == "other"
510
508
  end
511
509
 
510
+ it "setting a value to nil causes it to return to its default" do
511
+ default_values = { :one => "skipped value" }
512
+ [:logdir, :confdir, :vardir].each do |key|
513
+ default_values[key] = 'default value'
514
+ end
515
+ @settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
516
+ @settings.initialize_app_defaults(default_values)
517
+ @settings[:one] = "value will disappear"
518
+
519
+ @settings[:one] = nil
520
+
521
+ @settings[:one].should == "ONE"
522
+ end
523
+
512
524
  it "should interpolate default values for other parameters into returned parameter values" do
513
525
  @settings[:one].should == "ONE"
514
526
  @settings[:two].should == "ONE TWO"
@@ -542,20 +554,6 @@ describe Puppet::Settings do
542
554
  @settings[:two].should == "one TWO"
543
555
  end
544
556
 
545
- describe "caching values that evaluate to false" do
546
- it "caches nil" do
547
- @settings.expects(:convert).once.returns nil
548
- @settings[:five].should be_nil
549
- @settings[:five].should be_nil
550
- end
551
-
552
- it "caches false" do
553
- @settings.expects(:convert).once.returns false
554
- @settings[:five].should == false
555
- @settings[:five].should == false
556
- end
557
- end
558
-
559
557
  it "should not cache values such that information from one environment is returned for another environment" do
560
558
  text = "[env1]\none = oneval\n[env2]\none = twoval\n"
561
559
  @settings.stubs(:read_file).returns(text)
@@ -569,6 +567,13 @@ describe Puppet::Settings do
569
567
  @settings.preferred_run_mode.should == :user
570
568
  end
571
569
 
570
+ it "interpolates a boolean false without raising an error" do
571
+ @settings.define_settings(:section,
572
+ :trip_wire => { :type => :boolean, :default => false, :desc => "a trip wire" },
573
+ :tripping => { :default => '$trip_wire', :desc => "once tripped if interpolated was false" })
574
+ @settings[:tripping].should == "false"
575
+ end
576
+
572
577
  describe "setbycli" do
573
578
  it "should generate a deprecation warning" do
574
579
  @settings.handlearg("--one", "blah")
@@ -589,7 +594,7 @@ describe Puppet::Settings do
589
594
  :config => { :type => :file, :default => "/my/file", :desc => "a" },
590
595
  :one => { :default => "ONE", :desc => "a" },
591
596
  :two => { :default => "TWO", :desc => "b" }
592
- Puppet::FileSystem::File.stubs(:exist?).returns true
597
+ Puppet::FileSystem.stubs(:exist?).returns true
593
598
  @settings.preferred_run_mode = :agent
594
599
  end
595
600
 
@@ -606,12 +611,6 @@ describe Puppet::Settings do
606
611
  @settings[:one].should == "clival"
607
612
  end
608
613
 
609
- it "should return values set on the cli before values set in Ruby" do
610
- @settings[:one] = "rubyval"
611
- @settings.handlearg("--one", "clival")
612
- @settings[:one].should == "clival"
613
- end
614
-
615
614
  it "should return values set in the mode-specific section before values set in the main section" do
616
615
  text = "[main]\none = mainval\n[agent]\none = modeval\n"
617
616
  @settings.stubs(:read_file).returns(text)
@@ -666,8 +665,8 @@ describe Puppet::Settings do
666
665
  describe "when root" do
667
666
  it "should look for the main config file default location config settings haven't been overridden'" do
668
667
  Puppet.features.stubs(:root?).returns(true)
669
- Puppet::FileSystem::File.expects(:exist?).with(main_config_file_default_location).returns(false)
670
- Puppet::FileSystem::File.expects(:exist?).with(user_config_file_default_location).never
668
+ Puppet::FileSystem.expects(:exist?).with(main_config_file_default_location).returns(false)
669
+ Puppet::FileSystem.expects(:exist?).with(user_config_file_default_location).never
671
670
 
672
671
  @settings.send(:parse_config_files)
673
672
  end
@@ -678,7 +677,7 @@ describe Puppet::Settings do
678
677
  Puppet.features.stubs(:root?).returns(false)
679
678
 
680
679
  seq = sequence "load config files"
681
- Puppet::FileSystem::File.expects(:exist?).with(user_config_file_default_location).returns(false).in_sequence(seq)
680
+ Puppet::FileSystem.expects(:exist?).with(user_config_file_default_location).returns(false).in_sequence(seq)
682
681
 
683
682
  @settings.send(:parse_config_files)
684
683
  end
@@ -699,8 +698,8 @@ describe Puppet::Settings do
699
698
  :two => { :default => "$one TWO", :desc => "b" },
700
699
  :three => { :default => "$one $two THREE", :desc => "c" }
701
700
  @settings.stubs(:user_config_file).returns(@userconfig)
702
- Puppet::FileSystem::File.stubs(:exist?).with(@file).returns true
703
- Puppet::FileSystem::File.stubs(:exist?).with(@userconfig).returns false
701
+ Puppet::FileSystem.stubs(:exist?).with(@file).returns true
702
+ Puppet::FileSystem.stubs(:exist?).with(@userconfig).returns false
704
703
  end
705
704
 
706
705
  it "should not ignore the report setting" do
@@ -712,7 +711,7 @@ describe Puppet::Settings do
712
711
  [puppetd]
713
712
  report=true
714
713
  CONF
715
- Puppet::FileSystem::File.expects(:exist?).with(myfile).returns(true)
714
+ Puppet::FileSystem.expects(:exist?).with(myfile).returns(true)
716
715
  @settings.expects(:read_file).returns(text)
717
716
  @settings.send(:parse_config_files)
718
717
  @settings[:report].should be_true
@@ -722,7 +721,7 @@ describe Puppet::Settings do
722
721
  myfile = make_absolute("/my/file") # do not stub expand_path here, as this leads to a stack overflow, when mocha tries to use it
723
722
  @settings[:config] = myfile
724
723
 
725
- Puppet::FileSystem::File.expects(:exist?).with(myfile).returns(true)
724
+ Puppet::FileSystem.expects(:exist?).with(myfile).returns(true)
726
725
 
727
726
  File.expects(:read).with(myfile).returns "[main]"
728
727
 
@@ -730,7 +729,7 @@ describe Puppet::Settings do
730
729
  end
731
730
 
732
731
  it "should not try to parse non-existent files" do
733
- Puppet::FileSystem::File.expects(:exist?).with(@file).returns false
732
+ Puppet::FileSystem.expects(:exist?).with(@file).returns false
734
733
 
735
734
  File.expects(:read).with(@file).never
736
735
 
@@ -777,11 +776,11 @@ describe Puppet::Settings do
777
776
  @settings.define_settings :section, :myfile => { :type => :file, :default => make_absolute("/myfile"), :desc => "a" }
778
777
 
779
778
  otherfile = make_absolute("/other/file")
780
- text = "[main]
779
+ @settings.parse_config(<<-CONF)
780
+ [main]
781
781
  myfile = #{otherfile} {owner = service, group = service, mode = 644}
782
- "
783
- @settings.expects(:read_file).returns(text)
784
- @settings.send(:parse_config_files)
782
+ CONF
783
+
785
784
  @settings[:myfile].should == otherfile
786
785
  @settings.metadata(:myfile).should == {:owner => "suser", :group => "sgroup", :mode => "644"}
787
786
  end
@@ -790,11 +789,11 @@ describe Puppet::Settings do
790
789
  @settings.define_settings :section, :myfile => { :type => :file, :default => make_absolute("/myfile"), :desc => "a" }
791
790
 
792
791
  otherfile = make_absolute("/other/file")
793
- text = "[main]
792
+ @settings.parse_config(<<-CONF)
793
+ [main]
794
794
  myfile = #{otherfile} {owner = service}
795
- "
796
- @settings.expects(:read_file).returns(text)
797
- @settings.send(:parse_config_files)
795
+ CONF
796
+
798
797
  @settings[:myfile].should == otherfile
799
798
  @settings.metadata(:myfile).should == {:owner => "suser"}
800
799
  end
@@ -826,6 +825,37 @@ describe Puppet::Settings do
826
825
  @settings.metadata(:myfile).should == {:mode => "664"}
827
826
  end
828
827
 
828
+ it "does not use the metadata from the same setting in a different section" do
829
+ default_values = {}
830
+ PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS.keys.each do |key|
831
+ default_values[key] = 'default value'
832
+ end
833
+
834
+ file = make_absolute("/file")
835
+ default_mode = "0600"
836
+ @settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
837
+ @settings.define_settings :master, :myfile => { :type => :file, :default => file, :desc => "a", :mode => default_mode }
838
+
839
+ text = "[master]
840
+ myfile = #{file}/foo
841
+ [agent]
842
+ myfile = #{file} {mode = 664}
843
+ "
844
+ @settings.expects(:read_file).returns(text)
845
+
846
+ # will start initialization as user
847
+ @settings.preferred_run_mode.should == :user
848
+ @settings.send(:parse_config_files)
849
+
850
+ # change app run_mode to master
851
+ @settings.initialize_app_defaults(default_values.merge(:run_mode => :master))
852
+ @settings.preferred_run_mode.should == :master
853
+
854
+ # initializing the app should have reloaded the metadata based on run_mode
855
+ @settings[:myfile].should == "#{file}/foo"
856
+ @settings.metadata(:myfile).should == { :mode => default_mode }
857
+ end
858
+
829
859
  it "should call hooks associated with values set in the configuration file" do
830
860
  values = []
831
861
  @settings.define_settings :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
@@ -905,7 +935,28 @@ describe Puppet::Settings do
905
935
  @settings.initialize_app_defaults(:logdir => '/path/to/logdir', :confdir => '/path/to/confdir', :vardir => '/path/to/vardir')
906
936
 
907
937
  hook_invoked.should be_true
908
- @settings[:deferred].should eq File.expand_path('/path/to/confdir/goose')
938
+ @settings[:deferred].should eq(File.expand_path('/path/to/confdir/goose'))
939
+ end
940
+
941
+ it "does not require the value for a setting without a hook to resolve during global setup" do
942
+ hook_invoked = false
943
+ @settings.define_settings :section, :can_cause_problems => {:desc => '' }
944
+
945
+ @settings.define_settings(:main,
946
+ :logdir => { :type => :directory, :default => nil, :desc => "logdir" },
947
+ :confdir => { :type => :directory, :default => nil, :desc => "confdir" },
948
+ :vardir => { :type => :directory, :default => nil, :desc => "vardir" })
949
+
950
+ text = <<-EOD
951
+ [main]
952
+ can_cause_problems=$confdir/goose
953
+ EOD
954
+
955
+ @settings.stubs(:read_file).returns(text)
956
+ @settings.initialize_global_settings
957
+ @settings.initialize_app_defaults(:logdir => '/path/to/logdir', :confdir => '/path/to/confdir', :vardir => '/path/to/vardir')
958
+
959
+ @settings[:can_cause_problems].should eq(File.expand_path('/path/to/confdir/goose'))
909
960
  end
910
961
 
911
962
  it "should allow empty values" do
@@ -952,7 +1003,7 @@ describe Puppet::Settings do
952
1003
  context "running non-root without explicit config file" do
953
1004
  before :each do
954
1005
  Puppet.features.stubs(:root?).returns(false)
955
- Puppet::FileSystem::File.expects(:exist?).
1006
+ Puppet::FileSystem.expects(:exist?).
956
1007
  with(user_config_file_default_location).
957
1008
  returns(true).in_sequence(seq)
958
1009
  @settings.expects(:read_file).
@@ -974,7 +1025,7 @@ describe Puppet::Settings do
974
1025
  context "running as root without explicit config file" do
975
1026
  before :each do
976
1027
  Puppet.features.stubs(:root?).returns(true)
977
- Puppet::FileSystem::File.expects(:exist?).
1028
+ Puppet::FileSystem.expects(:exist?).
978
1029
  with(main_config_file_default_location).
979
1030
  returns(true).in_sequence(seq)
980
1031
  @settings.expects(:read_file).
@@ -997,7 +1048,7 @@ describe Puppet::Settings do
997
1048
  before :each do
998
1049
  Puppet.features.stubs(:root?).returns(false)
999
1050
  @settings[:confdir] = File.dirname(main_config_file_default_location)
1000
- Puppet::FileSystem::File.expects(:exist?).
1051
+ Puppet::FileSystem.expects(:exist?).
1001
1052
  with(main_config_file_default_location).
1002
1053
  returns(true).in_sequence(seq)
1003
1054
  @settings.expects(:read_file).
@@ -1027,13 +1078,13 @@ describe Puppet::Settings do
1027
1078
  :one => { :default => "ONE", :desc => "a" },
1028
1079
  :two => { :default => "$one TWO", :desc => "b" },
1029
1080
  :three => { :default => "$one $two THREE", :desc => "c" }
1030
- Puppet::FileSystem::File.stubs(:exist?).with(@file).returns true
1031
- Puppet::FileSystem::File.stubs(:exist?).with(@userconfig).returns false
1081
+ Puppet::FileSystem.stubs(:exist?).with(@file).returns true
1082
+ Puppet::FileSystem.stubs(:exist?).with(@userconfig).returns false
1032
1083
  @settings.stubs(:user_config_file).returns(@userconfig)
1033
1084
  end
1034
1085
 
1035
1086
  it "does not create the WatchedFile instance and should not parse if the file does not exist" do
1036
- Puppet::FileSystem::File.expects(:exist?).with(@file).returns false
1087
+ Puppet::FileSystem.expects(:exist?).with(@file).returns false
1037
1088
  Puppet::Util::WatchedFile.expects(:new).never
1038
1089
 
1039
1090
  @settings.expects(:parse_config_files).never
@@ -1064,7 +1115,7 @@ describe Puppet::Settings do
1064
1115
  it "reparses if the file has changed" do
1065
1116
  @watched_file.expects(:changed?).returns true
1066
1117
 
1067
- @settings.expects(:unsafe_parse).with(@file)
1118
+ @settings.expects(:parse_config_files)
1068
1119
 
1069
1120
  @settings.reparse_config_files
1070
1121
  end
@@ -1372,13 +1423,20 @@ describe Puppet::Settings do
1372
1423
 
1373
1424
  @trans.expects(:any_failed?).returns(true)
1374
1425
 
1375
- report = mock 'report'
1376
- @trans.expects(:report).returns report
1426
+ resource = Puppet::Type.type(:notify).new(:title => 'failed')
1427
+ status = Puppet::Resource::Status.new(resource)
1428
+ event = Puppet::Transaction::Event.new(
1429
+ :name => 'failure',
1430
+ :status => 'failure',
1431
+ :message => 'My failure')
1432
+ status.add_event(event)
1377
1433
 
1378
- log = mock 'log', :to_s => "My failure", :level => :err
1379
- report.expects(:logs).returns [log]
1434
+ report = Puppet::Transaction::Report.new('apply')
1435
+ report.add_resource_status(status)
1436
+
1437
+ @trans.expects(:report).returns report
1380
1438
 
1381
- @settings.expects(:raise).with { |msg| msg.include?("My failure") }
1439
+ @settings.expects(:raise).with(includes("My failure"))
1382
1440
  @settings.use(:whatever)
1383
1441
  end
1384
1442
  end