puppet 3.1.1 → 3.2.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 (477) hide show
  1. data/CONTRIBUTING.md +2 -2
  2. data/Gemfile +32 -19
  3. data/README_DEVELOPER.md +332 -14
  4. data/Rakefile +9 -5
  5. data/ext/build_defaults.yaml +2 -3
  6. data/ext/debian/changelog.erb +6 -0
  7. data/ext/debian/control +6 -6
  8. data/ext/envpuppet +4 -4
  9. data/ext/project_data.yaml +1 -0
  10. data/ext/puppet-nm-dispatcher +13 -0
  11. data/ext/redhat/puppet.spec.erb +17 -0
  12. data/ext/suse/client.init +1 -1
  13. data/ext/systemd/puppetagent.service +2 -2
  14. data/ext/systemd/puppetmaster.service +2 -2
  15. data/lib/hiera/scope.rb +29 -11
  16. data/lib/hiera_puppet.rb +1 -3
  17. data/lib/puppet/agent.rb +3 -3
  18. data/lib/puppet/application.rb +2 -2
  19. data/lib/puppet/application/agent.rb +27 -12
  20. data/lib/puppet/application/apply.rb +11 -1
  21. data/lib/puppet/application/describe.rb +1 -1
  22. data/lib/puppet/application/doc.rb +13 -9
  23. data/lib/puppet/application/filebucket.rb +0 -1
  24. data/lib/puppet/application/kick.rb +1 -0
  25. data/lib/puppet/application/master.rb +16 -8
  26. data/lib/puppet/daemon.rb +19 -64
  27. data/lib/puppet/defaults.rb +61 -5
  28. data/lib/puppet/error.rb +15 -4
  29. data/lib/puppet/external/nagios/grammar.ry +1 -1
  30. data/lib/puppet/external/nagios/makefile +1 -1
  31. data/lib/puppet/external/nagios/parser.rb +185 -618
  32. data/lib/puppet/external/pson/pure/parser.rb +47 -1
  33. data/lib/puppet/face/certificate.rb +3 -3
  34. data/lib/puppet/face/module.rb +1 -1
  35. data/lib/puppet/face/module/changes.rb +3 -1
  36. data/lib/puppet/face/module/uninstall.rb +1 -1
  37. data/lib/puppet/face/node/clean.rb +5 -5
  38. data/lib/puppet/feature/base.rb +3 -1
  39. data/lib/puppet/feature/libuser.rb +8 -0
  40. data/lib/puppet/file_serving/fileset.rb +9 -1
  41. data/lib/puppet/forge.rb +28 -5
  42. data/lib/puppet/forge/errors.rb +34 -0
  43. data/lib/puppet/forge/repository.rb +1 -1
  44. data/lib/puppet/indirector.rb +4 -1
  45. data/lib/puppet/indirector/catalog/compiler.rb +37 -30
  46. data/lib/puppet/indirector/facts/inventory_active_record.rb +1 -0
  47. data/lib/puppet/indirector/indirection.rb +28 -15
  48. data/lib/puppet/indirector/rest.rb +18 -10
  49. data/lib/puppet/interface.rb +11 -4
  50. data/lib/puppet/interface/action.rb +1 -3
  51. data/lib/puppet/interface/action_builder.rb +0 -3
  52. data/lib/puppet/interface/action_manager.rb +0 -3
  53. data/lib/puppet/interface/face_collection.rb +0 -2
  54. data/lib/puppet/interface/option.rb +0 -2
  55. data/lib/puppet/interface/option_builder.rb +0 -2
  56. data/lib/puppet/interface/option_manager.rb +0 -2
  57. data/lib/puppet/metatype/manager.rb +1 -1
  58. data/lib/puppet/module_tool.rb +1 -0
  59. data/lib/puppet/module_tool/applications/application.rb +0 -3
  60. data/lib/puppet/module_tool/applications/builder.rb +8 -20
  61. data/lib/puppet/module_tool/applications/checksummer.rb +1 -1
  62. data/lib/puppet/module_tool/applications/installer.rb +1 -0
  63. data/lib/puppet/module_tool/applications/unpacker.rb +3 -11
  64. data/lib/puppet/module_tool/checksums.rb +1 -1
  65. data/lib/puppet/module_tool/errors/installer.rb +18 -1
  66. data/lib/puppet/module_tool/modulefile.rb +2 -2
  67. data/lib/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +1 -1
  68. data/lib/puppet/module_tool/tar.rb +17 -0
  69. data/lib/puppet/module_tool/tar/gnu.rb +9 -0
  70. data/lib/puppet/module_tool/tar/mini.rb +39 -0
  71. data/lib/puppet/module_tool/tar/solaris.rb +5 -0
  72. data/lib/puppet/network/http.rb +1 -0
  73. data/lib/puppet/network/http/connection.rb +9 -23
  74. data/lib/puppet/network/http/handler.rb +38 -7
  75. data/lib/puppet/network/http/rack/rest.rb +14 -3
  76. data/lib/puppet/network/http/webrick.rb +3 -1
  77. data/lib/puppet/network/http/webrick/rest.rb +11 -2
  78. data/lib/puppet/node/environment.rb +3 -1
  79. data/lib/puppet/parameter.rb +32 -29
  80. data/lib/puppet/parameter/package_options.rb +1 -1
  81. data/lib/puppet/parameter/path.rb +1 -1
  82. data/lib/puppet/parameter/value.rb +1 -1
  83. data/lib/puppet/parameter/value_collection.rb +7 -3
  84. data/lib/puppet/parser/ast.rb +3 -1
  85. data/lib/puppet/parser/ast/arithmetic_operator.rb +56 -12
  86. data/lib/puppet/parser/ast/astarray.rb +1 -1
  87. data/lib/puppet/parser/ast/block_expression.rb +41 -0
  88. data/lib/puppet/parser/ast/function.rb +13 -2
  89. data/lib/puppet/parser/ast/lambda.rb +107 -0
  90. data/lib/puppet/parser/ast/leaf.rb +1 -2
  91. data/lib/puppet/parser/ast/method_call.rb +77 -0
  92. data/lib/puppet/parser/ast/vardef.rb +7 -0
  93. data/lib/puppet/parser/compiler.rb +27 -16
  94. data/lib/puppet/parser/e_parser_adapter.rb +120 -0
  95. data/lib/puppet/parser/files.rb +7 -6
  96. data/lib/puppet/parser/functions.rb +10 -8
  97. data/lib/puppet/parser/functions/collect.rb +43 -0
  98. data/lib/puppet/parser/functions/each.rb +96 -0
  99. data/lib/puppet/parser/functions/foreach.rb +96 -0
  100. data/lib/puppet/parser/functions/fqdn_rand.rb +2 -2
  101. data/lib/puppet/parser/functions/hiera.rb +20 -2
  102. data/lib/puppet/parser/functions/hiera_array.rb +21 -2
  103. data/lib/puppet/parser/functions/hiera_hash.rb +23 -2
  104. data/lib/puppet/parser/functions/hiera_include.rb +33 -2
  105. data/lib/puppet/parser/functions/inline_template.rb +4 -4
  106. data/lib/puppet/parser/functions/reduce.rb +74 -0
  107. data/lib/puppet/parser/functions/reject.rb +46 -0
  108. data/lib/puppet/parser/functions/select.rb +46 -0
  109. data/lib/puppet/parser/functions/slice.rb +96 -0
  110. data/lib/puppet/parser/functions/template.rb +2 -2
  111. data/lib/puppet/parser/grammar.ra +7 -4
  112. data/lib/puppet/parser/lexer.rb +10 -0
  113. data/lib/puppet/parser/methods.rb +69 -0
  114. data/lib/puppet/parser/parser.rb +855 -808
  115. data/lib/puppet/parser/parser_factory.rb +62 -0
  116. data/lib/puppet/parser/parser_support.rb +8 -2
  117. data/lib/puppet/parser/scope.rb +153 -47
  118. data/lib/puppet/parser/templatewrapper.rb +28 -21
  119. data/lib/puppet/parser/type_loader.rb +3 -1
  120. data/lib/puppet/pops.rb +40 -0
  121. data/lib/puppet/pops/adaptable.rb +190 -0
  122. data/lib/puppet/pops/adapters.rb +65 -0
  123. data/lib/puppet/pops/containment.rb +37 -0
  124. data/lib/puppet/pops/issues.rb +258 -0
  125. data/lib/puppet/pops/label_provider.rb +71 -0
  126. data/lib/puppet/pops/model/ast_transformer.rb +636 -0
  127. data/lib/puppet/pops/model/ast_tree_dumper.rb +378 -0
  128. data/lib/puppet/pops/model/factory.rb +804 -0
  129. data/lib/puppet/pops/model/model.rb +567 -0
  130. data/lib/puppet/pops/model/model_label_provider.rb +75 -0
  131. data/lib/puppet/pops/model/model_tree_dumper.rb +352 -0
  132. data/lib/puppet/pops/model/tree_dumper.rb +59 -0
  133. data/lib/puppet/pops/parser/egrammar.ra +723 -0
  134. data/lib/puppet/pops/parser/eparser.rb +2300 -0
  135. data/lib/puppet/pops/parser/grammar.ra +746 -0
  136. data/lib/puppet/pops/parser/lexer.rb +842 -0
  137. data/lib/puppet/pops/parser/makefile +13 -0
  138. data/lib/puppet/pops/parser/parser_support.rb +203 -0
  139. data/lib/puppet/pops/patterns.rb +35 -0
  140. data/lib/puppet/pops/utils.rb +104 -0
  141. data/lib/puppet/pops/validation.rb +297 -0
  142. data/lib/puppet/pops/validation/checker3_1.rb +551 -0
  143. data/lib/puppet/pops/validation/validator_factory_3_1.rb +41 -0
  144. data/lib/puppet/pops/visitable.rb +6 -0
  145. data/lib/puppet/pops/visitor.rb +50 -0
  146. data/lib/puppet/property.rb +37 -28
  147. data/lib/puppet/property/ensure.rb +2 -2
  148. data/lib/puppet/property/ordered_list.rb +1 -1
  149. data/lib/puppet/provider.rb +26 -30
  150. data/lib/puppet/provider/aixobject.rb +45 -44
  151. data/lib/puppet/provider/augeas/augeas.rb +0 -1
  152. data/lib/puppet/provider/confiner.rb +1 -1
  153. data/lib/puppet/provider/cron/crontab.rb +107 -67
  154. data/lib/puppet/provider/group/groupadd.rb +59 -3
  155. data/lib/puppet/provider/interface/cisco.rb +4 -4
  156. data/lib/puppet/provider/mount/parsed.rb +1 -1
  157. data/lib/puppet/provider/nameservice.rb +22 -6
  158. data/lib/puppet/provider/nameservice/pw.rb +1 -1
  159. data/lib/puppet/provider/package/aix.rb +28 -4
  160. data/lib/puppet/provider/package/gem.rb +0 -2
  161. data/lib/puppet/provider/package/macports.rb +1 -1
  162. data/lib/puppet/provider/package/nim.rb +249 -4
  163. data/lib/puppet/provider/package/opkg.rb +77 -0
  164. data/lib/puppet/provider/package/pacman.rb +2 -2
  165. data/lib/puppet/provider/package/rpm.rb +30 -16
  166. data/lib/puppet/provider/package/yum.rb +3 -3
  167. data/lib/puppet/provider/parsedfile.rb +80 -3
  168. data/lib/puppet/provider/selmodule/semodule.rb +2 -2
  169. data/lib/puppet/provider/service/debian.rb +0 -4
  170. data/lib/puppet/provider/service/freebsd.rb +2 -2
  171. data/lib/puppet/provider/service/gentoo.rb +0 -9
  172. data/lib/puppet/provider/service/init.rb +27 -2
  173. data/lib/puppet/provider/service/launchd.rb +1 -1
  174. data/lib/puppet/provider/service/openwrt.rb +36 -0
  175. data/lib/puppet/provider/service/redhat.rb +0 -9
  176. data/lib/puppet/provider/service/src.rb +38 -4
  177. data/lib/puppet/provider/service/systemd.rb +2 -2
  178. data/lib/puppet/provider/service/upstart.rb +1 -8
  179. data/lib/puppet/provider/user/aix.rb +4 -10
  180. data/lib/puppet/provider/user/pw.rb +6 -10
  181. data/lib/puppet/provider/user/useradd.rb +129 -31
  182. data/lib/puppet/provider/vlan/cisco.rb +4 -4
  183. data/lib/puppet/reference/function.rb +2 -2
  184. data/lib/puppet/reference/indirection.rb +46 -5
  185. data/lib/puppet/reference/metaparameter.rb +2 -2
  186. data/lib/puppet/reports.rb +5 -5
  187. data/lib/puppet/reports/rrdgraph.rb +4 -4
  188. data/lib/puppet/reports/tagmail.rb +1 -1
  189. data/lib/puppet/resource.rb +1 -1
  190. data/lib/puppet/resource/type.rb +13 -11
  191. data/lib/puppet/scheduler.rb +16 -0
  192. data/lib/puppet/scheduler/job.rb +53 -0
  193. data/lib/puppet/scheduler/scheduler.rb +45 -0
  194. data/lib/puppet/scheduler/splay_job.rb +32 -0
  195. data/lib/puppet/scheduler/timer.rb +13 -0
  196. data/lib/puppet/settings/base_setting.rb +1 -1
  197. data/lib/puppet/simple_graph.rb +4 -4
  198. data/lib/puppet/ssl/base.rb +12 -2
  199. data/lib/puppet/ssl/certificate.rb +4 -1
  200. data/lib/puppet/ssl/certificate_request.rb +4 -1
  201. data/lib/puppet/ssl/certificate_revocation_list.rb +4 -1
  202. data/lib/puppet/ssl/configuration.rb +32 -0
  203. data/lib/puppet/ssl/host.rb +18 -21
  204. data/lib/puppet/ssl/key.rb +4 -1
  205. data/lib/puppet/ssl/validator.rb +116 -0
  206. data/lib/puppet/transaction.rb +1 -1
  207. data/lib/puppet/transaction/event.rb +3 -10
  208. data/lib/puppet/transaction/event_manager.rb +8 -1
  209. data/lib/puppet/transaction/report.rb +17 -16
  210. data/lib/puppet/type.rb +77 -69
  211. data/lib/puppet/type/cron.rb +20 -8
  212. data/lib/puppet/type/exec.rb +9 -3
  213. data/lib/puppet/type/file.rb +95 -21
  214. data/lib/puppet/type/file/content.rb +1 -1
  215. data/lib/puppet/type/file/mode.rb +7 -1
  216. data/lib/puppet/type/file/source.rb +2 -2
  217. data/lib/puppet/type/group.rb +11 -0
  218. data/lib/puppet/type/scheduled_task.rb +5 -1
  219. data/lib/puppet/type/service.rb +1 -1
  220. data/lib/puppet/type/ssh_authorized_key.rb +2 -2
  221. data/lib/puppet/type/user.rb +24 -6
  222. data/lib/puppet/util.rb +12 -2
  223. data/lib/puppet/util/classgen.rb +4 -4
  224. data/lib/puppet/util/colors.rb +55 -0
  225. data/lib/puppet/util/command_line/trollop.rb +4 -4
  226. data/lib/puppet/util/errors.rb +39 -3
  227. data/lib/puppet/util/fileparsing.rb +5 -0
  228. data/lib/puppet/util/filetype.rb +11 -9
  229. data/lib/puppet/util/instrumentation/instrumentable.rb +2 -2
  230. data/lib/puppet/util/libuser.conf +15 -0
  231. data/lib/puppet/util/libuser.rb +12 -0
  232. data/lib/puppet/util/monkey_patches.rb +48 -0
  233. data/lib/puppet/util/network_device.rb +1 -1
  234. data/lib/puppet/util/network_device/base.rb +2 -2
  235. data/lib/puppet/util/network_device/cisco/device.rb +29 -19
  236. data/lib/puppet/util/network_device/config.rb +5 -2
  237. data/lib/puppet/util/network_device/ipcalc.rb +1 -1
  238. data/lib/puppet/util/network_device/transport/ssh.rb +4 -3
  239. data/lib/puppet/util/network_device/transport/telnet.rb +4 -2
  240. data/lib/puppet/util/plugins.rb +4 -4
  241. data/lib/puppet/util/posix.rb +1 -1
  242. data/lib/puppet/util/profiler.rb +28 -0
  243. data/lib/puppet/util/profiler/logging.rb +47 -0
  244. data/lib/puppet/util/profiler/none.rb +8 -0
  245. data/lib/puppet/util/profiler/object_counts.rb +17 -0
  246. data/lib/puppet/util/profiler/wall_clock.rb +34 -0
  247. data/lib/puppet/util/provider_features.rb +1 -1
  248. data/lib/puppet/util/rdoc/parser.rb +5 -5
  249. data/lib/puppet/util/ssl.rb +38 -0
  250. data/lib/puppet/util/subclass_loader.rb +1 -5
  251. data/lib/puppet/util/windows.rb +1 -0
  252. data/lib/puppet/util/windows/process.rb +3 -0
  253. data/lib/puppet/util/windows/root_certs.rb +86 -0
  254. data/lib/puppet/util/windows/security.rb +1 -0
  255. data/lib/puppet/version.rb +1 -1
  256. data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +19 -0
  257. data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +18 -0
  258. data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +15 -0
  259. data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +4 -0
  260. data/spec/fixtures/integration/provider/cron/crontab/modify_entry +13 -0
  261. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +15 -0
  262. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +6 -0
  263. data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +12 -0
  264. data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +14 -0
  265. data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +16 -0
  266. data/spec/fixtures/unit/pops/parser/lexer/append.pp +11 -0
  267. data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +14 -0
  268. data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +8 -0
  269. data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +3 -0
  270. data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +65 -0
  271. data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +15 -0
  272. data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +17 -0
  273. data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +11 -0
  274. data/spec/fixtures/unit/pops/parser/lexer/collection.pp +10 -0
  275. data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +8 -0
  276. data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +20 -0
  277. data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +11 -0
  278. data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +8 -0
  279. data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +23 -0
  280. data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +17 -0
  281. data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +9 -0
  282. data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +3 -0
  283. data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +9 -0
  284. data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +3 -0
  285. data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +11 -0
  286. data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +5 -0
  287. data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +11 -0
  288. data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +5 -0
  289. data/spec/fixtures/unit/pops/parser/lexer/hash.pp +33 -0
  290. data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +12 -0
  291. data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +15 -0
  292. data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +10 -0
  293. data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +9 -0
  294. data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +7 -0
  295. data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +13 -0
  296. data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +9 -0
  297. data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +13 -0
  298. data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +49 -0
  299. data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +5 -0
  300. data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +38 -0
  301. data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +19 -0
  302. data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +11 -0
  303. data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +22 -0
  304. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +11 -0
  305. data/spec/fixtures/unit/pops/parser/lexer/tag.pp +9 -0
  306. data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +35 -0
  307. data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +14 -0
  308. data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +4 -4
  309. data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +3 -0
  310. data/spec/fixtures/unit/provider/cron/parsed/managed +6 -0
  311. data/spec/fixtures/unit/provider/cron/parsed/simple +9 -0
  312. data/spec/fixtures/unit/provider/parsedfile/simple.txt +4 -0
  313. data/spec/fixtures/unit/provider/service/systemd/list_units +18 -0
  314. data/spec/integration/parser/collector_spec.rb +1 -1
  315. data/spec/integration/parser/compiler_spec.rb +252 -227
  316. data/spec/integration/parser/parser_spec.rb +171 -53
  317. data/spec/integration/parser/scope_spec.rb +1 -1
  318. data/spec/integration/provider/cron/crontab_spec.rb +187 -0
  319. data/spec/integration/provider/service/systemd_spec.rb +20 -0
  320. data/spec/integration/type/file_spec.rb +21 -21
  321. data/spec/integration/type/package_spec.rb +1 -1
  322. data/spec/lib/puppet_spec/database.rb +2 -5
  323. data/spec/spec_helper.rb +6 -1
  324. data/spec/unit/application/apply_spec.rb +16 -1
  325. data/spec/unit/application/describe_spec.rb +1 -1
  326. data/spec/unit/application/doc_spec.rb +55 -32
  327. data/spec/unit/application/kick_spec.rb +8 -6
  328. data/spec/unit/application/master_spec.rb +4 -4
  329. data/spec/unit/daemon_spec.rb +1 -1
  330. data/spec/unit/forge/errors_spec.rb +40 -0
  331. data/spec/unit/forge/repository_spec.rb +11 -1
  332. data/spec/unit/forge_spec.rb +13 -3
  333. data/spec/unit/hiera/backend/puppet_backend_spec.rb +1 -0
  334. data/spec/unit/hiera/scope_spec.rb +48 -25
  335. data/spec/unit/indirector/catalog/active_record_spec.rb +6 -3
  336. data/spec/unit/indirector/catalog/compiler_spec.rb +3 -28
  337. data/spec/unit/indirector/catalog/static_compiler_spec.rb +1 -1
  338. data/spec/unit/indirector/facts/inventory_active_record_spec.rb +154 -150
  339. data/spec/unit/indirector/indirection_spec.rb +5 -0
  340. data/spec/unit/indirector/resource/active_record_spec.rb +5 -22
  341. data/spec/unit/indirector_spec.rb +7 -1
  342. data/spec/unit/interface/action_builder_spec.rb +1 -1
  343. data/spec/unit/interface/action_manager_spec.rb +0 -2
  344. data/spec/unit/interface/action_spec.rb +1 -1
  345. data/spec/unit/interface/documentation_spec.rb +0 -2
  346. data/spec/unit/interface/face_collection_spec.rb +1 -1
  347. data/spec/unit/interface/option_builder_spec.rb +1 -1
  348. data/spec/unit/interface/option_spec.rb +0 -1
  349. data/spec/unit/module_spec.rb +17 -19
  350. data/spec/unit/module_tool/application_spec.rb +1 -3
  351. data/spec/unit/module_tool/applications/builder_spec.rb +38 -0
  352. data/spec/unit/module_tool/applications/checksummer_spec.rb +134 -0
  353. data/spec/unit/module_tool/applications/installer_spec.rb +71 -91
  354. data/spec/unit/module_tool/applications/searcher_spec.rb +1 -3
  355. data/spec/unit/module_tool/applications/uninstaller_spec.rb +18 -26
  356. data/spec/unit/module_tool/applications/unpacker_spec.rb +19 -52
  357. data/spec/unit/module_tool/tar/gnu_spec.rb +19 -0
  358. data/spec/unit/module_tool/tar/mini_spec.rb +59 -0
  359. data/spec/unit/module_tool/tar/solaris_spec.rb +19 -0
  360. data/spec/unit/network/http/connection_spec.rb +17 -2
  361. data/spec/unit/network/http/handler_spec.rb +195 -167
  362. data/spec/unit/network/http/rack/rest_spec.rb +26 -4
  363. data/spec/unit/network/http/webrick/rest_spec.rb +28 -1
  364. data/spec/unit/network/http/webrick_spec.rb +12 -3
  365. data/spec/unit/node/environment_spec.rb +421 -404
  366. data/spec/unit/parser/ast/arithmetic_operator_spec.rb +98 -2
  367. data/spec/unit/parser/collector_spec.rb +4 -4
  368. data/spec/unit/parser/compiler_spec.rb +13 -13
  369. data/spec/unit/parser/eparser_adapter_spec.rb +407 -0
  370. data/spec/unit/parser/functions/extlookup_spec.rb +20 -17
  371. data/spec/unit/parser/functions/fqdn_rand_spec.rb +5 -0
  372. data/spec/unit/parser/functions/hiera_include_spec.rb +0 -2
  373. data/spec/unit/parser/functions/hiera_spec.rb +0 -2
  374. data/spec/unit/parser/functions_spec.rb +27 -15
  375. data/spec/unit/parser/methods/collect_spec.rb +110 -0
  376. data/spec/unit/parser/methods/each_spec.rb +91 -0
  377. data/spec/unit/parser/methods/foreach_spec.rb +91 -0
  378. data/spec/unit/parser/methods/reduce_spec.rb +67 -0
  379. data/spec/unit/parser/methods/reject_spec.rb +73 -0
  380. data/spec/unit/parser/methods/select_spec.rb +79 -0
  381. data/spec/unit/parser/methods/shared.rb +61 -0
  382. data/spec/unit/parser/methods/slice_spec.rb +97 -0
  383. data/spec/unit/parser/parser_spec.rb +2 -2
  384. data/spec/unit/parser/scope_spec.rb +39 -16
  385. data/spec/unit/parser/templatewrapper_spec.rb +6 -5
  386. data/spec/unit/parser/type_loader_spec.rb +191 -165
  387. data/spec/unit/pops/adaptable_spec.rb +143 -0
  388. data/spec/unit/pops/containment_spec.rb +25 -0
  389. data/spec/unit/pops/factory_rspec_helper.rb +77 -0
  390. data/spec/unit/pops/factory_spec.rb +329 -0
  391. data/spec/unit/pops/issues_spec.rb +26 -0
  392. data/spec/unit/pops/label_provider_spec.rb +42 -0
  393. data/spec/unit/pops/model/ast_transformer_spec.rb +65 -0
  394. data/spec/unit/pops/model/model_spec.rb +37 -0
  395. data/spec/unit/pops/parser/lexer_spec.rb +884 -0
  396. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +248 -0
  397. data/spec/unit/pops/parser/parse_calls_spec.rb +93 -0
  398. data/spec/unit/pops/parser/parse_conditionals_spec.rb +159 -0
  399. data/spec/unit/pops/parser/parse_containers_spec.rb +175 -0
  400. data/spec/unit/pops/parser/parse_resource_spec.rb +228 -0
  401. data/spec/unit/pops/parser/parser_rspec_helper.rb +11 -0
  402. data/spec/unit/pops/parser/parser_spec.rb +15 -0
  403. data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +16 -0
  404. data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +243 -0
  405. data/spec/unit/pops/transformer/transform_calls_spec.rb +80 -0
  406. data/spec/unit/pops/transformer/transform_conditionals_spec.rb +132 -0
  407. data/spec/unit/pops/transformer/transform_containers_spec.rb +182 -0
  408. data/spec/unit/pops/transformer/transform_resource_spec.rb +185 -0
  409. data/spec/unit/pops/transformer/transformer_rspec_helper.rb +27 -0
  410. data/spec/unit/pops/visitor_spec.rb +94 -0
  411. data/spec/unit/property_spec.rb +11 -0
  412. data/spec/unit/provider/augeas/augeas_spec.rb +3 -0
  413. data/spec/unit/provider/cron/crontab_spec.rb +97 -7
  414. data/spec/unit/provider/cron/parsed_spec.rb +325 -0
  415. data/spec/unit/provider/exec/posix_spec.rb +1 -1
  416. data/spec/unit/provider/group/groupadd_spec.rb +33 -3
  417. data/spec/unit/provider/group/pw_spec.rb +5 -5
  418. data/spec/unit/provider/nameservice_spec.rb +304 -0
  419. data/spec/unit/provider/package/aix_spec.rb +53 -11
  420. data/spec/unit/provider/package/aptrpm_spec.rb +6 -0
  421. data/spec/unit/provider/package/gem_spec.rb +6 -11
  422. data/spec/unit/provider/package/nim_spec.rb +216 -7
  423. data/spec/unit/provider/package/opkg_spec.rb +180 -0
  424. data/spec/unit/provider/package/rpm_spec.rb +149 -3
  425. data/spec/unit/provider/package/yum_spec.rb +6 -5
  426. data/spec/unit/provider/parsedfile_spec.rb +122 -28
  427. data/spec/unit/provider/service/freebsd_spec.rb +18 -0
  428. data/spec/unit/provider/service/init_spec.rb +108 -87
  429. data/spec/unit/provider/service/launchd_spec.rb +2 -2
  430. data/spec/unit/provider/service/openwrt_spec.rb +109 -0
  431. data/spec/unit/provider/service/src_spec.rb +117 -41
  432. data/spec/unit/provider/service/systemd_spec.rb +125 -17
  433. data/spec/unit/provider/service/upstart_spec.rb +1 -1
  434. data/spec/unit/provider/user/aix_spec.rb +42 -0
  435. data/spec/unit/provider/user/directoryservice_spec.rb +1 -0
  436. data/spec/unit/provider/user/pw_spec.rb +24 -12
  437. data/spec/unit/provider/user/user_role_add_spec.rb +1 -1
  438. data/spec/unit/provider/user/useradd_spec.rb +179 -15
  439. data/spec/unit/resource/type_spec.rb +3 -3
  440. data/spec/unit/scheduler/job_spec.rb +79 -0
  441. data/spec/unit/scheduler/scheduler_spec.rb +129 -0
  442. data/spec/unit/scheduler/splay_job_spec.rb +35 -0
  443. data/spec/unit/ssl/base_spec.rb +3 -9
  444. data/spec/unit/ssl/certificate_authority_spec.rb +1 -0
  445. data/spec/unit/ssl/certificate_request_spec.rb +3 -1
  446. data/spec/unit/ssl/certificate_spec.rb +3 -1
  447. data/spec/unit/ssl/configuration_spec.rb +74 -0
  448. data/spec/unit/ssl/host_spec.rb +28 -7
  449. data/spec/unit/ssl/validator_spec.rb +311 -0
  450. data/spec/unit/transaction/event_manager_spec.rb +49 -0
  451. data/spec/unit/transaction/event_spec.rb +20 -5
  452. data/spec/unit/transaction/report_spec.rb +8 -0
  453. data/spec/unit/type/cron_spec.rb +9 -0
  454. data/spec/unit/type/exec_spec.rb +11 -0
  455. data/spec/unit/type/file/content_spec.rb +20 -20
  456. data/spec/unit/type/file/mode_spec.rb +6 -0
  457. data/spec/unit/type/file/source_spec.rb +9 -7
  458. data/spec/unit/type/file_spec.rb +22 -3
  459. data/spec/unit/type/service_spec.rb +34 -21
  460. data/spec/unit/type_spec.rb +46 -1
  461. data/spec/unit/util/backups_spec.rb +2 -2
  462. data/spec/unit/util/execution_spec.rb +4 -1
  463. data/spec/unit/util/filetype_spec.rb +6 -0
  464. data/spec/unit/util/monkey_patches_spec.rb +18 -0
  465. data/spec/unit/util/network_device/cisco/device_spec.rb +37 -0
  466. data/spec/unit/util/network_device/config_spec.rb +14 -0
  467. data/spec/unit/util/network_device_spec.rb +3 -3
  468. data/spec/unit/util/profiler/logging_spec.rb +81 -0
  469. data/spec/unit/util/profiler/none_spec.rb +12 -0
  470. data/spec/unit/util/profiler/object_counts_spec.rb +14 -0
  471. data/spec/unit/util/profiler/wall_clock_spec.rb +13 -0
  472. data/spec/unit/util/pson_spec.rb +5 -0
  473. data/spec/unit/util/ssl_spec.rb +51 -0
  474. data/spec/unit/util/windows/root_certs_spec.rb +15 -0
  475. data/spec/unit/util_spec.rb +28 -0
  476. metadata +2593 -2307
  477. data/spec/unit/module_tool/applications/application_spec.rb +0 -19
