puppet 0.18.4 → 0.22.4

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 (673) hide show
  1. data/CHANGELOG +288 -0
  2. data/README +2 -2
  3. data/Rakefile +78 -5
  4. data/bin/puppet +28 -36
  5. data/bin/puppetca +81 -38
  6. data/bin/puppetd +65 -62
  7. data/bin/puppetdoc +409 -140
  8. data/bin/puppetmasterd +59 -47
  9. data/bin/puppetrun +38 -23
  10. data/conf/freebsd/puppetd +26 -0
  11. data/conf/freebsd/puppetmasterd +26 -0
  12. data/conf/gentoo/conf.d/puppet +5 -0
  13. data/conf/gentoo/conf.d/puppetmaster +12 -0
  14. data/conf/gentoo/init.d/puppet +38 -0
  15. data/conf/gentoo/init.d/puppetmaster +50 -0
  16. data/conf/gentoo/puppet/fileserver.conf +12 -0
  17. data/conf/gentoo/puppet/puppetca.conf +29 -0
  18. data/conf/gentoo/puppet/puppetd.conf +29 -0
  19. data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
  20. data/conf/redhat/client.init +10 -5
  21. data/conf/redhat/client.sysconfig +1 -1
  22. data/conf/redhat/fileserver.conf +2 -2
  23. data/conf/redhat/logrotate +1 -1
  24. data/conf/redhat/no-lockdir.patch +13 -0
  25. data/conf/redhat/puppet.spec +65 -8
  26. data/conf/redhat/puppetd.conf +0 -4
  27. data/conf/redhat/server.init +3 -6
  28. data/conf/solaris/pkginfo +1 -1
  29. data/conf/solaris/smf/svc-puppetd +2 -2
  30. data/conf/suse/client.init +142 -0
  31. data/conf/suse/puppet.spec +221 -0
  32. data/conf/suse/server.init +162 -0
  33. data/examples/code/mac_automount.pp +16 -0
  34. data/examples/root/bin/sleeper +3 -5
  35. data/examples/root/etc/init.d/sleeper +8 -2
  36. data/examples/root/etc/puppet/fileserver.conf +12 -2
  37. data/examples/root/etc/puppet/namespaceauth.conf +20 -0
  38. data/examples/root/etc/puppet/puppetd.conf +4 -0
  39. data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
  40. data/examples/root/etc/puppet/tagmail.conf +1 -0
  41. data/ext/emacs/puppet-mode.el +46 -1
  42. data/ext/logcheck/puppet +15 -0
  43. data/ext/module_puppet +15 -23
  44. data/ext/vim/puppet.vim +4 -2
  45. data/install.rb +2 -1
  46. data/lib/puppet.rb +76 -207
  47. data/lib/puppet/configuration.rb +331 -0
  48. data/lib/puppet/daemon.rb +63 -246
  49. data/lib/puppet/dsl.rb +371 -0
  50. data/lib/puppet/element.rb +8 -26
  51. data/lib/puppet/error.rb +54 -0
  52. data/lib/puppet/event.rb +8 -243
  53. data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
  54. data/lib/puppet/external/event-loop.rb +1 -0
  55. data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
  56. data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
  57. data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
  58. data/lib/puppet/external/gratr.rb +33 -0
  59. data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
  60. data/lib/puppet/external/gratr/base.rb +34 -0
  61. data/lib/puppet/external/gratr/biconnected.rb +116 -0
  62. data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
  63. data/lib/puppet/external/gratr/common.rb +73 -0
  64. data/lib/puppet/external/gratr/comparability.rb +92 -0
  65. data/lib/puppet/external/gratr/digraph.rb +116 -0
  66. data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
  67. data/lib/puppet/external/gratr/dot.rb +90 -0
  68. data/lib/puppet/external/gratr/edge.rb +145 -0
  69. data/lib/puppet/external/gratr/graph.rb +303 -0
  70. data/lib/puppet/external/gratr/graph_api.rb +83 -0
  71. data/lib/puppet/external/gratr/import.rb +44 -0
  72. data/lib/puppet/external/gratr/labels.rb +90 -0
  73. data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
  74. data/lib/puppet/external/gratr/rdot.rb +327 -0
  75. data/lib/puppet/external/gratr/search.rb +409 -0
  76. data/lib/puppet/external/gratr/strong_components.rb +127 -0
  77. data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
  78. data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
  79. data/lib/puppet/feature/base.rb +20 -0
  80. data/lib/puppet/feature/rails.rb +52 -0
  81. data/lib/puppet/metatype/attributes.rb +719 -0
  82. data/lib/puppet/metatype/closure.rb +111 -0
  83. data/lib/puppet/metatype/container.rb +94 -0
  84. data/lib/puppet/metatype/evaluation.rb +118 -0
  85. data/lib/puppet/metatype/instances.rb +261 -0
  86. data/lib/puppet/metatype/manager.rb +169 -0
  87. data/lib/puppet/metatype/metaparams.rb +409 -0
  88. data/lib/puppet/metatype/providers.rb +260 -0
  89. data/lib/puppet/metatype/relationships.rb +116 -0
  90. data/lib/puppet/metatype/schedules.rb +39 -0
  91. data/lib/puppet/metatype/tags.rb +39 -0
  92. data/lib/puppet/modules.rb +113 -0
  93. data/lib/puppet/network/authconfig.rb +168 -0
  94. data/lib/puppet/network/authorization.rb +84 -0
  95. data/lib/puppet/network/authstore.rb +293 -0
  96. data/lib/puppet/network/client.rb +187 -0
  97. data/lib/puppet/network/client/ca.rb +56 -0
  98. data/lib/puppet/network/client/dipper.rb +81 -0
  99. data/lib/puppet/network/client/file.rb +7 -0
  100. data/lib/puppet/network/client/logger.rb +6 -0
  101. data/lib/puppet/network/client/master.rb +644 -0
  102. data/lib/puppet/{client → network/client}/proxy.rb +3 -3
  103. data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
  104. data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
  105. data/lib/puppet/network/client/runner.rb +13 -0
  106. data/lib/puppet/network/client/status.rb +5 -0
  107. data/lib/puppet/network/client_request.rb +32 -0
  108. data/lib/puppet/network/handler.rb +33 -0
  109. data/lib/puppet/{server → network/handler}/ca.rb +5 -6
  110. data/lib/puppet/network/handler/filebucket.rb +180 -0
  111. data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
  112. data/lib/puppet/{server → network/handler}/logger.rb +3 -5
  113. data/lib/puppet/{server → network/handler}/master.rb +42 -8
  114. data/lib/puppet/network/handler/report.rb +158 -0
  115. data/lib/puppet/network/handler/resource.rb +190 -0
  116. data/lib/puppet/{server → network/handler}/runner.rb +17 -18
  117. data/lib/puppet/network/handler/status.rb +13 -0
  118. data/lib/puppet/network/rights.rb +74 -0
  119. data/lib/puppet/network/server.rb +5 -0
  120. data/lib/puppet/network/server/mongrel.rb +138 -0
  121. data/lib/puppet/network/server/webrick.rb +153 -0
  122. data/lib/puppet/network/xmlrpc/client.rb +129 -0
  123. data/lib/puppet/network/xmlrpc/processor.rb +91 -0
  124. data/lib/puppet/network/xmlrpc/server.rb +20 -0
  125. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
  126. data/lib/puppet/parameter.rb +390 -346
  127. data/lib/puppet/parser/ast.rb +116 -147
  128. data/lib/puppet/parser/ast/astarray.rb +17 -33
  129. data/lib/puppet/parser/ast/branch.rb +2 -0
  130. data/lib/puppet/parser/ast/caseopt.rb +7 -12
  131. data/lib/puppet/parser/ast/casestatement.rb +23 -32
  132. data/lib/puppet/parser/ast/collection.rb +19 -80
  133. data/lib/puppet/parser/ast/collexpr.rb +81 -0
  134. data/lib/puppet/parser/ast/component.rb +160 -89
  135. data/lib/puppet/parser/ast/else.rb +30 -0
  136. data/lib/puppet/parser/ast/function.rb +9 -2
  137. data/lib/puppet/parser/ast/hostclass.rb +47 -131
  138. data/lib/puppet/parser/ast/ifstatement.rb +43 -0
  139. data/lib/puppet/parser/ast/leaf.rb +10 -21
  140. data/lib/puppet/parser/ast/node.rb +32 -79
  141. data/lib/puppet/parser/ast/resourcedef.rb +222 -0
  142. data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
  143. data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
  144. data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
  145. data/lib/puppet/parser/ast/resourceref.rb +44 -0
  146. data/lib/puppet/parser/ast/selector.rb +16 -8
  147. data/lib/puppet/parser/ast/tag.rb +3 -1
  148. data/lib/puppet/parser/ast/vardef.rb +8 -12
  149. data/lib/puppet/parser/collector.rb +181 -0
  150. data/lib/puppet/parser/functions.rb +191 -36
  151. data/lib/puppet/parser/interpreter.rb +802 -380
  152. data/lib/puppet/parser/lexer.rb +86 -19
  153. data/lib/puppet/parser/parser.rb +1123 -960
  154. data/lib/puppet/parser/resource.rb +353 -0
  155. data/lib/puppet/parser/resource/param.rb +57 -0
  156. data/lib/puppet/parser/resource/reference.rb +71 -0
  157. data/lib/puppet/parser/scope.rb +573 -1000
  158. data/lib/puppet/parser/templatewrapper.rb +54 -0
  159. data/lib/puppet/pgraph.rb +208 -0
  160. data/lib/puppet/propertychange.rb +143 -0
  161. data/lib/puppet/provider.rb +302 -0
  162. data/lib/puppet/provider/cron/crontab.rb +187 -0
  163. data/lib/puppet/provider/group/groupadd.rb +29 -0
  164. data/lib/puppet/provider/group/netinfo.rb +12 -0
  165. data/lib/puppet/provider/group/pw.rb +31 -0
  166. data/lib/puppet/provider/host/netinfo.rb +18 -0
  167. data/lib/puppet/provider/host/parsed.rb +73 -0
  168. data/lib/puppet/provider/mount.rb +57 -0
  169. data/lib/puppet/provider/mount/netinfo.rb +38 -0
  170. data/lib/puppet/provider/mount/parsed.rb +37 -0
  171. data/lib/puppet/provider/nameservice.rb +344 -0
  172. data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
  173. data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
  174. data/lib/puppet/provider/nameservice/pw.rb +22 -0
  175. data/lib/puppet/provider/package/apple.rb +53 -0
  176. data/lib/puppet/provider/package/apt.rb +119 -0
  177. data/lib/puppet/provider/package/aptitude.rb +30 -0
  178. data/lib/puppet/provider/package/aptrpm.rb +79 -0
  179. data/lib/puppet/provider/package/blastwave.rb +114 -0
  180. data/lib/puppet/provider/package/darwinport.rb +88 -0
  181. data/lib/puppet/provider/package/dpkg.rb +109 -0
  182. data/lib/puppet/provider/package/freebsd.rb +43 -0
  183. data/lib/puppet/provider/package/gem.rb +104 -0
  184. data/lib/puppet/provider/package/openbsd.rb +93 -0
  185. data/lib/puppet/provider/package/pkgdmg.rb +119 -0
  186. data/lib/puppet/provider/package/portage.rb +112 -0
  187. data/lib/puppet/provider/package/ports.rb +94 -0
  188. data/lib/puppet/provider/package/rpm.rb +125 -0
  189. data/lib/puppet/provider/package/rug.rb +53 -0
  190. data/lib/puppet/provider/package/sun.rb +168 -0
  191. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  192. data/lib/puppet/provider/package/up2date.rb +45 -0
  193. data/lib/puppet/provider/package/yum.rb +54 -0
  194. data/lib/puppet/provider/parsedfile.rb +342 -0
  195. data/lib/puppet/provider/port/parsed.rb +174 -0
  196. data/lib/puppet/provider/service/base.rb +136 -0
  197. data/lib/puppet/provider/service/debian.rb +32 -0
  198. data/lib/puppet/provider/service/gentoo.rb +49 -0
  199. data/lib/puppet/{type → provider}/service/init.rb +42 -40
  200. data/lib/puppet/provider/service/redhat.rb +59 -0
  201. data/lib/puppet/{type → provider}/service/smf.rb +24 -13
  202. data/lib/puppet/provider/sshkey/parsed.rb +36 -0
  203. data/lib/puppet/provider/user/netinfo.rb +106 -0
  204. data/lib/puppet/provider/user/pw.rb +41 -0
  205. data/lib/puppet/provider/user/useradd.rb +67 -0
  206. data/lib/puppet/provider/zone/solaris.rb +208 -0
  207. data/lib/puppet/rails.rb +102 -66
  208. data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
  209. data/lib/puppet/rails/database/schema.rb +89 -0
  210. data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
  211. data/lib/puppet/rails/external/tagging/init.rb +5 -0
  212. data/lib/puppet/rails/external/tagging/tag.rb +50 -0
  213. data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
  214. data/lib/puppet/rails/fact_name.rb +7 -0
  215. data/lib/puppet/rails/fact_value.rb +5 -0
  216. data/lib/puppet/rails/host.rb +95 -46
  217. data/lib/puppet/rails/param_name.rb +28 -0
  218. data/lib/puppet/rails/param_value.rb +5 -0
  219. data/lib/puppet/rails/puppet_class.rb +9 -0
  220. data/lib/puppet/rails/resource.rb +95 -0
  221. data/lib/puppet/rails/source_file.rb +5 -0
  222. data/lib/puppet/relationship.rb +63 -0
  223. data/lib/puppet/reports/log.rb +14 -0
  224. data/lib/puppet/reports/rrdgraph.rb +114 -10
  225. data/lib/puppet/reports/store.rb +64 -0
  226. data/lib/puppet/reports/tagmail.rb +144 -71
  227. data/lib/puppet/sslcertificates.rb +38 -5
  228. data/lib/puppet/sslcertificates/ca.rb +142 -37
  229. data/lib/puppet/sslcertificates/certificate.rb +3 -3
  230. data/lib/puppet/sslcertificates/inventory.rb +53 -0
  231. data/lib/puppet/sslcertificates/support.rb +128 -0
  232. data/lib/puppet/transaction.rb +568 -189
  233. data/lib/puppet/transaction/report.rb +14 -3
  234. data/lib/puppet/transportable.rb +18 -10
  235. data/lib/puppet/type.rb +279 -2299
  236. data/lib/puppet/type/component.rb +63 -63
  237. data/lib/puppet/type/cron.rb +294 -710
  238. data/lib/puppet/type/exec.rb +185 -129
  239. data/lib/puppet/type/group.rb +38 -89
  240. data/lib/puppet/type/host.rb +110 -0
  241. data/lib/puppet/type/mount.rb +189 -0
  242. data/lib/puppet/type/notify.rb +47 -0
  243. data/lib/puppet/type/package.rb +129 -257
  244. data/lib/puppet/type/parsedtype.rb +172 -297
  245. data/lib/puppet/type/pfile.rb +540 -319
  246. data/lib/puppet/type/pfile/checksum.rb +103 -76
  247. data/lib/puppet/type/pfile/content.rb +16 -10
  248. data/lib/puppet/type/pfile/ensure.rb +52 -34
  249. data/lib/puppet/type/pfile/group.rb +25 -18
  250. data/lib/puppet/type/pfile/mode.rb +7 -4
  251. data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
  252. data/lib/puppet/type/pfile/source.rb +119 -124
  253. data/lib/puppet/type/pfile/target.rb +29 -45
  254. data/lib/puppet/type/pfile/type.rb +2 -2
  255. data/lib/puppet/type/pfilebucket.rb +18 -14
  256. data/lib/puppet/type/port.rb +121 -0
  257. data/lib/puppet/type/property.rb +530 -0
  258. data/lib/puppet/type/resources.rb +150 -0
  259. data/lib/puppet/type/schedule.rb +38 -22
  260. data/lib/puppet/type/service.rb +70 -326
  261. data/lib/puppet/type/sshkey.rb +76 -0
  262. data/lib/puppet/type/tidy.rb +197 -97
  263. data/lib/puppet/type/user.rb +107 -183
  264. data/lib/puppet/type/yumrepo.rb +53 -34
  265. data/lib/puppet/type/zone.rb +55 -208
  266. data/lib/puppet/util.rb +239 -201
  267. data/lib/puppet/util/autoload.rb +107 -0
  268. data/lib/puppet/util/classgen.rb +208 -0
  269. data/lib/puppet/{config.rb → util/config.rb} +102 -54
  270. data/lib/puppet/util/docs.rb +104 -0
  271. data/lib/puppet/util/errors.rb +55 -0
  272. data/lib/puppet/util/execution.rb +22 -0
  273. data/lib/puppet/util/feature.rb +76 -0
  274. data/lib/puppet/util/fileparsing.rb +380 -0
  275. data/lib/puppet/util/filetype.rb +300 -0
  276. data/lib/puppet/util/graph.rb +39 -0
  277. data/lib/puppet/util/inifile.rb +209 -0
  278. data/lib/puppet/util/loadedfile.rb +71 -0
  279. data/lib/puppet/util/log.rb +549 -0
  280. data/lib/puppet/util/logging.rb +20 -0
  281. data/lib/puppet/util/metaid.rb +22 -0
  282. data/lib/puppet/util/methodhelper.rb +37 -0
  283. data/lib/puppet/util/metric.rb +160 -0
  284. data/lib/puppet/util/package.rb +31 -0
  285. data/lib/puppet/util/pidlock.rb +68 -0
  286. data/lib/puppet/util/plist.rb +24 -0
  287. data/lib/puppet/util/plist/generator.rb +226 -0
  288. data/lib/puppet/util/plist/parser.rb +227 -0
  289. data/lib/puppet/util/posix.rb +87 -0
  290. data/lib/puppet/util/provider_features.rb +170 -0
  291. data/lib/puppet/util/rails/collection_merger.rb +42 -0
  292. data/lib/puppet/util/storage.rb +103 -0
  293. data/lib/puppet/util/subclass_loader.rb +83 -0
  294. data/lib/puppet/util/suidmanager.rb +86 -0
  295. data/lib/puppet/util/variables.rb +39 -0
  296. data/lib/puppet/util/warnings.rb +15 -0
  297. data/test/Rakefile +97 -0
  298. data/test/certmgr/ca.rb +81 -0
  299. data/test/certmgr/certmgr.rb +77 -50
  300. data/test/certmgr/inventory.rb +79 -0
  301. data/test/certmgr/support.rb +81 -0
  302. data/test/executables/filebucket.rb +49 -0
  303. data/test/executables/puppetbin.rb +28 -12
  304. data/test/executables/puppetca.rb +75 -54
  305. data/test/executables/puppetd.rb +10 -13
  306. data/test/executables/puppetmasterd.rb +12 -17
  307. data/test/executables/puppetmodule.rb +18 -17
  308. data/test/language/ast.rb +242 -798
  309. data/test/language/ast/casestatement.rb +104 -0
  310. data/test/language/ast/component.rb +133 -0
  311. data/test/language/ast/hostclass.rb +162 -0
  312. data/test/language/ast/selector.rb +62 -0
  313. data/test/language/ast/variable.rb +31 -0
  314. data/test/language/collector.rb +369 -0
  315. data/test/language/functions.rb +305 -18
  316. data/test/language/interpreter.rb +894 -125
  317. data/test/language/lexer.rb +98 -12
  318. data/test/language/node.rb +37 -53
  319. data/test/language/parser.rb +455 -148
  320. data/test/language/resource.rb +535 -0
  321. data/test/language/scope.rb +451 -561
  322. data/test/language/snippets.rb +101 -111
  323. data/test/language/transportable.rb +6 -8
  324. data/test/lib/mocha.rb +19 -0
  325. data/test/lib/mocha/any_instance_method.rb +35 -0
  326. data/test/lib/mocha/auto_verify.rb +113 -0
  327. data/test/lib/mocha/central.rb +35 -0
  328. data/test/lib/mocha/class_method.rb +62 -0
  329. data/test/lib/mocha/expectation.rb +295 -0
  330. data/test/lib/mocha/expectation_error.rb +6 -0
  331. data/test/lib/mocha/infinite_range.rb +27 -0
  332. data/test/lib/mocha/inspect.rb +37 -0
  333. data/test/lib/mocha/instance_method.rb +8 -0
  334. data/test/lib/mocha/metaclass.rb +7 -0
  335. data/test/lib/mocha/mock.rb +20 -0
  336. data/test/lib/mocha/mock_methods.rb +122 -0
  337. data/test/lib/mocha/object.rb +100 -0
  338. data/test/lib/mocha/pretty_parameters.rb +28 -0
  339. data/test/lib/mocha/setup_and_teardown.rb +23 -0
  340. data/test/lib/mocha/standalone.rb +30 -0
  341. data/test/lib/mocha/test_case_adapter.rb +49 -0
  342. data/test/lib/mocha_standalone.rb +2 -0
  343. data/test/lib/puppettest.rb +294 -0
  344. data/test/lib/puppettest/certificates.rb +61 -0
  345. data/test/lib/puppettest/exetest.rb +123 -0
  346. data/test/lib/puppettest/fakes.rb +194 -0
  347. data/test/lib/puppettest/fileparsing.rb +33 -0
  348. data/test/lib/puppettest/filetesting.rb +231 -0
  349. data/test/lib/puppettest/graph.rb +41 -0
  350. data/test/lib/puppettest/parsertesting.rb +392 -0
  351. data/test/lib/puppettest/railstesting.rb +56 -0
  352. data/test/lib/puppettest/reporttesting.rb +19 -0
  353. data/test/lib/puppettest/resourcetesting.rb +73 -0
  354. data/test/lib/puppettest/servertest.rb +72 -0
  355. data/test/lib/puppettest/support.rb +8 -0
  356. data/test/lib/puppettest/support/assertions.rb +101 -0
  357. data/test/lib/puppettest/support/helpers.rb +23 -0
  358. data/test/lib/puppettest/support/resources.rb +37 -0
  359. data/test/lib/puppettest/support/utils.rb +160 -0
  360. data/test/lib/puppettest/testcase.rb +48 -0
  361. data/test/lib/rake/puppet_test_loader.rb +17 -0
  362. data/test/lib/rake/puppet_testtask.rb +17 -0
  363. data/test/lib/spec.rb +8 -0
  364. data/test/lib/spec/callback.rb +11 -0
  365. data/test/lib/spec/callback/callback_container.rb +60 -0
  366. data/test/lib/spec/callback/extensions/module.rb +24 -0
  367. data/test/lib/spec/callback/extensions/object.rb +37 -0
  368. data/test/lib/spec/deprecated.rb +3 -0
  369. data/test/lib/spec/expectations.rb +59 -0
  370. data/test/lib/spec/expectations/differs/default.rb +62 -0
  371. data/test/lib/spec/expectations/errors.rb +6 -0
  372. data/test/lib/spec/expectations/extensions.rb +3 -0
  373. data/test/lib/spec/expectations/extensions/object.rb +109 -0
  374. data/test/lib/spec/expectations/extensions/proc.rb +57 -0
  375. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  376. data/test/lib/spec/expectations/handler.rb +47 -0
  377. data/test/lib/spec/expectations/should.rb +5 -0
  378. data/test/lib/spec/expectations/should/base.rb +64 -0
  379. data/test/lib/spec/expectations/should/change.rb +69 -0
  380. data/test/lib/spec/expectations/should/have.rb +128 -0
  381. data/test/lib/spec/expectations/should/not.rb +74 -0
  382. data/test/lib/spec/expectations/should/should.rb +81 -0
  383. data/test/lib/spec/expectations/sugar.rb +47 -0
  384. data/test/lib/spec/matchers.rb +160 -0
  385. data/test/lib/spec/matchers/be.rb +161 -0
  386. data/test/lib/spec/matchers/be_close.rb +37 -0
  387. data/test/lib/spec/matchers/change.rb +120 -0
  388. data/test/lib/spec/matchers/eql.rb +43 -0
  389. data/test/lib/spec/matchers/equal.rb +43 -0
  390. data/test/lib/spec/matchers/has.rb +44 -0
  391. data/test/lib/spec/matchers/have.rb +140 -0
  392. data/test/lib/spec/matchers/include.rb +50 -0
  393. data/test/lib/spec/matchers/match.rb +41 -0
  394. data/test/lib/spec/matchers/raise_error.rb +100 -0
  395. data/test/lib/spec/matchers/respond_to.rb +35 -0
  396. data/test/lib/spec/matchers/satisfy.rb +47 -0
  397. data/test/lib/spec/matchers/throw_symbol.rb +75 -0
  398. data/test/lib/spec/mocks.rb +232 -0
  399. data/test/lib/spec/mocks/argument_expectation.rb +132 -0
  400. data/test/lib/spec/mocks/error_generator.rb +85 -0
  401. data/test/lib/spec/mocks/errors.rb +10 -0
  402. data/test/lib/spec/mocks/extensions/object.rb +3 -0
  403. data/test/lib/spec/mocks/message_expectation.rb +231 -0
  404. data/test/lib/spec/mocks/methods.rb +40 -0
  405. data/test/lib/spec/mocks/mock.rb +26 -0
  406. data/test/lib/spec/mocks/mock_handler.rb +166 -0
  407. data/test/lib/spec/mocks/order_group.rb +29 -0
  408. data/test/lib/spec/rake/spectask.rb +173 -0
  409. data/test/lib/spec/rake/verify_rcov.rb +47 -0
  410. data/test/lib/spec/runner.rb +132 -0
  411. data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
  412. data/test/lib/spec/runner/command_line.rb +34 -0
  413. data/test/lib/spec/runner/context.rb +154 -0
  414. data/test/lib/spec/runner/context_eval.rb +142 -0
  415. data/test/lib/spec/runner/context_runner.rb +55 -0
  416. data/test/lib/spec/runner/drb_command_line.rb +21 -0
  417. data/test/lib/spec/runner/execution_context.rb +17 -0
  418. data/test/lib/spec/runner/extensions/kernel.rb +17 -0
  419. data/test/lib/spec/runner/extensions/object.rb +32 -0
  420. data/test/lib/spec/runner/formatter.rb +5 -0
  421. data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
  422. data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
  423. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
  424. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
  425. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
  426. data/test/lib/spec/runner/heckle_runner.rb +71 -0
  427. data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
  428. data/test/lib/spec/runner/option_parser.rb +224 -0
  429. data/test/lib/spec/runner/reporter.rb +105 -0
  430. data/test/lib/spec/runner/spec_matcher.rb +25 -0
  431. data/test/lib/spec/runner/spec_parser.rb +41 -0
  432. data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
  433. data/test/lib/spec/runner/specification.rb +114 -0
  434. data/test/lib/spec/translator.rb +87 -0
  435. data/test/lib/spec/version.rb +30 -0
  436. data/test/lib/stubba.rb +2 -0
  437. data/test/network/authconfig.rb +72 -0
  438. data/test/network/authorization.rb +138 -0
  439. data/test/network/authstore.rb +450 -0
  440. data/test/network/client/ca.rb +38 -0
  441. data/test/{client → network/client}/client.rb +107 -24
  442. data/test/network/client/dipper.rb +35 -0
  443. data/test/network/client/master.rb +627 -0
  444. data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
  445. data/test/network/client_request.rb +39 -0
  446. data/test/network/daemon.rb +71 -0
  447. data/test/{server → network/handler}/bucket.rb +103 -27
  448. data/test/{server → network/handler}/ca.rb +14 -19
  449. data/test/{server → network/handler}/fileserver.rb +443 -68
  450. data/test/network/handler/handler.rb +64 -0
  451. data/test/{server → network/handler}/logger.rb +26 -26
  452. data/test/network/handler/master.rb +352 -0
  453. data/test/network/handler/report.rb +185 -0
  454. data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
  455. data/test/{server → network/handler}/runner.rb +17 -16
  456. data/test/network/rights.rb +38 -0
  457. data/test/network/server/webrick.rb +140 -0
  458. data/test/network/xmlrpc/client.rb +68 -0
  459. data/test/network/xmlrpc/processor.rb +80 -0
  460. data/test/network/xmlrpc/server.rb +28 -0
  461. data/test/network/xmlrpc/webrick_servlet.rb +26 -0
  462. data/test/other/dsl.rb +218 -0
  463. data/test/other/events.rb +22 -15
  464. data/test/other/overrides.rb +9 -14
  465. data/test/other/pgraph.rb +289 -0
  466. data/test/other/propertychange.rb +142 -0
  467. data/test/other/provider.rb +162 -0
  468. data/test/other/puppet.rb +63 -10
  469. data/test/other/relationship.rb +74 -0
  470. data/test/other/relationships.rb +199 -123
  471. data/test/other/report.rb +152 -23
  472. data/test/other/transactions.rb +824 -78
  473. data/test/puppet/conffiles.rb +16 -11
  474. data/test/puppet/defaults.rb +7 -10
  475. data/test/puppet/{error.rb → errortest.rb} +5 -8
  476. data/test/puppet/modules.rb +58 -0
  477. data/test/puppet/tc_suidmanager.rb +107 -0
  478. data/test/rails/host.rb +177 -0
  479. data/test/rails/rails.rb +27 -0
  480. data/test/rails/railsparameter.rb +62 -0
  481. data/test/rails/railsresource.rb +100 -0
  482. data/test/ral/manager/attributes.rb +296 -0
  483. data/test/ral/manager/manager.rb +55 -0
  484. data/test/ral/manager/provider.rb +54 -0
  485. data/test/ral/manager/type.rb +837 -0
  486. data/test/ral/providers/cron/crontab.rb +346 -0
  487. data/test/ral/providers/group.rb +252 -0
  488. data/test/ral/providers/host/netinfo.rb +58 -0
  489. data/test/ral/providers/host/parsed.rb +226 -0
  490. data/test/ral/providers/mount/netinfo.rb +80 -0
  491. data/test/ral/providers/mount/parsed.rb +223 -0
  492. data/test/ral/providers/nameservice.rb +33 -0
  493. data/test/ral/providers/package.rb +253 -0
  494. data/test/ral/providers/package/apt.rb +89 -0
  495. data/test/ral/providers/package/aptitude.rb +69 -0
  496. data/test/ral/providers/package/aptrpm.rb +89 -0
  497. data/test/ral/providers/package/dpkg.rb +64 -0
  498. data/test/ral/providers/parsedfile.rb +668 -0
  499. data/test/ral/providers/parsedport.rb +233 -0
  500. data/test/ral/providers/provider.rb +423 -0
  501. data/test/{types → ral/providers}/service.rb +20 -121
  502. data/test/ral/providers/service/base.rb +75 -0
  503. data/test/ral/providers/sshkey/parsed.rb +111 -0
  504. data/test/ral/providers/user.rb +567 -0
  505. data/test/ral/providers/user/useradd.rb +250 -0
  506. data/test/ral/types/basic.rb +90 -0
  507. data/test/ral/types/component.rb +113 -0
  508. data/test/ral/types/cron.rb +480 -0
  509. data/test/{types → ral/types}/exec.rb +278 -82
  510. data/test/ral/types/file.rb +1799 -0
  511. data/test/ral/types/file/target.rb +363 -0
  512. data/test/{types → ral/types}/filebucket.rb +15 -17
  513. data/test/{types → ral/types}/fileignoresource.rb +9 -15
  514. data/test/ral/types/filesources.rb +1046 -0
  515. data/test/ral/types/group.rb +169 -0
  516. data/test/ral/types/host.rb +155 -0
  517. data/test/ral/types/mount.rb +312 -0
  518. data/test/ral/types/package.rb +85 -0
  519. data/test/ral/types/parameter.rb +172 -0
  520. data/test/ral/types/port.rb +148 -0
  521. data/test/ral/types/property.rb +343 -0
  522. data/test/ral/types/resources.rb +221 -0
  523. data/test/{types → ral/types}/schedule.rb +34 -12
  524. data/test/ral/types/service.rb +37 -0
  525. data/test/{types → ral/types}/sshkey.rb +75 -65
  526. data/test/ral/types/tidy.rb +240 -0
  527. data/test/ral/types/user.rb +493 -0
  528. data/test/{types → ral/types}/yumrepo.rb +7 -11
  529. data/test/{types → ral/types}/zone.rb +45 -45
  530. data/test/tagging/tagging.rb +17 -26
  531. data/test/util/autoload.rb +130 -0
  532. data/test/util/classgen.rb +227 -0
  533. data/test/{other → util}/config.rb +373 -113
  534. data/test/util/execution.rb +34 -0
  535. data/test/util/features.rb +94 -0
  536. data/test/util/fileparsing.rb +677 -0
  537. data/test/{other → util}/filetype.rb +9 -12
  538. data/test/util/graph.rb +108 -0
  539. data/test/{other → util}/inifile.rb +24 -11
  540. data/test/util/loadedfile.rb +106 -0
  541. data/test/{other → util}/log.rb +96 -50
  542. data/test/{other → util}/metrics.rb +7 -17
  543. data/test/util/package.rb +27 -0
  544. data/test/util/pidlock.rb +126 -0
  545. data/test/util/posixtest.rb +173 -0
  546. data/test/util/storage.rb +123 -0
  547. data/test/util/subclass_loader.rb +100 -0
  548. data/test/util/utiltest.rb +368 -0
  549. metadata +449 -169
  550. data/examples/code/classing +0 -35
  551. data/examples/code/failers/badclassnoparam +0 -10
  552. data/examples/code/failers/badclassparam +0 -10
  553. data/examples/code/failers/badcompnoparam +0 -9
  554. data/examples/code/failers/badcompparam +0 -9
  555. data/examples/code/failers/badtypeparam +0 -3
  556. data/examples/code/failers/noobjectrvalue +0 -1
  557. data/examples/code/snippets/aliastest.pp +0 -16
  558. data/examples/code/snippets/argumentdefaults +0 -14
  559. data/examples/code/snippets/casestatement.pp +0 -58
  560. data/examples/code/snippets/classheirarchy.pp +0 -15
  561. data/examples/code/snippets/classincludes.pp +0 -17
  562. data/examples/code/snippets/classpathtest +0 -11
  563. data/examples/code/snippets/componentmetaparams.pp +0 -11
  564. data/examples/code/snippets/deepclassheirarchy.pp +0 -23
  565. data/examples/code/snippets/defineoverrides.pp +0 -17
  566. data/examples/code/snippets/dirchmod +0 -19
  567. data/examples/code/snippets/emptyclass.pp +0 -9
  568. data/examples/code/snippets/emptyexec.pp +0 -3
  569. data/examples/code/snippets/failmissingexecpath.pp +0 -13
  570. data/examples/code/snippets/falsevalues.pp +0 -3
  571. data/examples/code/snippets/filecreate +0 -11
  572. data/examples/code/snippets/implicititeration +0 -15
  573. data/examples/code/snippets/multipleinstances +0 -7
  574. data/examples/code/snippets/namevartest +0 -9
  575. data/examples/code/snippets/scopetest +0 -13
  576. data/examples/code/snippets/selectorvalues.pp +0 -42
  577. data/examples/code/snippets/simpledefaults +0 -5
  578. data/examples/code/snippets/simpleselector +0 -38
  579. data/examples/code/snippets/singleary.pp +0 -19
  580. data/examples/code/snippets/singlequote.pp +0 -11
  581. data/examples/code/snippets/singleselector.pp +0 -22
  582. data/examples/code/snippets/tag.pp +0 -9
  583. data/examples/code/snippets/tagged.pp +0 -35
  584. data/lib/puppet/client.rb +0 -177
  585. data/lib/puppet/client/ca.rb +0 -21
  586. data/lib/puppet/client/dipper.rb +0 -76
  587. data/lib/puppet/client/file.rb +0 -20
  588. data/lib/puppet/client/log.rb +0 -17
  589. data/lib/puppet/client/master.rb +0 -531
  590. data/lib/puppet/client/runner.rb +0 -17
  591. data/lib/puppet/client/status.rb +0 -7
  592. data/lib/puppet/event-loop.rb +0 -1
  593. data/lib/puppet/filetype.rb +0 -308
  594. data/lib/puppet/inifile.rb +0 -201
  595. data/lib/puppet/log.rb +0 -524
  596. data/lib/puppet/metric.rb +0 -132
  597. data/lib/puppet/networkclient.rb +0 -175
  598. data/lib/puppet/parsedfile.rb +0 -58
  599. data/lib/puppet/parser/ast/classdef.rb +0 -79
  600. data/lib/puppet/parser/ast/compdef.rb +0 -75
  601. data/lib/puppet/parser/ast/nodedef.rb +0 -73
  602. data/lib/puppet/parser/ast/objectdef.rb +0 -284
  603. data/lib/puppet/parser/ast/objectref.rb +0 -77
  604. data/lib/puppet/rails/database.rb +0 -40
  605. data/lib/puppet/rails/rails_object.rb +0 -42
  606. data/lib/puppet/rails/rails_parameter.rb +0 -5
  607. data/lib/puppet/server.rb +0 -196
  608. data/lib/puppet/server/authconfig.rb +0 -177
  609. data/lib/puppet/server/authstore.rb +0 -226
  610. data/lib/puppet/server/filebucket.rb +0 -155
  611. data/lib/puppet/server/pelement.rb +0 -188
  612. data/lib/puppet/server/report.rb +0 -184
  613. data/lib/puppet/server/rights.rb +0 -78
  614. data/lib/puppet/server/servlet.rb +0 -274
  615. data/lib/puppet/statechange.rb +0 -129
  616. data/lib/puppet/storage.rb +0 -98
  617. data/lib/puppet/type/nameservice.rb +0 -264
  618. data/lib/puppet/type/nameservice/netinfo.rb +0 -232
  619. data/lib/puppet/type/nameservice/objectadd.rb +0 -146
  620. data/lib/puppet/type/nameservice/posix.rb +0 -12
  621. data/lib/puppet/type/nameservice/pw.rb +0 -107
  622. data/lib/puppet/type/package/apple.rb +0 -41
  623. data/lib/puppet/type/package/apt.rb +0 -107
  624. data/lib/puppet/type/package/blastwave.rb +0 -136
  625. data/lib/puppet/type/package/darwinport.rb +0 -97
  626. data/lib/puppet/type/package/dpkg.rb +0 -113
  627. data/lib/puppet/type/package/freebsd.rb +0 -19
  628. data/lib/puppet/type/package/gem.rb +0 -119
  629. data/lib/puppet/type/package/openbsd.rb +0 -112
  630. data/lib/puppet/type/package/ports.rb +0 -103
  631. data/lib/puppet/type/package/rpm.rb +0 -121
  632. data/lib/puppet/type/package/sun.rb +0 -174
  633. data/lib/puppet/type/package/sunfreeware.rb +0 -7
  634. data/lib/puppet/type/package/yum.rb +0 -52
  635. data/lib/puppet/type/parsedtype/host.rb +0 -144
  636. data/lib/puppet/type/parsedtype/mount.rb +0 -271
  637. data/lib/puppet/type/parsedtype/port.rb +0 -261
  638. data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
  639. data/lib/puppet/type/service/base.rb +0 -12
  640. data/lib/puppet/type/service/debian.rb +0 -46
  641. data/lib/puppet/type/service/redhat.rb +0 -38
  642. data/lib/puppet/type/state.rb +0 -393
  643. data/lib/puppet/type/symlink.rb +0 -186
  644. data/test/client/master.rb +0 -207
  645. data/test/language/rails.rb +0 -105
  646. data/test/other/parsedfile.rb +0 -58
  647. data/test/other/storage.rb +0 -100
  648. data/test/puppet/utiltest.rb +0 -299
  649. data/test/puppettest.rb +0 -1170
  650. data/test/server/authconfig.rb +0 -56
  651. data/test/server/authstore.rb +0 -218
  652. data/test/server/master.rb +0 -201
  653. data/test/server/report.rb +0 -93
  654. data/test/server/rights.rb +0 -41
  655. data/test/server/server.rb +0 -152
  656. data/test/test +0 -61
  657. data/test/types/basic.rb +0 -117
  658. data/test/types/component.rb +0 -298
  659. data/test/types/cron.rb +0 -718
  660. data/test/types/file.rb +0 -1314
  661. data/test/types/filesources.rb +0 -590
  662. data/test/types/group.rb +0 -323
  663. data/test/types/host.rb +0 -186
  664. data/test/types/mount.rb +0 -294
  665. data/test/types/package.rb +0 -538
  666. data/test/types/parameter.rb +0 -107
  667. data/test/types/port.rb +0 -201
  668. data/test/types/query.rb +0 -101
  669. data/test/types/state.rb +0 -92
  670. data/test/types/symlink.rb +0 -120
  671. data/test/types/tidy.rb +0 -102
  672. data/test/types/type.rb +0 -469
  673. data/test/types/user.rb +0 -563
