puppet 0.18.4 → 0.22.4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (673) hide show
  1. data/CHANGELOG +288 -0
  2. data/README +2 -2
  3. data/Rakefile +78 -5
  4. data/bin/puppet +28 -36
  5. data/bin/puppetca +81 -38
  6. data/bin/puppetd +65 -62
  7. data/bin/puppetdoc +409 -140
  8. data/bin/puppetmasterd +59 -47
  9. data/bin/puppetrun +38 -23
  10. data/conf/freebsd/puppetd +26 -0
  11. data/conf/freebsd/puppetmasterd +26 -0
  12. data/conf/gentoo/conf.d/puppet +5 -0
  13. data/conf/gentoo/conf.d/puppetmaster +12 -0
  14. data/conf/gentoo/init.d/puppet +38 -0
  15. data/conf/gentoo/init.d/puppetmaster +50 -0
  16. data/conf/gentoo/puppet/fileserver.conf +12 -0
  17. data/conf/gentoo/puppet/puppetca.conf +29 -0
  18. data/conf/gentoo/puppet/puppetd.conf +29 -0
  19. data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
  20. data/conf/redhat/client.init +10 -5
  21. data/conf/redhat/client.sysconfig +1 -1
  22. data/conf/redhat/fileserver.conf +2 -2
  23. data/conf/redhat/logrotate +1 -1
  24. data/conf/redhat/no-lockdir.patch +13 -0
  25. data/conf/redhat/puppet.spec +65 -8
  26. data/conf/redhat/puppetd.conf +0 -4
  27. data/conf/redhat/server.init +3 -6
  28. data/conf/solaris/pkginfo +1 -1
  29. data/conf/solaris/smf/svc-puppetd +2 -2
  30. data/conf/suse/client.init +142 -0
  31. data/conf/suse/puppet.spec +221 -0
  32. data/conf/suse/server.init +162 -0
  33. data/examples/code/mac_automount.pp +16 -0
  34. data/examples/root/bin/sleeper +3 -5
  35. data/examples/root/etc/init.d/sleeper +8 -2
  36. data/examples/root/etc/puppet/fileserver.conf +12 -2
  37. data/examples/root/etc/puppet/namespaceauth.conf +20 -0
  38. data/examples/root/etc/puppet/puppetd.conf +4 -0
  39. data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
  40. data/examples/root/etc/puppet/tagmail.conf +1 -0
  41. data/ext/emacs/puppet-mode.el +46 -1
  42. data/ext/logcheck/puppet +15 -0
  43. data/ext/module_puppet +15 -23
  44. data/ext/vim/puppet.vim +4 -2
  45. data/install.rb +2 -1
  46. data/lib/puppet.rb +76 -207
  47. data/lib/puppet/configuration.rb +331 -0
  48. data/lib/puppet/daemon.rb +63 -246
  49. data/lib/puppet/dsl.rb +371 -0
  50. data/lib/puppet/element.rb +8 -26
  51. data/lib/puppet/error.rb +54 -0
  52. data/lib/puppet/event.rb +8 -243
  53. data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
  54. data/lib/puppet/external/event-loop.rb +1 -0
  55. data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
  56. data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
  57. data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
  58. data/lib/puppet/external/gratr.rb +33 -0
  59. data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
  60. data/lib/puppet/external/gratr/base.rb +34 -0
  61. data/lib/puppet/external/gratr/biconnected.rb +116 -0
  62. data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
  63. data/lib/puppet/external/gratr/common.rb +73 -0
  64. data/lib/puppet/external/gratr/comparability.rb +92 -0
  65. data/lib/puppet/external/gratr/digraph.rb +116 -0
  66. data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
  67. data/lib/puppet/external/gratr/dot.rb +90 -0
  68. data/lib/puppet/external/gratr/edge.rb +145 -0
  69. data/lib/puppet/external/gratr/graph.rb +303 -0
  70. data/lib/puppet/external/gratr/graph_api.rb +83 -0
  71. data/lib/puppet/external/gratr/import.rb +44 -0
  72. data/lib/puppet/external/gratr/labels.rb +90 -0
  73. data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
  74. data/lib/puppet/external/gratr/rdot.rb +327 -0
  75. data/lib/puppet/external/gratr/search.rb +409 -0
  76. data/lib/puppet/external/gratr/strong_components.rb +127 -0
  77. data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
  78. data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
  79. data/lib/puppet/feature/base.rb +20 -0
  80. data/lib/puppet/feature/rails.rb +52 -0
  81. data/lib/puppet/metatype/attributes.rb +719 -0
  82. data/lib/puppet/metatype/closure.rb +111 -0
  83. data/lib/puppet/metatype/container.rb +94 -0
  84. data/lib/puppet/metatype/evaluation.rb +118 -0
  85. data/lib/puppet/metatype/instances.rb +261 -0
  86. data/lib/puppet/metatype/manager.rb +169 -0
  87. data/lib/puppet/metatype/metaparams.rb +409 -0
  88. data/lib/puppet/metatype/providers.rb +260 -0
  89. data/lib/puppet/metatype/relationships.rb +116 -0
  90. data/lib/puppet/metatype/schedules.rb +39 -0
  91. data/lib/puppet/metatype/tags.rb +39 -0
  92. data/lib/puppet/modules.rb +113 -0
  93. data/lib/puppet/network/authconfig.rb +168 -0
  94. data/lib/puppet/network/authorization.rb +84 -0
  95. data/lib/puppet/network/authstore.rb +293 -0
  96. data/lib/puppet/network/client.rb +187 -0
  97. data/lib/puppet/network/client/ca.rb +56 -0
  98. data/lib/puppet/network/client/dipper.rb +81 -0
  99. data/lib/puppet/network/client/file.rb +7 -0
  100. data/lib/puppet/network/client/logger.rb +6 -0
  101. data/lib/puppet/network/client/master.rb +644 -0
  102. data/lib/puppet/{client → network/client}/proxy.rb +3 -3
  103. data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
  104. data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
  105. data/lib/puppet/network/client/runner.rb +13 -0
  106. data/lib/puppet/network/client/status.rb +5 -0
  107. data/lib/puppet/network/client_request.rb +32 -0
  108. data/lib/puppet/network/handler.rb +33 -0
  109. data/lib/puppet/{server → network/handler}/ca.rb +5 -6
  110. data/lib/puppet/network/handler/filebucket.rb +180 -0
  111. data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
  112. data/lib/puppet/{server → network/handler}/logger.rb +3 -5
  113. data/lib/puppet/{server → network/handler}/master.rb +42 -8
  114. data/lib/puppet/network/handler/report.rb +158 -0
  115. data/lib/puppet/network/handler/resource.rb +190 -0
  116. data/lib/puppet/{server → network/handler}/runner.rb +17 -18
  117. data/lib/puppet/network/handler/status.rb +13 -0
  118. data/lib/puppet/network/rights.rb +74 -0
  119. data/lib/puppet/network/server.rb +5 -0
  120. data/lib/puppet/network/server/mongrel.rb +138 -0
  121. data/lib/puppet/network/server/webrick.rb +153 -0
  122. data/lib/puppet/network/xmlrpc/client.rb +129 -0
  123. data/lib/puppet/network/xmlrpc/processor.rb +91 -0
  124. data/lib/puppet/network/xmlrpc/server.rb +20 -0
  125. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
  126. data/lib/puppet/parameter.rb +390 -346
  127. data/lib/puppet/parser/ast.rb +116 -147
  128. data/lib/puppet/parser/ast/astarray.rb +17 -33
  129. data/lib/puppet/parser/ast/branch.rb +2 -0
  130. data/lib/puppet/parser/ast/caseopt.rb +7 -12
  131. data/lib/puppet/parser/ast/casestatement.rb +23 -32
  132. data/lib/puppet/parser/ast/collection.rb +19 -80
  133. data/lib/puppet/parser/ast/collexpr.rb +81 -0
  134. data/lib/puppet/parser/ast/component.rb +160 -89
  135. data/lib/puppet/parser/ast/else.rb +30 -0
  136. data/lib/puppet/parser/ast/function.rb +9 -2
  137. data/lib/puppet/parser/ast/hostclass.rb +47 -131
  138. data/lib/puppet/parser/ast/ifstatement.rb +43 -0
  139. data/lib/puppet/parser/ast/leaf.rb +10 -21
  140. data/lib/puppet/parser/ast/node.rb +32 -79
  141. data/lib/puppet/parser/ast/resourcedef.rb +222 -0
  142. data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
  143. data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
  144. data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
  145. data/lib/puppet/parser/ast/resourceref.rb +44 -0
  146. data/lib/puppet/parser/ast/selector.rb +16 -8
  147. data/lib/puppet/parser/ast/tag.rb +3 -1
  148. data/lib/puppet/parser/ast/vardef.rb +8 -12
  149. data/lib/puppet/parser/collector.rb +181 -0
  150. data/lib/puppet/parser/functions.rb +191 -36
  151. data/lib/puppet/parser/interpreter.rb +802 -380
  152. data/lib/puppet/parser/lexer.rb +86 -19
  153. data/lib/puppet/parser/parser.rb +1123 -960
  154. data/lib/puppet/parser/resource.rb +353 -0
  155. data/lib/puppet/parser/resource/param.rb +57 -0
  156. data/lib/puppet/parser/resource/reference.rb +71 -0
  157. data/lib/puppet/parser/scope.rb +573 -1000
  158. data/lib/puppet/parser/templatewrapper.rb +54 -0
  159. data/lib/puppet/pgraph.rb +208 -0
  160. data/lib/puppet/propertychange.rb +143 -0
  161. data/lib/puppet/provider.rb +302 -0
  162. data/lib/puppet/provider/cron/crontab.rb +187 -0
  163. data/lib/puppet/provider/group/groupadd.rb +29 -0
  164. data/lib/puppet/provider/group/netinfo.rb +12 -0
  165. data/lib/puppet/provider/group/pw.rb +31 -0
  166. data/lib/puppet/provider/host/netinfo.rb +18 -0
  167. data/lib/puppet/provider/host/parsed.rb +73 -0
  168. data/lib/puppet/provider/mount.rb +57 -0
  169. data/lib/puppet/provider/mount/netinfo.rb +38 -0
  170. data/lib/puppet/provider/mount/parsed.rb +37 -0
  171. data/lib/puppet/provider/nameservice.rb +344 -0
  172. data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
  173. data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
  174. data/lib/puppet/provider/nameservice/pw.rb +22 -0
  175. data/lib/puppet/provider/package/apple.rb +53 -0
  176. data/lib/puppet/provider/package/apt.rb +119 -0
  177. data/lib/puppet/provider/package/aptitude.rb +30 -0
  178. data/lib/puppet/provider/package/aptrpm.rb +79 -0
  179. data/lib/puppet/provider/package/blastwave.rb +114 -0
  180. data/lib/puppet/provider/package/darwinport.rb +88 -0
  181. data/lib/puppet/provider/package/dpkg.rb +109 -0
  182. data/lib/puppet/provider/package/freebsd.rb +43 -0
  183. data/lib/puppet/provider/package/gem.rb +104 -0
  184. data/lib/puppet/provider/package/openbsd.rb +93 -0
  185. data/lib/puppet/provider/package/pkgdmg.rb +119 -0
  186. data/lib/puppet/provider/package/portage.rb +112 -0
  187. data/lib/puppet/provider/package/ports.rb +94 -0
  188. data/lib/puppet/provider/package/rpm.rb +125 -0
  189. data/lib/puppet/provider/package/rug.rb +53 -0
  190. data/lib/puppet/provider/package/sun.rb +168 -0
  191. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  192. data/lib/puppet/provider/package/up2date.rb +45 -0
  193. data/lib/puppet/provider/package/yum.rb +54 -0
  194. data/lib/puppet/provider/parsedfile.rb +342 -0
  195. data/lib/puppet/provider/port/parsed.rb +174 -0
  196. data/lib/puppet/provider/service/base.rb +136 -0
  197. data/lib/puppet/provider/service/debian.rb +32 -0
  198. data/lib/puppet/provider/service/gentoo.rb +49 -0
  199. data/lib/puppet/{type → provider}/service/init.rb +42 -40
  200. data/lib/puppet/provider/service/redhat.rb +59 -0
  201. data/lib/puppet/{type → provider}/service/smf.rb +24 -13
  202. data/lib/puppet/provider/sshkey/parsed.rb +36 -0
  203. data/lib/puppet/provider/user/netinfo.rb +106 -0
  204. data/lib/puppet/provider/user/pw.rb +41 -0
  205. data/lib/puppet/provider/user/useradd.rb +67 -0
  206. data/lib/puppet/provider/zone/solaris.rb +208 -0
  207. data/lib/puppet/rails.rb +102 -66
  208. data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
  209. data/lib/puppet/rails/database/schema.rb +89 -0
  210. data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
  211. data/lib/puppet/rails/external/tagging/init.rb +5 -0
  212. data/lib/puppet/rails/external/tagging/tag.rb +50 -0
  213. data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
  214. data/lib/puppet/rails/fact_name.rb +7 -0
  215. data/lib/puppet/rails/fact_value.rb +5 -0
  216. data/lib/puppet/rails/host.rb +95 -46
  217. data/lib/puppet/rails/param_name.rb +28 -0
  218. data/lib/puppet/rails/param_value.rb +5 -0
  219. data/lib/puppet/rails/puppet_class.rb +9 -0
  220. data/lib/puppet/rails/resource.rb +95 -0
  221. data/lib/puppet/rails/source_file.rb +5 -0
  222. data/lib/puppet/relationship.rb +63 -0
  223. data/lib/puppet/reports/log.rb +14 -0
  224. data/lib/puppet/reports/rrdgraph.rb +114 -10
  225. data/lib/puppet/reports/store.rb +64 -0
  226. data/lib/puppet/reports/tagmail.rb +144 -71
  227. data/lib/puppet/sslcertificates.rb +38 -5
  228. data/lib/puppet/sslcertificates/ca.rb +142 -37
  229. data/lib/puppet/sslcertificates/certificate.rb +3 -3
  230. data/lib/puppet/sslcertificates/inventory.rb +53 -0
  231. data/lib/puppet/sslcertificates/support.rb +128 -0
  232. data/lib/puppet/transaction.rb +568 -189
  233. data/lib/puppet/transaction/report.rb +14 -3
  234. data/lib/puppet/transportable.rb +18 -10
  235. data/lib/puppet/type.rb +279 -2299
  236. data/lib/puppet/type/component.rb +63 -63
  237. data/lib/puppet/type/cron.rb +294 -710
  238. data/lib/puppet/type/exec.rb +185 -129
  239. data/lib/puppet/type/group.rb +38 -89
  240. data/lib/puppet/type/host.rb +110 -0
  241. data/lib/puppet/type/mount.rb +189 -0
  242. data/lib/puppet/type/notify.rb +47 -0
  243. data/lib/puppet/type/package.rb +129 -257
  244. data/lib/puppet/type/parsedtype.rb +172 -297
  245. data/lib/puppet/type/pfile.rb +540 -319
  246. data/lib/puppet/type/pfile/checksum.rb +103 -76
  247. data/lib/puppet/type/pfile/content.rb +16 -10
  248. data/lib/puppet/type/pfile/ensure.rb +52 -34
  249. data/lib/puppet/type/pfile/group.rb +25 -18
  250. data/lib/puppet/type/pfile/mode.rb +7 -4
  251. data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
  252. data/lib/puppet/type/pfile/source.rb +119 -124
  253. data/lib/puppet/type/pfile/target.rb +29 -45
  254. data/lib/puppet/type/pfile/type.rb +2 -2
  255. data/lib/puppet/type/pfilebucket.rb +18 -14
  256. data/lib/puppet/type/port.rb +121 -0
  257. data/lib/puppet/type/property.rb +530 -0
  258. data/lib/puppet/type/resources.rb +150 -0
  259. data/lib/puppet/type/schedule.rb +38 -22
  260. data/lib/puppet/type/service.rb +70 -326
  261. data/lib/puppet/type/sshkey.rb +76 -0
  262. data/lib/puppet/type/tidy.rb +197 -97
  263. data/lib/puppet/type/user.rb +107 -183
  264. data/lib/puppet/type/yumrepo.rb +53 -34
  265. data/lib/puppet/type/zone.rb +55 -208
  266. data/lib/puppet/util.rb +239 -201
  267. data/lib/puppet/util/autoload.rb +107 -0
  268. data/lib/puppet/util/classgen.rb +208 -0
  269. data/lib/puppet/{config.rb → util/config.rb} +102 -54
  270. data/lib/puppet/util/docs.rb +104 -0
  271. data/lib/puppet/util/errors.rb +55 -0
  272. data/lib/puppet/util/execution.rb +22 -0
  273. data/lib/puppet/util/feature.rb +76 -0
  274. data/lib/puppet/util/fileparsing.rb +380 -0
  275. data/lib/puppet/util/filetype.rb +300 -0
  276. data/lib/puppet/util/graph.rb +39 -0
  277. data/lib/puppet/util/inifile.rb +209 -0
  278. data/lib/puppet/util/loadedfile.rb +71 -0
  279. data/lib/puppet/util/log.rb +549 -0
  280. data/lib/puppet/util/logging.rb +20 -0
  281. data/lib/puppet/util/metaid.rb +22 -0
  282. data/lib/puppet/util/methodhelper.rb +37 -0
  283. data/lib/puppet/util/metric.rb +160 -0
  284. data/lib/puppet/util/package.rb +31 -0
  285. data/lib/puppet/util/pidlock.rb +68 -0
  286. data/lib/puppet/util/plist.rb +24 -0
  287. data/lib/puppet/util/plist/generator.rb +226 -0
  288. data/lib/puppet/util/plist/parser.rb +227 -0
  289. data/lib/puppet/util/posix.rb +87 -0
  290. data/lib/puppet/util/provider_features.rb +170 -0
  291. data/lib/puppet/util/rails/collection_merger.rb +42 -0
  292. data/lib/puppet/util/storage.rb +103 -0
  293. data/lib/puppet/util/subclass_loader.rb +83 -0
  294. data/lib/puppet/util/suidmanager.rb +86 -0
  295. data/lib/puppet/util/variables.rb +39 -0
  296. data/lib/puppet/util/warnings.rb +15 -0
  297. data/test/Rakefile +97 -0
  298. data/test/certmgr/ca.rb +81 -0
  299. data/test/certmgr/certmgr.rb +77 -50
  300. data/test/certmgr/inventory.rb +79 -0
  301. data/test/certmgr/support.rb +81 -0
  302. data/test/executables/filebucket.rb +49 -0
  303. data/test/executables/puppetbin.rb +28 -12
  304. data/test/executables/puppetca.rb +75 -54
  305. data/test/executables/puppetd.rb +10 -13
  306. data/test/executables/puppetmasterd.rb +12 -17
  307. data/test/executables/puppetmodule.rb +18 -17
  308. data/test/language/ast.rb +242 -798
  309. data/test/language/ast/casestatement.rb +104 -0
  310. data/test/language/ast/component.rb +133 -0
  311. data/test/language/ast/hostclass.rb +162 -0
  312. data/test/language/ast/selector.rb +62 -0
  313. data/test/language/ast/variable.rb +31 -0
  314. data/test/language/collector.rb +369 -0
  315. data/test/language/functions.rb +305 -18
  316. data/test/language/interpreter.rb +894 -125
  317. data/test/language/lexer.rb +98 -12
  318. data/test/language/node.rb +37 -53
  319. data/test/language/parser.rb +455 -148
  320. data/test/language/resource.rb +535 -0
  321. data/test/language/scope.rb +451 -561
  322. data/test/language/snippets.rb +101 -111
  323. data/test/language/transportable.rb +6 -8
  324. data/test/lib/mocha.rb +19 -0
  325. data/test/lib/mocha/any_instance_method.rb +35 -0
  326. data/test/lib/mocha/auto_verify.rb +113 -0
  327. data/test/lib/mocha/central.rb +35 -0
  328. data/test/lib/mocha/class_method.rb +62 -0
  329. data/test/lib/mocha/expectation.rb +295 -0
  330. data/test/lib/mocha/expectation_error.rb +6 -0
  331. data/test/lib/mocha/infinite_range.rb +27 -0
  332. data/test/lib/mocha/inspect.rb +37 -0
  333. data/test/lib/mocha/instance_method.rb +8 -0
  334. data/test/lib/mocha/metaclass.rb +7 -0
  335. data/test/lib/mocha/mock.rb +20 -0
  336. data/test/lib/mocha/mock_methods.rb +122 -0
  337. data/test/lib/mocha/object.rb +100 -0
  338. data/test/lib/mocha/pretty_parameters.rb +28 -0
  339. data/test/lib/mocha/setup_and_teardown.rb +23 -0
  340. data/test/lib/mocha/standalone.rb +30 -0
  341. data/test/lib/mocha/test_case_adapter.rb +49 -0
  342. data/test/lib/mocha_standalone.rb +2 -0
  343. data/test/lib/puppettest.rb +294 -0
  344. data/test/lib/puppettest/certificates.rb +61 -0
  345. data/test/lib/puppettest/exetest.rb +123 -0
  346. data/test/lib/puppettest/fakes.rb +194 -0
  347. data/test/lib/puppettest/fileparsing.rb +33 -0
  348. data/test/lib/puppettest/filetesting.rb +231 -0
  349. data/test/lib/puppettest/graph.rb +41 -0
  350. data/test/lib/puppettest/parsertesting.rb +392 -0
  351. data/test/lib/puppettest/railstesting.rb +56 -0
  352. data/test/lib/puppettest/reporttesting.rb +19 -0
  353. data/test/lib/puppettest/resourcetesting.rb +73 -0
  354. data/test/lib/puppettest/servertest.rb +72 -0
  355. data/test/lib/puppettest/support.rb +8 -0
  356. data/test/lib/puppettest/support/assertions.rb +101 -0
  357. data/test/lib/puppettest/support/helpers.rb +23 -0
  358. data/test/lib/puppettest/support/resources.rb +37 -0
  359. data/test/lib/puppettest/support/utils.rb +160 -0
  360. data/test/lib/puppettest/testcase.rb +48 -0
  361. data/test/lib/rake/puppet_test_loader.rb +17 -0
  362. data/test/lib/rake/puppet_testtask.rb +17 -0
  363. data/test/lib/spec.rb +8 -0
  364. data/test/lib/spec/callback.rb +11 -0
  365. data/test/lib/spec/callback/callback_container.rb +60 -0
  366. data/test/lib/spec/callback/extensions/module.rb +24 -0
  367. data/test/lib/spec/callback/extensions/object.rb +37 -0
  368. data/test/lib/spec/deprecated.rb +3 -0
  369. data/test/lib/spec/expectations.rb +59 -0
  370. data/test/lib/spec/expectations/differs/default.rb +62 -0
  371. data/test/lib/spec/expectations/errors.rb +6 -0
  372. data/test/lib/spec/expectations/extensions.rb +3 -0
  373. data/test/lib/spec/expectations/extensions/object.rb +109 -0
  374. data/test/lib/spec/expectations/extensions/proc.rb +57 -0
  375. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  376. data/test/lib/spec/expectations/handler.rb +47 -0
  377. data/test/lib/spec/expectations/should.rb +5 -0
  378. data/test/lib/spec/expectations/should/base.rb +64 -0
  379. data/test/lib/spec/expectations/should/change.rb +69 -0
  380. data/test/lib/spec/expectations/should/have.rb +128 -0
  381. data/test/lib/spec/expectations/should/not.rb +74 -0
  382. data/test/lib/spec/expectations/should/should.rb +81 -0
  383. data/test/lib/spec/expectations/sugar.rb +47 -0
  384. data/test/lib/spec/matchers.rb +160 -0
  385. data/test/lib/spec/matchers/be.rb +161 -0
  386. data/test/lib/spec/matchers/be_close.rb +37 -0
  387. data/test/lib/spec/matchers/change.rb +120 -0
  388. data/test/lib/spec/matchers/eql.rb +43 -0
  389. data/test/lib/spec/matchers/equal.rb +43 -0
  390. data/test/lib/spec/matchers/has.rb +44 -0
  391. data/test/lib/spec/matchers/have.rb +140 -0
  392. data/test/lib/spec/matchers/include.rb +50 -0
  393. data/test/lib/spec/matchers/match.rb +41 -0
  394. data/test/lib/spec/matchers/raise_error.rb +100 -0
  395. data/test/lib/spec/matchers/respond_to.rb +35 -0
  396. data/test/lib/spec/matchers/satisfy.rb +47 -0
  397. data/test/lib/spec/matchers/throw_symbol.rb +75 -0
  398. data/test/lib/spec/mocks.rb +232 -0
  399. data/test/lib/spec/mocks/argument_expectation.rb +132 -0
  400. data/test/lib/spec/mocks/error_generator.rb +85 -0
  401. data/test/lib/spec/mocks/errors.rb +10 -0
  402. data/test/lib/spec/mocks/extensions/object.rb +3 -0
  403. data/test/lib/spec/mocks/message_expectation.rb +231 -0
  404. data/test/lib/spec/mocks/methods.rb +40 -0
  405. data/test/lib/spec/mocks/mock.rb +26 -0
  406. data/test/lib/spec/mocks/mock_handler.rb +166 -0
  407. data/test/lib/spec/mocks/order_group.rb +29 -0
  408. data/test/lib/spec/rake/spectask.rb +173 -0
  409. data/test/lib/spec/rake/verify_rcov.rb +47 -0
  410. data/test/lib/spec/runner.rb +132 -0
  411. data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
  412. data/test/lib/spec/runner/command_line.rb +34 -0
  413. data/test/lib/spec/runner/context.rb +154 -0
  414. data/test/lib/spec/runner/context_eval.rb +142 -0
  415. data/test/lib/spec/runner/context_runner.rb +55 -0
  416. data/test/lib/spec/runner/drb_command_line.rb +21 -0
  417. data/test/lib/spec/runner/execution_context.rb +17 -0
  418. data/test/lib/spec/runner/extensions/kernel.rb +17 -0
  419. data/test/lib/spec/runner/extensions/object.rb +32 -0
  420. data/test/lib/spec/runner/formatter.rb +5 -0
  421. data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
  422. data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
  423. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
  424. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
  425. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
  426. data/test/lib/spec/runner/heckle_runner.rb +71 -0
  427. data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
  428. data/test/lib/spec/runner/option_parser.rb +224 -0
  429. data/test/lib/spec/runner/reporter.rb +105 -0
  430. data/test/lib/spec/runner/spec_matcher.rb +25 -0
  431. data/test/lib/spec/runner/spec_parser.rb +41 -0
  432. data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
  433. data/test/lib/spec/runner/specification.rb +114 -0
  434. data/test/lib/spec/translator.rb +87 -0
  435. data/test/lib/spec/version.rb +30 -0
  436. data/test/lib/stubba.rb +2 -0
  437. data/test/network/authconfig.rb +72 -0
  438. data/test/network/authorization.rb +138 -0
  439. data/test/network/authstore.rb +450 -0
  440. data/test/network/client/ca.rb +38 -0
  441. data/test/{client → network/client}/client.rb +107 -24
  442. data/test/network/client/dipper.rb +35 -0
  443. data/test/network/client/master.rb +627 -0
  444. data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
  445. data/test/network/client_request.rb +39 -0
  446. data/test/network/daemon.rb +71 -0
  447. data/test/{server → network/handler}/bucket.rb +103 -27
  448. data/test/{server → network/handler}/ca.rb +14 -19
  449. data/test/{server → network/handler}/fileserver.rb +443 -68
  450. data/test/network/handler/handler.rb +64 -0
  451. data/test/{server → network/handler}/logger.rb +26 -26
  452. data/test/network/handler/master.rb +352 -0
  453. data/test/network/handler/report.rb +185 -0
  454. data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
  455. data/test/{server → network/handler}/runner.rb +17 -16
  456. data/test/network/rights.rb +38 -0
  457. data/test/network/server/webrick.rb +140 -0
  458. data/test/network/xmlrpc/client.rb +68 -0
  459. data/test/network/xmlrpc/processor.rb +80 -0
  460. data/test/network/xmlrpc/server.rb +28 -0
  461. data/test/network/xmlrpc/webrick_servlet.rb +26 -0
  462. data/test/other/dsl.rb +218 -0
  463. data/test/other/events.rb +22 -15
  464. data/test/other/overrides.rb +9 -14
  465. data/test/other/pgraph.rb +289 -0
  466. data/test/other/propertychange.rb +142 -0
  467. data/test/other/provider.rb +162 -0
  468. data/test/other/puppet.rb +63 -10
  469. data/test/other/relationship.rb +74 -0
  470. data/test/other/relationships.rb +199 -123
  471. data/test/other/report.rb +152 -23
  472. data/test/other/transactions.rb +824 -78
  473. data/test/puppet/conffiles.rb +16 -11
  474. data/test/puppet/defaults.rb +7 -10
  475. data/test/puppet/{error.rb → errortest.rb} +5 -8
  476. data/test/puppet/modules.rb +58 -0
  477. data/test/puppet/tc_suidmanager.rb +107 -0
  478. data/test/rails/host.rb +177 -0
  479. data/test/rails/rails.rb +27 -0
  480. data/test/rails/railsparameter.rb +62 -0
  481. data/test/rails/railsresource.rb +100 -0
  482. data/test/ral/manager/attributes.rb +296 -0
  483. data/test/ral/manager/manager.rb +55 -0
  484. data/test/ral/manager/provider.rb +54 -0
  485. data/test/ral/manager/type.rb +837 -0
  486. data/test/ral/providers/cron/crontab.rb +346 -0
  487. data/test/ral/providers/group.rb +252 -0
  488. data/test/ral/providers/host/netinfo.rb +58 -0
  489. data/test/ral/providers/host/parsed.rb +226 -0
  490. data/test/ral/providers/mount/netinfo.rb +80 -0
  491. data/test/ral/providers/mount/parsed.rb +223 -0
  492. data/test/ral/providers/nameservice.rb +33 -0
  493. data/test/ral/providers/package.rb +253 -0
  494. data/test/ral/providers/package/apt.rb +89 -0
  495. data/test/ral/providers/package/aptitude.rb +69 -0
  496. data/test/ral/providers/package/aptrpm.rb +89 -0
  497. data/test/ral/providers/package/dpkg.rb +64 -0
  498. data/test/ral/providers/parsedfile.rb +668 -0
  499. data/test/ral/providers/parsedport.rb +233 -0
  500. data/test/ral/providers/provider.rb +423 -0
  501. data/test/{types → ral/providers}/service.rb +20 -121
  502. data/test/ral/providers/service/base.rb +75 -0
  503. data/test/ral/providers/sshkey/parsed.rb +111 -0
  504. data/test/ral/providers/user.rb +567 -0
  505. data/test/ral/providers/user/useradd.rb +250 -0
  506. data/test/ral/types/basic.rb +90 -0
  507. data/test/ral/types/component.rb +113 -0
  508. data/test/ral/types/cron.rb +480 -0
  509. data/test/{types → ral/types}/exec.rb +278 -82
  510. data/test/ral/types/file.rb +1799 -0
  511. data/test/ral/types/file/target.rb +363 -0
  512. data/test/{types → ral/types}/filebucket.rb +15 -17
  513. data/test/{types → ral/types}/fileignoresource.rb +9 -15
  514. data/test/ral/types/filesources.rb +1046 -0
  515. data/test/ral/types/group.rb +169 -0
  516. data/test/ral/types/host.rb +155 -0
  517. data/test/ral/types/mount.rb +312 -0
  518. data/test/ral/types/package.rb +85 -0
  519. data/test/ral/types/parameter.rb +172 -0
  520. data/test/ral/types/port.rb +148 -0
  521. data/test/ral/types/property.rb +343 -0
  522. data/test/ral/types/resources.rb +221 -0
  523. data/test/{types → ral/types}/schedule.rb +34 -12
  524. data/test/ral/types/service.rb +37 -0
  525. data/test/{types → ral/types}/sshkey.rb +75 -65
  526. data/test/ral/types/tidy.rb +240 -0
  527. data/test/ral/types/user.rb +493 -0
  528. data/test/{types → ral/types}/yumrepo.rb +7 -11
  529. data/test/{types → ral/types}/zone.rb +45 -45
  530. data/test/tagging/tagging.rb +17 -26
  531. data/test/util/autoload.rb +130 -0
  532. data/test/util/classgen.rb +227 -0
  533. data/test/{other → util}/config.rb +373 -113
  534. data/test/util/execution.rb +34 -0
  535. data/test/util/features.rb +94 -0
  536. data/test/util/fileparsing.rb +677 -0
  537. data/test/{other → util}/filetype.rb +9 -12
  538. data/test/util/graph.rb +108 -0
  539. data/test/{other → util}/inifile.rb +24 -11
  540. data/test/util/loadedfile.rb +106 -0
  541. data/test/{other → util}/log.rb +96 -50
  542. data/test/{other → util}/metrics.rb +7 -17
  543. data/test/util/package.rb +27 -0
  544. data/test/util/pidlock.rb +126 -0
  545. data/test/util/posixtest.rb +173 -0
  546. data/test/util/storage.rb +123 -0
  547. data/test/util/subclass_loader.rb +100 -0
  548. data/test/util/utiltest.rb +368 -0
  549. metadata +449 -169
  550. data/examples/code/classing +0 -35
  551. data/examples/code/failers/badclassnoparam +0 -10
  552. data/examples/code/failers/badclassparam +0 -10
  553. data/examples/code/failers/badcompnoparam +0 -9
  554. data/examples/code/failers/badcompparam +0 -9
  555. data/examples/code/failers/badtypeparam +0 -3
  556. data/examples/code/failers/noobjectrvalue +0 -1
  557. data/examples/code/snippets/aliastest.pp +0 -16
  558. data/examples/code/snippets/argumentdefaults +0 -14
  559. data/examples/code/snippets/casestatement.pp +0 -58
  560. data/examples/code/snippets/classheirarchy.pp +0 -15
  561. data/examples/code/snippets/classincludes.pp +0 -17
  562. data/examples/code/snippets/classpathtest +0 -11
  563. data/examples/code/snippets/componentmetaparams.pp +0 -11
  564. data/examples/code/snippets/deepclassheirarchy.pp +0 -23
  565. data/examples/code/snippets/defineoverrides.pp +0 -17
  566. data/examples/code/snippets/dirchmod +0 -19
  567. data/examples/code/snippets/emptyclass.pp +0 -9
  568. data/examples/code/snippets/emptyexec.pp +0 -3
  569. data/examples/code/snippets/failmissingexecpath.pp +0 -13
  570. data/examples/code/snippets/falsevalues.pp +0 -3
  571. data/examples/code/snippets/filecreate +0 -11
  572. data/examples/code/snippets/implicititeration +0 -15
  573. data/examples/code/snippets/multipleinstances +0 -7
  574. data/examples/code/snippets/namevartest +0 -9
  575. data/examples/code/snippets/scopetest +0 -13
  576. data/examples/code/snippets/selectorvalues.pp +0 -42
  577. data/examples/code/snippets/simpledefaults +0 -5
  578. data/examples/code/snippets/simpleselector +0 -38
  579. data/examples/code/snippets/singleary.pp +0 -19
  580. data/examples/code/snippets/singlequote.pp +0 -11
  581. data/examples/code/snippets/singleselector.pp +0 -22
  582. data/examples/code/snippets/tag.pp +0 -9
  583. data/examples/code/snippets/tagged.pp +0 -35
  584. data/lib/puppet/client.rb +0 -177
  585. data/lib/puppet/client/ca.rb +0 -21
  586. data/lib/puppet/client/dipper.rb +0 -76
  587. data/lib/puppet/client/file.rb +0 -20
  588. data/lib/puppet/client/log.rb +0 -17
  589. data/lib/puppet/client/master.rb +0 -531
  590. data/lib/puppet/client/runner.rb +0 -17
  591. data/lib/puppet/client/status.rb +0 -7
  592. data/lib/puppet/event-loop.rb +0 -1
  593. data/lib/puppet/filetype.rb +0 -308
  594. data/lib/puppet/inifile.rb +0 -201
  595. data/lib/puppet/log.rb +0 -524
  596. data/lib/puppet/metric.rb +0 -132
  597. data/lib/puppet/networkclient.rb +0 -175
  598. data/lib/puppet/parsedfile.rb +0 -58
  599. data/lib/puppet/parser/ast/classdef.rb +0 -79
  600. data/lib/puppet/parser/ast/compdef.rb +0 -75
  601. data/lib/puppet/parser/ast/nodedef.rb +0 -73
  602. data/lib/puppet/parser/ast/objectdef.rb +0 -284
  603. data/lib/puppet/parser/ast/objectref.rb +0 -77
  604. data/lib/puppet/rails/database.rb +0 -40
  605. data/lib/puppet/rails/rails_object.rb +0 -42
  606. data/lib/puppet/rails/rails_parameter.rb +0 -5
  607. data/lib/puppet/server.rb +0 -196
  608. data/lib/puppet/server/authconfig.rb +0 -177
  609. data/lib/puppet/server/authstore.rb +0 -226
  610. data/lib/puppet/server/filebucket.rb +0 -155
  611. data/lib/puppet/server/pelement.rb +0 -188
  612. data/lib/puppet/server/report.rb +0 -184
  613. data/lib/puppet/server/rights.rb +0 -78
  614. data/lib/puppet/server/servlet.rb +0 -274
  615. data/lib/puppet/statechange.rb +0 -129
  616. data/lib/puppet/storage.rb +0 -98
  617. data/lib/puppet/type/nameservice.rb +0 -264
  618. data/lib/puppet/type/nameservice/netinfo.rb +0 -232
  619. data/lib/puppet/type/nameservice/objectadd.rb +0 -146
  620. data/lib/puppet/type/nameservice/posix.rb +0 -12
  621. data/lib/puppet/type/nameservice/pw.rb +0 -107
  622. data/lib/puppet/type/package/apple.rb +0 -41
  623. data/lib/puppet/type/package/apt.rb +0 -107
  624. data/lib/puppet/type/package/blastwave.rb +0 -136
  625. data/lib/puppet/type/package/darwinport.rb +0 -97
  626. data/lib/puppet/type/package/dpkg.rb +0 -113
  627. data/lib/puppet/type/package/freebsd.rb +0 -19
  628. data/lib/puppet/type/package/gem.rb +0 -119
  629. data/lib/puppet/type/package/openbsd.rb +0 -112
  630. data/lib/puppet/type/package/ports.rb +0 -103
  631. data/lib/puppet/type/package/rpm.rb +0 -121
  632. data/lib/puppet/type/package/sun.rb +0 -174
  633. data/lib/puppet/type/package/sunfreeware.rb +0 -7
  634. data/lib/puppet/type/package/yum.rb +0 -52
  635. data/lib/puppet/type/parsedtype/host.rb +0 -144
  636. data/lib/puppet/type/parsedtype/mount.rb +0 -271
  637. data/lib/puppet/type/parsedtype/port.rb +0 -261
  638. data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
  639. data/lib/puppet/type/service/base.rb +0 -12
  640. data/lib/puppet/type/service/debian.rb +0 -46
  641. data/lib/puppet/type/service/redhat.rb +0 -38
  642. data/lib/puppet/type/state.rb +0 -393
  643. data/lib/puppet/type/symlink.rb +0 -186
  644. data/test/client/master.rb +0 -207
  645. data/test/language/rails.rb +0 -105
  646. data/test/other/parsedfile.rb +0 -58
  647. data/test/other/storage.rb +0 -100
  648. data/test/puppet/utiltest.rb +0 -299
  649. data/test/puppettest.rb +0 -1170
  650. data/test/server/authconfig.rb +0 -56
  651. data/test/server/authstore.rb +0 -218
  652. data/test/server/master.rb +0 -201
  653. data/test/server/report.rb +0 -93
  654. data/test/server/rights.rb +0 -41
  655. data/test/server/server.rb +0 -152
  656. data/test/test +0 -61
  657. data/test/types/basic.rb +0 -117
  658. data/test/types/component.rb +0 -298
  659. data/test/types/cron.rb +0 -718
  660. data/test/types/file.rb +0 -1314
  661. data/test/types/filesources.rb +0 -590
  662. data/test/types/group.rb +0 -323
  663. data/test/types/host.rb +0 -186
  664. data/test/types/mount.rb +0 -294
  665. data/test/types/package.rb +0 -538
  666. data/test/types/parameter.rb +0 -107
  667. data/test/types/port.rb +0 -201
  668. data/test/types/query.rb +0 -101
  669. data/test/types/state.rb +0 -92
  670. data/test/types/symlink.rb +0 -120
  671. data/test/types/tidy.rb +0 -102
  672. data/test/types/type.rb +0 -469
  673. data/test/types/user.rb +0 -563