@@ -0,0 +1,20 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Puppet::Type.type(:service).provider(:systemd), '(integration)' do
6
+ # TODO: Unfortunately there does not seem a way to stub the executable
7
+ # checks in the systemd provider because they happen at load time.
8
+ it "should be considered suitable if /bin/systemctl is present", :if => File.executable?('/bin/systemctl') do
9
+ described_class.should be_suitable
10
+ end
11
+
12
+ it "should be considered suitable if /usr/bin/systemctl is present", :if => File.executable?('/usr/bin/systemctl') do
13
+ described_class.should be_suitable
14
+ end
15
+
16
+ it "should not be cosidered suitable if systemctl is absent",
17
+ :unless => (File.executable?('/bin/systemctl') or File.executable?('/usr/bin/systemctl')) do
18
+ described_class.should_not be_suitable
19
+ end
20
+ end
@@ -273,22 +273,20 @@ describe Puppet::Type.type(:file) do
273
273
 
274
274
  describe "that is readable" do
275
275
  it "should set the executable bits when creating the destination (#10315)" do
276
- pending "bug #10315"
277
-
278
276
  catalog.add_resource described_class.new(:path => path, :source => link, :mode => 0666, :links => :follow)
279
277
  catalog.apply
280
278
 
279
+ File.should be_directory(path)
281
280
  (get_mode(path) & 07777).should == 0777
