puppet 0.24.6 → 0.24.7

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 (383) hide show
  1. data/CHANGELOG +115 -0
  2. data/Rakefile +43 -14
  3. data/bin/puppetca +6 -5
  4. data/bin/puppetdoc +109 -15
  5. data/bin/ralsh +3 -1
  6. data/conf/redhat/puppet.spec +74 -48
  7. data/examples/mcx_dock_absent.pp +4 -0
  8. data/examples/mcx_dock_default.pp +118 -0
  9. data/examples/mcx_dock_full.pp +125 -0
  10. data/examples/mcx_dock_invalid.pp +9 -0
  11. data/examples/mcx_nogroup.pp +118 -0
  12. data/examples/mcx_notexists_absent.pp +4 -0
  13. data/ext/emacs/puppet-mode.el +1 -1
  14. data/lib/puppet.rb +1 -1
  15. data/lib/puppet/external/nagios/base.rb +114 -71
  16. data/lib/puppet/feature/base.rb +6 -0
  17. data/lib/puppet/indirector/yaml.rb +12 -3
  18. data/lib/puppet/module.rb +1 -1
  19. data/lib/puppet/network/client/master.rb +1 -1
  20. data/lib/puppet/network/xmlrpc/client.rb +3 -1
  21. data/lib/puppet/parameter.rb +1 -1
  22. data/lib/puppet/parser/ast.rb +15 -0
  23. data/lib/puppet/parser/ast/astarray.rb +1 -2
  24. data/lib/puppet/parser/ast/casestatement.rb +2 -0
  25. data/lib/puppet/parser/ast/collection.rb +2 -0
  26. data/lib/puppet/parser/ast/comparison_operator.rb +4 -0
  27. data/lib/puppet/parser/ast/definition.rb +2 -0
  28. data/lib/puppet/parser/ast/else.rb +3 -0
  29. data/lib/puppet/parser/ast/function.rb +19 -12
  30. data/lib/puppet/parser/ast/hostclass.rb +9 -1
  31. data/lib/puppet/parser/ast/ifstatement.rb +3 -0
  32. data/lib/puppet/parser/ast/node.rb +3 -0
  33. data/lib/puppet/parser/ast/resource.rb +3 -0
  34. data/lib/puppet/parser/ast/resource_defaults.rb +2 -0
  35. data/lib/puppet/parser/ast/resource_override.rb +3 -0
  36. data/lib/puppet/parser/ast/vardef.rb +3 -0
  37. data/lib/puppet/parser/functions.rb +14 -0
  38. data/lib/puppet/parser/functions/inline_template.rb +21 -0
  39. data/lib/puppet/parser/functions/template.rb +3 -2
  40. data/lib/puppet/parser/lexer.rb +56 -7
  41. data/lib/puppet/parser/parser.rb +114 -98
  42. data/lib/puppet/parser/parser_support.rb +24 -4
  43. data/lib/puppet/parser/resource/reference.rb +4 -3
  44. data/lib/puppet/parser/templatewrapper.rb +30 -22
  45. data/lib/puppet/property.rb +1 -1
  46. data/lib/puppet/property/list.rb +7 -2
  47. data/lib/puppet/property/ordered_list.rb +22 -0
  48. data/lib/puppet/provider/augeas/augeas.rb +189 -0
  49. data/lib/puppet/provider/computer/computer.rb +22 -0
  50. data/lib/puppet/provider/confine.rb +4 -1
  51. data/lib/puppet/provider/confine/variable.rb +13 -2
  52. data/lib/puppet/provider/confine_collection.rb +4 -1
  53. data/lib/puppet/provider/confiner.rb +1 -1
  54. data/lib/puppet/provider/group/directoryservice.rb +6 -3
  55. data/lib/puppet/provider/group/groupadd.rb +5 -2
  56. data/lib/puppet/provider/group/ldap.rb +11 -9
  57. data/lib/puppet/provider/group/netinfo.rb +8 -4
  58. data/lib/puppet/provider/group/pw.rb +5 -1
  59. data/lib/puppet/provider/host/netinfo.rb +5 -2
  60. data/lib/puppet/provider/macauthorization/macauthorization.rb +315 -0
  61. data/lib/puppet/provider/mcx/mcxcontent.rb +201 -0
  62. data/lib/puppet/provider/nameservice/directoryservice.rb +210 -107
  63. data/lib/puppet/provider/nameservice/netinfo.rb +7 -2
  64. data/lib/puppet/provider/package/appdmg.rb +0 -3
  65. data/lib/puppet/provider/package/apt.rb +6 -0
  66. data/lib/puppet/provider/package/rpm.rb +2 -0
  67. data/lib/puppet/provider/package/yum.rb +5 -1
  68. data/lib/puppet/provider/package/yumhelper.py +9 -0
  69. data/lib/puppet/provider/service/base.rb +9 -6
  70. data/lib/puppet/provider/service/daemontools.rb +25 -15
  71. data/lib/puppet/provider/service/debian.rb +6 -2
  72. data/lib/puppet/provider/service/freebsd.rb +5 -2
  73. data/lib/puppet/provider/service/gentoo.rb +6 -3
  74. data/lib/puppet/provider/service/init.rb +31 -21
  75. data/lib/puppet/provider/service/launchd.rb +195 -0
  76. data/lib/puppet/provider/service/redhat.rb +5 -2
  77. data/lib/puppet/provider/service/runit.rb +30 -20
  78. data/lib/puppet/provider/service/smf.rb +7 -4
  79. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +21 -1
  80. data/lib/puppet/provider/user/directoryservice.rb +1 -0
  81. data/lib/puppet/provider/user/netinfo.rb +9 -3
  82. data/lib/puppet/provider/user/user_role_add.rb +43 -6
  83. data/lib/puppet/provider/zfs/solaris.rb +45 -0
  84. data/lib/puppet/provider/zone/solaris.rb +8 -4
  85. data/lib/puppet/provider/zpool/solaris.rb +116 -0
  86. data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
  87. data/lib/puppet/rails/database/schema.rb +1 -0
  88. data/lib/puppet/rails/host.rb +4 -0
  89. data/lib/puppet/reference/configuration.rb +1 -1
  90. data/lib/puppet/reports/tagmail.rb +15 -6
  91. data/lib/puppet/transaction/change.rb +3 -5
  92. data/lib/puppet/transportable.rb +1 -0
  93. data/lib/puppet/type/augeas.rb +155 -0
  94. data/lib/puppet/type/computer.rb +62 -0
  95. data/lib/puppet/type/exec.rb +2 -1
  96. data/lib/puppet/type/file.rb +1 -1
  97. data/lib/puppet/type/file/ensure.rb +8 -5
  98. data/lib/puppet/type/file/mode.rb +0 -14
  99. data/lib/puppet/type/file/owner.rb +32 -64
  100. data/lib/puppet/type/file/selcontext.rb +3 -8
  101. data/lib/puppet/type/group.rb +27 -45
  102. data/lib/puppet/type/k5login.rb +1 -1
  103. data/lib/puppet/type/macauthorization.rb +141 -0
  104. data/lib/puppet/type/mcx.rb +115 -0
  105. data/lib/puppet/type/mount.rb +1 -1
  106. data/lib/puppet/type/nagios_hostdependency.rb +3 -0
  107. data/lib/puppet/type/ssh_authorized_key.rb +16 -0
  108. data/lib/puppet/type/tidy.rb +43 -14
  109. data/lib/puppet/type/user.rb +25 -1
  110. data/lib/puppet/type/zfs.rb +51 -0
  111. data/lib/puppet/type/zone.rb +8 -0
  112. data/lib/puppet/type/zpool.rb +93 -0
  113. data/lib/puppet/util.rb +17 -38
  114. data/lib/puppet/util/file_locking.rb +44 -0
  115. data/lib/puppet/util/filetype.rb +3 -3
  116. data/lib/puppet/util/log.rb +1 -16
  117. data/lib/puppet/util/metric.rb +0 -5
  118. data/lib/puppet/util/rdoc.rb +85 -0
  119. data/lib/puppet/util/rdoc/code_objects.rb +219 -0
  120. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +829 -0
  121. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1051 -0
  122. data/lib/puppet/util/rdoc/parser.rb +437 -0
  123. data/lib/puppet/util/selinux.rb +135 -63
  124. data/lib/puppet/util/settings.rb +136 -126
  125. data/lib/puppet/util/storage.rb +4 -2
  126. data/spec/Rakefile +91 -0
  127. data/spec/integration/checksum.rb +47 -0
  128. data/spec/integration/defaults.rb +47 -0
  129. data/spec/integration/file_serving/configuration.rb +43 -0
  130. data/spec/integration/file_serving/content.rb +18 -0
  131. data/spec/integration/file_serving/metadata.rb +18 -0
  132. data/spec/integration/indirector/direct_file_server.rb +80 -0
  133. data/spec/integration/indirector/file_content/file_server.rb +18 -0
  134. data/spec/integration/indirector/file_metadata/file_server.rb +18 -0
  135. data/spec/integration/indirector/module_files.rb +57 -0
  136. data/spec/integration/indirector/node/ldap.rb +15 -0
  137. data/spec/integration/indirector/rest.rb +464 -0
  138. data/spec/integration/network/server/mongrel.rb +48 -0
  139. data/spec/integration/network/server/webrick.rb +48 -0
  140. data/spec/integration/node.rb +93 -0
  141. data/spec/integration/node/catalog.rb +54 -0
  142. data/spec/integration/node/facts.rb +45 -0
  143. data/spec/integration/provider/package.rb +26 -0
  144. data/spec/integration/provider/service/init.rb +32 -0
  145. data/spec/integration/reference/providers.rb +17 -0
  146. data/spec/integration/reports.rb +14 -0
  147. data/spec/integration/transaction/report.rb +26 -0
  148. data/spec/integration/type/package.rb +22 -0
  149. data/spec/integration/util/file_locking.rb +36 -0
  150. data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +46 -0
  151. data/spec/monkey_patches/alias_should_to_must.rb +5 -0
  152. data/spec/shared_behaviours/file_server_terminus.rb +42 -0
  153. data/spec/shared_behaviours/file_serving.rb +64 -0
  154. data/spec/shared_behaviours/memory_terminus.rb +32 -0
  155. data/spec/spec.opts +5 -0
  156. data/spec/spec_helper.rb +36 -0
  157. data/spec/unit/executables/client/certhandler.rb +122 -0
  158. data/spec/unit/file_serving/configuration.rb +224 -0
  159. data/spec/unit/file_serving/configuration/parser.rb +135 -0
  160. data/spec/unit/file_serving/content.rb +71 -0
  161. data/spec/unit/file_serving/file_base.rb +124 -0
  162. data/spec/unit/file_serving/fileset.rb +239 -0
  163. data/spec/unit/file_serving/indirection_hooks.rb +124 -0
  164. data/spec/unit/file_serving/metadata.rb +187 -0
  165. data/spec/unit/file_serving/mount.rb +143 -0
  166. data/spec/unit/file_serving/terminus_helper.rb +76 -0
  167. data/spec/unit/indirector.rb +152 -0
  168. data/spec/unit/indirector/catalog/compiler.rb +156 -0
  169. data/spec/unit/indirector/catalog/yaml.rb +25 -0
  170. data/spec/unit/indirector/checksum/file.rb +139 -0
  171. data/spec/unit/indirector/code.rb +33 -0
  172. data/spec/unit/indirector/direct_file_server.rb +89 -0
  173. data/spec/unit/indirector/envelope.rb +47 -0
  174. data/spec/unit/indirector/exec.rb +51 -0
  175. data/spec/unit/indirector/facts/facter.rb +76 -0
  176. data/spec/unit/indirector/facts/yaml.rb +26 -0
  177. data/spec/unit/indirector/file.rb +154 -0
  178. data/spec/unit/indirector/file_content/file.rb +18 -0
  179. data/spec/unit/indirector/file_content/file_server.rb +18 -0
  180. data/spec/unit/indirector/file_content/modules.rb +18 -0
  181. data/spec/unit/indirector/file_content/rest.rb +11 -0
  182. data/spec/unit/indirector/file_metadata/file.rb +52 -0
  183. data/spec/unit/indirector/file_metadata/file_server.rb +18 -0
  184. data/spec/unit/indirector/file_metadata/modules.rb +42 -0
  185. data/spec/unit/indirector/file_metadata/rest.rb +9 -0
  186. data/spec/unit/indirector/file_server.rb +184 -0
  187. data/spec/unit/indirector/indirection.rb +731 -0
  188. data/spec/unit/indirector/ldap.rb +143 -0
  189. data/spec/unit/indirector/memory.rb +29 -0
  190. data/spec/unit/indirector/module_files.rb +259 -0
  191. data/spec/unit/indirector/node/exec.rb +69 -0
  192. data/spec/unit/indirector/node/ldap.rb +424 -0
  193. data/spec/unit/indirector/node/memory.rb +19 -0
  194. data/spec/unit/indirector/node/plain.rb +19 -0
  195. data/spec/unit/indirector/node/rest.rb +13 -0
  196. data/spec/unit/indirector/node/yaml.rb +25 -0
  197. data/spec/unit/indirector/plain.rb +29 -0
  198. data/spec/unit/indirector/report/processor.rb +81 -0
  199. data/spec/unit/indirector/request.rb +87 -0
  200. data/spec/unit/indirector/rest.rb +372 -0
  201. data/spec/unit/indirector/ssl_rsa/file.rb +116 -0
  202. data/spec/unit/indirector/terminus.rb +245 -0
  203. data/spec/unit/indirector/yaml.rb +145 -0
  204. data/spec/unit/module.rb +247 -0
  205. data/spec/unit/network/client.rb +45 -0
  206. data/spec/unit/network/client/master.rb +442 -0
  207. data/spec/unit/network/handler/fileserver.rb +179 -0
  208. data/spec/unit/network/http.rb +35 -0
  209. data/spec/unit/network/http/mongrel.rb +117 -0
  210. data/spec/unit/network/http/mongrel/rest.rb +377 -0
  211. data/spec/unit/network/http/mongrel/xmlrpc.rb +0 -0
  212. data/spec/unit/network/http/webrick.rb +127 -0
  213. data/spec/unit/network/http/webrick/rest.rb +323 -0
  214. data/spec/unit/network/http/webrick/xmlrpc.rb +0 -0
  215. data/spec/unit/network/http_pool.rb +238 -0
  216. data/spec/unit/network/server.rb +316 -0
  217. data/spec/unit/network/xmlrpc/client.rb +13 -0
  218. data/spec/unit/node.rb +167 -0
  219. data/spec/unit/node/catalog.rb +864 -0
  220. data/spec/unit/node/environment.rb +37 -0
  221. data/spec/unit/node/facts.rb +44 -0
  222. data/spec/unit/other/checksum.rb +92 -0
  223. data/spec/unit/other/pgraph.rb +210 -0
  224. data/spec/unit/other/transaction.rb +33 -0
  225. data/spec/unit/other/transbucket.rb +172 -0
  226. data/spec/unit/other/transobject.rb +92 -0
  227. data/spec/unit/parameter.rb +24 -0
  228. data/spec/unit/parser/ast.rb +37 -0
  229. data/spec/unit/parser/ast/arithmetic_operator.rb +73 -0
  230. data/spec/unit/parser/ast/astarray.rb +66 -0
  231. data/spec/unit/parser/ast/boolean_operator.rb +53 -0
  232. data/spec/unit/parser/ast/collexpr.rb +92 -0
  233. data/spec/unit/parser/ast/comparison_operator.rb +92 -0
  234. data/spec/unit/parser/ast/definition.rb +195 -0
  235. data/spec/unit/parser/ast/function.rb +77 -0
  236. data/spec/unit/parser/ast/hostclass.rb +148 -0
  237. data/spec/unit/parser/ast/minus.rb +36 -0
  238. data/spec/unit/parser/ast/node.rb +125 -0
  239. data/spec/unit/parser/ast/nop.rb +20 -0
  240. data/spec/unit/parser/ast/not.rb +30 -0
  241. data/spec/unit/parser/ast/resource_override.rb +51 -0
  242. data/spec/unit/parser/ast/resource_reference.rb +63 -0
  243. data/spec/unit/parser/ast/vardef.rb +47 -0
  244. data/spec/unit/parser/collector.rb +426 -0
  245. data/spec/unit/parser/compiler.rb +561 -0
  246. data/spec/unit/parser/functions.rb +83 -0
  247. data/spec/unit/parser/functions/inline_template.rb +59 -0
  248. data/spec/unit/parser/functions/template.rb +62 -0
  249. data/spec/unit/parser/interpreter.rb +138 -0
  250. data/spec/unit/parser/lexer.rb +646 -0
  251. data/spec/unit/parser/parser.rb +228 -0
  252. data/spec/unit/parser/resource.rb +336 -0
  253. data/spec/unit/parser/resource/reference.rb +95 -0
  254. data/spec/unit/parser/scope.rb +87 -0
  255. data/spec/unit/parser/templatewrapper.rb +129 -0
  256. data/spec/unit/property.rb +35 -0
  257. data/spec/unit/property/keyvalue.rb +168 -0
  258. data/spec/unit/property/list.rb +156 -0
  259. data/spec/unit/property/ordered_list.rb +64 -0
  260. data/spec/unit/provider/augeas/augeas.rb +238 -0
  261. data/spec/unit/provider/confine.rb +78 -0
  262. data/spec/unit/provider/confine/exists.rb +81 -0
  263. data/spec/unit/provider/confine/false.rb +53 -0
  264. data/spec/unit/provider/confine/feature.rb +60 -0
  265. data/spec/unit/provider/confine/true.rb +53 -0
  266. data/spec/unit/provider/confine/variable.rb +107 -0
  267. data/spec/unit/provider/confine_collection.rb +134 -0
  268. data/spec/unit/provider/confiner.rb +63 -0
  269. data/spec/unit/provider/group/groupadd.rb +31 -0
  270. data/spec/unit/provider/group/ldap.rb +105 -0
  271. data/spec/unit/provider/ldap.rb +248 -0
  272. data/spec/unit/provider/macauthorization.rb +147 -0
  273. data/spec/unit/provider/mcx/mcxcontent.rb +175 -0
  274. data/spec/unit/provider/mount.rb +130 -0
  275. data/spec/unit/provider/mount/parsed.rb +185 -0
  276. data/spec/unit/provider/package/apt.rb +138 -0
  277. data/spec/unit/provider/package/dpkg.rb +163 -0
  278. data/spec/unit/provider/package/gem.rb +87 -0
  279. data/spec/unit/provider/package/hpux.rb +52 -0
  280. data/spec/unit/provider/selboolean.rb +37 -0
  281. data/spec/unit/provider/selmodule-example.pp +0 -0
  282. data/spec/unit/provider/selmodule.rb +66 -0
  283. data/spec/unit/provider/service/daemontools.rb +124 -0
  284. data/spec/unit/provider/service/launchd.rb +134 -0
  285. data/spec/unit/provider/service/runit.rb +117 -0
  286. data/spec/unit/provider/ssh_authorized_key/parsed.rb +102 -0
  287. data/spec/unit/provider/user/hpux.rb +25 -0
  288. data/spec/unit/provider/user/ldap.rb +279 -0
  289. data/spec/unit/provider/user/user_role_add.rb +249 -0
  290. data/spec/unit/provider/user/useradd.rb +115 -0
  291. data/spec/unit/provider/zfs/solaris.rb +87 -0
  292. data/spec/unit/provider/zone/solaris.rb +42 -0
  293. data/spec/unit/provider/zpool/solaris.rb +179 -0
  294. data/spec/unit/rails.rb +125 -0
  295. data/spec/unit/relationship.rb +149 -0
  296. data/spec/unit/reports.rb +61 -0
  297. data/spec/unit/resource_reference.rb +73 -0
  298. data/spec/unit/simple_graph.rb +280 -0
  299. data/spec/unit/transaction/change.rb +187 -0
  300. data/spec/unit/transaction/event.rb +25 -0
  301. data/spec/unit/transaction/report.rb +40 -0
  302. data/spec/unit/type.rb +64 -0
  303. data/spec/unit/type/augeas.rb +113 -0
  304. data/spec/unit/type/computer.rb +82 -0
  305. data/spec/unit/type/exec.rb +91 -0
  306. data/spec/unit/type/file.rb +155 -0
  307. data/spec/unit/type/file/ensure.rb +21 -0
  308. data/spec/unit/type/file/group.rb +118 -0
  309. data/spec/unit/type/file/owner.rb +132 -0
  310. data/spec/unit/type/file/selinux.rb +82 -0
  311. data/spec/unit/type/group.rb +40 -0
  312. data/spec/unit/type/macauthorization.rb +78 -0
  313. data/spec/unit/type/mcx.rb +108 -0
  314. data/spec/unit/type/mount.rb +219 -0
  315. data/spec/unit/type/nagios.rb +63 -0
  316. data/spec/unit/type/noop_metaparam.rb +38 -0
  317. data/spec/unit/type/package.rb +246 -0
  318. data/spec/unit/type/resources.rb +27 -0
  319. data/spec/unit/type/schedule.rb +339 -0
  320. data/spec/unit/type/selboolean.rb +47 -0
  321. data/spec/unit/type/selmodule.rb +18 -0
  322. data/spec/unit/type/service.rb +254 -0
  323. data/spec/unit/type/ssh_authorized_key.rb +106 -0
  324. data/spec/unit/type/tidy.rb +68 -0
  325. data/spec/unit/type/user.rb +260 -0
  326. data/spec/unit/type/zfs.rb +45 -0
  327. data/spec/unit/type/zone.rb +20 -0
  328. data/spec/unit/type/zpool.rb +110 -0
  329. data/spec/unit/util/checksums.rb +99 -0
  330. data/spec/unit/util/constant_inflector.rb +70 -0
  331. data/spec/unit/util/file_locking.rb +115 -0
  332. data/spec/unit/util/ldap/connection.rb +169 -0
  333. data/spec/unit/util/ldap/generator.rb +54 -0
  334. data/spec/unit/util/ldap/manager.rb +654 -0
  335. data/spec/unit/util/loadedfile.rb +65 -0
  336. data/spec/unit/util/log.rb +107 -0
  337. data/spec/unit/util/metric.rb +95 -0
  338. data/spec/unit/util/nagios_maker.rb +128 -0
  339. data/spec/unit/util/posix.rb +256 -0
  340. data/spec/unit/util/resource_template.rb +58 -0
  341. data/spec/unit/util/selinux.rb +219 -0
  342. data/spec/unit/util/settings.rb +847 -0
  343. data/spec/unit/util/storage.rb +248 -0
  344. data/spec/unit/util/tagging.rb +92 -0
  345. data/spec/unit/util/uri_helper.rb +41 -0
  346. data/spec/unit/util/user_attr.rb +47 -0
  347. data/spec/unit/util/warnings.rb +35 -0
  348. data/test/certmgr/support.rb +0 -6
  349. data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +1 -0
  350. data/test/data/snippets/multilinecomments.pp +6 -0
  351. data/test/data/snippets/multipleclass.pp +9 -0
  352. data/test/language/functions.rb +11 -1
  353. data/test/language/snippets.rb +16 -0
  354. data/test/lib/puppettest/runnable_test.rb +1 -1
  355. data/test/network/handler/fileserver.rb +5 -0
  356. data/test/other/report.rb +0 -4
  357. data/test/ral/type/resources.rb +2 -19
  358. data/test/util/settings.rb +4 -4
  359. data/test/util/storage.rb +0 -24
  360. data/test/util/utiltest.rb +0 -33
  361. metadata +319 -26
  362. data/conf/debian/README.source +0 -2
  363. data/conf/debian/TODO.Debian +0 -1
  364. data/conf/debian/changelog +0 -257
  365. data/conf/debian/compat +0 -1
  366. data/conf/debian/control +0 -45
  367. data/conf/debian/copyright +0 -17
  368. data/conf/debian/docs +0 -1
  369. data/conf/debian/fileserver.conf +0 -12
  370. data/conf/debian/puppet.NEWS +0 -63
  371. data/conf/debian/puppet.conf +0 -8
  372. data/conf/debian/puppet.dirs +0 -7
  373. data/conf/debian/puppet.files +0 -6
  374. data/conf/debian/puppet.init +0 -64
  375. data/conf/debian/puppet.logrotate +0 -11
  376. data/conf/debian/puppet.postinst +0 -9
  377. data/conf/debian/puppet.postrm +0 -21
  378. data/conf/debian/puppet.preinst +0 -25
  379. data/conf/debian/puppetmaster.files +0 -4
  380. data/conf/debian/puppetmaster.init +0 -58
  381. data/conf/debian/rules +0 -115
  382. data/conf/debian/watch +0 -2
  383. data/lib/puppet/type/nagios_hostgroupescalation.rb +0 -3
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright (C) 2008 Jeffrey J McCune.
4
+
5
+ # This program and entire repository is free software; you can
6
+ # redistribute it and/or modify it under the terms of the GNU
7
+ # General Public License as published by the Free Software
8
+ # Foundation; either version 2 of the License, or any later version.
9
+
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
+
19
+ # Author: Jeff McCune <mccune.jeff@gmail.com>
20
+
21
+ # Most of this code copied from /spec/type/service.rb
22
+
23
+ require File.dirname(__FILE__) + '/../../spec_helper'
24
+
25
+ require 'puppet/type/mcx'
26
+
27
+ mcx_type = Puppet::Type.type(:mcx)
28
+
29
+ describe mcx_type, "when validating attributes" do
30
+
31
+ properties = [:ensure, :content]
32
+ parameters = [:name, :ds_type, :ds_name]
33
+
34
+ parameters.each do |p|
35
+ it "should have a #{p} parameter" do
36
+ mcx_type.attrclass(p).ancestors.should be_include(Puppet::Parameter)
37
+ end
38
+ it "should have documentation for its #{p} parameter" do
39
+ mcx_type.attrclass(p).doc.should be_instance_of(String)
40
+ end
41
+ end
42
+
43
+ properties.each do |p|
44
+ it "should have a #{p} property" do
45
+ mcx_type.attrclass(p).ancestors.should be_include(Puppet::Property)
46
+ end
47
+ it "should have documentation for its #{p} property" do
48
+ mcx_type.attrclass(p).doc.should be_instance_of(String)
49
+ end
50
+ end
51
+
52
+ end
53
+
54
+ describe mcx_type, "default values" do
55
+
56
+ before :each do
57
+ provider_class = mcx_type.provider(mcx_type.providers[0])
58
+ mcx_type.stubs(:defaultprovider).returns provider_class
59
+ end
60
+
61
+ after :each do
62
+ mcx_type.clear
63
+ end
64
+
65
+ it "should be nil for :ds_type" do
66
+ mcx_type.create(:name => '/Foo/bar')[:ds_type].should be_nil
67
+ end
68
+
69
+ it "should be nil for :ds_name" do
70
+ mcx_type.create(:name => '/Foo/bar')[:ds_name].should be_nil
71
+ end
72
+
73
+ it "should be nil for :content" do
74
+ mcx_type.create(:name => '/Foo/bar')[:content].should be_nil
75
+ end
76
+
77
+ end
78
+
79
+ describe mcx_type, "when validating properties" do
80
+
81
+ before :each do
82
+ provider_class = mcx_type.provider(mcx_type.providers[0])
83
+ mcx_type.stubs(:defaultprovider).returns provider_class
84
+ end
85
+
86
+ after :each do
87
+ mcx_type.clear
88
+ end
89
+
90
+ it "should be able to create an instance" do
91
+ lambda {
92
+ mcx_type.create(:name => '/Foo/bar')
93
+ }.should_not raise_error
94
+ end
95
+
96
+ it "should support :present as a value to :ensure" do
97
+ lambda {
98
+ mcx_type.create(:name => "/Foo/bar", :ensure => :present)
99
+ }.should_not raise_error
100
+ end
101
+
102
+ it "should support :absent as a value to :ensure" do
103
+ lambda {
104
+ mcx_type.create(:name => "/Foo/bar", :ensure => :absent)
105
+ }.should_not raise_error
106
+ end
107
+
108
+ end
@@ -0,0 +1,219 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Puppet::Type.type(:mount) do
6
+ it "should have a :refreshable feature that requires the :remount method" do
7
+ Puppet::Type.type(:mount).provider_feature(:refreshable).methods.should == [:remount]
8
+ end
9
+
10
+ it "should have no default value for :ensure" do
11
+ mount = Puppet::Type.type(:mount).create(:name => "yay")
12
+ mount.should(:ensure).should be_nil
13
+ end
14
+
15
+ after { Puppet::Type.type(:mount).clear }
16
+ end
17
+
18
+ describe Puppet::Type.type(:mount), "when validating attributes" do
19
+ [:name, :remounts].each do |param|
20
+ it "should have a #{param} parameter" do
21
+ Puppet::Type.type(:mount).attrtype(param).should == :param
22
+ end
23
+ end
24
+
25
+ [:ensure, :device, :blockdevice, :fstype, :options, :pass, :dump, :atboot, :target].each do |param|
26
+ it "should have a #{param} property" do
27
+ Puppet::Type.type(:mount).attrtype(param).should == :property
28
+ end
29
+ end
30
+ end
31
+
32
+ describe Puppet::Type.type(:mount)::Ensure, "when validating values" do
33
+ before do
34
+ @provider = stub 'provider', :class => Puppet::Type.type(:mount).defaultprovider, :clear => nil
35
+ Puppet::Type.type(:mount).defaultprovider.expects(:new).returns(@provider)
36
+ end
37
+
38
+ it "should support :present as a value to :ensure" do
39
+ Puppet::Type.type(:mount).create(:name => "yay", :ensure => :present)
40
+ end
41
+
42
+ it "should alias :unmounted to :present as a value to :ensure" do
43
+ mount = Puppet::Type.type(:mount).create(:name => "yay", :ensure => :unmounted)
44
+ mount.should(:ensure).should == :present
45
+ end
46
+
47
+ it "should support :absent as a value to :ensure" do
48
+ Puppet::Type.type(:mount).create(:name => "yay", :ensure => :absent)
49
+ end
50
+
51
+ it "should support :mounted as a value to :ensure" do
52
+ Puppet::Type.type(:mount).create(:name => "yay", :ensure => :mounted)
53
+ end
54
+
55
+ after { Puppet::Type.type(:mount).clear }
56
+ end
57
+
58
+ describe Puppet::Type.type(:mount)::Ensure do
59
+ before :each do
60
+ @provider = stub 'provider', :class => Puppet::Type.type(:mount).defaultprovider, :clear => nil, :satisfies? => true, :name => :mock
61
+ Puppet::Type.type(:mount).defaultprovider.stubs(:new).returns(@provider)
62
+ @mount = Puppet::Type.type(:mount).create(:name => "yay", :check => :ensure)
63
+
64
+ @ensure = @mount.property(:ensure)
65
+ end
66
+
67
+ after :each do
68
+ Puppet::Type.type(:mount).clear
69
+ end
70
+
71
+ def mount_stub(params)
72
+ Puppet::Type.type(:mount).validproperties.each do |prop|
73
+ unless params[prop]
74
+ params[prop] = :absent
75
+ @mount[prop] = :absent
76
+ end
77
+ end
78
+
79
+ params.each do |param, value|
80
+ @provider.stubs(param).returns(value)
81
+ end
82
+ end
83
+
84
+ describe Puppet::Type.type(:mount)::Ensure, "when retrieving its current state" do
85
+
86
+ it "should return the provider's value if it is :absent" do
87
+ @provider.expects(:ensure).returns(:absent)
88
+ @ensure.retrieve.should == :absent
89
+ end
90
+
91
+ it "should return :mounted if the provider indicates it is mounted and the value is not :absent" do
92
+ @provider.expects(:ensure).returns(:present)
93
+ @provider.expects(:mounted?).returns(true)
94
+ @ensure.retrieve.should == :mounted
95
+ end
96
+
97
+ it "should return :present if the provider indicates it is not mounted and the value is not :absent" do
98
+ @provider.expects(:ensure).returns(:present)
99
+ @provider.expects(:mounted?).returns(false)
100
+ @ensure.retrieve.should == :present
101
+ end
102
+ end
103
+
104
+ describe Puppet::Type.type(:mount)::Ensure, "when changing the host" do
105
+
106
+ it "should destroy itself if it should be absent" do
107
+ @provider.stubs(:mounted?).returns(false)
108
+ @provider.expects(:destroy)
109
+ @ensure.should = :absent
110
+ @ensure.sync
111
+ end
112
+
113
+ it "should unmount itself before destroying if it is mounted and should be absent" do
114
+ @provider.expects(:mounted?).returns(true)
115
+ @provider.expects(:unmount)
116
+ @provider.expects(:destroy)
117
+ @ensure.should = :absent
118
+ @ensure.sync
119
+ end
120
+
121
+ it "should create itself if it is absent and should be present" do
122
+ @provider.stubs(:mounted?).returns(false)
123
+ @provider.expects(:create)
124
+ @ensure.should = :present
125
+ @ensure.sync
126
+ end
127
+
128
+ it "should unmount itself if it is mounted and should be present" do
129
+ @provider.stubs(:mounted?).returns(true)
130
+
131
+ # The interface here is just too much work to test right now.
132
+ @ensure.stubs(:syncothers)
133
+ @provider.expects(:unmount)
134
+ @ensure.should = :present
135
+ @ensure.sync
136
+ end
137
+
138
+ it "should create and mount itself if it does not exist and should be mounted" do
139
+ @provider.stubs(:ensure).returns(:absent)
140
+ @provider.stubs(:mounted?).returns(false)
141
+ @provider.expects(:create)
142
+ @ensure.stubs(:syncothers)
143
+ @provider.expects(:mount)
144
+ @ensure.should = :mounted
145
+ @ensure.sync
146
+ end
147
+
148
+ it "should mount itself if it is present and should be mounted" do
149
+ @provider.stubs(:ensure).returns(:present)
150
+ @provider.stubs(:mounted?).returns(false)
151
+ @ensure.stubs(:syncothers)
152
+ @provider.expects(:mount)
153
+ @ensure.should = :mounted
154
+ @ensure.sync
155
+ end
156
+
157
+ it "should create but not mount itself if it is absent and mounted and should be mounted" do
158
+ @provider.stubs(:ensure).returns(:absent)
159
+ @provider.stubs(:mounted?).returns(true)
160
+ @ensure.stubs(:syncothers)
161
+ @provider.expects(:create)
162
+ @ensure.should = :mounted
163
+ @ensure.sync
164
+ end
165
+ end
166
+
167
+ describe Puppet::Type.type(:mount), "when responding to events" do
168
+
169
+ it "should remount if it is currently mounted" do
170
+ @provider.expects(:mounted?).returns(true)
171
+ @provider.expects(:remount)
172
+
173
+ @mount.refresh
174
+ end
175
+
176
+ it "should not remount if it is not currently mounted" do
177
+ @provider.expects(:mounted?).returns(false)
178
+ @provider.expects(:remount).never
179
+
180
+ @mount.refresh
181
+ end
182
+
183
+ it "should not remount swap filesystems" do
184
+ @mount[:fstype] = "swap"
185
+ @provider.expects(:remount).never
186
+
187
+ @mount.refresh
188
+ end
189
+ end
190
+ end
191
+
192
+ describe Puppet::Type.type(:mount), "when modifying an existing mount entry" do
193
+ before do
194
+ @provider = stub 'provider', :class => Puppet::Type.type(:mount).defaultprovider, :clear => nil, :satisfies? => true, :name => :mock, :remount => nil
195
+ Puppet::Type.type(:mount).defaultprovider.stubs(:new).returns(@provider)
196
+ @mount = Puppet::Type.type(:mount).create(:name => "yay", :ensure => :mounted)
197
+
198
+ {:device => "/foo/bar", :blockdevice => "/other/bar", :target => "/what/ever", :fstype => 'eh', :options => "", :pass => 0, :dump => 0, :atboot => 0,
199
+ :ensure => :mounted}.each do
200
+ |param, value|
201
+ @mount.provider.stubs(param).returns value
202
+ @mount[param] = value
203
+ end
204
+
205
+ @mount.provider.stubs(:mounted?).returns true
206
+
207
+ @catalog = Puppet::Node::Catalog.new
208
+ @catalog.add_resource @mount
209
+ end
210
+
211
+ it "should use the provider to change the dump value" do
212
+ @mount.provider.expects(:dump).returns 0
213
+ @mount.provider.expects(:dump=).with(1)
214
+
215
+ @mount[:dump] = 1
216
+
217
+ @catalog.apply
218
+ end
219
+ end
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/external/nagios'
6
+
7
+ describe "Nagios resource types" do
8
+ Nagios::Base.eachtype do |name, nagios_type|
9
+ puppet_type = Puppet::Type.type("nagios_" + name.to_s)
10
+
11
+ it "should have a valid type for #{name}" do
12
+ puppet_type.should_not be_nil
13
+ end
14
+
15
+ next unless puppet_type
16
+
17
+ describe puppet_type do
18
+ it "should be defined as a Puppet resource type" do
19
+ puppet_type.should_not be_nil
20
+ end
21
+
22
+ it "should have documentation" do
23
+ puppet_type.instance_variable_get("@doc").should_not == ""
24
+ end
25
+
26
+ it "should have %s as its namevar" % nagios_type.namevar do
27
+ puppet_type.namevar.should == nagios_type.namevar
28
+ end
29
+
30
+ it "should have documentation for its %s parameter" % nagios_type.namevar do
31
+ puppet_type.attrclass(nagios_type.namevar).instance_variable_get("@doc").should_not be_nil
32
+ end
33
+
34
+ it "should have an ensure property" do
35
+ puppet_type.should be_validproperty(:ensure)
36
+ end
37
+
38
+ it "should have a target property" do
39
+ puppet_type.should be_validproperty(:target)
40
+ end
41
+
42
+ it "should have documentation for its target property" do
43
+ puppet_type.attrclass(:target).instance_variable_get("@doc").should_not be_nil
44
+ end
45
+
46
+ nagios_type.parameters.reject { |param| param == nagios_type.namevar or param.to_s =~ /^[0-9]/ }.each do |param|
47
+ it "should have a %s property" % param do
48
+ puppet_type.should be_validproperty(param)
49
+ end
50
+
51
+ it "should have documentation for its %s property" % param do
52
+ puppet_type.attrclass(param).instance_variable_get("@doc").should_not be_nil
53
+ end
54
+ end
55
+
56
+ nagios_type.parameters.find_all { |param| param.to_s =~ /^[0-9]/ }.each do |param|
57
+ it "should have not have a %s property" % param do
58
+ puppet_type.should_not be_validproperty(:param)
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/type'
6
+
7
+ describe Puppet::Type.type(:file).attrclass(:noop) do
8
+ before do
9
+ @file = Puppet::Type.newfile :path => "/what/ever"
10
+ end
11
+
12
+ after { Puppet::Type::File.clear }
13
+
14
+ it "should accept true as a value" do
15
+ lambda { @file[:noop] = true }.should_not raise_error
16
+ end
17
+
18
+ it "should accept false as a value" do
19
+ lambda { @file[:noop] = false }.should_not raise_error
20
+ end
21
+
22
+ describe "when set on a resource" do
23
+ it "should default to the :noop setting" do
24
+ Puppet.settings.expects(:value).with(:noop).returns "myval"
25
+ @file.noop.should == "myval"
26
+ end
27
+
28
+ it "should prefer true values from the attribute" do
29
+ @file[:noop] = true
30
+ @file.noop.should be_true
31
+ end
32
+
33
+ it "should prefer false values from the attribute" do
34
+ @file[:noop] = false
35
+ @file.noop.should be_false
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,246 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Puppet::Type.type(:package) do
6
+ it "should have an :installable feature that requires the :install method" do
7
+ Puppet::Type.type(:package).provider_feature(:installable).methods.should == [:install]
8
+ end
9
+
10
+ it "should have an :uninstallable feature that requires the :uninstall method" do
11
+ Puppet::Type.type(:package).provider_feature(:uninstallable).methods.should == [:uninstall]
12
+ end
13
+
14
+ it "should have an :upgradeable feature that requires :update and :latest methods" do
15
+ Puppet::Type.type(:package).provider_feature(:upgradeable).methods.should == [:update, :latest]
16
+ end
17
+
18
+ it "should have a :purgeable feature that requires the :purge latest method" do
19
+ Puppet::Type.type(:package).provider_feature(:purgeable).methods.should == [:purge]
20
+ end
21
+
22
+ it "should have a :versionable feature" do
23
+ Puppet::Type.type(:package).provider_feature(:versionable).should_not be_nil
24
+ end
25
+
26
+ it "should default to being installed" do
27
+ pkg = Puppet::Type.type(:package).create(:name => "yay")
28
+ pkg.should(:ensure).should == :present
29
+ end
30
+
31
+ after { Puppet::Type.type(:package).clear }
32
+ end
33
+
34
+ describe Puppet::Type.type(:package), "when validating attributes" do
35
+ [:name, :source, :instance, :status, :adminfile, :responsefile, :configfiles, :category, :platform, :root, :vendor, :description, :allowcdrom].each do |param|
36
+ it "should have a #{param} parameter" do
37
+ Puppet::Type.type(:package).attrtype(param).should == :param
38
+ end
39
+ end
40
+
41
+ it "should have an ensure property" do
42
+ Puppet::Type.type(:package).attrtype(:ensure).should == :property
43
+ end
44
+ end
45
+
46
+ describe Puppet::Type.type(:package), "when validating attribute values" do
47
+ before do
48
+ @provider = stub 'provider', :class => Puppet::Type.type(:package).defaultprovider, :clear => nil
49
+ Puppet::Type.type(:package).defaultprovider.expects(:new).returns(@provider)
50
+ end
51
+
52
+ it "should support :present as a value to :ensure" do
53
+ Puppet::Type.type(:package).create(:name => "yay", :ensure => :present)
54
+ end
55
+
56
+ it "should alias :installed to :present as a value to :ensure" do
57
+ pkg = Puppet::Type.type(:package).create(:name => "yay", :ensure => :installed)
58
+ pkg.should(:ensure).should == :present
59
+ end
60
+
61
+ it "should support :absent as a value to :ensure" do
62
+ Puppet::Type.type(:package).create(:name => "yay", :ensure => :absent)
63
+ end
64
+
65
+ it "should support :purged as a value to :ensure if the provider has the :purgeable feature" do
66
+ @provider.expects(:satisfies?).with(:purgeable).returns(true)
67
+ Puppet::Type.type(:package).create(:name => "yay", :ensure => :purged)
68
+ end
69
+
70
+ it "should not support :purged as a value to :ensure if the provider does not have the :purgeable feature" do
71
+ @provider.expects(:satisfies?).with(:purgeable).returns(false)
72
+ proc { Puppet::Type.type(:package).create(:name => "yay", :ensure => :purged) }.should raise_error(Puppet::Error)
73
+ end
74
+
75
+ it "should support :latest as a value to :ensure if the provider has the :upgradeable feature" do
76
+ @provider.expects(:satisfies?).with(:upgradeable).returns(true)
77
+ Puppet::Type.type(:package).create(:name => "yay", :ensure => :latest)
78
+ end
79
+
80
+ it "should not support :latest as a value to :ensure if the provider does not have the :upgradeable feature" do
81
+ @provider.expects(:satisfies?).with(:upgradeable).returns(false)
82
+ proc { Puppet::Type.type(:package).create(:name => "yay", :ensure => :latest) }.should raise_error(Puppet::Error)
83
+ end
84
+
85
+ it "should support version numbers as a value to :ensure if the provider has the :versionable feature" do
86
+ @provider.expects(:satisfies?).with(:versionable).returns(true)
87
+ Puppet::Type.type(:package).create(:name => "yay", :ensure => "1.0")
88
+ end
89
+
90
+ it "should not support version numbers as a value to :ensure if the provider does not have the :versionable feature" do
91
+ @provider.expects(:satisfies?).with(:versionable).returns(false)
92
+ proc { Puppet::Type.type(:package).create(:name => "yay", :ensure => "1.0") }.should raise_error(Puppet::Error)
93
+ end
94
+
95
+ it "should accept any string as an argument to :source" do
96
+ proc { Puppet::Type.type(:package).create(:name => "yay", :source => "stuff") }.should_not raise_error(Puppet::Error)
97
+ end
98
+
99
+ after { Puppet::Type.type(:package).clear }
100
+ end
101
+
102
+ module PackageEvaluationTesting
103
+ def setprops(properties)
104
+ @provider.stubs(:properties).returns(properties)
105
+ end
106
+ end
107
+
108
+ describe Puppet::Type.type(:package) do
109
+ before :each do
110
+ @provider = stub 'provider', :class => Puppet::Type.type(:package).defaultprovider, :clear => nil, :satisfies? => true, :name => :mock
111
+ Puppet::Type.type(:package).defaultprovider.stubs(:new).returns(@provider)
112
+ Puppet::Type.type(:package).defaultprovider.stubs(:instances).returns([])
113
+ @package = Puppet::Type.type(:package).create(:name => "yay")
114
+
115
+ @catalog = Puppet::Node::Catalog.new
116
+ @catalog.add_resource(@package)
117
+ end
118
+
119
+ after :each do
120
+ @catalog.clear(true)
121
+ Puppet::Type.type(:package).clear
122
+ end
123
+
124
+
125
+ describe Puppet::Type.type(:package), "when it should be purged" do
126
+ include PackageEvaluationTesting
127
+
128
+ before { @package[:ensure] = :purged }
129
+
130
+ it "should do nothing if it is :purged" do
131
+ @provider.expects(:properties).returns(:ensure => :purged)
132
+ @catalog.apply
133
+ end
134
+
135
+ [:absent, :installed, :present, :latest].each do |state|
136
+ it "should purge if it is #{state.to_s}" do
137
+ @provider.stubs(:properties).returns(:ensure => state)
138
+ @provider.expects(:purge)
139
+ @catalog.apply
140
+ end
141
+ end
142
+ end
143
+
144
+ describe Puppet::Type.type(:package), "when it should be absent" do
145
+ include PackageEvaluationTesting
146
+
147
+ before { @package[:ensure] = :absent }
148
+
149
+ [:purged, :absent].each do |state|
150
+ it "should do nothing if it is #{state.to_s}" do
151
+ @provider.expects(:properties).returns(:ensure => state)
152
+ @catalog.apply
153
+ end
154
+ end
155
+
156
+ [:installed, :present, :latest].each do |state|
157
+ it "should uninstall if it is #{state.to_s}" do
158
+ @provider.stubs(:properties).returns(:ensure => state)
159
+ @provider.expects(:uninstall)
160
+ @catalog.apply
161
+ end
162
+ end
163
+ end
164
+
165
+ describe Puppet::Type.type(:package), "when it should be present" do
166
+ include PackageEvaluationTesting
167
+
168
+ before { @package[:ensure] = :present }
169
+
170
+ [:present, :latest, "1.0"].each do |state|
171
+ it "should do nothing if it is #{state.to_s}" do
172
+ @provider.expects(:properties).returns(:ensure => state)
173
+ @catalog.apply
174
+ end
175
+ end
176
+
177
+ [:purged, :absent].each do |state|
178
+ it "should install if it is #{state.to_s}" do
179
+ @provider.stubs(:properties).returns(:ensure => state)
180
+ @provider.expects(:install)
181
+ @catalog.apply
182
+ end
183
+ end
184
+ end
185
+
186
+ describe Puppet::Type.type(:package), "when it should be latest" do
187
+ include PackageEvaluationTesting
188
+
189
+ before { @package[:ensure] = :latest }
190
+
191
+ [:purged, :absent].each do |state|
192
+ it "should upgrade if it is #{state.to_s}" do
193
+ @provider.stubs(:properties).returns(:ensure => state)
194
+ @provider.expects(:update)
195
+ @catalog.apply
196
+ end
197
+ end
198
+
199
+ it "should upgrade if the current version is not equal to the latest version" do
200
+ @provider.stubs(:properties).returns(:ensure => "1.0")
201
+ @provider.stubs(:latest).returns("2.0")
202
+ @provider.expects(:update)
203
+ @catalog.apply
204
+ end
205
+
206
+ it "should do nothing if it is equal to the latest version" do
207
+ @provider.stubs(:properties).returns(:ensure => "1.0")
208
+ @provider.stubs(:latest).returns("1.0")
209
+ @provider.expects(:update).never
210
+ @catalog.apply
211
+ end
212
+
213
+ it "should do nothing if the provider returns :present as the latest version" do
214
+ @provider.stubs(:properties).returns(:ensure => :present)
215
+ @provider.stubs(:latest).returns("1.0")
216
+ @provider.expects(:update).never
217
+ @catalog.apply
218
+ end
219
+ end
220
+
221
+ describe Puppet::Type.type(:package), "when it should be a specific version" do
222
+ include PackageEvaluationTesting
223
+
224
+ before { @package[:ensure] = "1.0" }
225
+
226
+ [:purged, :absent].each do |state|
227
+ it "should install if it is #{state.to_s}" do
228
+ @provider.stubs(:properties).returns(:ensure => state)
229
+ @provider.expects(:install)
230
+ @catalog.apply
231
+ end
232
+ end
233
+
234
+ it "should do nothing if the current version is equal to the desired version" do
235
+ @provider.stubs(:properties).returns(:ensure => "1.0")
236
+ @provider.expects(:install).never
237
+ @catalog.apply
238
+ end
239
+
240
+ it "should install if the current version is not equal to the specified version" do
241
+ @provider.stubs(:properties).returns(:ensure => "2.0")
242
+ @provider.expects(:install)
243
+ @catalog.apply
244
+ end
245
+ end
246
+ end