puppet 0.18.4 → 0.22.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -1,298 +0,0 @@
1
- if __FILE__ == $0
2
- $:.unshift '..'
3
- $:.unshift '../../lib'
4
- $puppetbase = "../../../../language/trunk"
5
- end
6
-
7
- require 'puppet'
8
- require 'puppettest'
9
- require 'test/unit'
10
-
11
- # $Id: component.rb 965 2006-03-02 07:30:14Z luke $
12
-
13
- class TestComponent < Test::Unit::TestCase
14
- include TestPuppet
15
- def setup
16
- super
17
- @@used = {}
18
- end
19
-
20
- def randnum(limit)
21
- num = nil
22
- looped = 0
23
- loop do
24
- looped += 1
25
- if looped > 2000
26
- raise "Reached limit of looping"
27
- break
28
- end
29
- num = rand(limit)
30
- unless @@used.include?(num)
31
- @@used[num] = true
32
- break
33
- end
34
- end
35
-
36
- num
37
- end
38
-
39
- def mkfile(num = nil)
40
- unless num
41
- num = randnum(1000)
42
- end
43
- name = tempfile() + num.to_s
44
-
45
- file = Puppet.type(:file).create(
46
- :path => name,
47
- :checksum => "md5"
48
- )
49
- @@tmpfiles << name
50
- file
51
- end
52
-
53
- def mkcomp
54
- Puppet.type(:component).create(:name => "component_" + randnum(1000).to_s)
55
- end
56
-
57
- def mkrandcomp(numfiles, numdivs)
58
- comp = mkcomp
59
- hash = {}
60
- found = 0
61
-
62
- divs = {}
63
-
64
- numdivs.times { |i|
65
- num = i + 2
66
- divs[num] = nil
67
- }
68
- while found < numfiles
69
- num = randnum(numfiles)
70
- found += 1
71
- f = mkfile(num)
72
- hash[f.name] = f
73
- reqd = []
74
- divs.each { |n,obj|
75
- if rand(50) % n == 0
76
- if obj
77
- unless reqd.include?(obj.object_id)
78
- f[:require] = [[obj.class.name, obj.name]]
79
- reqd << obj.object_id
80
- end
81
- end
82
- end
83
-
84
- divs[n] = f
85
- }
86
- end
87
-
88
- hash.each { |name, obj|
89
- comp.push obj
90
- }
91
-
92
- comp.finalize
93
- comp
94
- end
95
-
96
- def test_ordering
97
- list = nil
98
- comp = mkrandcomp(30,5)
99
- assert_nothing_raised {
100
- list = comp.flatten
101
- }
102
-
103
- list.each_with_index { |obj, index|
104
- obj.eachdependency { |dep|
105
- assert(list.index(dep) < index)
106
- }
107
- }
108
- end
109
-
110
- def test_correctsorting
111
- tmpfile = tempfile()
112
- @@tmpfiles.push tmpfile
113
- trans = nil
114
- cmd = nil
115
- File.open(tmpfile, File::WRONLY|File::CREAT|File::TRUNC) { |of|
116
- of.puts rand(100)
117
- }
118
- file = Puppet.type(:file).create(
119
- :path => tmpfile,
120
- :checksum => "md5"
121
- )
122
- assert_nothing_raised {
123
- cmd = Puppet.type(:exec).create(
124
- :command => "pwd",
125
- :path => "/usr/bin:/bin:/usr/sbin:/sbin",
126
- :subscribe => [[file.class.name,file.name]],
127
- :refreshonly => true
128
- )
129
- }
130
-
131
- order = nil
132
- assert_nothing_raised {
133
- order = Puppet.type(:component).sort([file, cmd])
134
- }
135
-
136
- [cmd, file].each { |obj|
137
- assert_equal(1, order.find_all { |o| o.name == obj.name }.length)
138
- }
139
- end
140
-
141
- def test_correctflattening
142
- tmpfile = tempfile()
143
- @@tmpfiles.push tmpfile
144
- trans = nil
145
- cmd = nil
146
- File.open(tmpfile, File::WRONLY|File::CREAT|File::TRUNC) { |of|
147
- of.puts rand(100)
148
- }
149
- file = Puppet.type(:file).create(
150
- :path => tmpfile,
151
- :checksum => "md5"
152
- )
153
- assert_nothing_raised {
154
- cmd = Puppet.type(:exec).create(
155
- :command => "pwd",
156
- :path => "/usr/bin:/bin:/usr/sbin:/sbin",
157
- :subscribe => [[file.class.name,file.name]],
158
- :refreshonly => true
159
- )
160
- }
161
-
162
- comp = newcomp(cmd, file)
163
- comp.finalize
164
- objects = nil
165
- assert_nothing_raised {
166
- objects = comp.flatten
167
- }
168
-
169
- [cmd, file].each { |obj|
170
- assert_equal(1, objects.find_all { |o| o.name == obj.name }.length)
171
- }
172
-
173
- assert(objects[0] == file, "File was not first object")
174
- assert(objects[1] == cmd, "Exec was not second object")
175
- end
176
-
177
- def test_deepflatten
178
- tmpfile = tempfile()
179
- @@tmpfiles.push tmpfile
180
- trans = nil
181
- cmd = nil
182
- File.open(tmpfile, File::WRONLY|File::CREAT|File::TRUNC) { |of|
183
- of.puts rand(100)
184
- }
185
- file = Puppet.type(:file).create(
186
- :path => tmpfile,
187
- :checksum => "md5"
188
- )
189
- assert_nothing_raised {
190
- cmd = Puppet.type(:exec).create(
191
- :command => "pwd",
192
- :path => "/usr/bin:/bin:/usr/sbin:/sbin",
193
- :refreshonly => true
194
- )
195
- }
196
-
197
- fcomp = newcomp("fflatten", file)
198
- ecomp = newcomp("eflatten", cmd)
199
-
200
- # this subscription can screw up the sorting
201
- ecomp[:subscribe] = [[fcomp.class.name,fcomp.name]]
202
-
203
- comp = newcomp("bflatten", ecomp, fcomp)
204
- comp.finalize
205
- objects = nil
206
- assert_nothing_raised {
207
- objects = comp.flatten
208
- }
209
-
210
- assert_equal(objects.length, 2, "Did not get two sorted objects")
211
- objects.each { |o|
212
- assert(o.is_a?(Puppet::Type), "Object %s is not a Type" % o.class)
213
- }
214
-
215
- assert(objects[0] == file, "File was not first object")
216
- assert(objects[1] == cmd, "Exec was not second object")
217
- end
218
-
219
- def test_deepflatten2
220
- tmpfile = tempfile()
221
- @@tmpfiles.push tmpfile
222
- trans = nil
223
- cmd = nil
224
- File.open(tmpfile, File::WRONLY|File::CREAT|File::TRUNC) { |of|
225
- of.puts rand(100)
226
- }
227
- file = Puppet.type(:file).create(
228
- :path => tmpfile,
229
- :checksum => "md5"
230
- )
231
- assert_nothing_raised {
232
- cmd = Puppet.type(:exec).create(
233
- :command => "pwd",
234
- :path => "/usr/bin:/bin:/usr/sbin:/sbin",
235
- :refreshonly => true
236
- )
237
- }
238
-
239
- ocmd = nil
240
- assert_nothing_raised {
241
- ocmd = Puppet.type(:exec).create(
242
- :command => "echo true",
243
- :path => "/usr/bin:/bin:/usr/sbin:/sbin",
244
- :refreshonly => true
245
- )
246
- }
247
-
248
- fcomp = newcomp("fflatten", file)
249
- ecomp = newcomp("eflatten", cmd)
250
- ocomp = newcomp("oflatten", ocmd)
251
-
252
- # this subscription can screw up the sorting
253
- cmd[:subscribe] = [[fcomp.class.name,fcomp.name]]
254
- ocmd[:subscribe] = [[cmd.class.name,cmd.name]]
255
-
256
- comp = newcomp("bflatten", ocomp, ecomp, fcomp)
257
- comp.finalize
258
- objects = nil
259
- assert_nothing_raised {
260
- objects = comp.flatten
261
- }
262
-
263
- assert_equal(objects.length, 3, "Did not get three sorted objects")
264
-
265
- objects.each { |o|
266
- assert(o.is_a?(Puppet::Type), "Object %s is not a Type" % o.class)
267
- }
268
-
269
- assert(objects[0] == file, "File was not first object")
270
- assert(objects[1] == cmd, "Exec was not second object")
271
- assert(objects[2] == ocmd, "Other exec was not second object")
272
- end
273
-
274
- def test_moreordering
275
- dir = tempfile()
276
-
277
- comp = Puppet.type(:component).create(
278
- :name => "ordertesting"
279
- )
280
-
281
- 10.times { |i|
282
- fileobj = Puppet.type(:file).create(
283
- :path => File.join(dir, "file%s" % i),
284
- :ensure => "file"
285
- )
286
- comp.push(fileobj)
287
- }
288
-
289
- dirobj = Puppet.type(:file).create(
290
- :path => dir,
291
- :ensure => "directory"
292
- )
293
-
294
- comp.push(dirobj)
295
-
296
- assert_apply(comp)
297
- end
298
- end
@@ -1,718 +0,0 @@
1
- # Test cron job creation, modification, and destruction
2
-
3
- if __FILE__ == $0
4
- $:.unshift '..'
5
- $:.unshift '../lib'
6
- $puppetbase = "../.."
7
- end
8
-
9
- require 'puppettest'
10
- require 'puppet'
11
- require 'test/unit'
12
- require 'facter'
13
-
14
- class TestCron < Test::Unit::TestCase
15
- include TestPuppet
16
- def setup
17
- super
18
- # retrieve the user name
19
- id = %x{id}.chomp
20
- if id =~ /uid=\d+\(([^\)]+)\)/
21
- @me = $1
22
- else
23
- puts id
24
- end
25
- unless defined? @me
26
- raise "Could not retrieve user name; 'id' did not work"
27
- end
28
-
29
- # god i'm lazy
30
- @crontype = Puppet.type(:cron)
31
- @oldfiletype = @crontype.filetype
32
- @fakefiletype = Puppet::FileType.filetype(:ram)
33
- @crontype.filetype = @fakefiletype
34
- end
35
-
36
- def teardown
37
- @crontype.filetype = @oldfiletype
38
- Puppet::FileType.filetype(:ram).clear
39
- super
40
- end
41
-
42
- # Back up the user's existing cron tab if they have one.
43
- def cronback
44
- tab = nil
45
- assert_nothing_raised {
46
- tab = Puppet.type(:cron).filetype.read(@me)
47
- }
48
-
49
- if $? == 0
50
- @currenttab = tab
51
- else
52
- @currenttab = nil
53
- end
54
- end
55
-
56
- # Restore the cron tab to its original form.
57
- def cronrestore
58
- assert_nothing_raised {
59
- if @currenttab
60
- @crontype.filetype.new(@me).write(@currenttab)
61
- else
62
- @crontype.filetype.new(@me).remove
63
- end
64
- }
65
- end
66
-
67
- # Create a cron job with all fields filled in.
68
- def mkcron(name)
69
- cron = nil
70
- assert_nothing_raised {
71
- cron = @crontype.create(
72
- :command => "date > %s/crontest%s" % [tmpdir(), name],
73
- :name => name,
74
- :user => @me,
75
- :minute => rand(59),
76
- :month => "1",
77
- :monthday => "1",
78
- :hour => "1"
79
- )
80
- }
81
-
82
- return cron
83
- end
84
-
85
- # Run the cron through its paces -- install it then remove it.
86
- def cyclecron(cron)
87
- obj = Puppet::Type::Cron.cronobj(@me)
88
-
89
- text = obj.read
90
- name = cron.name
91
- comp = newcomp(name, cron)
92
-
93
- assert_events([:cron_created], comp)
94
- cron.retrieve
95
-
96
- assert(cron.insync?, "Cron is not in sync")
97
-
98
- assert_events([], comp)
99
-
100
- curtext = obj.read
101
- text.split("\n").each do |line|
102
- assert(curtext.include?(line), "Missing '%s'" % line)
103
- end
104
- obj = Puppet::Type::Cron.cronobj(@me)
105
-
106
- cron[:ensure] = :absent
107
-
108
- assert_events([:cron_removed], comp)
109
-
110
- cron.retrieve
111
-
112
- assert(cron.insync?, "Cron is not in sync")
113
- assert_events([], comp)
114
- end
115
-
116
- # A simple test to see if we can load the cron from disk.
117
- def test_load
118
- assert_nothing_raised {
119
- @crontype.retrieve(@me)
120
- }
121
- end
122
-
123
- # Test that a cron job turns out as expected, by creating one and generating
124
- # it directly
125
- def test_simple_to_cron
126
- cron = nil
127
- # make the cron
128
- name = "yaytest"
129
- assert_nothing_raised {
130
- cron = @crontype.create(
131
- :name => name,
132
- :command => "date > /dev/null",
133
- :user => @me
134
- )
135
- }
136
- str = nil
137
- # generate the text
138
- assert_nothing_raised {
139
- str = cron.to_record
140
- }
141
-
142
- assert_equal(str, "# Puppet Name: #{name}\n* * * * * date > /dev/null",
143
- "Cron did not generate correctly")
144
- end
145
-
146
- def test_simpleparsing
147
- @fakefiletype = Puppet::FileType.filetype(:ram)
148
- @crontype.filetype = @fakefiletype
149
-
150
- @crontype.retrieve(@me)
151
- obj = Puppet::Type::Cron.cronobj(@me)
152
-
153
- text = "5 1,2 * 1 0 /bin/echo funtest"
154
-
155
- assert_nothing_raised {
156
- @crontype.parse(@me, text)
157
- }
158
-
159
- @crontype.each do |obj|
160
- assert_equal(["5"], obj.is(:minute), "Minute was not parsed correctly")
161
- assert_equal(["1", "2"], obj.is(:hour), "Hour was not parsed correctly")
162
- assert_equal([:absent], obj.is(:monthday), "Monthday was not parsed correctly")
163
- assert_equal(["1"], obj.is(:month), "Month was not parsed correctly")
164
- assert_equal(["0"], obj.is(:weekday), "Weekday was not parsed correctly")
165
- assert_equal(["/bin/echo funtest"], obj.is(:command), "Command was not parsed correctly")
166
- end
167
- end
168
-
169
- # Test that changing any field results in the cron tab being rewritten.
170
- # it directly
171
- def test_any_field_changes
172
- cron = nil
173
- # make the cron
174
- name = "yaytest"
175
- assert_nothing_raised {
176
- cron = @crontype.create(
177
- :name => name,
178
- :command => "date > /dev/null",
179
- :month => "May",
180
- :user => @me
181
- )
182
- }
183
- assert(cron, "Cron did not get created")
184
- comp = newcomp(cron)
185
- assert_events([:cron_created], comp)
186
-
187
- assert_nothing_raised {
188
- cron[:month] = "June"
189
- }
190
-
191
- cron.retrieve
192
-
193
- assert_events([:cron_changed], comp)
194
- end
195
-
196
- # Test that a cron job with spaces at the end doesn't get rewritten
197
- def test_trailingspaces
198
- cron = nil
199
- # make the cron
200
- name = "yaytest"
201
- assert_nothing_raised {
202
- cron = @crontype.create(
203
- :name => name,
204
- :command => "date > /dev/null ",
205
- :month => "May",
206
- :user => @me
207
- )
208
- }
209
- comp = newcomp(cron)
210
-
211
- assert_events([:cron_created], comp, "did not create cron job")
212
- cron.retrieve
213
- assert_events([], comp, "cron job got rewritten")
214
- end
215
-
216
- # Test that comments are correctly retained
217
- def test_retain_comments
218
- str = "# this is a comment\n#and another comment\n"
219
- user = "fakeuser"
220
- @crontype.retrieve(@me)
221
- assert_nothing_raised {
222
- @crontype.parse(@me, str)
223
- }
224
-
225
- assert_nothing_raised {
226
- newstr = @crontype.tab(@me)
227
- assert(newstr.include?(str), "Comments were lost")
228
- }
229
- end
230
-
231
- # Test that a specified cron job will be matched against an existing job
232
- # with no name, as long as all fields match
233
- def test_matchcron
234
- str = "0,30 * * * * date\n"
235
-
236
- assert_nothing_raised {
237
- cron = @crontype.create(
238
- :name => "yaycron",
239
- :minute => [0, 30],
240
- :command => "date",
241
- :user => @me
242
- )
243
- }
244
-
245
- assert_nothing_raised {
246
- @crontype.parse(@me, str)
247
- }
248
-
249
- count = @crontype.inject(0) do |c, obj|
250
- c + 1
251
- end
252
-
253
- assert_equal(1, count, "Did not match cron job")
254
-
255
- modstr = "# Puppet Name: yaycron\n%s" % str
256
-
257
- assert_nothing_raised {
258
- newstr = @crontype.tab(@me)
259
- assert(newstr.include?(modstr),
260
- "Cron was not correctly matched")
261
- }
262
- end
263
-
264
- # Test adding a cron when there is currently no file.
265
- def test_mkcronwithnotab
266
- tab = @fakefiletype.new(@me)
267
- tab.remove
268
-
269
- @crontype.retrieve(@me)
270
- cron = mkcron("testwithnotab")
271
- cyclecron(cron)
272
- end
273
-
274
- def test_mkcronwithtab
275
- @crontype.retrieve(@me)
276
- obj = Puppet::Type::Cron.cronobj(@me)
277
- obj.write(
278
- "1 1 1 1 * date > %s/crontesting\n" % tstdir()
279
- )
280
-
281
- cron = mkcron("testwithtab")
282
- cyclecron(cron)
283
- end
284
-
285
- def test_makeandretrievecron
286
- tab = @fakefiletype.new(@me)
287
- tab.remove
288
-
289
- %w{storeandretrieve a-name another-name more_naming SomeName}.each do |name|
290
- cron = mkcron(name)
291
- comp = newcomp(name, cron)
292
- trans = assert_events([:cron_created], comp, name)
293
-
294
- cron = nil
295
-
296
- Puppet.type(:cron).retrieve(@me)
297
-
298
- assert(cron = Puppet.type(:cron)[name], "Could not retrieve named cron")
299
- assert_instance_of(Puppet.type(:cron), cron)
300
- end
301
- end
302
-
303
- # Do input validation testing on all of the parameters.
304
- def test_arguments
305
- values = {
306
- :monthday => {
307
- :valid => [ 1, 13, "1" ],
308
- :invalid => [ -1, 0, 32 ]
309
- },
310
- :weekday => {
311
- :valid => [ 0, 3, 6, "1", "tue", "wed",
312
- "Wed", "MOnday", "SaTurday" ],
313
- :invalid => [ -1, 7, "13", "tues", "teusday", "thurs" ]
314
- },
315
- :hour => {
316
- :valid => [ 0, 21, 23 ],
317
- :invalid => [ -1, 24 ]
318
- },
319
- :minute => {
320
- :valid => [ 0, 34, 59 ],
321
- :invalid => [ -1, 60 ]
322
- },
323
- :month => {
324
- :valid => [ 1, 11, 12, "mar", "March", "apr", "October", "DeCeMbEr" ],
325
- :invalid => [ -1, 0, 13, "marc", "sept" ]
326
- }
327
- }
328
-
329
- cron = mkcron("valtesting")
330
- values.each { |param, hash|
331
- # We have to test the valid ones first, because otherwise the
332
- # state will fail to create at all.
333
- [:valid, :invalid].each { |type|
334
- hash[type].each { |value|
335
- case type
336
- when :valid:
337
- assert_nothing_raised {
338
- cron[param] = value
339
- }
340
-
341
- if value.is_a?(Integer)
342
- assert_equal(value.to_s, cron.should(param),
343
- "Cron value was not set correctly")
344
- end
345
- when :invalid:
346
- assert_raise(Puppet::Error, "%s is incorrectly a valid %s" %
347
- [value, param]) {
348
- cron[param] = value
349
- }
350
- end
351
-
352
- if value.is_a?(Integer)
353
- value = value.to_s
354
- redo
355
- end
356
- }
357
- }
358
- }
359
- end
360
-
361
- # Test that we can read and write cron tabs
362
- def test_crontab
363
- Puppet.type(:cron).filetype = Puppet.type(:cron).defaulttype
364
- type = nil
365
- unless type = Puppet.type(:cron).filetype
366
- $stderr.puts "No crontab type; skipping test"
367
- end
368
-
369
- obj = nil
370
- assert_nothing_raised {
371
- obj = type.new(Process.uid)
372
- }
373
-
374
- txt = nil
375
- assert_nothing_raised {
376
- txt = obj.read
377
- }
378
-
379
- assert_nothing_raised {
380
- obj.write(txt)
381
- }
382
- end
383
-
384
- # Verify that comma-separated numbers are not resulting in rewrites
385
- def test_norewrite
386
- cron = nil
387
- assert_nothing_raised {
388
- cron = Puppet.type(:cron).create(
389
- :command => "/bin/date > /dev/null",
390
- :minute => [0, 30],
391
- :name => "crontest"
392
- )
393
- }
394
-
395
- assert_events([:cron_created], cron)
396
- cron.retrieve
397
- assert_events([], cron)
398
- end
399
-
400
- def test_fieldremoval
401
- cron = nil
402
- assert_nothing_raised {
403
- cron = Puppet.type(:cron).create(
404
- :command => "/bin/date > /dev/null",
405
- :minute => [0, 30],
406
- :name => "crontest"
407
- )
408
- }
409
-
410
- assert_events([:cron_created], cron)
411
-
412
- cron[:minute] = :absent
413
- assert_events([:cron_changed], cron)
414
- assert_nothing_raised {
415
- cron.retrieve
416
- }
417
- assert_equal(:absent, cron.is(:minute))
418
- end
419
-
420
- def test_listing
421
- @crontype.filetype = @oldfiletype
422
-
423
- crons = []
424
- assert_nothing_raised {
425
- Puppet::Type.type(:cron).list.each do |cron|
426
- crons << cron
427
- end
428
- }
429
-
430
- crons.each do |cron|
431
- assert(cron, "Did not receive a real cron object")
432
- assert_instance_of(String, cron[:user],
433
- "Cron user is not a string")
434
- end
435
- end
436
-
437
- def verify_failonnouser
438
- assert_raise(Puppet::Error) do
439
- @crontype.retrieve("nosuchuser")
440
- end
441
- end
442
-
443
- def test_names
444
- cron = mkcron("nametest")
445
-
446
- ["bad name", "bad.name"].each do |name|
447
- assert_raise(ArgumentError) do
448
- cron[:name] = name
449
- end
450
- end
451
-
452
- ["good-name", "good-name", "AGoodName"].each do |name|
453
- assert_nothing_raised do
454
- cron[:name] = name
455
- end
456
- end
457
- end
458
-
459
- # Make sure we don't puke on env settings
460
- def test_envsettings
461
- cron = mkcron("envtst")
462
-
463
- assert_apply(cron)
464
-
465
- obj = Puppet::Type::Cron.cronobj(@me)
466
-
467
- assert(obj)
468
-
469
- text = obj.read
470
-
471
- text = "SHELL = /path/to/some/thing\n" + text
472
-
473
- obj.write(text)
474
-
475
- assert_nothing_raised {
476
- cron.retrieve
477
- }
478
-
479
- cron[:command] = "/some/other/command"
480
-
481
- assert_apply(cron)
482
-
483
- assert(obj.read =~ /SHELL/, "lost env setting")
484
-
485
- env1 = "TEST = /bin/true"
486
- env2 = "YAY = fooness"
487
- assert_nothing_raised {
488
- cron[:environment] = [env1, env2]
489
- }
490
-
491
- assert_apply(cron)
492
- cron.retrieve
493
-
494
- vals = cron.is(:environment)
495
- assert(vals, "Did not get environment settings")
496
- assert(vals != :absent, "Env is incorrectly absent")
497
- assert_instance_of(Array, vals)
498
-
499
- assert(vals.include?(env1), "Missing first env setting")
500
- assert(vals.include?(env2), "Missing second env setting")
501
-
502
- end
503
-
504
- def test_divisionnumbers
505
- cron = mkcron("divtest")
506
- cron[:minute] = "*/5"
507
-
508
- assert_apply(cron)
509
-
510
- cron.retrieve
511
-
512
- assert_equal(["*/5"], cron.is(:minute))
513
- end
514
-
515
- def test_ranges
516
- cron = mkcron("rangetest")
517
- cron[:minute] = "2-4"
518
-
519
- assert_apply(cron)
520
-
521
- cron.retrieve
522
-
523
- assert_equal(["2-4"], cron.is(:minute))
524
- end
525
-
526
- def test_data
527
- @fakefiletype = Puppet::FileType.filetype(:ram)
528
- @crontype.filetype = @fakefiletype
529
-
530
- @crontype.retrieve(@me)
531
- obj = Puppet::Type::Cron.cronobj(@me)
532
-
533
- fakedata("data/types/cron").each do |file|
534
- names = []
535
- text = File.read(file)
536
- obj.write(File.read(file))
537
-
538
- @crontype.retrieve(@me)
539
-
540
- @crontype.each do |cron|
541
- names << cron.name
542
- end
543
-
544
- name = File.basename(file)
545
- cron = mkcron("filetest-#{name}")
546
-
547
- assert_apply(cron)
548
-
549
- @crontype.retrieve(@me)
550
-
551
- names.each do |name|
552
- assert(@crontype[name], "Could not retrieve %s" % name)
553
- end
554
-
555
- tablines = @crontype.tab(@me).split("\n")
556
-
557
- text.split("\n").each do |line|
558
- assert(tablines.include?(line),
559
- "Did not get %s back out" % line.inspect)
560
- end
561
- end
562
- end
563
-
564
- def test_value
565
- cron = mkcron("valuetesting")
566
-
567
- # First, test the normal states
568
- [:minute, :hour, :month].each do |param|
569
- state = cron.state(param)
570
-
571
- assert(state, "Did not get %s state" % param)
572
-
573
- assert_nothing_raised {
574
- state.should = :absent
575
- state.is = :absent
576
- }
577
-
578
- # Make sure our minute default is 0, not *
579
- val = if param == :minute
580
- "*" # the "0" thing is disabled for now
581
- else
582
- "*"
583
- end
584
- assert_equal(val, cron.value(param))
585
-
586
- # Make sure we correctly get the "is" value if that's all there is
587
- cron.is = [param, "1"]
588
- assert_equal("1", cron.value(param))
589
-
590
- # Make sure arrays work, too
591
- cron.is = [param, ["1"]]
592
- assert_equal("1", cron.value(param))
593
-
594
- # Make sure values get comma-joined
595
- cron.is = [param, ["2", "3"]]
596
- assert_equal("2,3", cron.value(param))
597
-
598
- # Make sure "should" values work, too
599
- cron[param] = "4"
600
- assert_equal("4", cron.value(param))
601
-
602
- cron[param] = ["4"]
603
- assert_equal("4", cron.value(param))
604
-
605
- cron[param] = ["4", "5"]
606
- assert_equal("4,5", cron.value(param))
607
-
608
- cron.is = [param, :absent]
609
- assert_equal("4,5", cron.value(param))
610
- end
611
-
612
- # Now make sure that :command works correctly
613
- state = cron.state(:command)
614
-
615
- assert_nothing_raised {
616
- state.should = :absent
617
- state.is = :absent
618
- }
619
-
620
- assert(state, "Did not get command state")
621
- assert_raise(Puppet::DevError) do
622
- cron.value(:command)
623
- end
624
-
625
- param = :command
626
- # Make sure we correctly get the "is" value if that's all there is
627
- cron.is = [param, "1"]
628
- assert_equal("1", cron.value(param))
629
-
630
- # Make sure arrays work, too
631
- cron.is = [param, ["1"]]
632
- assert_equal("1", cron.value(param))
633
-
634
- # Make sure values are not comma-joined
635
- cron.is = [param, ["2", "3"]]
636
- assert_equal("2", cron.value(param))
637
-
638
- # Make sure "should" values work, too
639
- cron[param] = "4"
640
- assert_equal("4", cron.value(param))
641
-
642
- cron[param] = ["4"]
643
- assert_equal("4", cron.value(param))
644
-
645
- cron[param] = ["4", "5"]
646
- assert_equal("4", cron.value(param))
647
-
648
- cron.is = [param, :absent]
649
- assert_equal("4", cron.value(param))
650
- end
651
-
652
- # Make sure we can successfully list all cron jobs on all users
653
- def test_cron_listing
654
- crons = []
655
- %w{fake1 fake2 fake3 fake4 fake5}.each do |user|
656
- crons << @crontype.create(
657
- :name => "#{user}-1",
658
- :command => "/usr/bin/#{user}",
659
- :minute => "0",
660
- :user => user,
661
- :hour => user.sub("fake",'')
662
- )
663
-
664
- crons << @crontype.create(
665
- :name => "#{user}-2",
666
- :command => "/usr/sbin/#{user}",
667
- :minute => "0",
668
- :user => user,
669
- :weekday => user.sub("fake",'')
670
- )
671
-
672
- assert_apply(*crons)
673
- end
674
-
675
- list = @crontype.list.collect { |c| c.name }
676
-
677
- crons.each do |cron|
678
- assert(list.include?(cron.name), "Did not match cron %s" % name)
679
- end
680
- end
681
-
682
- # Make sure we can create a cron in an empty tab
683
- def test_mkcron_if_empty
684
- @crontype.filetype = @oldfiletype
685
-
686
- @crontype.retrieve(@me)
687
-
688
- # Backup our tab
689
- text = @crontype.tabobj(@me).read
690
-
691
- cleanup do
692
- if text == ""
693
- @crontype.tabobj(@me).remove
694
- else
695
- @crontype.tabobj(@me).write(text)
696
- end
697
- end
698
-
699
- # Now get rid of it
700
- @crontype.tabobj(@me).remove
701
- @crontype.clear
702
-
703
- cron = mkcron("emptycron")
704
-
705
- assert_apply(cron)
706
-
707
- # Clear the type, but don't clear the filetype
708
- @crontype.clear
709
-
710
- # Get the stuff again
711
- @crontype.retrieve(@me)
712
-
713
- assert(@crontype["emptycron"],
714
- "Did not retrieve cron")
715
- end
716
- end
717
-
718
- # $Id: cron.rb 1402 2006-07-18 15:35:15Z luke $