282
281
  end
283
282
 
284
283
  it "should set the executable bits when overwriting the destination (#10315)" do
285
- pending "bug #10315"
286
-
287
284
  FileUtils.touch(path)
288
285
 
289
- catalog.add_resource described_class.new(:path => path, :source => link, :mode => 0666, :links => :follow)
286
+ catalog.add_resource described_class.new(:path => path, :source => link, :mode => 0666, :links => :follow, :backup => false)
290
287
  catalog.apply
291
288
 
289
+ File.should be_directory(path)
292
290
  (get_mode(path) & 07777).should == 0777
293
291
  end
294
292
  end
@@ -303,37 +301,41 @@ describe Puppet::Type.type(:file) do
303
301
  set_mode(0700, link_target)
304
302
  end
305
303
 
306
- it "should not set executable bits when creating the destination (#10315)" do
307
- pending "bug #10315"
308
-
304
+ it "should set executable bits when creating the destination (#10315)" do
309
305
  catalog.add_resource described_class.new(:path => path, :source => link, :mode => 0666, :links => :follow)
310
306
  catalog.apply
311
307
 
312
- (get_mode(path) & 07777).should == 0666
308
+ File.should be_directory(path)
309
+ (get_mode(path) & 07777).should == 0777
313
310
  end
314
311
 