@@ -1,1170 +0,0 @@
1
- libdir = File.join(File.dirname(__FILE__), '../lib')
2
- unless $:.include?(libdir)
3
- $:.unshift libdir
4
- end
5
-
6
- require 'puppet'
7
- require 'test/unit'
8
-
9
- module TestPuppet
10
- include ObjectSpace
11
-
12
- def gcdebug(type)
13
- Puppet.warning "%s: %s" % [type, ObjectSpace.each_object(type) { |o| }]
14
- end
15
-
16
- def newcomp(*ary)
17
- name = nil
18
- if ary[0].is_a?(String)
19
- name = ary.shift
20
- else
21
- name = ary[0].name
22
- end
23
-
24
- comp = Puppet.type(:component).create(
25
- :name => name
26
- )
27
- ary.each { |item|
28
- comp.push item
29
- }
30
-
31
- return comp
32
- end
33
-
34
- def setup
35
- @memoryatstart = Puppet::Util.memory
36
- if defined? @@testcount
37
- @@testcount += 1
38
- else
39
- @@testcount = 0
40
- end
41
-
42
- @configpath = File.join(tmpdir,
43
- self.class.to_s + "configdir" + @@testcount.to_s + "/"
44
- )
45
-
46
- unless defined? $user and $group
47
- $user = nonrootuser().uid.to_s
48
- $group = nonrootgroup().gid.to_s
49
- end
50
- Puppet[:user] = $user
51
- Puppet[:group] = $group
52
-
53
- Puppet[:confdir] = @configpath
54
- Puppet[:vardir] = @configpath
55
-
56
- unless File.exists?(@configpath)
57
- Dir.mkdir(@configpath)
58
- end
59
-
60
- @@tmpfiles = [@configpath, tmpdir()]
61
- @@tmppids = []
62
-
63
- @@cleaners = []
64
-
65
- if $0 =~ /.+\.rb/ or Puppet[:debug]
66
- Puppet::Log.newdestination :console
67
- Puppet::Log.level = :debug
68
- #$VERBOSE = 1
69
- Puppet.info @method_name
70
- else
71
- Puppet::Log.close
72
- Puppet::Log.newdestination tempfile()
73
- Puppet[:httplog] = tempfile()
74
- end
75
-
76
- Puppet[:ignoreschedules] = true
77
- end
78
-
79
- def newobj(type, name, hash)
80
- transport = Puppet::TransObject.new(name, "file")
81
- transport[:path] = path
82
- transport[:ensure] = "file"
83
- assert_nothing_raised {
84
- file = transport.to_type
85
- }
86
- end
87
-
88
- def spin
89
- # Just disable spin, unless we really need it
90
- return
91
- # if Puppet[:debug]
92
- # return
93
- # end
94
- # @modes = %w{| / - \\}
95
- # unless defined? @mode
96
- # @mode = 0
97
- # end
98
- #
99
- # $stderr.print "%s" % @modes[@mode]
100
- # if @mode == @modes.length - 1
101
- # @mode = 0
102
- # else
103
- # @mode += 1
104
- # end
105
- # $stderr.flush
106
- end
107
-
108
- # stop any services that might be hanging around
109
- def stopservices
110
- if stype = Puppet::Type.type(:service)
111
- stype.each { |service|
112
- service[:ensure] = :stopped
113
- service.evaluate
114
- }
115
- end
116
- end
117
-
118
- def cleanup(&block)
119
- @@cleaners << block
120
- end
121
-
122
- def teardown
123
- stopservices
124
-
125
- @@cleaners.each { |cleaner| cleaner.call() }
126
-
127
- @@tmpfiles.each { |file|
128
- if FileTest.exists?(file)
129
- system("chmod -R 755 %s" % file)
130
- system("rm -rf %s" % file)
131
- end
132
- }
133
- @@tmpfiles.clear
134
-
135
- @@tmppids.each { |pid|
136
- %x{kill -INT #{pid} 2>/dev/null}
137
- }
138
-
139
- @@tmppids.clear
140
- Puppet::Type.allclear
141
- Puppet::Storage.clear
142
- Puppet::Rails.clear
143
- Puppet.clear
144
-
145
- @memoryatend = Puppet::Util.memory
146
- diff = @memoryatend - @memoryatstart
147
-
148
- if diff > 1000
149
- Puppet.info "%s#%s memory growth (%s to %s): %s" %
150
- [self.class, @method_name, @memoryatstart, @memoryatend, diff]
151
- end
152
-
153
- # reset all of the logs
154
- Puppet::Log.close
155
-
156
- # Just in case there are processes waiting to die...
157
- Process.waitall
158
- if File.stat("/dev/null").mode & 007777 != 0666
159
- File.open("/tmp/nullfailure", "w") { |f|
160
- f.puts self.class
161
- }
162
- exit(74)
163
- end
164
- end
165
-
166
- def tempfile
167
- if defined? @@tmpfilenum
168
- @@tmpfilenum += 1
169
- else
170
- @@tmpfilenum = 1
171
- end
172
-
173
- f = File.join(self.tmpdir(), self.class.to_s + "_" + @method_name +
174
- @@tmpfilenum.to_s)
175
- @@tmpfiles << f
176
- return f
177
- end
178
-
179
- def tstdir
180
- if defined? @@testdirnum
181
- @@testdirnum += 1
182
- else
183
- @@testdirnum = 1
184
- end
185
- d = File.join(self.tmpdir(), self.class.to_s + "_" + @method_name + @@testdirnum.to_s)
186
- @@tmpfiles << d
187
- return d
188
- end
189
-
190
- def tmpdir
191
- unless defined? @tmpdir and @tmpdir
192
- @tmpdir = case Facter["operatingsystem"].value
193
- when "Darwin": "/private/tmp"
194
- when "SunOS": "/var/tmp"
195
- else
196
- "/tmp"
197
- end
198
-
199
-
200
- @tmpdir = File.join(@tmpdir, "puppettesting")
201
-
202
- unless File.exists?(@tmpdir)
203
- FileUtils.mkdir_p(@tmpdir)
204
- File.chmod(01777, @tmpdir)
205
- end
206
- end
207
- @tmpdir
208
- end
209
-
210
- def assert_rollback_events(events, trans, msg = nil)
211
- run_events(:rollback, events, trans, msg)
212
- end
213
-
214
- def assert_events(events, *items)
215
- trans = nil
216
- comp = nil
217
- msg = nil
218
-
219
- unless events.is_a? Array
220
- raise Puppet::DevError, "Incorrect call of assert_events"
221
- end
222
- if items[-1].is_a? String
223
- msg = items.pop
224
- end
225
-
226
- remove_comp = false
227
- # They either passed a comp or a list of items.
228
- if items[0].is_a? Puppet.type(:component)
229
- comp = items.shift
230
- else
231
- comp = newcomp(items[0].name, *items)
232
- remove_comp = true
233
- end
234
- msg ||= comp.name
235
- assert_nothing_raised("Component %s failed" % [msg]) {
236
- trans = comp.evaluate
237
- }
238
-
239
- run_events(:evaluate, trans, events, msg)
240
-
241
- if remove_comp
242
- Puppet.type(:component).delete(comp)
243
- end
244
-
245
- return trans
246
- end
247
-
248
- # A simpler method that just applies what we have.
249
- def assert_apply(*objects)
250
- if objects[0].is_a?(Puppet.type(:component))
251
- comp = objects.shift
252
- unless objects.empty?
253
- objects.each { |o| comp.push o }
254
- end
255
- else
256
- comp = newcomp(*objects)
257
- end
258
- trans = nil
259
-
260
- assert_nothing_raised("Failed to create transaction") {
261
- trans = comp.evaluate
262
- }
263
-
264
- events = nil
265
- assert_nothing_raised("Failed to evaluate transaction") {
266
- events = trans.evaluate.collect { |e| e.event }
267
- }
268
- Puppet.type(:component).delete(comp)
269
- events
270
- end
271
-
272
- def run_events(type, trans, events, msg)
273
- case type
274
- when :evaluate, :rollback: # things are hunky-dory
275
- else
276
- raise Puppet::DevError, "Incorrect run_events type"
277
- end
278
-
279
- method = type
280
-
281
- newevents = nil
282
- assert_nothing_raised("Transaction %s %s failed" % [type, msg]) {
283
- newevents = trans.send(method).reject { |e| e.nil? }.collect { |e|
284
- e.event
285
- }
286
- }
287
-
288
- assert_equal(events, newevents, "Incorrect %s %s events" % [type, msg])
289
-
290
- return trans
291
- end
292
-
293
- def nonrootuser
294
- Etc.passwd { |user|
295
- if user.uid != Process.uid and user.uid > 0
296
- return user
297
- end
298
- }
299
- end
300
-
301
- def nonrootgroup
302
- Etc.group { |group|
303
- if group.gid != Process.gid and group.gid > 0
304
- return group
305
- end
306
- }
307
- end
308
-
309
- # If there are any fake data files, retrieve them
310
- def fakedata(dir)
311
- ary = [$puppetbase, "test"]
312
- ary += dir.split("/")
313
- dir = File.join(ary)
314
-
315
- unless FileTest.exists?(dir)
316
- raise Puppet::DevError, "No fakedata dir %s" % dir
317
- end
318
- files = Dir.entries(dir).reject { |f| f =~ /^\./ }.collect { |f|
319
- File.join(dir, f)
320
- }
321
-
322
- return files
323
- end
324
-
325
- def fakefile(name)
326
- ary = [$puppetbase, "test"]
327
- ary += name.split("/")
328
- file = File.join(ary)
329
- unless FileTest.exists?(file)
330
- raise Puppet::DevError, "No fakedata file %s" % file
331
- end
332
- return file
333
- end
334
-
335
- # wrap how to retrieve the masked mode
336
- def filemode(file)
337
- File.stat(file).mode & 007777
338
- end
339
-
340
- def memory
341
- Puppet::Util.memory
342
- end
343
- end
344
-
345
-
346
- module ServerTest
347
- include TestPuppet
348
- def setup
349
- super
350
-
351
- if defined? @@port
352
- @@port += 1
353
- else
354
- @@port = 20000
355
- end
356
- end
357
-
358
- # create a simple manifest that just creates a file
359
- def mktestmanifest
360
- file = File.join(Puppet[:confdir], "%ssite.pp" % (self.class.to_s + "test"))
361
- #@createdfile = File.join(tmpdir(), self.class.to_s + "manifesttesting" +
362
- # "_" + @method_name)
363
- @createdfile = tempfile()
364
-
365
- File.open(file, "w") { |f|
366
- f.puts "file { \"%s\": ensure => file, mode => 755 }\n" % @createdfile
367
- }
368
-
369
- @@tmpfiles << @createdfile
370
- @@tmpfiles << file
371
-
372
- return file
373
- end
374
-
375
- # create a server, forked into the background
376
- def mkserver(handlers = nil)
377
- # our default handlers
378
- unless handlers
379
- handlers = {
380
- :CA => {}, # so that certs autogenerate
381
- :Master => {
382
- :Manifest => mktestmanifest(),
383
- :UseNodes => false
384
- },
385
- }
386
- end
387
-
388
- # then create the actual server
389
- server = nil
390
- assert_nothing_raised {
391
- server = Puppet::Server.new(
392
- :Port => @@port,
393
- :Handlers => handlers
394
- )
395
- }
396
-
397
- # fork it
398
- spid = fork {
399
- trap(:INT) { server.shutdown }
400
- server.start
401
- }
402
-
403
- # and store its pid for killing
404
- @@tmppids << spid
405
-
406
- # give the server a chance to do its thing
407
- sleep 1
408
- return spid
409
- end
410
-
411
- end
412
-
413
- module ExeTest
414
- include ServerTest
415
-
416
- def setup
417
- super
418
- setbindir
419
- setlibdir
420
- end
421
-
422
- def bindir
423
- File.join($puppetbase, "bin")
424
- end
425
-
426
- def setbindir
427
- unless ENV["PATH"] =~ /puppet/
428
- ENV["PATH"] += ":" + bindir
429
- end
430
- end
431
-
432
- def setlibdir
433
- ENV["RUBYLIB"] = $:.find_all { |dir|
434
- dir =~ /puppet/ or dir =~ /\.\./
435
- }.join(":")
436
- end
437
-
438
- # Run a ruby command. This explicitly uses ruby to run stuff, since we
439
- # don't necessarily know where our ruby binary is, dernit.
440
- # Currently unused, because I couldn't get it to work.
441
- def rundaemon(*cmd)
442
- @ruby ||= %x{which ruby}.chomp
443
- cmd = cmd.unshift(@ruby).join(" ")
444
-
445
- out = nil
446
- Dir.chdir(bindir()) {
447
- out = %x{#{@ruby} #{cmd}}
448
- }
449
- return out
450
- end
451
-
452
- def startmasterd(args = "")
453
- output = nil
454
-
455
- manifest = mktestmanifest()
456
- args += " --manifest %s" % manifest
457
- args += " --confdir %s" % Puppet[:confdir]
458
- args += " --vardir %s" % Puppet[:vardir]
459
- args += " --masterport %s" % @@port
460
- args += " --user %s" % Process.uid
461
- args += " --group %s" % Process.gid
462
- args += " --nonodes"
463
- args += " --autosign true"
464
-
465
- #if Puppet[:debug]
466
- # args += " --debug"
467
- #end
468
-
469
- cmd = "puppetmasterd %s" % args
470
-
471
-
472
- assert_nothing_raised {
473
- output = %x{#{cmd}}.chomp
474
- }
475
- assert_equal("", output, "Puppetmasterd produced output %s" % output)
476
- assert($? == 0, "Puppetmasterd exit status was %s" % $?)
477
- sleep(1)
478
-
479
- cleanup do
480
- stopmasterd
481
- sleep(1)
482
- end
483
-
484
- return manifest
485
- end
486
-
487
- def stopmasterd(running = true)
488
- ps = Facter["ps"].value || "ps -ef"
489
-
490
- pidfile = File.join(Puppet[:vardir], "run", "puppetmasterd.pid")
491
-
492
- pid = nil
493
- if FileTest.exists?(pidfile)
494
- pid = File.read(pidfile).chomp.to_i
495
- File.unlink(pidfile)
496
- end
497
-
498
- return unless running
499
- if running or pid
500
- runningpid = nil
501
- %x{#{ps}}.chomp.split(/\n/).each { |line|
502
- if line =~ /ruby.+puppetmasterd/
503
- next if line =~ /\.rb/ # skip the test script itself
504
- next if line =~ /^puppet/ # skip masters running as 'puppet'
505
- ary = line.sub(/^\s+/, '').split(/\s+/)
506
- pid = ary[1].to_i
507
- end
508
- }
509
-
510
- end
511
-
512
- # we default to mandating that it's running, but teardown
513
- # doesn't require that
514
- if pid
515
- if pid == $$
516
- raise Puppet::Error, "Tried to kill own pid"
517
- end
518
- begin
519
- Process.kill(:INT, pid)
520
- rescue
521
- # ignore it
522
- end
523
- end
524
- end
525
-
526
- def teardown
527
- stopmasterd(false)
528
- super
529
- end
530
- end
531
-
532
- module FileTesting
533
- include TestPuppet
534
- def cycle(comp)
535
- trans = nil
536
- assert_nothing_raised {
537
- trans = comp.evaluate
538
- }
539
- assert_nothing_raised {
540
- trans.evaluate
541
- }
542
- end
543
-
544
- def randlist(list)
545
- num = rand(4)
546
- if num == 0
547
- num = 1
548
- end
549
- set = []
550
-
551
- ret = []
552
- num.times { |index|
553
- item = list[rand(list.length)]
554
- if set.include?(item)
555
- redo
556
- end
557
-
558
- ret.push item
559
- }
560
- return ret
561
- end
562
-
563
- def mkranddirsandfiles(dirs = nil,files = nil,depth = 3)
564
- if depth < 0
565
- return
566
- end
567
-
568
- unless dirs
569
- dirs = %w{This Is A Set Of Directories}
570
- end
571
-
572
- unless files
573
- files = %w{and this is a set of files}
574
- end
575
-
576
- tfiles = randlist(files)
577
- tdirs = randlist(dirs)
578
-
579
- tfiles.each { |file|
580
- File.open(file, "w") { |of|
581
- 4.times {
582
- of.puts rand(100)
583
- }
584
- }
585
- }
586
-
587
- tdirs.each { |dir|
588
- # it shouldn't already exist, but...
589
- unless FileTest.exists?(dir)
590
- Dir.mkdir(dir)
591
- FileUtils.cd(dir) {
592
- mkranddirsandfiles(dirs,files,depth - 1)
593
- }
594
- end
595
- }
596
- end
597
-
598
- def file_list(dir)
599
- list = nil
600
- FileUtils.cd(dir) {
601
- list = %x{find . 2>/dev/null}.chomp.split(/\n/)
602
- }
603
- return list
604
- end
605
-
606
- def assert_trees_equal(fromdir,todir)
607
- assert(FileTest.directory?(fromdir))
608
- assert(FileTest.directory?(todir))
609
-
610
- # verify the file list is the same
611
- fromlist = nil
612
- FileUtils.cd(fromdir) {
613
- fromlist = %x{find . 2>/dev/null}.chomp.split(/\n/).reject { |file|
614
- ! FileTest.readable?(file)
615
- }.sort
616
- }
617
- tolist = file_list(todir).sort
618
-
619
- fromlist.sort.zip(tolist.sort).each { |a,b|
620
- assert_equal(a, b,
621
- "Fromfile %s with length %s does not match tofile %s with length %s" %
622
- [a, fromlist.length, b, tolist.length])
623
- }
624
- #assert_equal(fromlist,tolist)
625
-
626
- # and then do some verification that the files are actually set up
627
- # the same
628
- checked = 0
629
- fromlist.each_with_index { |file,i|
630
- fromfile = File.join(fromdir,file)
631
- tofile = File.join(todir,file)
632
- fromstat = File.stat(fromfile)
633
- tostat = File.stat(tofile)
634
- [:ftype,:gid,:mode,:uid].each { |method|
635
- assert_equal(
636
- fromstat.send(method),
637
- tostat.send(method)
638
- )
639
-
640
- next if fromstat.ftype == "directory"
641
- if checked < 10 and i % 3 == 0
642
- from = File.open(fromfile) { |f| f.read }
643
- to = File.open(tofile) { |f| f.read }
644
-
645
- assert_equal(from,to)
646
- checked += 1
647
- end
648
- }
649
- }
650
- end
651
-
652
- def random_files(dir)
653
- checked = 0
654
- list = file_list(dir)
655
- list.reverse.each_with_index { |file,i|
656
- path = File.join(dir,file)
657
- stat = File.stat(dir)
658
- if checked < 10 and (i % 3) == 2
659
- unless yield path
660
- next
661
- end
662
- checked += 1
663
- end
664
- }
665
- end
666
-
667
- def delete_random_files(dir)
668
- deleted = []
669
- random_files(dir) { |file|
670
- stat = File.stat(file)
671
- begin
672
- if stat.ftype == "directory"
673
- false
674
- else
675
- deleted << file
676
- File.unlink(file)
677
- true
678
- end
679
- rescue => detail
680
- # we probably won't be able to open our own secured files
681
- puts detail
682
- false
683
- end
684
- }
685
-
686
- return deleted
687
- end
688
-
689
- def add_random_files(dir)
690
- added = []
691
- random_files(dir) { |file|
692
- stat = File.stat(file)
693
- begin
694
- if stat.ftype == "directory"
695
- name = File.join(file,"file" + rand(100).to_s)
696
- File.open(name, "w") { |f|
697
- f.puts rand(10)
698
- }
699
- added << name
700
- else
701
- false
702
- end
703
- rescue => detail
704
- # we probably won't be able to open our own secured files
705
- puts detail
706
- false
707
- end
708
- }
709
- return added
710
- end
711
-
712
- def modify_random_files(dir)
713
- modded = []
714
- random_files(dir) { |file|
715
- stat = File.stat(file)
716
- begin
717
- if stat.ftype == "directory"
718
- false
719
- else
720
- File.open(file, "w") { |f|
721
- f.puts rand(10)
722
- }
723
- modded << name
724
- true
725
- end
726
- rescue => detail
727
- # we probably won't be able to open our own secured files
728
- puts detail
729
- false
730
- end
731
- }
732
- return modded
733
- end
734
-
735
- def readonly_random_files(dir)
736
- modded = []
737
- random_files(dir) { |file|
738
- stat = File.stat(file)
739
- begin
740
- if stat.ftype == "directory"
741
- File.new(file).chmod(0111)
742
- else
743
- File.new(file).chmod(0000)
744
- end
745
- modded << file
746
- rescue => detail
747
- # we probably won't be able to open our own secured files
748
- puts detail
749
- false
750
- end
751
- }
752
- return modded
753
- end
754
-
755
- def conffile
756
- File.join($puppetbase,"examples/root/etc/configfile")
757
- end
758
- end
759
-
760
- module ParserTesting
761
- include TestPuppet
762
- AST = Puppet::Parser::AST
763
-
764
- def astarray(*args)
765
- AST::ASTArray.new(
766
- :children => args
767
- )
768
- end
769
-
770
- def classobj(name, args = {})
771
- args[:type] ||= nameobj(name)
772
- args[:code] ||= AST::ASTArray.new(
773
- :file => __FILE__,
774
- :line => __LINE__,
775
- :children => [
776
- varobj("%svar" % name, "%svalue" % name),
777
- fileobj("/%s" % name)
778
- ]
779
- )
780
- assert_nothing_raised("Could not create class %s" % name) {
781
- return AST::ClassDef.new(args)
782
- }
783
- end
784
-
785
- def tagobj(*names)
786
- args = {}
787
- newnames = names.collect do |name|
788
- if name.is_a? AST
789
- name
790
- else
791
- nameobj(name)
792
- end
793
- end
794
- args[:type] = astarray(*newnames)
795
- assert_nothing_raised("Could not create tag %s" % names.inspect) {
796
- return AST::Tag.new(args)
797
- }
798
- end
799
-
800
- def compobj(name, args = {})
801
- args[:file] ||= tempfile()
802
- args[:line] ||= rand(100)
803
- args[:type] ||= nameobj(name)
804
- args[:args] ||= AST::ASTArray.new(
805
- :file => tempfile(),
806
- :line => rand(100),
807
- :children => []
808
- )
809
- args[:code] ||= AST::ASTArray.new(
810
- :file => tempfile(),
811
- :line => rand(100),
812
- :children => [
813
- varobj("%svar" % name, "%svalue" % name),
814
- fileobj("/%s" % name)
815
- ]
816
- )
817
- assert_nothing_raised("Could not create compdef %s" % name) {
818
- return AST::CompDef.new(args)
819
- }
820
- end
821
-
822
- def objectdef(type, name, params)
823
- assert_nothing_raised("Could not create %s %s" % [type, name]) {
824
- return AST::ObjectDef.new(
825
- :file => __FILE__,
826
- :line => __LINE__,
827
- :name => stringobj(name),
828
- :type => nameobj(type),
829
- :params => objectinst(params)
830
- )
831
- }
832
- end
833
-
834
- def fileobj(path, hash = {"owner" => "root"})
835
- assert_nothing_raised("Could not create file %s" % path) {
836
- return objectdef("file", path, hash)
837
- # return AST::ObjectDef.new(
838
- # :file => tempfile(),
839
- # :line => rand(100),
840
- # :name => stringobj(path),
841
- # :type => nameobj("file"),
842
- # :params => objectinst(hash)
843
- # )
844
- }
845
- end
846
-
847
- def nameobj(name)
848
- assert_nothing_raised("Could not create name %s" % name) {
849
- return AST::Name.new(
850
- :file => tempfile(),
851
- :line => rand(100),
852
- :value => name
853
- )
854
- }
855
- end
856
-
857
- def typeobj(name)
858
- assert_nothing_raised("Could not create type %s" % name) {
859
- return AST::Type.new(
860
- :file => tempfile(),
861
- :line => rand(100),
862
- :value => name
863
- )
864
- }
865
- end
866
-
867
- def nodedef(name)
868
- assert_nothing_raised("Could not create node %s" % name) {
869
- return AST::NodeDef.new(
870
- :file => tempfile(),
871
- :line => rand(100),
872
- :names => nameobj(name),
873
- :code => AST::ASTArray.new(
874
- :children => [
875
- varobj("%svar" % name, "%svalue" % name),
876
- fileobj("/%s" % name)
877
- ]
878
- )
879
- )
880
- }
881
- end
882
-
883
- def objectinst(hash)
884
- assert_nothing_raised("Could not create object instance") {
885
- params = hash.collect { |param, value|
886
- objectparam(param, value)
887
- }
888
- return AST::ObjectInst.new(
889
- :file => tempfile(),
890
- :line => rand(100),
891
- :children => params
892
- )
893
- }
894
- end
895
-
896
- def objectparam(param, value)
897
- # Allow them to pass non-strings in
898
- if value.is_a?(String)
899
- value = stringobj(value)
900
- end
901
- assert_nothing_raised("Could not create param %s" % param) {
902
- return AST::ObjectParam.new(
903
- :file => tempfile(),
904
- :line => rand(100),
905
- :param => nameobj(param),
906
- :value => value
907
- )
908
- }
909
- end
910
-
911
- def stringobj(value)
912
- AST::String.new(
913
- :file => tempfile(),
914
- :line => rand(100),
915
- :value => value
916
- )
917
- end
918
-
919
- def varobj(name, value)
920
- unless value.is_a? AST
921
- value = stringobj(value)
922
- end
923
- assert_nothing_raised("Could not create %s code" % name) {
924
- return AST::VarDef.new(
925
- :file => tempfile(),
926
- :line => rand(100),
927
- :name => nameobj(name),
928
- :value => value
929
- )
930
- }
931
- end
932
-
933
- def varref(name)
934
- assert_nothing_raised("Could not create %s variable" % name) {
935
- return AST::Variable.new(
936
- :file => __FILE__,
937
- :line => __LINE__,
938
- :value => name
939
- )
940
- }
941
- end
942
-
943
- def argobj(name, value)
944
- assert_nothing_raised("Could not create %s compargument" % name) {
945
- return AST::CompArgument.new(
946
- :children => [nameobj(name), stringobj(value)]
947
- )
948
- }
949
- end
950
-
951
- def defaultobj(type, params)
952
- pary = []
953
- params.each { |p,v|
954
- pary << AST::ObjectParam.new(
955
- :file => __FILE__,
956
- :line => __LINE__,
957
- :param => nameobj(p),
958
- :value => stringobj(v)
959
- )
960
- }
961
- past = AST::ASTArray.new(
962
- :file => __FILE__,
963
- :line => __LINE__,
964
- :children => pary
965
- )
966
-
967
- assert_nothing_raised("Could not create defaults for %s" % type) {
968
- return AST::TypeDefaults.new(
969
- :file => __FILE__,
970
- :line => __LINE__,
971
- :type => typeobj(type),
972
- :params => past
973
- )
974
- }
975
- end
976
-
977
- def taggedobj(name, ftype = :statement)
978
- functionobj("tagged", name, ftype)
979
- end
980
-
981
- def functionobj(function, name, ftype = :statement)
982
- func = nil
983
- assert_nothing_raised do
984
- func = Puppet::Parser::AST::Function.new(
985
- :name => function,
986
- :ftype => ftype,
987
- :arguments => AST::ASTArray.new(
988
- :children => [nameobj(name)]
989
- )
990
- )
991
- end
992
-
993
- return func
994
- end
995
-
996
- # This assumes no nodes
997
- def assert_creates(manifest, *files)
998
- interp = nil
999
- assert_nothing_raised {
1000
- interp = Puppet::Parser::Interpreter.new(
1001
- :Manifest => manifest,
1002
- :UseNodes => false
1003
- )
1004
- }
1005
-
1006
- config = nil
1007
- assert_nothing_raised {
1008
- config = interp.run(Facter["hostname"].value, {})
1009
- }
1010
-
1011
- comp = nil
1012
- assert_nothing_raised {
1013
- comp = config.to_type
1014
- }
1015
-
1016
- assert_apply(comp)
1017
- end
1018
-
1019
- def mk_transobject(file = "/etc/passwd")
1020
- obj = nil
1021
- assert_nothing_raised {
1022
- obj = Puppet::TransObject.new("file", file)
1023
- obj["owner"] = "root"
1024
- obj["mode"] = "644"
1025
- }
1026
-
1027
- return obj
1028
- end
1029
-
1030
- def mk_transbucket(*objects)
1031
- bucket = nil
1032
- assert_nothing_raised {
1033
- bucket = Puppet::TransBucket.new
1034
- bucket.name = "yayname"
1035
- bucket.type = "yaytype"
1036
- }
1037
-
1038
- objects.each { |o| bucket << o }
1039
-
1040
- return bucket
1041
- end
1042
-
1043
- # Make a tree of objects, yielding if desired
1044
- def mk_transtree(depth = 4, width = 2)
1045
- top = nil
1046
- assert_nothing_raised {
1047
- top = Puppet::TransBucket.new
1048
- top.name = "top"
1049
- top.type = "bucket"
1050
- }
1051
-
1052
- bucket = top
1053
-
1054
- file = tempfile()
1055
- depth.times do |i|
1056
- objects = []
1057
- width.times do |j|
1058
- path = tempfile + i.to_s
1059
- obj = Puppet::TransObject.new("file", path)
1060
- obj["owner"] = "root"
1061
- obj["mode"] = "644"
1062
-
1063
- # Yield, if they want
1064
- if block_given?
1065
- yield(obj, i, j)
1066
- end
1067
-
1068
- objects << obj
1069
- end
1070
-
1071
- newbucket = mk_transbucket(*objects)
1072
-
1073
- bucket.push newbucket
1074
- bucket = newbucket
1075
- end
1076
-
1077
- return top
1078
- end
1079
-
1080
- # Take a list of AST objects, evaluate them, and return the results
1081
- def assert_evaluate(children)
1082
- top = nil
1083
- assert_nothing_raised("Could not create top object") {
1084
- top = AST::ASTArray.new(
1085
- :children => children
1086
- )
1087
- }
1088
-
1089
- trans = nil
1090
- scope = nil
1091
- assert_nothing_raised {
1092
- scope = Puppet::Parser::Scope.new()
1093
- trans = scope.evaluate(:ast => top)
1094
- }
1095
-
1096
- return trans
1097
- end
1098
- end
1099
-
1100
- class PuppetTestSuite
1101
- attr_accessor :subdir
1102
-
1103
- def self.basedir
1104
- unless defined? @basedir
1105
- @basedir = File.join($puppetbase, "test")
1106
- end
1107
- @basedir
1108
- end
1109
-
1110
- def self.list
1111
- Dir.entries(self.basedir).find_all { |file|
1112
- path = File.join(@basedir, file)
1113
- # Data is for storing test data
1114
- FileTest.directory?(path) and file !~ /^\./ and file != "data"
1115
- }
1116
- end
1117
-
1118
- def initialize(name)
1119
- path = File.join(self.class.basedir, name)
1120
- if FileTest.directory?(path)
1121
- # load each of the files
1122
- Dir.entries(path).collect { |file|
1123
- File.join(path,file)
1124
- }.find_all { |file|
1125
- FileTest.file?(file) and file =~ /\.rb$/
1126
- }.sort { |a,b|
1127
- # in the order they were modified, so the last modified files
1128
- # are loaded and thus displayed last
1129
- File.stat(b) <=> File.stat(a)
1130
- }.each { |file|
1131
- require file
1132
- }
1133
- elsif FileTest.file?(path) && path =~ /\.rb$/
1134
- require path
1135
- else
1136
- puts "TestSuites are directories or files containing test cases"
1137
- puts "no such directory: %s" % path
1138
- exit(65)
1139
- end
1140
- end
1141
- end
1142
-
1143
- # a list of files that we can parse for testing
1144
- def textfiles
1145
- textdir = File.join($puppetbase,"examples","code", "snippets")
1146
- Dir.entries(textdir).reject { |f|
1147
- f =~ /^\./ or f =~ /fail/
1148
- }.each { |f|
1149
- yield File.join(textdir, f)
1150
- }
1151
- end
1152
-
1153
- def failers
1154
- textdir = File.join($puppetbase,"examples","code", "failers")
1155
- # only parse this one file now
1156
- files = Dir.entries(textdir).reject { |file|
1157
- file =~ %r{\.swp}
1158
- }.reject { |file|
1159
- file =~ %r{\.disabled}
1160
- }.collect { |file|
1161
- File.join(textdir,file)
1162
- }.find_all { |file|
1163
- FileTest.file?(file)
1164
- }.sort.each { |file|
1165
- Puppet.debug "Processing %s" % file
1166
- yield file
1167
- }
1168
- end
1169
-
1170
- # $Id: puppettest.rb 1422 2006-07-22 03:32:56Z luke $