@@ -0,0 +1,85 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppettest'
6
+ require 'facter'
7
+
8
+ $platform = Facter["operatingsystem"].value
9
+
10
+ class TestPackages < Test::Unit::TestCase
11
+ include PuppetTest::FileTesting
12
+ def setup
13
+ super
14
+ #@list = Puppet.type(:package).getpkglist
15
+ Puppet.type(:package).clear
16
+ @type = Puppet::Type.type(:package)
17
+ end
18
+
19
+ # This is a bare-minimum test and *really* needs to do much more.
20
+ def test_package_actions
21
+ @type.provide :fake, :parent => PuppetTest::FakeProvider do
22
+ apimethods :ensure
23
+ def install
24
+ self.ensure = @model.should(:ensure)
25
+ end
26
+
27
+ def uninstall
28
+ self.ensure = :absent
29
+ end
30
+
31
+ def query
32
+ case self.ensure
33
+ when :absent, nil: nil
34
+ else
35
+ {:ensure => self.ensure}
36
+ end
37
+ end
38
+ end
39
+
40
+ pkg = nil
41
+ assert_nothing_raised do
42
+ pkg = @type.create :name => "testing", :provider => :fake
43
+ end
44
+ assert(pkg, "did not create package")
45
+
46
+ assert_nothing_raised do
47
+ pkg.retrieve
48
+ end
49
+
50
+ assert_equal(:absent, pkg.is(:ensure), "package not considered missing")
51
+ assert_equal(:present, pkg.should(:ensure),
52
+ "package did not default to installed")
53
+
54
+ assert_events([:package_installed], pkg)
55
+
56
+ pkg[:ensure] = :absent
57
+ assert_events([:package_removed], pkg)
58
+ end
59
+
60
+ def test_packagedefaults
61
+ should = case Facter["operatingsystem"].value
62
+ when "Debian": :apt
63
+ when "Darwin": :apple
64
+ when "RedHat": :up2date
65
+ when "Fedora": :yum
66
+ when "FreeBSD": :ports
67
+ when "OpenBSD": :openbsd
68
+ when "Solaris": :sun
69
+ end
70
+
71
+ unless default = Puppet.type(:package).defaultprovider
72
+ $stderr.puts "no default provider for %s" %
73
+ Facter["operatingsystem"].value
74
+ return
75
+ end
76
+
77
+
78
+ if should
79
+ assert_equal(should, default.name,
80
+ "Incorrect default package format")
81
+ end
82
+ end
83
+ end
84
+
85
+ # $Id: package.rb 2170 2007-02-07 17:21:52Z luke $
@@ -0,0 +1,172 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppettest'
6
+
7
+ class TestParameter < Test::Unit::TestCase
8
+ include PuppetTest
9
+
10
+ def newparam(name = :fakeparam)
11
+ assert_nothing_raised {
12
+ param = Class.new(Puppet::Parameter) do
13
+ @name = :fakeparam
14
+ end
15
+ param.initvars
16
+
17
+ return param
18
+ }
19
+ end
20
+
21
+ def newinst(param)
22
+ assert_nothing_raised {
23
+ return param.new(:parent => "yay")
24
+ }
25
+ end
26
+
27
+ # Test the basic newvalue stuff.
28
+ def test_newvalue
29
+ param = newparam()
30
+
31
+ # Try it with both symbols and strings.
32
+ assert_nothing_raised {
33
+ param.newvalues(:one, "two")
34
+ }
35
+
36
+ inst = newinst(param)
37
+
38
+ assert_nothing_raised {
39
+ inst.value = "one"
40
+ }
41
+
42
+ assert_equal(:one, inst.value)
43
+
44
+ assert_nothing_raised {
45
+ inst.value = :two
46
+ }
47
+ assert_equal(:two, inst.value)
48
+
49
+ assert_raise(ArgumentError) {
50
+ inst.value = :three
51
+ }
52
+ assert_equal(:two, inst.value)
53
+ end
54
+
55
+ # Test using regexes.
56
+ def test_regexvalues
57
+ param = newparam
58
+
59
+ assert_nothing_raised {
60
+ param.newvalues(/^\d+$/)
61
+ }
62
+ assert(param.match?("14"))
63
+ assert(param.match?(14))
64
+
65
+ inst = newinst(param)
66
+
67
+ assert_nothing_raised {
68
+ inst.value = 14
69
+ }
70
+
71
+ assert_nothing_raised {
72
+ inst.value = "14"
73
+ }
74
+
75
+ assert_raise(ArgumentError) {
76
+ inst.value = "a14"
77
+ }
78
+ end
79
+
80
+ # Test using both. Equality should beat matching.
81
+ def test_regexesandnormals
82
+ param = newparam
83
+
84
+ assert_nothing_raised {
85
+ param.newvalues(:one, /^\w+$/)
86
+ }
87
+
88
+ inst = newinst(param)
89
+
90
+ assert_nothing_raised {
91
+ inst.value = "one"
92
+ }
93
+
94
+ assert_equal(:one, inst.value, "Value used regex instead of equality")
95
+
96
+ assert_nothing_raised {
97
+ inst.value = "two"
98
+ }
99
+ assert_equal("two", inst.value, "Matched value didn't take")
100
+ end
101
+
102
+ def test_shadowing
103
+ type = Puppet::Type.newtype(:faketype) { newparam(:name) {} }
104
+
105
+ cleanup { Puppet::Type.rmtype(:faketype) }
106
+
107
+ param = nil
108
+ assert_nothing_raised do
109
+ param = type.newproperty(:alias)
110
+ end
111
+
112
+ assert(param, "did not create param")
113
+
114
+ inst = type.create(:name => "test")
115
+
116
+ assert_nothing_raised("Could not create shadowed param") {
117
+ inst[:alias] = "foo"
118
+ }
119
+
120
+ # Get the parameter hash from the instance so we can check the shadow
121
+ params = inst.instance_variable_get("@parameters")
122
+ obj = params[:alias]
123
+ assert(obj, "did not get alias parameter")
124
+ assert(obj.shadow, "shadow was not created for alias param")
125
+
126
+ assert(obj.is_a?(Puppet::Type::Property),
127
+ "alias instance is not a property")
128
+ assert_instance_of(param, obj, "alias is an instance of the wrong class")
129
+
130
+ # Make sure the alias got created
131
+ assert(type["foo"], "Did not retrieve object by its alias")
132
+
133
+ # Now try it during initialization
134
+ other = nil
135
+ assert_nothing_raised("Could not create instance with shadow") do
136
+ other = type.create(:name => "rah", :alias => "one")
137
+ end
138
+ params = other.instance_variable_get("@parameters")
139
+ obj = params[:alias]
140
+ assert(obj, "did not get alias parameter")
141
+ assert(obj.shadow, "shadow was not created for alias param")
142
+
143
+ assert_instance_of(param, obj, "alias is an instance of the wrong class")
144
+ assert(obj.is_a?(Puppet::Type::Property),
145
+ "alias instance is not a property")
146
+
147
+ # Now change the alias and make sure it works out well
148
+ assert_nothing_raised("Could not modify shadowed alias") do
149
+ other[:alias] = "two"
150
+ end
151
+
152
+ obj = params[:alias]
153
+ assert(obj, "did not get alias parameter")
154
+ assert_instance_of(param, obj, "alias is now an instance of the wrong class")
155
+ assert(obj.is_a?(Puppet::Type::Property),
156
+ "alias instance is now not a property")
157
+ end
158
+
159
+ # Make sure properties can correctly require features and behave appropriately when
160
+ # those features are missing.
161
+ def test_requires_features
162
+ param = newparam(:feature_tests)
163
+
164
+ assert_nothing_raised("could not add feature requirements to property") do
165
+ param.required_features = "testing"
166
+ end
167
+
168
+ assert_equal([:testing], param.required_features, "required features value was not arrayfied and interned")
169
+ end
170
+ end
171
+
172
+ # $Id: parameter.rb 2413 2007-04-25 20:04:59Z luke $
@@ -0,0 +1,148 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppettest'
6
+
7
+ #require 'facter'
8
+ #
9
+ #class TestPort < Test::Unit::TestCase
10
+ # include PuppetTest
11
+ #
12
+ # def setup
13
+ # super
14
+ # @porttype = Puppet.type(:port)
15
+ #
16
+ # @provider = @porttype.defaultprovider
17
+ #
18
+ # # Make sure they aren't using something funky like netinfo
19
+ # unless @provider.name == :parsed
20
+ # @porttype.defaultprovider = @porttype.provider(:parsed)
21
+ # end
22
+ #
23
+ # cleanup do @porttype.defaultprovider = nil end
24
+ #
25
+ # if @provider.respond_to?(:default_target)
26
+ # oldpath = @provider.default_target
27
+ # cleanup do
28
+ # @provider.default_target = oldpath
29
+ # end
30
+ # @provider.default_target = tempfile()
31
+ # end
32
+ # end
33
+ #
34
+ # def mkport
35
+ # port = nil
36
+ #
37
+ # if defined? @pcount
38
+ # @pcount += 1
39
+ # else
40
+ # @pcount = 1
41
+ # end
42
+ # assert_nothing_raised {
43
+ # port = Puppet.type(:port).create(
44
+ # :name => "puppet%s" % @pcount,
45
+ # :number => "813%s" % @pcount,
46
+ # :protocols => "tcp",
47
+ # :description => "The port that Puppet runs on",
48
+ # :alias => "coolness%s" % @pcount
49
+ # )
50
+ # }
51
+ #
52
+ # return port
53
+ # end
54
+ #
55
+ # def test_list
56
+ # assert_nothing_raised {
57
+ # Puppet.type(:port).list
58
+ # }
59
+ #
60
+ # count = 0
61
+ # @porttype.each do |h|
62
+ # count += 1
63
+ # end
64
+ #
65
+ # assert_equal(0, count, "Found hosts in empty file somehow")
66
+ #
67
+ # dns = @porttype["domain"]
68
+ # assert(dns, "Did not retrieve dns service")
69
+ # end
70
+ #
71
+ # def test_simpleport
72
+ # host = nil
73
+ #
74
+ # port = mkport
75
+ #
76
+ # assert_apply(port)
77
+ # assert_nothing_raised {
78
+ # port.retrieve
79
+ # }
80
+ #
81
+ # assert(port.provider.exists?, "Port did not get created")
82
+ # end
83
+ #
84
+ # def test_moddingport
85
+ # port = nil
86
+ # port = mkport
87
+ #
88
+ # assert_events([:port_created], port)
89
+ #
90
+ # port.retrieve
91
+ #
92
+ # port[:protocols] = %w{tcp udp}
93
+ #
94
+ # assert_events([:port_changed], port)
95
+ # end
96
+ #
97
+ # def test_multivalues
98
+ # port = mkport
99
+ # assert_raise(Puppet::Error) {
100
+ # port[:protocols] = "udp tcp"
101
+ # }
102
+ # assert_raise(Puppet::Error) {
103
+ # port[:alias] = "puppetmasterd yayness"
104
+ # }
105
+ # end
106
+ #
107
+ # def test_removal
108
+ # port = mkport()
109
+ # assert_nothing_raised {
110
+ # port[:ensure] = :present
111
+ # }
112
+ # assert_events([:port_created], port)
113
+ # assert_events([], port)
114
+ #
115
+ # assert(port.provider.exists?, "port was not created")
116
+ # assert_nothing_raised {
117
+ # port[:ensure] = :absent
118
+ # }
119
+ #
120
+ # assert_events([:port_removed], port)
121
+ # assert(! port.provider.exists?, "port was not removed")
122
+ # assert_events([], port)
123
+ # end
124
+ #
125
+ # def test_addingproperties
126
+ # port = mkport()
127
+ # assert_events([:port_created], port)
128
+ #
129
+ # port.delete(:alias)
130
+ # assert(! port.property(:alias))
131
+ # assert_events([:port_changed], port)
132
+ #
133
+ # assert_nothing_raised {
134
+ # port.retrieve
135
+ # }
136
+ #
137
+ # assert_equal(:present, port.is(:ensure))
138
+ #
139
+ # assert_equal(:absent, port.is(:alias))
140
+ #
141
+ # port[:alias] = "yaytest"
142
+ # assert_events([:port_changed], port)
143
+ # port.retrieve
144
+ # assert(port.property(:alias).is == ["yaytest"])
145
+ # end
146
+ #end
147
+
148
+ # $Id: port.rb 2170 2007-02-07 17:21:52Z luke $
@@ -0,0 +1,343 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppettest'
6
+
7
+ class TestProperty < Test::Unit::TestCase
8
+ include PuppetTest
9
+
10
+ def newinst(property, parent = nil)
11
+ inst = nil
12
+ unless parent
13
+ parent = "fakeparent"
14
+ parent.meta_def(:pathbuilder) do [self.to_s] end
15
+ end
16
+ assert_nothing_raised {
17
+ return property.new(:parent => parent)
18
+ }
19
+ end
20
+
21
+ def newproperty(name = :fakeproperty)
22
+ property = Class.new(Puppet::Property) do
23
+ @name = name
24
+ end
25
+ Object.const_set("FakeProperty", property)
26
+ property.initvars
27
+ cleanup do
28
+ Object.send(:remove_const, "FakeProperty")
29
+ end
30
+
31
+ return property
32
+ end
33
+
34
+ def newmodel(name)
35
+ # Create an object that responds to myproperty as an attr
36
+ provklass = Class.new { attr_accessor name
37
+ def pathbuilder
38
+ ["provklass"]
39
+ end
40
+ }
41
+ prov = provklass.new
42
+
43
+ klass = Class.new { attr_accessor :provider, :path
44
+ def pathbuilder
45
+ ["instklass"]
46
+ end
47
+ }
48
+ klassinst = klass.new
49
+ klassinst.path = "instpath"
50
+ klassinst.provider = prov
51
+
52
+ return prov, klassinst
53
+ end
54
+
55
+ # Make sure we correctly look up names.
56
+ def test_value_name
57
+ property = newproperty()
58
+
59
+ property.newvalue(:one)
60
+ property.newvalue(/\d+/)
61
+
62
+ name = nil
63
+ ["one", :one].each do |value|
64
+ assert_nothing_raised do
65
+ name = property.value_name(value)
66
+ end
67
+ assert_equal(:one, name)
68
+ end
69
+ ["42"].each do |value|
70
+ assert_nothing_raised do
71
+ name = property.value_name(value)
72
+ end
73
+ assert_equal(/\d+/, name)
74
+ end
75
+ ["two", :three].each do |value|
76
+ assert_nothing_raised do
77
+ name = property.value_name(value)
78
+ end
79
+ assert_nil(name)
80
+ end
81
+ end
82
+
83
+ # Test that we correctly look up options for values.
84
+ def test_value_option
85
+ property = newproperty()
86
+
87
+ options = {
88
+ :one => {:event => :yay, :call => :before},
89
+ /\d+/ => {:event => :fun, :call => :instead}
90
+ }
91
+ property.newvalue(:one, options[:one])
92
+ property.newvalue(/\d+/, options[/\d+/])
93
+
94
+ options.each do |name, opts|
95
+ opts.each do |param, value|
96
+ assert_equal(value, property.value_option(name, param))
97
+ end
98
+ end
99
+ end
100
+
101
+ def test_newvalue
102
+ property = newproperty()
103
+
104
+ # These are bogus because they don't define events. :/
105
+ assert_nothing_raised {
106
+ property.newvalue(:one) do
107
+ @is = 1
108
+ end
109
+ }
110
+
111
+ assert_nothing_raised {
112
+ property.newvalue("two") do
113
+ @is = 2
114
+ end
115
+ }
116
+
117
+ # Make sure we default to using the block instead
118
+ assert_equal(:instead, property.value_option(:one, :call),
119
+ ":call was not set to :instead when a block was provided")
120
+
121
+ inst = newinst(property)
122
+
123
+ assert_nothing_raised {
124
+ inst.should = "one"
125
+ }
126
+
127
+ assert_equal(:one, inst.should)
128
+ ret = nil
129
+ assert_nothing_raised { inst.set_one }
130
+ assert_equal(1, inst.is)
131
+
132
+ assert_nothing_raised {
133
+ inst.should = :two
134
+ }
135
+
136
+ assert_equal(:two, inst.should)
137
+ assert_nothing_raised { inst.set_two }
138
+ assert_equal(2, inst.is)
139
+ end
140
+
141
+ def test_newpropertyvaluewithregexes
142
+ property = newproperty()
143
+
144
+ assert_nothing_raised {
145
+ property.newvalue(/^\w+$/) do
146
+ @is = self.should.upcase
147
+ return :regex_matched
148
+ end
149
+ }
150
+
151
+ inst = newinst(property)
152
+
153
+ assert_nothing_raised {
154
+ inst.should = "yayness"
155
+ }
156
+
157
+ assert_equal("yayness", inst.should)
158
+
159
+ assert_nothing_raised {
160
+ inst.sync
161
+ }
162
+
163
+ assert_equal("yayness".upcase, inst.is)
164
+ end
165
+
166
+ def test_newvalue_event_option
167
+ property = newproperty()
168
+
169
+ assert_nothing_raised do
170
+ property.newvalue(:myvalue, :event => :fake_valued) do
171
+ @is = :valued
172
+ end
173
+ property.newvalue(:other, :event => "fake_other") do
174
+ @is = :valued
175
+ end
176
+ end
177
+ inst = newinst(property)
178
+
179
+ assert_nothing_raised {
180
+ inst.should = :myvalue
181
+ }
182
+
183
+ ret = nil
184
+ assert_nothing_raised {
185
+ ret = inst.sync
186
+ }
187
+
188
+ assert_equal(:fake_valued, ret,
189
+ "Event did not get returned correctly")
190
+
191
+ assert_nothing_raised {
192
+ inst.should = :other
193
+ }
194
+
195
+ assert_nothing_raised {
196
+ ret = inst.sync
197
+ }
198
+
199
+ assert_equal(:fake_other, ret,
200
+ "Event did not get returned correctly")
201
+ end
202
+
203
+ # We want to support values with no blocks, either regexes or strings.
204
+ # If there's no block provided, then we should call the provider mechanism
205
+ # like we would normally.
206
+ def test_newvalue_with_no_block
207
+ property = newproperty(:myproperty)
208
+
209
+ assert_nothing_raised {
210
+ property.newvalue(:value, :event => :matched_value)
211
+ }
212
+ assert_nothing_raised {
213
+ property.newvalue(/^\d+$/, :event => :matched_number)
214
+ }
215
+
216
+ assert_equal(:none, property.value_option(:value, :call),
217
+ ":call was not set to none when no block is provided")
218
+
219
+ prov, klassinst = newmodel(:myproperty)
220
+
221
+ inst = newinst(property, klassinst)
222
+
223
+ # Now make sure we can set the values, they get validated as normal,
224
+ # and they set the values on the parent rathe than trying to call
225
+ # a method
226
+ {:value => :matched_value, "27" => :matched_number}.each do |value, event|
227
+ assert_nothing_raised do
228
+ inst.should = value
229
+ end
230
+ ret = nil
231
+ assert_nothing_raised do
232
+ ret = inst.sync
233
+ end
234
+ assert_equal(event, ret, "Did not return correct event for %s" % value)
235
+ assert_equal(value, prov.myproperty, "%s was not set right" % value)
236
+ end
237
+
238
+ # And make sure we still fail validations
239
+ assert_raise(ArgumentError) do
240
+ inst.should = "invalid"
241
+ end
242
+ end
243
+
244
+ def test_tags
245
+ obj = "yay"
246
+ metaobj = class << obj; self; end
247
+
248
+ metaobj.send(:attr_accessor, :tags)
249
+
250
+ tags = [:some, :tags, :for, :testing]
251
+ obj.tags = tags
252
+
253
+ propertyklass = newproperty
254
+
255
+ inst = nil
256
+ assert_nothing_raised do
257
+ inst = propertyklass.new(:parent => obj)
258
+ end
259
+
260
+ assert_nothing_raised do
261
+ assert_equal(tags + [inst.name], inst.tags)
262
+ end
263
+ end
264
+
265
+ def test_failure
266
+ s = Struct.new(:line, :file, :path, :pathbuilder)
267
+ p = s.new(1, "yay", "rah", "struct")
268
+ myproperty = Class.new(Puppet::Property)
269
+ myproperty.initvars
270
+
271
+ myproperty.newvalue :mkfailure do
272
+ raise "It's all broken"
273
+ end
274
+ property = myproperty.new(:parent => p)
275
+
276
+ assert_raise(Puppet::Error) do
277
+ property.set(:mkfailure)
278
+ end
279
+ end
280
+
281
+ # Make sure 'set' behaves correctly WRT to call order. This tests that the
282
+ # :call value is handled correctly in all cases.
283
+ def test_set
284
+ property = newproperty(:myproperty)
285
+
286
+ $setting = []
287
+
288
+ newval = proc do |name, call|
289
+ options = {}
290
+ if call
291
+ options[:call] = name
292
+ block = proc { $setting << name }
293
+ end
294
+ assert_nothing_raised("Could not create %s value" % name) {
295
+ if block
296
+ property.newvalue(name, options, &block)
297
+ else
298
+ property.newvalue(name, options)
299
+ end
300
+ }
301
+ end
302
+
303
+ newval.call(:none, false)
304
+
305
+ # Create a value with no block; it should default to :none
306
+ newval.call(:before, true)
307
+
308
+ # One with a block but after
309
+ newval.call(:after, true)
310
+
311
+ # One with an explicit instead
312
+ newval.call(:instead, true)
313
+
314
+ # And one with an implicit instead
315
+ assert_nothing_raised do
316
+ property.newvalue(:implicit) do
317
+ $setting << :implicit
318
+ end
319
+ end
320
+
321
+ # Now create a provider
322
+ prov, model = newmodel(:myproperty)
323
+ inst = newinst(property, model)
324
+
325
+ # Mark when we're called
326
+ prov.meta_def(:myproperty=) do |value| $setting << :provider end
327
+
328
+ # Now run through the list and make sure everything is correct
329
+ {:before => [:before, :provider],
330
+ :after => [:provider, :after],
331
+ :instead => [:instead],
332
+ :none => [:provider],
333
+ :implicit => [:implicit]
334
+ }.each do |name, result|
335
+ inst.set(name)
336
+
337
+ assert_equal(result, $setting, "%s was not handled right" % name)
338
+ $setting.clear
339
+ end
340
+ end
341
+ end
342
+
343
+ # $Id: property.rb 2170 2007-02-07 17:21:52Z luke $