315
- it "should not set executable bits when overwriting the destination" do
312
+ it "should set executable bits when overwriting the destination" do
316
313
  FileUtils.touch(path)
317
314
 
318
- catalog.add_resource described_class.new(:path => path, :source => link, :mode => 0666, :links => :follow)
315
+ catalog.add_resource described_class.new(:path => path, :source => link, :mode => 0666, :links => :follow, :backup => false)
319
316
  catalog.apply
320
317
 
321
- (get_mode(path) & 07777).should == 0666
318
+ File.should be_directory(path)
319
+ (get_mode(path) & 07777).should == 0777
322
320
  end
323
321
  end
324
322
  end
325
323
 
326
324
  describe "to a file" do
327
- let(:target) { tmpfile('file_target') }
325
+ let(:link_target) { tmpfile('file_target') }
328
326
 
329
- it "should create the file, not a symlink (#2817, #10315)" do
330
- pending "bug #2817, #10315"
327
+ before :each do
328
+ FileUtils.touch(link_target)
331
329
 
330
+ File.symlink(link_target, link)
331
+ end
332
+
333
+ it "should create the file, not a symlink (#2817, #10315)" do
332
334
  catalog.add_resource described_class.new(:path => path, :source => link, :mode => 0600, :links => :follow)
333
335
  catalog.apply
