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
@@ -9,7 +9,7 @@ describe "Puppet::Node::ActiveRecord", :if => Puppet.features.rails? && Puppet.f
9
9
  let(:nodename) { "mynode" }
10
10
  let(:fact_values) { {:afact => "a value"} }
11
11
  let(:facts) { Puppet::Node::Facts.new(nodename, fact_values) }
12
- let(:environment) { Puppet::Node::Environment.new("myenv") }
12
+ let(:environment) { Puppet::Node::Environment.create(:myenv, [], '') }
13
13
  let(:request) { Puppet::Indirector::Request.new(:node, :find, nodename, nil, :environment => environment) }
14
14
  let(:node_indirection) { Puppet::Node::ActiveRecord.new }
15
15
 
@@ -6,7 +6,7 @@ require 'puppet/indirector/node/ldap'
6
6
  describe Puppet::Node::Ldap do
7
7
  let(:nodename) { "mynode.domain.com" }
8
8
  let(:node_indirection) { Puppet::Node::Ldap.new }
9
- let(:environment) { Puppet::Node::Environment.new("myenv") }
9
+ let(:environment) { Puppet::Node::Environment.create(:myenv, [], '') }
10
10
  let(:fact_values) { {:afact => "a value", "one" => "boo"} }
11
11
  let(:facts) { Puppet::Node::Facts.new(nodename, fact_values) }
12
12
 
@@ -176,10 +176,13 @@ describe Puppet::Node::Ldap do
176
176
  end
177
177
 
178
178
  it "should set the node's environment to the environment of the results" do
179
- result_env = Puppet::Node::Environment.new("local_test")
179
+ result_env = Puppet::Node::Environment.create(:local_test, [], '')
180
180
  Puppet::Node::Facts.indirection.stubs(:find).with(nodename, :environment => result_env).returns(facts)
181
181
  @result[:environment] = "local_test"
182
- node_indirection.find(request).environment.should == result_env
182
+
183
+ Puppet.override(:environments => Puppet::Environments::Static.new(result_env)) do
184
+ node_indirection.find(request).environment.should == result_env
185
+ end
183
186
  end
184
187
 
185
188
  it "should retain false parameter values" do
@@ -256,17 +259,20 @@ describe Puppet::Node::Ldap do
256
259
  end
257
260
 
258
261
  it "should use the parent's environment if the node has none" do
259
- env = Puppet::Node::Environment.new("parent")
262
+ env = Puppet::Node::Environment.create(:parent, [], '')
260
263
  @entry[:parent] = "parent"
261
264
 
262
265
  @parent[:environment] = "parent"
263
266
 
264
267
  Puppet::Node::Facts.indirection.stubs(:find).with(nodename, :environment => env).returns(facts)
265
- node_indirection.find(request).environment.should == env
268
+
269
+ Puppet.override(:environments => Puppet::Environments::Static.new(env)) do
270
+ node_indirection.find(request).environment.should == env
271
+ end
266
272
  end
267
273
 
268
274
  it "should prefer the node's environment to the parent's" do
269
- child_env = Puppet::Node::Environment.new("child")
275
+ child_env = Puppet::Node::Environment.create(:child, [], '')
270
276
  @entry[:parent] = "parent"
271
277
  @entry[:environment] = "child"
272
278
 
@@ -274,7 +280,10 @@ describe Puppet::Node::Ldap do
274
280
 
275
281
  Puppet::Node::Facts.indirection.stubs(:find).with(nodename, :environment => child_env).returns(facts)
276
282
 
277
- node_indirection.find(request).environment.should == child_env
283
+ Puppet.override(:environments => Puppet::Environments::Static.new(child_env)) do
284
+
285
+ node_indirection.find(request).environment.should == child_env
286
+ end
278
287
  end
279
288
 
