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
@@ -0,0 +1,162 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppet'
6
+ require 'puppet/provider'
7
+ require 'puppettest'
8
+
9
+ class TestImpl < Test::Unit::TestCase
10
+ include PuppetTest
11
+
12
+ def setup
13
+ super
14
+ @type = newtype(@method_name.to_s + "type")
15
+
16
+ # But create a new provider for every method.
17
+ @provider = newprovider(@method_name.to_s + "provider")
18
+ end
19
+
20
+ def newtype(name)
21
+ # First create a fake type
22
+ return Puppet::Type.newtype(name) {
23
+ newparam(:name) { isnamevar }
24
+ }
25
+ end
26
+
27
+ def newprovider(name, type = nil)
28
+ type ||= @type
29
+ provider = nil
30
+ assert_nothing_raised("Could not create provider") do
31
+ provider = type.provide(name) {}
32
+ end
33
+ return provider
34
+ end
35
+
36
+ # Just a quick run-through to see if the basics work
37
+ def test_newprovider
38
+ assert_nothing_raised do
39
+ @provider.confine :operatingsystem => Facter["operatingsystem"].value
40
+ @provider.defaultfor :operatingsystem => Facter["operatingsystem"].value
41
+ end
42
+
43
+ assert(@provider.suitable?, "Implementation was not considered suitable")
44
+ assert(@provider.default?, "Implementation was not considered a default")
45
+
46
+ assert_equal(@provider, @type.defaultprovider,
47
+ "Did not correctly find default provider")
48
+
49
+ end
50
+
51
+ def test_provider_false_confine
52
+ assert_nothing_raised do
53
+ @provider.confine :false => false
54
+ end
55
+
56
+ assert(@provider.suitable?, "False did not check correctly")
57
+ end
58
+
59
+ def test_provider_true_confine
60
+ assert_nothing_raised do
61
+ @provider.confine :true => true
62
+ end
63
+
64
+ assert(@provider.suitable?, "True did not check correctly")
65
+
66
+ # Now check whether we multiple true things work
67
+ assert_nothing_raised do
68
+ @provider.confine :true => false
69
+ @provider.confine :true => true
70
+ end
71
+ assert(! @provider.suitable?, "One truth overrode another")
72
+ end
73
+
74
+ def test_provider_exists_confine
75
+ file = tempfile()
76
+
77
+ assert_nothing_raised do
78
+ @provider.confine :exists => file
79
+ end
80
+
81
+ assert(! @provider.suitable?, "Exists did not check correctly")
82
+ File.open(file, "w") { |f| f.puts "" }
83
+ assert(@provider.suitable?, "Exists did not find file correctly")
84
+ end
85
+
86
+ def test_provider_facts_confine
87
+ # Now check for multiple platforms
88
+ assert_nothing_raised do
89
+ @provider.confine :operatingsystem => [Facter["operatingsystem"].value, :yayos]
90
+ @provider.confine :operatingsystem => [:fakeos, :otheros]
91
+ end
92
+
93
+ assert(@provider.suitable?, "Implementation not considered suitable")
94
+ end
95
+
96
+ def test_provider_default
97
+ nondef = nil
98
+ assert_nothing_raised {
99
+ nondef = newprovider(:nondefault)
100
+ }
101
+
102
+ assert_nothing_raised do
103
+ @provider.defaultfor :operatingsystem => Facter["operatingsystem"].value
104
+ end
105
+
106
+ assert_equal(@provider.name, @type.defaultprovider.name, "Did not get right provider")
107
+
108
+ @type.suitableprovider
109
+ end
110
+
111
+ def test_subclassconfines
112
+ parent = newprovider("parentprovider")
113
+
114
+ # Now make a bad confine on the parent
115
+ parent.confine :exists => "/this/file/definitely/does/not/exist"
116
+
117
+ child = nil
118
+ assert_nothing_raised {
119
+ child = @type.provide("child", :parent => parent.name) {}
120
+ }
121
+
122
+ assert(child.suitable?, "Parent ruled out child")
123
+ end
124
+
125
+ def test_commands
126
+ parent = newprovider("parentprovider")
127
+
128
+ child = nil
129
+ assert_nothing_raised {
130
+ child = @type.provide("child", :parent => parent.name) {}
131
+ }
132
+
133
+ assert_nothing_raised {
134
+ child.commands :which => "which"
135
+ }
136
+
137
+ assert(child.command(:which), "Did not find 'which' command")
138
+
139
+ assert(child.command(:which) =~ /^\//,
140
+ "Command did not become fully qualified")
141
+ assert(FileTest.exists?(child.command(:which)),
142
+ "Did not find actual 'which' binary")
143
+
144
+ assert_raise(Puppet::DevError) do
145
+ child.command(:nosuchcommand)
146
+ end
147
+
148
+ # Now create a parent command
149
+ assert_nothing_raised {
150
+ parent.commands :sh => Puppet::Util.binary('sh')
151
+ }
152
+
153
+ assert(parent.command(:sh), "Did not find 'sh' command")
154
+
155
+ assert(child.command(:sh), "Did not find parent's 'sh' command")
156
+
157
+ assert(FileTest.exists?(child.command(:sh)),
158
+ "Somehow broke path to sh")
159
+ end
160
+ end
161
+
162
+ # $Id: provider.rb 1793 2006-10-16 22:01:40Z luke $
@@ -1,21 +1,17 @@
1
- if __FILE__ == $0
2
- $:.unshift '..'
3
- $:.unshift '../../lib'
4
- $puppetbase = "../.."
5
- end
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
6
4
 