334
336
 
335
337
  File.should be_file(path)
336
- (get_mode(path) & 07777) == 0600
338
+ (get_mode(path) & 07777).should == 0600
337
339
  end
338
340
 
339
341
  it "should overwrite the file" do
@@ -343,7 +345,7 @@ describe Puppet::Type.type(:file) do
343
345
  catalog.apply
344
346
 
345
347
  File.should be_file(path)
346
- (get_mode(path) & 07777) == 0600
348
+ (get_mode(path) & 07777).should == 0600
347
349
  end
348
350
  end
349
351
 
@@ -365,13 +367,11 @@ describe Puppet::Type.type(:file) do
365
367
 
366
368
  describe "when following all links" do
367
369
  it "should create the destination and apply executable bits (#10315)" do
368
- pending "bug #10315"
369
-
370
370
  catalog.add_resource described_class.new(:path => path, :source => link, :mode => 0600, :links => :follow)
371
371
  catalog.apply
372
372
 
373
373
  File.should be_directory(path)
374
- (get_mode(path) & 07777) == 0777
374
+ (get_mode(path) & 07777).should == 0700
375
375
  end
376
376
 
377
377
  it "should overwrite the destination and apply executable bits" do
@@ -381,7 +381,7 @@ describe Puppet::Type.type(:file) do
381
381
  catalog.apply