280
289
  it "should recursively look up parent information" do
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby
2
+ require 'spec_helper'
3
+
4
+ require 'puppet/node'
5
+ require 'puppet/indirector/node/msgpack'
6
+
7
+ describe Puppet::Node::Msgpack, :if => Puppet.features.msgpack? do
8
+ it "should be a subclass of the Msgpack terminus" do
9
+ Puppet::Node::Msgpack.superclass.should equal(Puppet::Indirector::Msgpack)
10
+ end
11
+
12
+ it "should have documentation" do
13
+ Puppet::Node::Msgpack.doc.should_not be_nil
14
+ end
15
+
16
+ it "should be registered with the configuration store indirection" do
17
+ indirection = Puppet::Indirector::Indirection.instance(:node)
18
+ Puppet::Node::Msgpack.indirection.should equal(indirection)
19
+ end
20
+
21
+ it "should have its name set to :msgpack" do
22
+ Puppet::Node::Msgpack.name.should == :msgpack
23
+ end
24
+ end
@@ -7,7 +7,7 @@ describe Puppet::Node::Plain do
7
7
  let(:nodename) { "mynode" }
8
8
  let(:fact_values) { {:afact => "a value"} }
9
9
  let(:facts) { Puppet::Node::Facts.new(nodename, fact_values) }
10
- let(:environment) { Puppet::Node::Environment.new("myenv") }
10
+ let(:environment) { Puppet::Node::Environment.create(:myenv, [], '') }
11
11
  let(:request) { Puppet::Indirector::Request.new(:node, :find, nodename, nil, :environment => environment) }
12
12
  let(:node_indirection) { Puppet::Node::Plain.new }
13
13
 
@@ -107,7 +107,7 @@ describe Puppet::Indirector::Queue do
107
107
  expect { @store_class.subscribe {|o| o } }.to_not raise_error
108
108
 
109
109
  @logs.length.should == 1
110
- @logs.first.message.should =~ /Error occured with subscription to queue my_queue for indirection my_queue: ArgumentError/
110
+ @logs.first.message.should =~ /Error occurred with subscription to queue my_queue for indirection my_queue: ArgumentError/
111
111
  @logs.first.level.should == :err
112
112
  end
113
113
  end
@@ -0,0 +1,28 @@
1
+ #! /usr/bin/env ruby
2
+ require 'spec_helper'
3
+
4
+ require 'puppet/transaction/report'
5
+ require 'puppet/indirector/report/msgpack'
6
+
7
+ describe Puppet::Transaction::Report::Msgpack, :if => Puppet.features.msgpack? do
8
+ it "should be a subclass of the Msgpack terminus" do
9
+ Puppet::Transaction::Report::Msgpack.superclass.should equal(Puppet::Indirector::Msgpack)
10
+ end
11
+
12
+ it "should have documentation" do
13
+ Puppet::Transaction::Report::Msgpack.doc.should_not be_nil
14
+ end
15
+
16
+ it "should be registered with the report indirection" do
17
+ indirection = Puppet::Indirector::Indirection.instance(:report)
18
+ Puppet::Transaction::Report::Msgpack.indirection.should equal(indirection)
19
+ end
20
+
21
+ it "should have its name set to :msgpack" do
22
+ Puppet::Transaction::Report::Msgpack.name.should == :msgpack
23
+ end
24
+
25
+ it "should unconditionally save/load from the --lastrunreport setting" do
26
+ subject.path(:me).should == Puppet[:lastrunreport]
27
+ end
28
+ end
@@ -5,6 +5,7 @@ require 'puppet/indirector/request'
5
5
  require 'puppet/util/pson'
6
6
 
7
7
  describe Puppet::Indirector::Request do
8
+ include JSONMatchers
8
9
 
9
10
  describe "when registering the document type" do
10
11
  it "should register its document type with JSON" do
@@ -217,21 +218,28 @@ describe Puppet::Indirector::Request do
217
218
  Puppet::Indirector::Request.new(:myind, :find, "my key", nil).escaped_key.should == URI.escape("my key")
218
219
  end
219
220
 
220
- it "should have an environment accessor" do
221
- Puppet::Indirector::Request.new(:myind, :find, "my key", nil, :environment => "foo").should respond_to(:environment)
222
- end
223
-
224
221
  it "should set its environment to an environment instance when a string is specified as its environment" do