7
5
  require 'puppet'
8
- require 'puppet/parsedfile'
9
6
  require 'puppettest'
10
- require 'test/unit'
11
7
 
12
8
  # Test the different features of the main puppet module
13
9
  class TestPuppetModule < Test::Unit::TestCase
14
- include TestPuppet
10
+ include PuppetTest
15
11
  include SignalObserver
16
12
 
17
13
  def mkfakeclient
18
- Class.new(Puppet::Client) do
14
+ Class.new(Puppet::Network::Client) do
19
15
  def initialize
20
16
  end
21
17
 
@@ -74,6 +70,63 @@ class TestPuppetModule < Test::Unit::TestCase
74
70
  assert(!obj.started?, "Object is still running")
75
71
 
76
72
  end
73
+
74
+ def test_path
75
+ oldpath = ENV["PATH"]
76
+ cleanup do
77
+ ENV["PATH"] = oldpath
78
+ end
79
+ newpath = oldpath + ":" + "/something/else"
80
+ assert_nothing_raised do
81
+ Puppet[:path] = newpath
82
+ end
83
+
84
+ assert_equal(newpath, ENV["PATH"])
85
+ end
86
+
87
+ def test_libdir
88
+ oldlibs = $:.dup
89
+ cleanup do
90
+ $:.each do |dir|
91
+ unless oldlibs.include?(dir)
92
+ $:.delete(dir)
93
+ end
94
+ end
95
+ end
96
+ one = tempfile()
97
+ two = tempfile()
98
+ Dir.mkdir(one)
99
+ Dir.mkdir(two)
100
+
101
+ # Make sure setting the libdir gets the dir added to $:
102
+ assert_nothing_raised do
103
+ Puppet[:libdir] = one
104
+ end
105
+
106
+ assert($:.include?(one), "libdir was not added")
107
+
108
+ # Now change it, make sure it gets added and the old one gets
109
+ # removed
110
+ assert_nothing_raised do
111
+ Puppet[:libdir] = two
112
+ end
113
+
114
+ assert($:.include?(two), "libdir was not added")
115
+ assert(! $:.include?(one), "old libdir was not removed")
116
+ end
117
+
118
+ def test_name
119
+ # Make sure it defaults to $0 without the rb
120
+ should = $0.gsub(/.+#{File::SEPARATOR}/,'').sub(/\.rb$/, '')
121
+
122
+ assert_equal(should, Puppet[:name], "default name was not right")
123
+
124
+ assert_nothing_raised("Could not reset name") do
125
+ Puppet[:name] = "puppetca"
126
+ end
127
+
128
+ assert_equal("puppetca", Puppet[:name], "name reset did not take")
129
+ end
77
130
  end
78
131
 
79
- # $Id: puppet.rb 1315 2006-06-27 05:15:51Z luke $
132
+ # $Id: puppet.rb 2259 2007-03-06 19:03:05Z luke $
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke A. Kanies on 2006-11-24.
4
+ # Copyright (c) 2006. All rights reserved.
5
+
6
+ $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
7
+
8
+ require 'puppettest'
9
+ require 'puppet/relationship'
10
+
11
+ class TestRelationship < Test::Unit::TestCase
12
+ include PuppetTest
13
+
14
+ def test_initialize
15
+ rel = Puppet::Relationship
16
+
17
+ [["source", "target", "label"],
18
+ ["source", "target", {:event => :nothing}]
19
+ ].each do |ary|
20
+ # Make sure the label is required
21
+ assert_raise(Puppet::DevError) do
22
+ rel.new(*ary)
23
+ end
24
+ end
25
+ end
26
+
27
+ def test_attributes
28
+ rel = Puppet::Relationship
29
+
30
+ i = nil
31
+ assert_nothing_raised do
32
+ i = rel.new "source", "target", :event => :yay, :callback => :boo
33
+ end
34
+
35
+ assert_equal(:yay, i.event, "event was not retrieved")
36
+ assert_equal(:boo, i.callback, "callback was not retrieved")
37
+
38
+ # Now try it with nil values
39
+ assert_nothing_raised("failed to create with no event or callback") {
40
+ i = rel.new "source", "target"
41
+ }
42
+
43
+ assert_nil(i.event, "event was not nil")
44
+ assert_nil(i.callback, "callback was not nil")
45
+ end
46
+
47
+ def test_match
48
+ edge = Puppet::Relationship.new(:a, :b)
49
+
50
+ assert(! edge.match?(:NONE), "nil event matched :NONE")
51
+ assert(! edge.match?(:ALL_EVENT), "nil event matched :ALL_EVENTS")
52
+ assert(! edge.match?(:random), "nil event matched random")
53
+
54
+ # Now set the edge to none
55
+ edge.label = {:event => :NONE}
56
+ assert(! edge.match?(:NONE), ":NONE event matched :NONE")
57
+ assert(! edge.match?(:ALL_EVENT), ":NONE event matched :ALL_EVENTS")
58
+ assert(! edge.match?(:random), ":NONE event matched random")
59
+
60
+ # Now set it to :ALL
61
+ edge.label = {:event => :ALL_EVENTS}
62
+ assert(! edge.match?(:NONE), ":ALL_EVENTS event matched :NONE")
63
+ assert(edge.match?(:ALL_EVENTS), ":ALL_EVENTS did not match :ALL_EVENTS")
64
+ assert(edge.match?(:random), ":ALL_EVENTS did not match random")
65
+
66
+ # And finally, :random
67
+ edge.label = {:event => :random}
68
+ assert(! edge.match?(:NONE), ":random event matched :NONE")
69
+ assert(! edge.match?(:ALL_EVENTS), ":random matched :ALL_EVENTS")
70
+ assert(edge.match?(:random), ":random did not match random")
71
+ end
72
+ end
73
+
74
+ # $Id: relationship.rb 1983 2006-12-29 04:15:36Z luke $
@@ -1,15 +1,17 @@
1
- if __FILE__ == $0
2
- $:.unshift '..'
3
- $:.unshift '../../lib'
4
- $puppetbase = "../.."
5
- end
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
6
4
 
7
5
  require 'puppet'
8
6
  require 'puppettest'
9
- require 'test/unit'
10
7
 
11
8
  class TestRelationships < Test::Unit::TestCase
12
- include TestPuppet
9
+ include PuppetTest
10
+ def setup
11
+ super
12
+ Puppet::Type.type(:exec)
13
+ end
14
+
13
15
  def newfile
14
16
  assert_nothing_raised() {
15
17
  return Puppet.type(:file).create(
@@ -18,126 +20,200 @@ class TestRelationships < Test::Unit::TestCase
18
20
  )
19
21
  }
20
22
  end
21
-
22
- def test_simplerel
23
- file1 = newfile()
24
- file2 = newfile()
25
- assert_nothing_raised {
26
- file1[:require] = [file2.class.name, file2.name]
27
- }
28
-
29
- comp = newcomp(file1, file2)
30
- comp.finalize
31
- deps = []
32
- assert_nothing_raised {
33
- file1.eachdependency { |obj|
34
- deps << obj
35
- }
36
- }
37
-
38
- assert_equal(1, deps.length, "Did not get dependency")
39
-
40
- assert_nothing_raised {
41
- file1.unsubscribe(file2)
42
- }
43
-
44
- deps = []
45
- assert_nothing_raised {
46
- file1.eachdependency { |obj|
47
- deps << obj
48
- }
49
- }
50
-
51
- assert_equal(0, deps.length, "Still have dependency")
23
+
24
+ def check_relationship(sources, targets, out, refresher)
25
+ if out
26
+ deps = sources.builddepends
27
+ sources = [sources]
28
+ else
29
+ deps = targets.builddepends
30
+ targets = [targets]
31
+ end
32
+ assert_instance_of(Array, deps)
33
+ assert(! deps.empty?, "Did not receive any relationships")
34
+
35
+ deps.each do |edge|
36
+ assert_instance_of(Puppet::Relationship, edge)
37
+ end
38
+
39
+ sources.each do |source|
40
+ targets.each do |target|
41
+ edge = deps.find { |e| e.source == source and e.target == target }
42
+ assert(edge, "Could not find edge for %s => %s" %
43
+ [source.ref, target.ref])
44
+
45
+ if refresher
46
+ assert_equal(:ALL_EVENTS, edge.event)
47
+ assert_equal(:refresh, edge.callback)
48
+ else
49
+ assert_nil(edge.event)
50
+ assert_nil(edge.callback, "Got a callback with no events")
51
+ end
52
+ end
53
+ end
52
54
  end
53
55
 
54
- def test_newsub
55
- file1 = newfile()
56
- file2 = newfile()
57
-
58
- sub = nil
59
- assert_nothing_raised("Could not create subscription") {
60
- sub = Puppet::Event::Subscription.new(
61
- :source => file1,
62
- :target => file2,
63
- :event => :ALL_EVENTS,
64
- :callback => :refresh
65
- )
66
- }
67
-
68
- subs = nil
69
-
70
- assert_nothing_raised {
71
- subs = Puppet::Event::Subscription.subscribers(file1)
72
- }
73
- assert_equal(1, subs.length, "Got incorrect number of subs")
74
- assert_equal(sub.target, subs[0], "Got incorrect sub")
75
-
76
- deps = nil
77
- assert_nothing_raised {
78
- deps = Puppet::Event::Subscription.dependencies(file2)
79
- }
80
- assert_equal(1, deps.length, "Got incorrect number of deps")
81
- assert_equal(sub, deps[0], "Got incorrect dep")
56
+ # Make sure our various metaparams work correctly. We're just checking
57
+ # here whether they correctly set up the callbacks and the direction of
58
+ # the relationship.
59
+ def test_relationship_metaparams
60
+ out = {:require => false, :subscribe => false,
61
+ :notify => true, :before => true}
62
+ refreshers = [:subscribe, :notify]
63
+ [:require, :subscribe, :notify, :before].each do |param|
64
+ # Create three files to generate our events and three
65
+ # execs to receive them
66
+ files = []
67
+ execs = []
68
+ 3.times do |i|
69
+ files << Puppet::Type.newfile(
70
+ :title => "file#{i}",
71
+ :path => tempfile(),
72
+ :ensure => :file
73
+ )
74
+
75
+ path = tempfile()
76
+ execs << Puppet::Type.newexec(
77
+ :title => "notifytest#{i}",
78
+ :path => "/usr/bin:/bin",
79
+ :command => "touch #{path}",
80
+ :refreshonly => true
81
+ )
82
+ end
83
+
84
+ # Add our first relationship
85
+ if out[param]
86
+ files[0][param] = execs[0]
87
+ sources = files[0]
88
+ targets = [execs[0]]
89
+ else
90
+ execs[0][param] = files[0]
91
+ sources = [files[0]]
92
+ targets = execs[0]
93
+ end
94
+ check_relationship(sources, targets, out[param], refreshers.include?(param))
95
+
96
+ # Now add another relationship
97
+ if out[param]
98
+ files[0][param] = execs[1]
99
+ targets << execs[1]
100
+ assert_equal(targets.collect { |t| [t.class.name, t.title]},
101
+ files[0][param], "Incorrect target list")
102
+ else
103
+ execs[0][param] = files[1]
104
+ sources << files[1]
105
+ assert_equal(sources.collect { |t| [t.class.name, t.title]},
106
+ execs[0][param], "Incorrect source list")
107
+ end
108
+ check_relationship(sources, targets, out[param], refreshers.include?(param))
109
+
110
+ Puppet::Type.allclear
111
+ end
82
112
  end
83
-
84
- def test_eventmatch
85
- file1 = newfile()
86
- file2 = newfile()
87
-
88
- sub = nil
89
- assert_nothing_raised("Could not create subscription") {
90
- sub = Puppet::Event::Subscription.new(
91
- :source => file1,
92
- :target => file2,
93
- :event => :ALL_EVENTS,
94
- :callback => :refresh
95
- )
96
- }
97
-
98
- assert(sub.match?(:anything), "ALL_EVENTS did not match")
99
- assert(! sub.match?(:NONE), "ALL_EVENTS matched :NONE")
100
-
101
- sub.event = :file_created
102
-
103
- assert(sub.match?(:file_created), "event did not match")
104
- assert(sub.match?(:ALL_EVENTS), "ALL_EVENTS did not match")
105
- assert(! sub.match?(:NONE), "ALL_EVENTS matched :NONE")
106
-
107
- sub.event = :NONE
108
-
109
- assert(! sub.match?(:file_created), "Invalid match")
110
- assert(! sub.match?(:ALL_EVENTS), "ALL_EVENTS matched")
111
- assert(! sub.match?(:NONE), "matched :NONE")
113
+
114
+ def test_store_relationship
115
+ file = Puppet::Type.newfile :path => tempfile(), :mode => 0755
116
+ execs = []
117
+ 3.times do |i|
118
+ execs << Puppet::Type.newexec(:title => "yay#{i}", :command => "/bin/echo yay")
119
+ end
120
+
121
+ # First try it with one object, specified as a reference and an array
122
+ result = nil
123
+ [execs[0], [:exec, "yay0"], ["exec", "yay0"]].each do |target|
124
+ assert_nothing_raised do
125
+ result = file.send(:store_relationship, :require, target)
126
+ end
127
+
128
+ assert_equal([[:exec, "yay0"]], result)
129
+ end
130
+
131
+ # Now try it with multiple objects
132
+ symbols = execs.collect { |e| [e.class.name, e.title] }
133
+ strings = execs.collect { |e| [e.class.name.to_s, e.title] }
134
+ [execs, symbols, strings].each do |target|
135
+ assert_nothing_raised do
136
+ result = file.send(:store_relationship, :require, target)
137
+ end
138
+
139
+ assert_equal(symbols, result)
140
+ end
141
+
142
+ # Make sure we can mix it up, even though this shouldn't happen
143
+ assert_nothing_raised do
144
+ result = file.send(:store_relationship, :require, [execs[0], [execs[1].class.name, execs[1].title]])
145
+ end
146
+
147
+ assert_equal([[:exec, "yay0"], [:exec, "yay1"]], result)
148
+
149
+ # Finally, make sure that new results get added to old. The only way
150
+ # to get rid of relationships is to delete the parameter.
151
+ file[:require] = execs[0]
152
+
153
+ assert_nothing_raised do
154
+ result = file.send(:store_relationship, :require, [execs[1], execs[2]])
155
+ end
156
+
157
+ assert_equal(symbols, result)
112
158
  end
113
-
114
- def test_deletingsubs
115
- file1 = newfile()
116
- file2 = newfile()
117
-
118
- file1[:subscribe] = [:file, file2.name]
119
-
120
- comp = newcomp(file1, file2)
121
- comp.finalize
122
-
123
- assert(file1.requires?(file2))
124
-
125
- assert_nothing_raised {
126
- file1.unsubscribe(file2)
127
- }
128
- assert(!file1.requires?(file2))
129
-
130
- # Now readd it, so we can use 'remove'
131
- file1[:subscribe] = [:file, file2.name]
132
- comp.finalize
133
-
134
- assert_nothing_raised {
135
- file1.remove
136
- }
137
-
138
- assert(!comp.include?(file1))
139
- assert(!file2.subscribesto?(file1))
159
+
160
+ def test_autorequire
161
+ # We know that execs autorequire their cwd, so we'll use that
162
+ path = tempfile()
163
+
164
+ file = Puppet::Type.newfile(:title => "myfile", :path => path,
165
+ :ensure => :directory)
166
+ exec = Puppet::Type.newexec(:title => "myexec", :cwd => path,
167
+ :command => "/bin/echo")
168
+
169
+ reqs = nil
170
+ assert_nothing_raised do
171
+ reqs = exec.autorequire
172
+ end
173
+ assert_equal([Puppet::Relationship[file, exec]], reqs)
174
+
175
+ # Now make sure that these relationships are added to the transaction's
176
+ # relgraph
177
+ trans = Puppet::Transaction.new(newcomp(file, exec))
178
+ assert_nothing_raised do
179
+ trans.evaluate
180
+ end
181
+
182
+ graph = trans.relgraph
183
+ assert(graph.edge?(file, exec), "autorequire edge was not created")
184
+ end
185
+
186
+ def test_requires?
187
+ # Test the first direction
188
+ file1 = Puppet::Type.newfile(:title => "one", :path => tempfile,
189
+ :ensure => :directory)
190
+ file2 = Puppet::Type.newfile(:title => "two", :path => tempfile,
191
+ :ensure => :directory)
192
+
193
+ file1[:require] = file2
194
+ assert(file1.requires?(file2), "requires? failed to catch :require relationship")
195
+ file1.delete(:require)
196
+ assert(! file1.requires?(file2), "did not delete relationship")
197
+ file1[:subscribe] = file2
198
+ assert(file1.requires?(file2), "requires? failed to catch :subscribe relationship")
199
+ file1.delete(:subscribe)
200
+ assert(! file1.requires?(file2), "did not delete relationship")
201
+ file2[:before] = file1
202
+ assert(file1.requires?(file2), "requires? failed to catch :before relationship")
203
+ file2.delete(:before)
204
+ assert(! file1.requires?(file2), "did not delete relationship")
205
+ file2[:notify] = file1
206
+ assert(file1.requires?(file2), "requires? failed to catch :notify relationship")
207
+ end
208
+
209
+ # Testing #411. It was a problem with builddepends.
210
+ def test_missing_deps
211
+ file = Puppet::Type.newfile :path => tempfile, :require => ["file", "/no/such/file"]
212
+
213
+ assert_raise(Puppet::Error) do
214
+ file.builddepends
215
+ end
140
216
  end
141
217
  end
142
218
 
143
- # $Id: relationships.rb 965 2006-03-02 07:30:14Z luke $
219
+ # $Id: relationships.rb 2051 2007-01-05 05:12:37Z luke $