382
382
 
383
383
  File.should be_directory(path)
384
- (get_mode(path) & 07777) == 0777
384
+ (get_mode(path) & 0111).should == 0100
385
385
  end
386
386
  end
387
387
  end
@@ -11,7 +11,7 @@ describe Puppet::Type.type(:package), "when choosing a default package provider"
11
11
  if Facter.value(:operatingsystem) == 'Solaris' && Puppet::Util::Package.versioncmp(Facter.value(:kernelrelease), '5.11') >= 0
12
12
  :pkg
13
13
  else
14
- {"Ubuntu" => :apt, "Debian" => :apt, "Darwin" => :pkgdmg, "RedHat" => :up2date, "Fedora" => :yum, "FreeBSD" => :ports, "OpenBSD" => :openbsd, "Solaris" => :sun, "DragonFly" => :pkgin}[os]
14
+ {"Ubuntu" => :apt, "Debian" => :apt, "Darwin" => :pkgdmg, "RedHat" => :up2date, "Fedora" => :yum, "FreeBSD" => :ports, "OpenBSD" => :openbsd, "Solaris" => :sun, "DragonFly" => :pkgin, "OpenWrt" => :opkg}[os]
15
15
  end
16
16
  end
17
17
 
@@ -22,11 +22,8 @@ end
22
22
  # ready to roll with a serious database and all. Cleanup is handled
23
23
  # automatically for you. Nothing to do there.
24
24
  def setup_scratch_database