225
- Puppet::Indirector::Request.new(:myind, :find, "my key", nil, :environment => "foo").environment.should == Puppet::Node::Environment.new("foo")
222
+ env = Puppet::Node::Environment.create(:foo, [], '')
223
+
224
+ Puppet.override(:environments => Puppet::Environments::Static.new(env)) do
225
+ Puppet::Indirector::Request.new(:myind, :find, "my key", nil, :environment => "foo").environment.should == env
226
+ end
226
227
  end
227
228
 
228
229
  it "should use any passed in environment instances as its environment" do
229
- env = Puppet::Node::Environment.new("foo")
230
+ env = Puppet::Node::Environment.create(:foo, [], '')
231
+
230
232
  Puppet::Indirector::Request.new(:myind, :find, "my key", nil, :environment => env).environment.should equal(env)
231
233
  end
232
234
 
233
- it "should use the default environment when none is provided" do
234
- Puppet::Indirector::Request.new(:myind, :find, "my key", nil ).environment.should equal(Puppet::Node::Environment.new)
235
+ it "should use the configured environment when none is provided" do
236
+ configured = Puppet::Node::Environment.create(:foo, [], '')
237
+
238
+ Puppet[:environment] = "foo"
239
+
240
+ Puppet.override(:environments => Puppet::Environments::Static.new(configured)) do
241
+ Puppet::Indirector::Request.new(:myind, :find, "my key", nil).environment.should == configured
242
+ end
235
243
  end
236
244
 
237
245
  it "should support converting its options to a hash" do
@@ -164,10 +164,6 @@ describe Puppet::Indirector::REST do
164
164
  Puppet::Indirector::Request.new(:test_model, :save, key, instance, options)
165
165
  end
166
166
 
167
- it "should include the v1 REST API module" do
168
- Puppet::Indirector::REST.ancestors.should be_include(Puppet::Network::HTTP::API::V1)
169
- end
170
-
171
167
  it "should have a method for specifying what setting a subclass should use to retrieve its server" do
172
168
  terminus_class.should respond_to(:use_server_setting)
173
169
  end
@@ -121,9 +121,9 @@ describe Puppet::Indirector::SslFile do
121
121
  describe "when finding certificates on disk" do
122
122
  describe "and no certificate is present" do
123
123
  it "should return nil" do
124
- Puppet::FileSystem::File.expects(:exist?).with(@path).returns(true)
124
+ Puppet::FileSystem.expects(:exist?).with(@path).returns(true)
125
125
  Dir.expects(:entries).with(@path).returns([])
126
- Puppet::FileSystem::File.expects(:exist?).with(@certpath).returns(false)
126
+ Puppet::FileSystem.expects(:exist?).with(@certpath).returns(false)
127
127
 
128
128
  @searcher.find(@request).should be_nil
129
129
  end
@@ -139,7 +139,7 @@ describe Puppet::Indirector::SslFile do
139
139
 
140
140
  context "is readable" do
141
141
  it "should return an instance of the model, which it should use to read the certificate" do
142
- Puppet::FileSystem::File.expects(:exist?).with(@certpath).returns true
142
+ Puppet::FileSystem.expects(:exist?).with(@certpath).returns true
143
143
 
144
144
  model.expects(:new).with("myname").returns cert
145
145
  cert.expects(:read).with(@certpath)
@@ -150,7 +150,7 @@ describe Puppet::Indirector::SslFile do
150
150
 
151
151
  context "is unreadable" do
152
152
  it "should raise an exception" do
153
- Puppet::FileSystem::File.expects(:exist?).with(@certpath).returns(true)
153
+ Puppet::FileSystem.expects(:exist?).with(@certpath).returns(true)
154
154
 
155
155
  model.expects(:new).with("myname").returns cert
156
156
  cert.expects(:read).with(@certpath).raises(Errno::EACCES)
@@ -171,9 +171,9 @@ describe Puppet::Indirector::SslFile do
171
171
  # the support for upper-case certs can be removed around mid-2009.