25
- Puppet::Rails.stubs(:database_arguments).returns(
26
- :adapter => 'sqlite3',
27
- :log_level => Puppet[:rails_loglevel],
28
- :database => ':memory:'
29
- )
25
+ Puppet[:dbadapter] = 'sqlite3'
26
+ Puppet[:dblocation] = ':memory'
30
27
  Puppet[:railslog] = PuppetSpec::Files.tmpfile('storeconfigs.log')
31
28
  Puppet::Rails.init
32
29
  end
data/spec/spec_helper.rb CHANGED
@@ -67,7 +67,12 @@ RSpec.configure do |config|
67
67
  if Puppet::Util::Platform.windows?
68
68
  config.output_stream = $stdout
69
69
  config.error_stream = $stderr
70
- config.formatters.each { |f| f.instance_variable_set(:@output, $stdout) }
70
+
71
+ config.formatters.each do |f|
72
+ if not f.instance_variable_get(:@output).kind_of?(::File)
73
+ f.instance_variable_set(:@output, $stdout)
74
+ end
75
+ end
71
76
  end
72
77
 
73
78
  Puppet::Test::TestHelper.initialize
@@ -20,7 +20,7 @@ describe Puppet::Application::Apply do
20
20
  Puppet::Node.indirection.cache_class = nil
21
21
  end
22
22
 
23
- [:debug,:loadclasses,:verbose,:use_nodes,:detailed_exitcodes,:catalog].each do |option|
23
+ [:debug,:loadclasses,:verbose,:use_nodes,:detailed_exitcodes,:catalog, :write_catalog_summary].each do |option|
24
24
  it "should declare handle_#{option} method" do
25
25
  @apply.should respond_to("handle_#{option}".to_sym)
26
26
  end
@@ -241,6 +241,21 @@ describe Puppet::Application::Apply do
241
241
  expect { @apply.main }.to exit_with 0
242
242
  end
243
243
 
244
+ it "should not save the classes or resource file by default" do
245
+ @catalog.expects(:write_class_file).never
246
+ @catalog.expects(:write_resource_file).never
247
+ expect { @apply.main }.to exit_with 0
248
+ end
249
+
250
+ it "should save the classes and resources files when requested" do
251
+ @apply.options[:write_catalog_summary] = true
252
+
253
+ @catalog.expects(:write_class_file).once
254
+ @catalog.expects(:write_resource_file).once
255
+
256
+ expect { @apply.main }.to exit_with 0
257
+ end
258
+
244
259
  it "should call the prerun and postrun commands on a Configurer instance" do
245
260
  Puppet::Configurer.any_instance.expects(:execute_prerun_command).returns(true)
246
261
  Puppet::Configurer.any_instance.expects(:execute_postrun_command).returns(true)
@@ -29,7 +29,7 @@ describe Puppet::Application::Describe do
29
29
 
30
30
 
31
31
  describe "in preinit" do
32
- it "should set options[:parameteers] to true" do
32
+ it "should set options[:parameters] to true" do
33
33
  @describe.preinit
34
34
 
35
35
  @describe.options[:parameters].should be_true
@@ -143,6 +143,61 @@ describe Puppet::Application::Doc do
143
143
  @doc.setup
144
144
  end
145
145
 
146
+ describe "configuring logging" do
147
+ before :each do
148
+ Puppet::Util::Log.stubs(:newdestination)
149
+ end
150
+
151
+ describe "with --debug" do
152
+ before do
153
+ @doc.options[:debug] = true
154
+ end
155
+
156
+ it "should set log level to debug" do
157
+ @doc.setup
158
+ Puppet::Util::Log.level.should == :debug
159
+ end
160
+
161
+ it "should set log destination to console" do
162
+ Puppet::Util::Log.expects(:newdestination).with(:console)
163
+ @doc.setup
164
+ end
165
+ end
166
+
167
+ describe "with --verbose" do
168
+ before do
169
+ @doc.options[:verbose] = true
170
+ end
171
+
172
+ it "should set log level to info" do
173
+ @doc.setup
174
+ Puppet::Util::Log.level.should == :info
175
+ end
176
+
177
+ it "should set log destination to console" do
178
+ Puppet::Util::Log.expects(:newdestination).with(:console)
179
+ @doc.setup
180
+ end
181
+ end
182
+
183
+ describe "without --debug or --verbose" do
184
+ before do
185
+ @doc.options[:debug] = false
186
+ @doc.options[:verbose] = false
187
+ end
188
+
189
+ it "should set log level to warning" do
190
+ @doc.setup
191
+ Puppet::Util::Log.level.should == :warning
192
+ end
193
+
194
+ it "should set log destination to console" do
195
+ Puppet::Util::Log.expects(:newdestination).with(:console)
196
+ @doc.setup
197
+ end
198
+ end
199
+ end
200
+
146
201
  describe "in non-rdoc mode" do
147
202
  it "should get all non-dynamic reference if --all" do
148
203
  @doc.options[:all] = true
@@ -163,10 +218,6 @@ describe Puppet::Application::Doc do
163
218
  end
164
219
 
165
220
  describe "in rdoc mode" do
166
- before :each do
167
- Puppet::Util::Log.stubs(:newdestination)
168
- end
169
-
170
221
  describe "when there are unknown args" do
171
222
  it "should expand --modulepath if any" do
172
223
  @doc.unknown_args = [ { :opt => "--modulepath", :arg => "path" } ]
@@ -199,34 +250,6 @@ describe Puppet::Application::Doc do
199
250
 
200
251
  @doc.setup_rdoc
201
252
  end
202
-
203
- it "should set log level to debug if --debug" do
204
- @doc.options[:debug] = true
205
- @doc.setup_rdoc
206
- Puppet::Util::Log.level.should == :debug
207
- end
208
-
209
- it "should set log level to info if --verbose" do
210
- @doc.options[:verbose] = true
211
- @doc.setup_rdoc
212
- Puppet::Util::Log.level.should == :info
213
- end
214
-
215
- it "should set log destination to console if --verbose" do
216
- @doc.options[:verbose] = true
217
-
218
- Puppet::Util::Log.expects(:newdestination).with(:console)
219
-
220
- @doc.setup_rdoc
221
- end
222
-
223
- it "should set log destination to console if --debug" do
224
- @doc.options[:debug] = true
225
-
226
- Puppet::Util::Log.expects(:newdestination).with(:console)
227
-
228
- @doc.setup_rdoc
229
- end
230
253
  end
231
254
  end
232
255
 
@@ -2,11 +2,11 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  require 'puppet/application/kick'
5
+ require 'puppet/run'
6
+ require 'puppet/util/ldap/connection'
5
7
 