172
172
  it "should rename the existing file to the lower-case path" do
173
173
  @path = @searcher.path("myhost")
174
- Puppet::FileSystem::File.expects(:exist?).with(@path).returns(false)
174
+ Puppet::FileSystem.expects(:exist?).with(@path).returns(false)
175
175
  dir, file = File.split(@path)
176
- Puppet::FileSystem::File.expects(:exist?).with(dir).returns true
176
+ Puppet::FileSystem.expects(:exist?).with(dir).returns true
177
177
  Dir.expects(:entries).with(dir).returns [".", "..", "something.pem", file.upcase]
178
178
 
179
179
  File.expects(:rename).with(File.join(dir, file.upcase), @path)
@@ -256,7 +256,7 @@ describe Puppet::Indirector::SslFile do
256
256
  describe "when destroying certificates" do
257
257
  describe "that do not exist" do
258
258
  before do
259
- Puppet::FileSystem::File.expects(:exist?).with(@certpath).returns false
259
+ Puppet::FileSystem.expects(:exist?).with(Puppet::FileSystem.pathname(@certpath)).returns false
260
260
  end
261
261
 
262
262
  it "should return false" do
@@ -266,14 +266,15 @@ describe Puppet::Indirector::SslFile do
266
266
 
267
267
  describe "that exist" do
268
268
  it "should unlink the certificate file" do
269
- Puppet::FileSystem::File.expects(:exist?).with(@certpath).returns true
270
- Puppet::FileSystem::File.expects(:unlink).with(@certpath)
269
+ path = Puppet::FileSystem.pathname(@certpath)
270
+ Puppet::FileSystem.expects(:exist?).with(path).returns true
271
+ Puppet::FileSystem.expects(:unlink).with(path)
271
272
  @searcher.destroy(@request)
272
273
  end
273
274
 
274
275
  it "should log that is removing the file" do
275
- Puppet::FileSystem::File.stubs(:exist?).returns true
276
- Puppet::FileSystem::File.stubs(:unlink)
276
+ Puppet::FileSystem.stubs(:exist?).returns true
277
+ Puppet::FileSystem.stubs(:unlink)
277
278
  Puppet.expects(:notice)
278
279
  @searcher.destroy(@request)
279
280
  end
@@ -149,15 +149,15 @@ describe Puppet::Indirector::Yaml do
149
149
  end
150
150
 
151
151
  it "should unlink the right yaml file if it exists" do
152
- Puppet::FileSystem::File.expects(:exist?).with(path).returns true
153
- Puppet::FileSystem::File.expects(:unlink).with(path)
152
+ Puppet::FileSystem.expects(:exist?).with(path).returns true
153
+ Puppet::FileSystem.expects(:unlink).with(path)
154
154
 
155
155
  @store.destroy(@request)
156
156
  end
157
157
 
158
158
  it "should not unlink the yaml file if it does not exists" do
159
- Puppet::FileSystem::File.expects(:exist?).with(path).returns false
160
- Puppet::FileSystem::File.expects(:unlink).with(path).never
159
+ Puppet::FileSystem.expects(:exist?).with(path).returns false
160
+ Puppet::FileSystem.expects(:unlink).with(path).never
161
161
 
162
162
  @store.destroy(@request)
163
163
  end