6
8
  describe Puppet::Application::Kick, :if => Puppet.features.posix? do
7
-
8
9
  before :each do
9
- require 'puppet/util/ldap/connection'
10
10
  Puppet::Util::Ldap::Connection.stubs(:new).returns(stub_everything)
11
11
  @kick = Puppet::Application[:kick]
12
12
  Puppet::Util::Log.stubs(:newdestination)
@@ -82,7 +82,7 @@ describe Puppet::Application::Kick, :if => Puppet.features.posix? do
82
82
  @kick.preinit
83
83
  end
84
84
 
85
- [:all, :foreground, :debug, :ping, :test].each do |option|
85
+ [:all, :foreground, :debug, :ping, :test, :ignoreschedules].each do |option|
86
86
  it "should declare handle_#{option} method" do
87
87
  @kick.should respond_to("handle_#{option}".to_sym)
88
88
  end
@@ -226,7 +226,7 @@ describe Puppet::Application::Kick, :if => Puppet.features.posix? do
226
226
  @kick.options.stubs(:[]).with(:debug).returns(false)
227
227
  @kick.options.stubs(:[]).with(:verbose).returns(false) # needed when logging is initialized
228
228
  @kick.options.stubs(:[]).with(:setdest).returns(false) # needed when logging is initialized
229
-
229
+
230
230
  @kick.stubs(:print)
231
231
  @kick.preinit
232
232
  @kick.stubs(:parse_options)
@@ -256,7 +256,6 @@ describe Puppet::Application::Kick, :if => Puppet.features.posix? do
256
256
 
257
257
  describe "during call of run_for_host" do
258
258
  before do
259
- require 'puppet/run'
260
259
  options = {
261
260
  :background => true, :ignoreschedules => false, :tags => []
262
261
  }
@@ -264,13 +263,16 @@ describe Puppet::Application::Kick, :if => Puppet.features.posix? do
264
263
  @agent_run = Puppet::Run.new( options.dup )
265
264
  @agent_run.stubs(:status).returns("success")
266
265
 
266
+ # ensure that we don't actually run the agent
267
+ @agent_run.stubs(:run).returns(@agent_run)
268
+
269
+ Puppet::Run.indirection.terminus_class = :local
267
270
  Puppet::Run.indirection.expects(:terminus_class=).with( :rest )
268
271
  Puppet::Run.expects(:new).with( options ).returns(@agent_run)
269
272
  end
270
273
 
271
274
  it "should call run on a Puppet::Run for the given host" do
272
275
  Puppet::Run.indirection.expects(:save).with(@agent_run, 'https://host:8139/production/run/host').returns(@agent_run)
273
-
274
276
  expect { @kick.run_for_host('host') }.to exit_with 0
275
277
  end
276
278
 
@@ -241,25 +241,25 @@ describe Puppet::Application::Master, :unless => Puppet.features.microsoft_windo
241
241
  before do
242
242
  Puppet[:manifest] = "site.pp"
243
243
  Puppet.stubs(:err)
244
- @master.stubs(:jj)
244
+ @master.stubs(:puts)
245
245
  end
246
246
 
247
247
  it "should compile a catalog for the specified node" do
248
248
  @master.options[:node] = "foo"
249
249
  Puppet::Resource::Catalog.indirection.expects(:find).with("foo").returns Puppet::Resource::Catalog.new
250
- $stdout.stubs(:puts)
251
250
 
252
251
  expect { @master.compile }.to exit_with 0
253
252
  end
254
253
 
255
- it "should convert the catalog to a pure-resource catalog and use 'jj' to pretty-print the catalog" do
254
+ it "should convert the catalog to a pure-resource catalog and use 'PSON::pretty_generate' to pretty-print the catalog" do
256
255
  catalog = Puppet::Resource::Catalog.new
256
+ PSON.stubs(:pretty_generate)
257
257
  Puppet::Resource::Catalog.indirection.expects(:find).returns catalog
258
258
 
259
259
  catalog.expects(:to_resource).returns("rescat")
260
260
 
261
261
  @master.options[:node] = "foo"
262
- @master.expects(:jj).with("rescat")
262
+ PSON.expects(:pretty_generate).with('rescat', :allow_nan => true, :max_nesting => false)
263
263
 
264
264
  expect { @master.compile }.to exit_with 0
265
265
  end
@@ -203,7 +203,7 @@ describe Puppet::Daemon, :unless => Puppet.features.microsoft_windows? do
203
203
 
204
204
  it "should run the agent if one is available and it is not running" do
205
205
  @agent.expects(:running?).returns false
206
- @agent.expects :run
206
+ @agent.expects(:run).with({:splay => false})
207
207
 
208
208
  @daemon.agent = @agent
209
209
 
@@ -39,4 +39,44 @@ Could not connect to http://fake.com:1111
39
39
  end
40
40
  end
41
41
 
42
+ describe 'ResponseError' do
43
+ subject { Puppet::Forge::Errors::ResponseError }
44
+ let(:response) { stub(:body => '{}', :code => '404', :message => "not found") }
45
+
46
+ context 'without message' do
47
+ let(:exception) { subject.new(:uri => 'http://fake.com:1111', :response => response, :input => 'user/module') }
48
+
49
+ it 'should return a valid single line error' do
50
+ exception.message.should == 'Could not execute operation for \'user/module\'. Detail: 404 not found.'
51
+ end
52
+
53
+ it 'should return a valid multiline error' do
54
+ exception.multiline.should == <<-eos.chomp
55
+ Could not execute operation for 'user/module'
56
+ The server being queried was http://fake.com:1111
57
+ The HTTP response we received was '404 not found'
58
+ Check the author and module names are correct.
59
+ eos
60
+ end
61
+ end
62
+
63
+ context 'with message' do
64
+ let(:exception) { subject.new(:uri => 'http://fake.com:1111', :response => response, :input => 'user/module', :message => 'no such module') }
65
+
66
+ it 'should return a valid single line error' do
67
+ exception.message.should == 'Could not execute operation for \'user/module\'. Detail: no such module / 404 not found.'
68
+ end
69
+
70
+ it 'should return a valid multiline error' do
71
+ exception.multiline.should == <<-eos.chomp
72
+ Could not execute operation for 'user/module'
73
+ The server being queried was http://fake.com:1111
74
+ The HTTP response we received was '404 not found'
75
+ The message we received said 'no such module'
76
+ Check the author and module names are correct.
77
+ eos
78
+ end
79
+ end
80
+ end
81
+
42
82
  end