@@ -0,0 +1,32 @@
1
+ #! /usr/bin/env ruby
2
+ require 'spec_helper'
3
+ require 'puppet/face'
4
+
5
+ describe Puppet::Face[:man, :current] do
6
+ let(:pager) { '/path/to/our/pager' }
7
+
8
+ around do |example|
9
+ oldpager = ENV['MANPAGER']
10
+ ENV['MANPAGER'] = pager
11
+ example.run
12
+ ENV['MANPAGER'] = oldpager
13
+ end
14
+
15
+ it "exits with 0 when generating man documentation for each available application" do
16
+ Puppet::Util.stubs(:which).with('ronn').returns(nil)
17
+ Puppet::Util.stubs(:which).with(pager).returns(pager)
18
+
19
+ Puppet::Application.available_application_names.each do |name|
20
+ next if %w{man face_base indirection_base}.include? name
21
+
22
+ klass = Puppet::Application.find('man')
23
+ app = klass.new(Puppet::Util::CommandLine.new('puppet', ['man', name]))
24
+
25
+ expect do
26
+ IO.stubs(:popen).with(pager, anything).yields($stdout)
27
+
28
+ expect { app.run }.to exit_with(0)
29
+ end.to_not have_printed(/undefined method `gsub'/)
30
+ end
31
+ end
32
+ end
@@ -15,7 +15,7 @@ describe Puppet::Module do
15
15
  before do
16
16
  # This is necessary because of the extra checks we have for the deprecated
17
17
  # 'plugins' directory
18
- Puppet::FileSystem::File.stubs(:exist?).returns false
18
+ Puppet::FileSystem.stubs(:exist?).returns false
19
19
  end
20
20
 
21
21
  it "should have a class method that returns a named module from a given environment" do
@@ -90,14 +90,13 @@ describe Puppet::Module do
90
90
 
91
91
  describe "when finding unmet dependencies" do
92
92
  before do
93
- Puppet::FileSystem::File.unstub(:exist?)
93
+ Puppet::FileSystem.unstub(:exist?)
94
94
  @modpath = tmpdir('modpath')
95
95
  Puppet.settings[:modulepath] = @modpath
96
96
  end
97
97
 
98
98
  it "should list modules that are missing" do
99
99
  metadata_file = "#{@modpath}/needy/metadata.json"
100
- Puppet::FileSystem::File.expects(:exist?).twice.with(metadata_file).returns true
101
100
  mod = PuppetSpec::Modules.create(
102
101
  'needy',
103
102
  @modpath,
@@ -119,7 +118,6 @@ describe Puppet::Module do
119
118
 
120
119
  it "should list modules that are missing and have invalid names" do
121
120
  metadata_file = "#{@modpath}/needy/metadata.json"
122
- Puppet::FileSystem::File.expects(:exist?).with(metadata_file).twice.returns true
123
121
  mod = PuppetSpec::Modules.create(
124
122
  'needy',
125
123
  @modpath,
@@ -140,42 +138,43 @@ describe Puppet::Module do
140
138
  end
141
139
 
142
140
  it "should list modules with unmet version requirement" do
143
- ['foobar', 'foobaz'].each do |mod_name|
144
- metadata_file = "#{@modpath}/#{mod_name}/metadata.json"
145
- Puppet::FileSystem::File.stubs(:exist?).with(metadata_file).returns true
146
- end
141
+ env = Puppet::Node::Environment.create(:testing, [@modpath], '')
142
+
147
143
  mod = PuppetSpec::Modules.create(
148
- 'foobar',
144
+ 'test_gte_req',
149
145
  @modpath,
150
146
  :metadata => {
151
147
  :dependencies => [{
152
148
  "version_requirement" => ">= 2.2.0",
153
149
  "name" => "baz/foobar"
154
150
  }]
155
- }
151
+ },
152
+ :environment => env
156
153
  )
157
154
  mod2 = PuppetSpec::Modules.create(
158
- 'foobaz',
155
+ 'test_specific_req',
159
156
  @modpath,
160
157
  :metadata => {
161
158
  :dependencies => [{
162
159
  "version_requirement" => "1.0.0",
163
160
  "name" => "baz/foobar"
164
161
  }]
165
- }
162
+ },
163
+ :environment => env
166
164
  )
167
165
 
168
166
  PuppetSpec::Modules.create(
169
167
  'foobar',
170
168
  @modpath,
171
- :metadata => { :version => '2.0.0', :author => 'baz' }
169
+ :metadata => { :version => '2.0.0', :author => 'baz' },
170
+ :environment => env
172
171
  )
173
172
 
174
173
  mod.unmet_dependencies.should == [{
175
174
  :reason => :version_mismatch,
176
175
  :name => "baz/foobar",
177
176
  :version_constraint => ">= 2.2.0",
178
- :parent => { :version => "v9.9.9", :name => "puppetlabs/foobar" },
177
+ :parent => { :version => "v9.9.9", :name => "puppetlabs/test_gte_req" },
179
178
  :mod_details => { :installed_version => "2.0.0" }
180
179
  }]
181
180
 
@@ -183,13 +182,15 @@ describe Puppet::Module do
183
182
  :reason => :version_mismatch,
184
183
  :name => "baz/foobar",
185
184
  :version_constraint => "v1.0.0",
186
- :parent => { :version => "v9.9.9", :name => "puppetlabs/foobaz" },
185
+ :parent => { :version => "v9.9.9", :name => "puppetlabs/test_specific_req" },
187
186
  :mod_details => { :installed_version => "2.0.0" }
188
187
  }]
189
188
 
190
189
  end
191
190
 
192
191
  it "should consider a dependency without a version requirement to be satisfied" do
192
+ env = Puppet::Node::Environment.create(:testing, [@modpath], '')
193
+
193
194
  mod = PuppetSpec::Modules.create(
194
195
  'foobar',
195
196
  @modpath,
@@ -197,7 +198,8 @@ describe Puppet::Module do
197
198
  :dependencies => [{
198
199
  "name" => "baz/foobar"
199
200
  }]
200
- }
201
+ },
202
+ :environment => env
201
203
  )
202
204
  PuppetSpec::Modules.create(
203
205
  'foobar',
@@ -205,15 +207,16 @@ describe Puppet::Module do
205
207
  :metadata => {
206
208
  :version => '2.0.0',
207
209
  :author => 'baz'
208
- }
210
+ },
211
+ :environment => env
209
212
  )
210
213
 
211
214
  mod.unmet_dependencies.should be_empty
212
215
  end
213
216
 
214
217
  it "should consider a dependency without a semantic version to be unmet" do
215
- metadata_file = "#{@modpath}/foobar/metadata.json"
216
- Puppet::FileSystem::File.expects(:exist?).with(metadata_file).times(3).returns true
218
+ env = Puppet::Node::Environment.create(:testing, [@modpath], '')
219
+
217
220
  mod = PuppetSpec::Modules.create(
218
221
  'foobar',
219
222
  @modpath,
@@ -221,7 +224,8 @@ describe Puppet::Module do
221
224
  :dependencies => [{
222
225
  "name" => "baz/foobar"
223
226
  }]
224
- }
227
+ },
228
+ :environment => env
225
229
  )
226
230
  PuppetSpec::Modules.create(
227
231
  'foobar',
@@ -229,7 +233,8 @@ describe Puppet::Module do
229
233
  :metadata => {
230
234
  :version => '5.1',
231
235
  :author => 'baz'
232
- }
236
+ },
237
+ :environment => env
233
238
  )
234
239
 
235
240
  mod.unmet_dependencies.should == [{
@@ -254,10 +259,8 @@ describe Puppet::Module do
254
259
  end
255
260
 
256
261
  it "should only list unmet dependencies" do
257
- [name, 'satisfied'].each do |mod_name|
258
- metadata_file = "#{@modpath}/#{mod_name}/metadata.json"
259
- Puppet::FileSystem::File.expects(:exist?).with(metadata_file).twice.returns true
260
- end
262
+ env = Puppet::Node::Environment.create(:testing, [@modpath], '')
263
+
261
264
  mod = PuppetSpec::Modules.create(
262
265
  name,
263
266
  @modpath,
@@ -272,7 +275,8 @@ describe Puppet::Module do
272
275
  "name" => "baz/notsatisfied"
273
276
  }
274
277
  ]
275
- }
278
+ },
279
+ :environment => env
276
280
  )
277
281
  PuppetSpec::Modules.create(
278
282
  'satisfied',
@@ -280,7 +284,8 @@ describe Puppet::Module do
280
284
  :metadata => {
281
285
  :version => '3.3.0',
282
286
  :author => 'baz'
283
- }
287
+ },
288
+ :environment => env
284
289
  )
285
290
 
286
291
  mod.unmet_dependencies.should == [{
@@ -293,6 +298,8 @@ describe Puppet::Module do
293
298
  end
294
299
 
295
300
  it "should be empty when all dependencies are met" do
301
+ env = Puppet::Node::Environment.create(:testing, [@modpath], '')
302
+
296
303
  mod = PuppetSpec::Modules.create(
297
304
  'mymod2',
298
305
  @modpath,
@@ -307,7 +314,8 @@ describe Puppet::Module do
307
314
  "name" => "baz/alsosatisfied"
308
315
  }
309
316
  ]
310
- }
317
+ },
318
+ :environment => env
311
319
  )
312
320
  PuppetSpec::Modules.create(
313
321
  'satisfied',
@@ -315,7 +323,8 @@ describe Puppet::Module do
315
323
  :metadata => {
316
324
  :version => '3.3.0',
317
325
  :author => 'baz'
318
- }
326
+ },
327
+ :environment => env
319
328
  )
320
329
  PuppetSpec::Modules.create(
321
330
  'alsosatisfied',
@@ -323,7 +332,8 @@ describe Puppet::Module do
323
332
  :metadata => {
324
333
  :version => '2.1.0',
325
334
  :author => 'baz'
326
- }
335
+ },
336
+ :environment => env
327
337
  )
328
338
 
329
339
  mod.unmet_dependencies.should be_empty
@@ -382,31 +392,31 @@ describe Puppet::Module do
382
392
  end
383
393
  it "should be able to return individual #{filetype}" do
384
394
  module_file = File.join(path, dirname, "my/file")
385
- Puppet::FileSystem::File.expects(:exist?).with(module_file).returns true
395
+ Puppet::FileSystem.expects(:exist?).with(module_file).returns true
386
396
  mod.send(filetype.to_s.sub(/s$/, ''), "my/file").should == module_file
387
397
  end
388
398
 
389
399
  it "should consider #{filetype} to be present if their base directory exists" do
390
400
  module_file = File.join(path, dirname)
391
- Puppet::FileSystem::File.expects(:exist?).with(module_file).returns true
401
+ Puppet::FileSystem.expects(:exist?).with(module_file).returns true
392
402
  mod.send(filetype.to_s + "?").should be_true
393
403
  end
394
404
 
395
405
  it "should consider #{filetype} to be absent if their base directory does not exist" do
396
406
  module_file = File.join(path, dirname)
397
- Puppet::FileSystem::File.expects(:exist?).with(module_file).returns false
407
+ Puppet::FileSystem.expects(:exist?).with(module_file).returns false
398
408
  mod.send(filetype.to_s + "?").should be_false
399
409
  end
400
410
 
401
411
  it "should return nil if asked to return individual #{filetype} that don't exist" do
402
412
  module_file = File.join(path, dirname, "my/file")
403
- Puppet::FileSystem::File.expects(:exist?).with(module_file).returns false
413
+ Puppet::FileSystem.expects(:exist?).with(module_file).returns false
404
414
  mod.send(filetype.to_s.sub(/s$/, ''), "my/file").should be_nil
405
415
  end
406
416
 
407
417
  it "should return the base directory if asked for a nil path" do
408
418
  base = File.join(path, dirname)
409
- Puppet::FileSystem::File.expects(:exist?).with(base).returns true
419
+ Puppet::FileSystem.expects(:exist?).with(base).returns true
410
420
  mod.send(filetype.to_s.sub(/s$/, ''), nil).should == base
411
421
  end
412
422
  end
@@ -439,8 +449,8 @@ describe Puppet::Module, "when finding matching manifests" do
439
449
  end
440
450
 
441
451
  it "should default to the 'init' file if no glob pattern is specified" do
442
- Puppet::FileSystem::File.expects(:exist?).with("/a/manifests/init.pp").returns(true)
443
- Puppet::FileSystem::File.expects(:exist?).with("/a/manifests/init.rb").returns(false)
452
+ Puppet::FileSystem.expects(:exist?).with("/a/manifests/init.pp").returns(true)
453
+ Puppet::FileSystem.expects(:exist?).with("/a/manifests/init.rb").returns(false)
444
454
 
445
455
  @mod.match_manifests(nil).should == %w{/a/manifests/init.pp}
446
456
  end
@@ -492,21 +502,21 @@ describe Puppet::Module do
492
502
  end
493
503
 
494
504
  it "should have metadata if it has a metadata file and its data is not empty" do
495
- Puppet::FileSystem::File.expects(:exist?).with(@module.metadata_file).returns true
505
+ Puppet::FileSystem.expects(:exist?).with(@module.metadata_file).returns true
496
506
  File.stubs(:read).with(@module.metadata_file).returns "{\"foo\" : \"bar\"}"
497
507
 
498
508
  @module.should be_has_metadata
499
509
  end
500
510
 
501
511
  it "should have metadata if it has a metadata file and its data is not empty" do
502
- Puppet::FileSystem::File.expects(:exist?).with(@module.metadata_file).returns true
512
+ Puppet::FileSystem.expects(:exist?).with(@module.metadata_file).returns true
503
513
  File.stubs(:read).with(@module.metadata_file).returns "{\"foo\" : \"bar\"}"
504
514
 
505
515
  @module.should be_has_metadata
506
516
  end
507
517
 
508
518
  it "should not have metadata if has a metadata file and its data is empty" do
509
- Puppet::FileSystem::File.expects(:exist?).with(@module.metadata_file).returns true
519
+ Puppet::FileSystem.expects(:exist?).with(@module.metadata_file).returns true
510
520
  File.stubs(:read).with(@module.metadata_file).returns "/*
511
521
  +-----------------------------------------------------------------------+
512
522
  | |
@@ -524,7 +534,7 @@ describe Puppet::Module do
524
534
  end
525
535
 
526
536
  it "should know if it is missing a metadata file" do
527
- Puppet::FileSystem::File.expects(:exist?).with(@module.metadata_file).returns false
537
+ Puppet::FileSystem.expects(:exist?).with(@module.metadata_file).returns false
528
538
 
529
539
  @module.should_not be_has_metadata
530
540
  end
@@ -541,7 +551,7 @@ describe Puppet::Module do
541
551
  end
542
552
 
543
553
  it "should tolerate failure to parse" do
544
- Puppet::FileSystem::File.expects(:exist?).with(@module.metadata_file).returns true
554
+ Puppet::FileSystem.expects(:exist?).with(@module.metadata_file).returns true
545
555
  File.stubs(:read).with(@module.metadata_file).returns(my_fixture('trailing-comma.json'))
546
556
 
547
557
  @module.has_metadata?.should be_false
@@ -652,11 +662,13 @@ describe Puppet::Module do
652
662
  end
653
663
 
654
664
  it "should know what other modules require it" do
655
- Puppet.settings[:modulepath] = @modpath
665
+ env = Puppet::Node::Environment.create(:testing, [@modpath], '')
666
+
656
667
  dependable = PuppetSpec::Modules.create(
657
668
  'dependable',
658
669
  @modpath,
659
- :metadata => {:author => 'puppetlabs'}
670
+ :metadata => {:author => 'puppetlabs'},
671
+ :environment => env
660
672
  )
661
673
  PuppetSpec::Modules.create(
662
674
  'needy',
@@ -667,7 +679,8 @@ describe Puppet::Module do
667
679
  "version_requirement" => ">= 2.2.0",
668
680
  "name" => "puppetlabs/dependable"
669
681
  }]
670
- }
682
+ },
683
+ :environment => env
671
684
  )
672
685
  PuppetSpec::Modules.create(
673
686
  'wantit',
@@ -678,7 +691,8 @@ describe Puppet::Module do
678
691
  "version_requirement" => "< 5.0.0",
679
692
  "name" => "puppetlabs/dependable"
680
693
  }]
681
- }
694
+ },
695
+ :environment => env
682
696
  )
683
697
  dependable.required_by.should =~ [
684
698
  {