puppet 0.18.4 → 0.22.4

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

Potentially problematic release.


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

Files changed (673) hide show
  1. data/CHANGELOG +288 -0
  2. data/README +2 -2
  3. data/Rakefile +78 -5
  4. data/bin/puppet +28 -36
  5. data/bin/puppetca +81 -38
  6. data/bin/puppetd +65 -62
  7. data/bin/puppetdoc +409 -140
  8. data/bin/puppetmasterd +59 -47
  9. data/bin/puppetrun +38 -23
  10. data/conf/freebsd/puppetd +26 -0
  11. data/conf/freebsd/puppetmasterd +26 -0
  12. data/conf/gentoo/conf.d/puppet +5 -0
  13. data/conf/gentoo/conf.d/puppetmaster +12 -0
  14. data/conf/gentoo/init.d/puppet +38 -0
  15. data/conf/gentoo/init.d/puppetmaster +50 -0
  16. data/conf/gentoo/puppet/fileserver.conf +12 -0
  17. data/conf/gentoo/puppet/puppetca.conf +29 -0
  18. data/conf/gentoo/puppet/puppetd.conf +29 -0
  19. data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
  20. data/conf/redhat/client.init +10 -5
  21. data/conf/redhat/client.sysconfig +1 -1
  22. data/conf/redhat/fileserver.conf +2 -2
  23. data/conf/redhat/logrotate +1 -1
  24. data/conf/redhat/no-lockdir.patch +13 -0
  25. data/conf/redhat/puppet.spec +65 -8
  26. data/conf/redhat/puppetd.conf +0 -4
  27. data/conf/redhat/server.init +3 -6
  28. data/conf/solaris/pkginfo +1 -1
  29. data/conf/solaris/smf/svc-puppetd +2 -2
  30. data/conf/suse/client.init +142 -0
  31. data/conf/suse/puppet.spec +221 -0
  32. data/conf/suse/server.init +162 -0
  33. data/examples/code/mac_automount.pp +16 -0
  34. data/examples/root/bin/sleeper +3 -5
  35. data/examples/root/etc/init.d/sleeper +8 -2
  36. data/examples/root/etc/puppet/fileserver.conf +12 -2
  37. data/examples/root/etc/puppet/namespaceauth.conf +20 -0
  38. data/examples/root/etc/puppet/puppetd.conf +4 -0
  39. data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
  40. data/examples/root/etc/puppet/tagmail.conf +1 -0
  41. data/ext/emacs/puppet-mode.el +46 -1
  42. data/ext/logcheck/puppet +15 -0
  43. data/ext/module_puppet +15 -23
  44. data/ext/vim/puppet.vim +4 -2
  45. data/install.rb +2 -1
  46. data/lib/puppet.rb +76 -207
  47. data/lib/puppet/configuration.rb +331 -0
  48. data/lib/puppet/daemon.rb +63 -246
  49. data/lib/puppet/dsl.rb +371 -0
  50. data/lib/puppet/element.rb +8 -26
  51. data/lib/puppet/error.rb +54 -0
  52. data/lib/puppet/event.rb +8 -243
  53. data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
  54. data/lib/puppet/external/event-loop.rb +1 -0
  55. data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
  56. data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
  57. data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
  58. data/lib/puppet/external/gratr.rb +33 -0
  59. data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
  60. data/lib/puppet/external/gratr/base.rb +34 -0
  61. data/lib/puppet/external/gratr/biconnected.rb +116 -0
  62. data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
  63. data/lib/puppet/external/gratr/common.rb +73 -0
  64. data/lib/puppet/external/gratr/comparability.rb +92 -0
  65. data/lib/puppet/external/gratr/digraph.rb +116 -0
  66. data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
  67. data/lib/puppet/external/gratr/dot.rb +90 -0
  68. data/lib/puppet/external/gratr/edge.rb +145 -0
  69. data/lib/puppet/external/gratr/graph.rb +303 -0
  70. data/lib/puppet/external/gratr/graph_api.rb +83 -0
  71. data/lib/puppet/external/gratr/import.rb +44 -0
  72. data/lib/puppet/external/gratr/labels.rb +90 -0
  73. data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
  74. data/lib/puppet/external/gratr/rdot.rb +327 -0
  75. data/lib/puppet/external/gratr/search.rb +409 -0
  76. data/lib/puppet/external/gratr/strong_components.rb +127 -0
  77. data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
  78. data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
  79. data/lib/puppet/feature/base.rb +20 -0
  80. data/lib/puppet/feature/rails.rb +52 -0
  81. data/lib/puppet/metatype/attributes.rb +719 -0
  82. data/lib/puppet/metatype/closure.rb +111 -0
  83. data/lib/puppet/metatype/container.rb +94 -0
  84. data/lib/puppet/metatype/evaluation.rb +118 -0
  85. data/lib/puppet/metatype/instances.rb +261 -0
  86. data/lib/puppet/metatype/manager.rb +169 -0
  87. data/lib/puppet/metatype/metaparams.rb +409 -0
  88. data/lib/puppet/metatype/providers.rb +260 -0
  89. data/lib/puppet/metatype/relationships.rb +116 -0
  90. data/lib/puppet/metatype/schedules.rb +39 -0
  91. data/lib/puppet/metatype/tags.rb +39 -0
  92. data/lib/puppet/modules.rb +113 -0
  93. data/lib/puppet/network/authconfig.rb +168 -0
  94. data/lib/puppet/network/authorization.rb +84 -0
  95. data/lib/puppet/network/authstore.rb +293 -0
  96. data/lib/puppet/network/client.rb +187 -0
  97. data/lib/puppet/network/client/ca.rb +56 -0
  98. data/lib/puppet/network/client/dipper.rb +81 -0
  99. data/lib/puppet/network/client/file.rb +7 -0
  100. data/lib/puppet/network/client/logger.rb +6 -0
  101. data/lib/puppet/network/client/master.rb +644 -0
  102. data/lib/puppet/{client → network/client}/proxy.rb +3 -3
  103. data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
  104. data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
  105. data/lib/puppet/network/client/runner.rb +13 -0
  106. data/lib/puppet/network/client/status.rb +5 -0
  107. data/lib/puppet/network/client_request.rb +32 -0
  108. data/lib/puppet/network/handler.rb +33 -0
  109. data/lib/puppet/{server → network/handler}/ca.rb +5 -6
  110. data/lib/puppet/network/handler/filebucket.rb +180 -0
  111. data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
  112. data/lib/puppet/{server → network/handler}/logger.rb +3 -5
  113. data/lib/puppet/{server → network/handler}/master.rb +42 -8
  114. data/lib/puppet/network/handler/report.rb +158 -0
  115. data/lib/puppet/network/handler/resource.rb +190 -0
  116. data/lib/puppet/{server → network/handler}/runner.rb +17 -18
  117. data/lib/puppet/network/handler/status.rb +13 -0
  118. data/lib/puppet/network/rights.rb +74 -0
  119. data/lib/puppet/network/server.rb +5 -0
  120. data/lib/puppet/network/server/mongrel.rb +138 -0
  121. data/lib/puppet/network/server/webrick.rb +153 -0
  122. data/lib/puppet/network/xmlrpc/client.rb +129 -0
  123. data/lib/puppet/network/xmlrpc/processor.rb +91 -0
  124. data/lib/puppet/network/xmlrpc/server.rb +20 -0
  125. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
  126. data/lib/puppet/parameter.rb +390 -346
  127. data/lib/puppet/parser/ast.rb +116 -147
  128. data/lib/puppet/parser/ast/astarray.rb +17 -33
  129. data/lib/puppet/parser/ast/branch.rb +2 -0
  130. data/lib/puppet/parser/ast/caseopt.rb +7 -12
  131. data/lib/puppet/parser/ast/casestatement.rb +23 -32
  132. data/lib/puppet/parser/ast/collection.rb +19 -80
  133. data/lib/puppet/parser/ast/collexpr.rb +81 -0
  134. data/lib/puppet/parser/ast/component.rb +160 -89
  135. data/lib/puppet/parser/ast/else.rb +30 -0
  136. data/lib/puppet/parser/ast/function.rb +9 -2
  137. data/lib/puppet/parser/ast/hostclass.rb +47 -131
  138. data/lib/puppet/parser/ast/ifstatement.rb +43 -0
  139. data/lib/puppet/parser/ast/leaf.rb +10 -21
  140. data/lib/puppet/parser/ast/node.rb +32 -79
  141. data/lib/puppet/parser/ast/resourcedef.rb +222 -0
  142. data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
  143. data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
  144. data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
  145. data/lib/puppet/parser/ast/resourceref.rb +44 -0
  146. data/lib/puppet/parser/ast/selector.rb +16 -8
  147. data/lib/puppet/parser/ast/tag.rb +3 -1
  148. data/lib/puppet/parser/ast/vardef.rb +8 -12
  149. data/lib/puppet/parser/collector.rb +181 -0
  150. data/lib/puppet/parser/functions.rb +191 -36
  151. data/lib/puppet/parser/interpreter.rb +802 -380
  152. data/lib/puppet/parser/lexer.rb +86 -19
  153. data/lib/puppet/parser/parser.rb +1123 -960
  154. data/lib/puppet/parser/resource.rb +353 -0
  155. data/lib/puppet/parser/resource/param.rb +57 -0
  156. data/lib/puppet/parser/resource/reference.rb +71 -0
  157. data/lib/puppet/parser/scope.rb +573 -1000
  158. data/lib/puppet/parser/templatewrapper.rb +54 -0
  159. data/lib/puppet/pgraph.rb +208 -0
  160. data/lib/puppet/propertychange.rb +143 -0
  161. data/lib/puppet/provider.rb +302 -0
  162. data/lib/puppet/provider/cron/crontab.rb +187 -0
  163. data/lib/puppet/provider/group/groupadd.rb +29 -0
  164. data/lib/puppet/provider/group/netinfo.rb +12 -0
  165. data/lib/puppet/provider/group/pw.rb +31 -0
  166. data/lib/puppet/provider/host/netinfo.rb +18 -0
  167. data/lib/puppet/provider/host/parsed.rb +73 -0
  168. data/lib/puppet/provider/mount.rb +57 -0
  169. data/lib/puppet/provider/mount/netinfo.rb +38 -0
  170. data/lib/puppet/provider/mount/parsed.rb +37 -0
  171. data/lib/puppet/provider/nameservice.rb +344 -0
  172. data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
  173. data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
  174. data/lib/puppet/provider/nameservice/pw.rb +22 -0
  175. data/lib/puppet/provider/package/apple.rb +53 -0
  176. data/lib/puppet/provider/package/apt.rb +119 -0
  177. data/lib/puppet/provider/package/aptitude.rb +30 -0
  178. data/lib/puppet/provider/package/aptrpm.rb +79 -0
  179. data/lib/puppet/provider/package/blastwave.rb +114 -0
  180. data/lib/puppet/provider/package/darwinport.rb +88 -0
  181. data/lib/puppet/provider/package/dpkg.rb +109 -0
  182. data/lib/puppet/provider/package/freebsd.rb +43 -0
  183. data/lib/puppet/provider/package/gem.rb +104 -0
  184. data/lib/puppet/provider/package/openbsd.rb +93 -0
  185. data/lib/puppet/provider/package/pkgdmg.rb +119 -0
  186. data/lib/puppet/provider/package/portage.rb +112 -0
  187. data/lib/puppet/provider/package/ports.rb +94 -0
  188. data/lib/puppet/provider/package/rpm.rb +125 -0
  189. data/lib/puppet/provider/package/rug.rb +53 -0
  190. data/lib/puppet/provider/package/sun.rb +168 -0
  191. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  192. data/lib/puppet/provider/package/up2date.rb +45 -0
  193. data/lib/puppet/provider/package/yum.rb +54 -0
  194. data/lib/puppet/provider/parsedfile.rb +342 -0
  195. data/lib/puppet/provider/port/parsed.rb +174 -0
  196. data/lib/puppet/provider/service/base.rb +136 -0
  197. data/lib/puppet/provider/service/debian.rb +32 -0
  198. data/lib/puppet/provider/service/gentoo.rb +49 -0
  199. data/lib/puppet/{type → provider}/service/init.rb +42 -40
  200. data/lib/puppet/provider/service/redhat.rb +59 -0
  201. data/lib/puppet/{type → provider}/service/smf.rb +24 -13
  202. data/lib/puppet/provider/sshkey/parsed.rb +36 -0
  203. data/lib/puppet/provider/user/netinfo.rb +106 -0
  204. data/lib/puppet/provider/user/pw.rb +41 -0
  205. data/lib/puppet/provider/user/useradd.rb +67 -0
  206. data/lib/puppet/provider/zone/solaris.rb +208 -0
  207. data/lib/puppet/rails.rb +102 -66
  208. data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
  209. data/lib/puppet/rails/database/schema.rb +89 -0
  210. data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
  211. data/lib/puppet/rails/external/tagging/init.rb +5 -0
  212. data/lib/puppet/rails/external/tagging/tag.rb +50 -0
  213. data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
  214. data/lib/puppet/rails/fact_name.rb +7 -0
  215. data/lib/puppet/rails/fact_value.rb +5 -0
  216. data/lib/puppet/rails/host.rb +95 -46
  217. data/lib/puppet/rails/param_name.rb +28 -0
  218. data/lib/puppet/rails/param_value.rb +5 -0
  219. data/lib/puppet/rails/puppet_class.rb +9 -0
  220. data/lib/puppet/rails/resource.rb +95 -0
  221. data/lib/puppet/rails/source_file.rb +5 -0
  222. data/lib/puppet/relationship.rb +63 -0
  223. data/lib/puppet/reports/log.rb +14 -0
  224. data/lib/puppet/reports/rrdgraph.rb +114 -10
  225. data/lib/puppet/reports/store.rb +64 -0
  226. data/lib/puppet/reports/tagmail.rb +144 -71
  227. data/lib/puppet/sslcertificates.rb +38 -5
  228. data/lib/puppet/sslcertificates/ca.rb +142 -37
  229. data/lib/puppet/sslcertificates/certificate.rb +3 -3
  230. data/lib/puppet/sslcertificates/inventory.rb +53 -0
  231. data/lib/puppet/sslcertificates/support.rb +128 -0
  232. data/lib/puppet/transaction.rb +568 -189
  233. data/lib/puppet/transaction/report.rb +14 -3
  234. data/lib/puppet/transportable.rb +18 -10
  235. data/lib/puppet/type.rb +279 -2299
  236. data/lib/puppet/type/component.rb +63 -63
  237. data/lib/puppet/type/cron.rb +294 -710
  238. data/lib/puppet/type/exec.rb +185 -129
  239. data/lib/puppet/type/group.rb +38 -89
  240. data/lib/puppet/type/host.rb +110 -0
  241. data/lib/puppet/type/mount.rb +189 -0
  242. data/lib/puppet/type/notify.rb +47 -0
  243. data/lib/puppet/type/package.rb +129 -257
  244. data/lib/puppet/type/parsedtype.rb +172 -297
  245. data/lib/puppet/type/pfile.rb +540 -319
  246. data/lib/puppet/type/pfile/checksum.rb +103 -76
  247. data/lib/puppet/type/pfile/content.rb +16 -10
  248. data/lib/puppet/type/pfile/ensure.rb +52 -34
  249. data/lib/puppet/type/pfile/group.rb +25 -18
  250. data/lib/puppet/type/pfile/mode.rb +7 -4
  251. data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
  252. data/lib/puppet/type/pfile/source.rb +119 -124
  253. data/lib/puppet/type/pfile/target.rb +29 -45
  254. data/lib/puppet/type/pfile/type.rb +2 -2
  255. data/lib/puppet/type/pfilebucket.rb +18 -14
  256. data/lib/puppet/type/port.rb +121 -0
  257. data/lib/puppet/type/property.rb +530 -0
  258. data/lib/puppet/type/resources.rb +150 -0
  259. data/lib/puppet/type/schedule.rb +38 -22
  260. data/lib/puppet/type/service.rb +70 -326
  261. data/lib/puppet/type/sshkey.rb +76 -0
  262. data/lib/puppet/type/tidy.rb +197 -97
  263. data/lib/puppet/type/user.rb +107 -183
  264. data/lib/puppet/type/yumrepo.rb +53 -34
  265. data/lib/puppet/type/zone.rb +55 -208
  266. data/lib/puppet/util.rb +239 -201
  267. data/lib/puppet/util/autoload.rb +107 -0
  268. data/lib/puppet/util/classgen.rb +208 -0
  269. data/lib/puppet/{config.rb → util/config.rb} +102 -54
  270. data/lib/puppet/util/docs.rb +104 -0
  271. data/lib/puppet/util/errors.rb +55 -0
  272. data/lib/puppet/util/execution.rb +22 -0
  273. data/lib/puppet/util/feature.rb +76 -0
  274. data/lib/puppet/util/fileparsing.rb +380 -0
  275. data/lib/puppet/util/filetype.rb +300 -0
  276. data/lib/puppet/util/graph.rb +39 -0
  277. data/lib/puppet/util/inifile.rb +209 -0
  278. data/lib/puppet/util/loadedfile.rb +71 -0
  279. data/lib/puppet/util/log.rb +549 -0
  280. data/lib/puppet/util/logging.rb +20 -0
  281. data/lib/puppet/util/metaid.rb +22 -0
  282. data/lib/puppet/util/methodhelper.rb +37 -0
  283. data/lib/puppet/util/metric.rb +160 -0
  284. data/lib/puppet/util/package.rb +31 -0
  285. data/lib/puppet/util/pidlock.rb +68 -0
  286. data/lib/puppet/util/plist.rb +24 -0
  287. data/lib/puppet/util/plist/generator.rb +226 -0
  288. data/lib/puppet/util/plist/parser.rb +227 -0
  289. data/lib/puppet/util/posix.rb +87 -0
  290. data/lib/puppet/util/provider_features.rb +170 -0
  291. data/lib/puppet/util/rails/collection_merger.rb +42 -0
  292. data/lib/puppet/util/storage.rb +103 -0
  293. data/lib/puppet/util/subclass_loader.rb +83 -0
  294. data/lib/puppet/util/suidmanager.rb +86 -0
  295. data/lib/puppet/util/variables.rb +39 -0
  296. data/lib/puppet/util/warnings.rb +15 -0
  297. data/test/Rakefile +97 -0
  298. data/test/certmgr/ca.rb +81 -0
  299. data/test/certmgr/certmgr.rb +77 -50
  300. data/test/certmgr/inventory.rb +79 -0
  301. data/test/certmgr/support.rb +81 -0
  302. data/test/executables/filebucket.rb +49 -0
  303. data/test/executables/puppetbin.rb +28 -12
  304. data/test/executables/puppetca.rb +75 -54
  305. data/test/executables/puppetd.rb +10 -13
  306. data/test/executables/puppetmasterd.rb +12 -17
  307. data/test/executables/puppetmodule.rb +18 -17
  308. data/test/language/ast.rb +242 -798
  309. data/test/language/ast/casestatement.rb +104 -0
  310. data/test/language/ast/component.rb +133 -0
  311. data/test/language/ast/hostclass.rb +162 -0
  312. data/test/language/ast/selector.rb +62 -0
  313. data/test/language/ast/variable.rb +31 -0
  314. data/test/language/collector.rb +369 -0
  315. data/test/language/functions.rb +305 -18
  316. data/test/language/interpreter.rb +894 -125
  317. data/test/language/lexer.rb +98 -12
  318. data/test/language/node.rb +37 -53
  319. data/test/language/parser.rb +455 -148
  320. data/test/language/resource.rb +535 -0
  321. data/test/language/scope.rb +451 -561
  322. data/test/language/snippets.rb +101 -111
  323. data/test/language/transportable.rb +6 -8
  324. data/test/lib/mocha.rb +19 -0
  325. data/test/lib/mocha/any_instance_method.rb +35 -0
  326. data/test/lib/mocha/auto_verify.rb +113 -0
  327. data/test/lib/mocha/central.rb +35 -0
  328. data/test/lib/mocha/class_method.rb +62 -0
  329. data/test/lib/mocha/expectation.rb +295 -0
  330. data/test/lib/mocha/expectation_error.rb +6 -0
  331. data/test/lib/mocha/infinite_range.rb +27 -0
  332. data/test/lib/mocha/inspect.rb +37 -0
  333. data/test/lib/mocha/instance_method.rb +8 -0
  334. data/test/lib/mocha/metaclass.rb +7 -0
  335. data/test/lib/mocha/mock.rb +20 -0
  336. data/test/lib/mocha/mock_methods.rb +122 -0
  337. data/test/lib/mocha/object.rb +100 -0
  338. data/test/lib/mocha/pretty_parameters.rb +28 -0
  339. data/test/lib/mocha/setup_and_teardown.rb +23 -0
  340. data/test/lib/mocha/standalone.rb +30 -0
  341. data/test/lib/mocha/test_case_adapter.rb +49 -0
  342. data/test/lib/mocha_standalone.rb +2 -0
  343. data/test/lib/puppettest.rb +294 -0
  344. data/test/lib/puppettest/certificates.rb +61 -0
  345. data/test/lib/puppettest/exetest.rb +123 -0
  346. data/test/lib/puppettest/fakes.rb +194 -0
  347. data/test/lib/puppettest/fileparsing.rb +33 -0
  348. data/test/lib/puppettest/filetesting.rb +231 -0
  349. data/test/lib/puppettest/graph.rb +41 -0
  350. data/test/lib/puppettest/parsertesting.rb +392 -0
  351. data/test/lib/puppettest/railstesting.rb +56 -0
  352. data/test/lib/puppettest/reporttesting.rb +19 -0
  353. data/test/lib/puppettest/resourcetesting.rb +73 -0
  354. data/test/lib/puppettest/servertest.rb +72 -0
  355. data/test/lib/puppettest/support.rb +8 -0
  356. data/test/lib/puppettest/support/assertions.rb +101 -0
  357. data/test/lib/puppettest/support/helpers.rb +23 -0
  358. data/test/lib/puppettest/support/resources.rb +37 -0
  359. data/test/lib/puppettest/support/utils.rb +160 -0
  360. data/test/lib/puppettest/testcase.rb +48 -0
  361. data/test/lib/rake/puppet_test_loader.rb +17 -0
  362. data/test/lib/rake/puppet_testtask.rb +17 -0
  363. data/test/lib/spec.rb +8 -0
  364. data/test/lib/spec/callback.rb +11 -0
  365. data/test/lib/spec/callback/callback_container.rb +60 -0
  366. data/test/lib/spec/callback/extensions/module.rb +24 -0
  367. data/test/lib/spec/callback/extensions/object.rb +37 -0
  368. data/test/lib/spec/deprecated.rb +3 -0
  369. data/test/lib/spec/expectations.rb +59 -0
  370. data/test/lib/spec/expectations/differs/default.rb +62 -0
  371. data/test/lib/spec/expectations/errors.rb +6 -0
  372. data/test/lib/spec/expectations/extensions.rb +3 -0
  373. data/test/lib/spec/expectations/extensions/object.rb +109 -0
  374. data/test/lib/spec/expectations/extensions/proc.rb +57 -0
  375. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  376. data/test/lib/spec/expectations/handler.rb +47 -0
  377. data/test/lib/spec/expectations/should.rb +5 -0
  378. data/test/lib/spec/expectations/should/base.rb +64 -0
  379. data/test/lib/spec/expectations/should/change.rb +69 -0
  380. data/test/lib/spec/expectations/should/have.rb +128 -0
  381. data/test/lib/spec/expectations/should/not.rb +74 -0
  382. data/test/lib/spec/expectations/should/should.rb +81 -0
  383. data/test/lib/spec/expectations/sugar.rb +47 -0
  384. data/test/lib/spec/matchers.rb +160 -0
  385. data/test/lib/spec/matchers/be.rb +161 -0
  386. data/test/lib/spec/matchers/be_close.rb +37 -0
  387. data/test/lib/spec/matchers/change.rb +120 -0
  388. data/test/lib/spec/matchers/eql.rb +43 -0
  389. data/test/lib/spec/matchers/equal.rb +43 -0
  390. data/test/lib/spec/matchers/has.rb +44 -0
  391. data/test/lib/spec/matchers/have.rb +140 -0
  392. data/test/lib/spec/matchers/include.rb +50 -0
  393. data/test/lib/spec/matchers/match.rb +41 -0
  394. data/test/lib/spec/matchers/raise_error.rb +100 -0
  395. data/test/lib/spec/matchers/respond_to.rb +35 -0
  396. data/test/lib/spec/matchers/satisfy.rb +47 -0
  397. data/test/lib/spec/matchers/throw_symbol.rb +75 -0
  398. data/test/lib/spec/mocks.rb +232 -0
  399. data/test/lib/spec/mocks/argument_expectation.rb +132 -0
  400. data/test/lib/spec/mocks/error_generator.rb +85 -0
  401. data/test/lib/spec/mocks/errors.rb +10 -0
  402. data/test/lib/spec/mocks/extensions/object.rb +3 -0
  403. data/test/lib/spec/mocks/message_expectation.rb +231 -0
  404. data/test/lib/spec/mocks/methods.rb +40 -0
  405. data/test/lib/spec/mocks/mock.rb +26 -0
  406. data/test/lib/spec/mocks/mock_handler.rb +166 -0
  407. data/test/lib/spec/mocks/order_group.rb +29 -0
  408. data/test/lib/spec/rake/spectask.rb +173 -0
  409. data/test/lib/spec/rake/verify_rcov.rb +47 -0
  410. data/test/lib/spec/runner.rb +132 -0
  411. data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
  412. data/test/lib/spec/runner/command_line.rb +34 -0
  413. data/test/lib/spec/runner/context.rb +154 -0
  414. data/test/lib/spec/runner/context_eval.rb +142 -0
  415. data/test/lib/spec/runner/context_runner.rb +55 -0
  416. data/test/lib/spec/runner/drb_command_line.rb +21 -0
  417. data/test/lib/spec/runner/execution_context.rb +17 -0
  418. data/test/lib/spec/runner/extensions/kernel.rb +17 -0
  419. data/test/lib/spec/runner/extensions/object.rb +32 -0
  420. data/test/lib/spec/runner/formatter.rb +5 -0
  421. data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
  422. data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
  423. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
  424. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
  425. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
  426. data/test/lib/spec/runner/heckle_runner.rb +71 -0
  427. data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
  428. data/test/lib/spec/runner/option_parser.rb +224 -0
  429. data/test/lib/spec/runner/reporter.rb +105 -0
  430. data/test/lib/spec/runner/spec_matcher.rb +25 -0
  431. data/test/lib/spec/runner/spec_parser.rb +41 -0
  432. data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
  433. data/test/lib/spec/runner/specification.rb +114 -0
  434. data/test/lib/spec/translator.rb +87 -0
  435. data/test/lib/spec/version.rb +30 -0
  436. data/test/lib/stubba.rb +2 -0
  437. data/test/network/authconfig.rb +72 -0
  438. data/test/network/authorization.rb +138 -0
  439. data/test/network/authstore.rb +450 -0
  440. data/test/network/client/ca.rb +38 -0
  441. data/test/{client → network/client}/client.rb +107 -24
  442. data/test/network/client/dipper.rb +35 -0
  443. data/test/network/client/master.rb +627 -0
  444. data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
  445. data/test/network/client_request.rb +39 -0
  446. data/test/network/daemon.rb +71 -0
  447. data/test/{server → network/handler}/bucket.rb +103 -27
  448. data/test/{server → network/handler}/ca.rb +14 -19
  449. data/test/{server → network/handler}/fileserver.rb +443 -68
  450. data/test/network/handler/handler.rb +64 -0
  451. data/test/{server → network/handler}/logger.rb +26 -26
  452. data/test/network/handler/master.rb +352 -0
  453. data/test/network/handler/report.rb +185 -0
  454. data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
  455. data/test/{server → network/handler}/runner.rb +17 -16
  456. data/test/network/rights.rb +38 -0
  457. data/test/network/server/webrick.rb +140 -0
  458. data/test/network/xmlrpc/client.rb +68 -0
  459. data/test/network/xmlrpc/processor.rb +80 -0
  460. data/test/network/xmlrpc/server.rb +28 -0
  461. data/test/network/xmlrpc/webrick_servlet.rb +26 -0
  462. data/test/other/dsl.rb +218 -0
  463. data/test/other/events.rb +22 -15
  464. data/test/other/overrides.rb +9 -14
  465. data/test/other/pgraph.rb +289 -0
  466. data/test/other/propertychange.rb +142 -0
  467. data/test/other/provider.rb +162 -0
  468. data/test/other/puppet.rb +63 -10
  469. data/test/other/relationship.rb +74 -0
  470. data/test/other/relationships.rb +199 -123
  471. data/test/other/report.rb +152 -23
  472. data/test/other/transactions.rb +824 -78
  473. data/test/puppet/conffiles.rb +16 -11
  474. data/test/puppet/defaults.rb +7 -10
  475. data/test/puppet/{error.rb → errortest.rb} +5 -8
  476. data/test/puppet/modules.rb +58 -0
  477. data/test/puppet/tc_suidmanager.rb +107 -0
  478. data/test/rails/host.rb +177 -0
  479. data/test/rails/rails.rb +27 -0
  480. data/test/rails/railsparameter.rb +62 -0
  481. data/test/rails/railsresource.rb +100 -0
  482. data/test/ral/manager/attributes.rb +296 -0
  483. data/test/ral/manager/manager.rb +55 -0
  484. data/test/ral/manager/provider.rb +54 -0
  485. data/test/ral/manager/type.rb +837 -0
  486. data/test/ral/providers/cron/crontab.rb +346 -0
  487. data/test/ral/providers/group.rb +252 -0
  488. data/test/ral/providers/host/netinfo.rb +58 -0
  489. data/test/ral/providers/host/parsed.rb +226 -0
  490. data/test/ral/providers/mount/netinfo.rb +80 -0
  491. data/test/ral/providers/mount/parsed.rb +223 -0
  492. data/test/ral/providers/nameservice.rb +33 -0
  493. data/test/ral/providers/package.rb +253 -0
  494. data/test/ral/providers/package/apt.rb +89 -0
  495. data/test/ral/providers/package/aptitude.rb +69 -0
  496. data/test/ral/providers/package/aptrpm.rb +89 -0
  497. data/test/ral/providers/package/dpkg.rb +64 -0
  498. data/test/ral/providers/parsedfile.rb +668 -0
  499. data/test/ral/providers/parsedport.rb +233 -0
  500. data/test/ral/providers/provider.rb +423 -0
  501. data/test/{types → ral/providers}/service.rb +20 -121
  502. data/test/ral/providers/service/base.rb +75 -0
  503. data/test/ral/providers/sshkey/parsed.rb +111 -0
  504. data/test/ral/providers/user.rb +567 -0
  505. data/test/ral/providers/user/useradd.rb +250 -0
  506. data/test/ral/types/basic.rb +90 -0
  507. data/test/ral/types/component.rb +113 -0
  508. data/test/ral/types/cron.rb +480 -0
  509. data/test/{types → ral/types}/exec.rb +278 -82
  510. data/test/ral/types/file.rb +1799 -0
  511. data/test/ral/types/file/target.rb +363 -0
  512. data/test/{types → ral/types}/filebucket.rb +15 -17
  513. data/test/{types → ral/types}/fileignoresource.rb +9 -15
  514. data/test/ral/types/filesources.rb +1046 -0
  515. data/test/ral/types/group.rb +169 -0
  516. data/test/ral/types/host.rb +155 -0
  517. data/test/ral/types/mount.rb +312 -0
  518. data/test/ral/types/package.rb +85 -0
  519. data/test/ral/types/parameter.rb +172 -0
  520. data/test/ral/types/port.rb +148 -0
  521. data/test/ral/types/property.rb +343 -0
  522. data/test/ral/types/resources.rb +221 -0
  523. data/test/{types → ral/types}/schedule.rb +34 -12
  524. data/test/ral/types/service.rb +37 -0
  525. data/test/{types → ral/types}/sshkey.rb +75 -65
  526. data/test/ral/types/tidy.rb +240 -0
  527. data/test/ral/types/user.rb +493 -0
  528. data/test/{types → ral/types}/yumrepo.rb +7 -11
  529. data/test/{types → ral/types}/zone.rb +45 -45
  530. data/test/tagging/tagging.rb +17 -26
  531. data/test/util/autoload.rb +130 -0
  532. data/test/util/classgen.rb +227 -0
  533. data/test/{other → util}/config.rb +373 -113
  534. data/test/util/execution.rb +34 -0
  535. data/test/util/features.rb +94 -0
  536. data/test/util/fileparsing.rb +677 -0
  537. data/test/{other → util}/filetype.rb +9 -12
  538. data/test/util/graph.rb +108 -0
  539. data/test/{other → util}/inifile.rb +24 -11
  540. data/test/util/loadedfile.rb +106 -0
  541. data/test/{other → util}/log.rb +96 -50
  542. data/test/{other → util}/metrics.rb +7 -17
  543. data/test/util/package.rb +27 -0
  544. data/test/util/pidlock.rb +126 -0
  545. data/test/util/posixtest.rb +173 -0
  546. data/test/util/storage.rb +123 -0
  547. data/test/util/subclass_loader.rb +100 -0
  548. data/test/util/utiltest.rb +368 -0
  549. metadata +449 -169
  550. data/examples/code/classing +0 -35
  551. data/examples/code/failers/badclassnoparam +0 -10
  552. data/examples/code/failers/badclassparam +0 -10
  553. data/examples/code/failers/badcompnoparam +0 -9
  554. data/examples/code/failers/badcompparam +0 -9
  555. data/examples/code/failers/badtypeparam +0 -3
  556. data/examples/code/failers/noobjectrvalue +0 -1
  557. data/examples/code/snippets/aliastest.pp +0 -16
  558. data/examples/code/snippets/argumentdefaults +0 -14
  559. data/examples/code/snippets/casestatement.pp +0 -58
  560. data/examples/code/snippets/classheirarchy.pp +0 -15
  561. data/examples/code/snippets/classincludes.pp +0 -17
  562. data/examples/code/snippets/classpathtest +0 -11
  563. data/examples/code/snippets/componentmetaparams.pp +0 -11
  564. data/examples/code/snippets/deepclassheirarchy.pp +0 -23
  565. data/examples/code/snippets/defineoverrides.pp +0 -17
  566. data/examples/code/snippets/dirchmod +0 -19
  567. data/examples/code/snippets/emptyclass.pp +0 -9
  568. data/examples/code/snippets/emptyexec.pp +0 -3
  569. data/examples/code/snippets/failmissingexecpath.pp +0 -13
  570. data/examples/code/snippets/falsevalues.pp +0 -3
  571. data/examples/code/snippets/filecreate +0 -11
  572. data/examples/code/snippets/implicititeration +0 -15
  573. data/examples/code/snippets/multipleinstances +0 -7
  574. data/examples/code/snippets/namevartest +0 -9
  575. data/examples/code/snippets/scopetest +0 -13
  576. data/examples/code/snippets/selectorvalues.pp +0 -42
  577. data/examples/code/snippets/simpledefaults +0 -5
  578. data/examples/code/snippets/simpleselector +0 -38
  579. data/examples/code/snippets/singleary.pp +0 -19
  580. data/examples/code/snippets/singlequote.pp +0 -11
  581. data/examples/code/snippets/singleselector.pp +0 -22
  582. data/examples/code/snippets/tag.pp +0 -9
  583. data/examples/code/snippets/tagged.pp +0 -35
  584. data/lib/puppet/client.rb +0 -177
  585. data/lib/puppet/client/ca.rb +0 -21
  586. data/lib/puppet/client/dipper.rb +0 -76
  587. data/lib/puppet/client/file.rb +0 -20
  588. data/lib/puppet/client/log.rb +0 -17
  589. data/lib/puppet/client/master.rb +0 -531
  590. data/lib/puppet/client/runner.rb +0 -17
  591. data/lib/puppet/client/status.rb +0 -7
  592. data/lib/puppet/event-loop.rb +0 -1
  593. data/lib/puppet/filetype.rb +0 -308
  594. data/lib/puppet/inifile.rb +0 -201
  595. data/lib/puppet/log.rb +0 -524
  596. data/lib/puppet/metric.rb +0 -132
  597. data/lib/puppet/networkclient.rb +0 -175
  598. data/lib/puppet/parsedfile.rb +0 -58
  599. data/lib/puppet/parser/ast/classdef.rb +0 -79
  600. data/lib/puppet/parser/ast/compdef.rb +0 -75
  601. data/lib/puppet/parser/ast/nodedef.rb +0 -73
  602. data/lib/puppet/parser/ast/objectdef.rb +0 -284
  603. data/lib/puppet/parser/ast/objectref.rb +0 -77
  604. data/lib/puppet/rails/database.rb +0 -40
  605. data/lib/puppet/rails/rails_object.rb +0 -42
  606. data/lib/puppet/rails/rails_parameter.rb +0 -5
  607. data/lib/puppet/server.rb +0 -196
  608. data/lib/puppet/server/authconfig.rb +0 -177
  609. data/lib/puppet/server/authstore.rb +0 -226
  610. data/lib/puppet/server/filebucket.rb +0 -155
  611. data/lib/puppet/server/pelement.rb +0 -188
  612. data/lib/puppet/server/report.rb +0 -184
  613. data/lib/puppet/server/rights.rb +0 -78
  614. data/lib/puppet/server/servlet.rb +0 -274
  615. data/lib/puppet/statechange.rb +0 -129
  616. data/lib/puppet/storage.rb +0 -98
  617. data/lib/puppet/type/nameservice.rb +0 -264
  618. data/lib/puppet/type/nameservice/netinfo.rb +0 -232
  619. data/lib/puppet/type/nameservice/objectadd.rb +0 -146
  620. data/lib/puppet/type/nameservice/posix.rb +0 -12
  621. data/lib/puppet/type/nameservice/pw.rb +0 -107
  622. data/lib/puppet/type/package/apple.rb +0 -41
  623. data/lib/puppet/type/package/apt.rb +0 -107
  624. data/lib/puppet/type/package/blastwave.rb +0 -136
  625. data/lib/puppet/type/package/darwinport.rb +0 -97
  626. data/lib/puppet/type/package/dpkg.rb +0 -113
  627. data/lib/puppet/type/package/freebsd.rb +0 -19
  628. data/lib/puppet/type/package/gem.rb +0 -119
  629. data/lib/puppet/type/package/openbsd.rb +0 -112
  630. data/lib/puppet/type/package/ports.rb +0 -103
  631. data/lib/puppet/type/package/rpm.rb +0 -121
  632. data/lib/puppet/type/package/sun.rb +0 -174
  633. data/lib/puppet/type/package/sunfreeware.rb +0 -7
  634. data/lib/puppet/type/package/yum.rb +0 -52
  635. data/lib/puppet/type/parsedtype/host.rb +0 -144
  636. data/lib/puppet/type/parsedtype/mount.rb +0 -271
  637. data/lib/puppet/type/parsedtype/port.rb +0 -261
  638. data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
  639. data/lib/puppet/type/service/base.rb +0 -12
  640. data/lib/puppet/type/service/debian.rb +0 -46
  641. data/lib/puppet/type/service/redhat.rb +0 -38
  642. data/lib/puppet/type/state.rb +0 -393
  643. data/lib/puppet/type/symlink.rb +0 -186
  644. data/test/client/master.rb +0 -207
  645. data/test/language/rails.rb +0 -105
  646. data/test/other/parsedfile.rb +0 -58
  647. data/test/other/storage.rb +0 -100
  648. data/test/puppet/utiltest.rb +0 -299
  649. data/test/puppettest.rb +0 -1170
  650. data/test/server/authconfig.rb +0 -56
  651. data/test/server/authstore.rb +0 -218
  652. data/test/server/master.rb +0 -201
  653. data/test/server/report.rb +0 -93
  654. data/test/server/rights.rb +0 -41
  655. data/test/server/server.rb +0 -152
  656. data/test/test +0 -61
  657. data/test/types/basic.rb +0 -117
  658. data/test/types/component.rb +0 -298
  659. data/test/types/cron.rb +0 -718
  660. data/test/types/file.rb +0 -1314
  661. data/test/types/filesources.rb +0 -590
  662. data/test/types/group.rb +0 -323
  663. data/test/types/host.rb +0 -186
  664. data/test/types/mount.rb +0 -294
  665. data/test/types/package.rb +0 -538
  666. data/test/types/parameter.rb +0 -107
  667. data/test/types/port.rb +0 -201
  668. data/test/types/query.rb +0 -101
  669. data/test/types/state.rb +0 -92
  670. data/test/types/symlink.rb +0 -120
  671. data/test/types/tidy.rb +0 -102
  672. data/test/types/type.rb +0 -469
  673. data/test/types/user.rb +0 -563
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke A. Kanies on 2007-0419.
4
+ # Copyright (c) 2006. All rights reserved.
5
+
6
+ $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
7
+
8
+ require 'puppettest'
9
+ require 'puppettest/parsertesting'
10
+
11
+ class TestVariable < Test::Unit::TestCase
12
+ include PuppetTest
13
+ include PuppetTest::ParserTesting
14
+ AST = Puppet::Parser::AST
15
+
16
+ def setup
17
+ super
18
+ @interp = mkinterp
19
+ @scope = mkscope :interp => @interp
20
+ @name = "myvar"
21
+ @var = AST::Variable.new(:value => @name)
22
+ end
23
+
24
+ def test_evaluate
25
+ assert_equal("", @var.evaluate(:scope => @scope), "did not return empty string on unset var")
26
+ @scope.setvar(@name, "something")
27
+ assert_equal("something", @var.evaluate(:scope => @scope), "incorrect variable value")
28
+ end
29
+ end
30
+
31
+ # $Id: variable.rb 2393 2007-04-19 18:34:03Z luke $
@@ -0,0 +1,369 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppet/rails'
6
+ require 'puppettest'
7
+ require 'puppettest/parsertesting'
8
+ require 'puppettest/resourcetesting'
9
+ require 'puppettest/railstesting'
10
+
11
+ class TestCollector < Test::Unit::TestCase
12
+ include PuppetTest
13
+ include PuppetTest::ParserTesting
14
+ include PuppetTest::ResourceTesting
15
+ include PuppetTest::RailsTesting
16
+ Parser = Puppet::Parser
17
+ AST = Parser::AST
18
+
19
+ def setup
20
+ super
21
+ Puppet[:trace] = false
22
+ @interp, @scope, @source = mkclassframing
23
+ end
24
+
25
+ # Test just collecting a specific resource. This is used by the 'realize'
26
+ # function, and it's much faster than iterating over all of the resources.
27
+ def test_collect_resource
28
+ # Make a collector
29
+ coll = nil
30
+ assert_nothing_raised do
31
+ coll = Puppet::Parser::Collector.new(@scope, "file", nil, nil, :virtual)
32
+ end
33
+
34
+ # Now set the resource in the collector
35
+ assert_nothing_raised do
36
+ coll.resources = ["File[/tmp/virtual1]", "File[/tmp/virtual3]"]
37
+ end
38
+ @scope.newcollection(coll)
39
+
40
+ # Evaluate the collector and make sure it doesn't fail with no resources
41
+ # found yet
42
+ assert_nothing_raised("Resource collection with no results failed") do
43
+ assert_equal(false, coll.evaluate)
44
+ end
45
+
46
+ # Make a couple of virtual resources
47
+ one = mkresource(:type => "file", :title => "/tmp/virtual1",
48
+ :virtual => true, :params => {:owner => "root"})
49
+ two = mkresource(:type => "file", :title => "/tmp/virtual2",
50
+ :virtual => true, :params => {:owner => "root"})
51
+ @scope.setresource one
52
+ @scope.setresource two
53
+
54
+ # Now run the collector again and make sure it finds our resource
55
+ assert_nothing_raised do
56
+ assert_equal([one], coll.evaluate, "did not find resource")
57
+ end
58
+
59
+ # And make sure the resource is no longer virtual
60
+ assert(! one.virtual?,
61
+ "Resource is still virtual")
62
+
63
+ # But the other still is
64
+ assert(two.virtual?,
65
+ "Resource got realized")
66
+
67
+ # Make sure that the collection is still there
68
+ assert(@scope.collections.include?(coll), "collection was deleted too soon")
69
+
70
+ # Now add our third resource
71
+ three = mkresource(:type => "file", :title => "/tmp/virtual3",
72
+ :virtual => true, :params => {:owner => "root"})
73
+ @scope.setresource three
74
+
75
+ # Run the collection
76
+ assert_nothing_raised do
77
+ assert_equal([three], coll.evaluate, "did not find resource")
78
+ end
79
+ assert(! three.virtual?, "three is still virtual")
80
+
81
+ # And make sure that the collection got deleted from the scope's list
82
+ assert(@scope.collections.empty?, "collection was not deleted")
83
+ end
84
+
85
+ def test_virtual
86
+ # Make a virtual resource
87
+ virtual = mkresource(:type => "file", :title => "/tmp/virtual",
88
+ :virtual => true, :params => {:owner => "root"})
89
+ @scope.setresource virtual
90
+
91
+ # And a non-virtual
92
+ real = mkresource(:type => "file", :title => "/tmp/real",
93
+ :params => {:owner => "root"})
94
+ @scope.setresource real
95
+
96
+ # Now make a collector
97
+ coll = nil
98
+
99
+ # Make a fake query
100
+ code = proc do |res|
101
+ true
102
+ end
103
+ assert_nothing_raised do
104
+ coll = Puppet::Parser::Collector.new(@scope, "file", nil, code, :virtual)
105
+ end
106
+
107
+ # Set it in our scope
108
+ @scope.newcollection(coll)
109
+
110
+ # Make sure it's in the collections
111
+ assert(@scope.collections.include?(coll), "collection was not added")
112
+
113
+ # And try to collect the virtual resources.
114
+ ret = nil
115
+ assert_nothing_raised do
116
+ ret = coll.collect_virtual
117
+ end
118
+
119
+ assert_equal([virtual], ret)
120
+
121
+ # Now make sure evaluate does the right thing.
122
+ assert_nothing_raised do
123
+ ret = coll.evaluate
124
+ end
125
+
126
+ # And make sure our virtual object is no longer virtual
127
+ assert(! virtual.virtual?, "Virtual object did not get realized")
128
+
129
+ # Now make a new collector of a different type and make sure it
130
+ # finds nothing.
131
+ assert_nothing_raised do
132
+ coll = Puppet::Parser::Collector.new(@scope, "exec", nil, nil, :virtual)
133
+ end
134
+
135
+ # Remark this as virtual
136
+ virtual.virtual = true
137
+
138
+ assert_nothing_raised do
139
+ ret = coll.evaluate
140
+ end
141
+
142
+ assert_equal(false, ret)
143
+ end
144
+
145
+ if Puppet.features.rails?
146
+ def test_collect_exported
147
+ railsinit
148
+
149
+ # Set a hostname
150
+ @scope.host = Facter.value(:hostname)
151
+
152
+ # make an exported resource
153
+ exported = mkresource(:type => "file", :title => "/tmp/exported",
154
+ :exported => true, :params => {:owner => "root"})
155
+ @scope.setresource exported
156
+
157
+ assert(exported.exported?, "Object was not marked exported")
158
+ assert(exported.virtual?, "Object was not marked virtual")
159
+
160
+ # And a non-exported
161
+ real = mkresource(:type => "file", :title => "/tmp/real",
162
+ :params => {:owner => "root"})
163
+ @scope.setresource real
164
+
165
+ # Now make a collector
166
+ coll = nil
167
+ assert_nothing_raised do
168
+ coll = Puppet::Parser::Collector.new(@scope, "file", nil, nil, :exported)
169
+ end
170
+
171
+ # Set it in our scope
172
+ @scope.newcollection(coll)
173
+
174
+ # Make sure it's in the collections
175
+ assert_equal([coll], @scope.collections)
176
+
177
+ # And try to collect the virtual resources.
178
+ ret = nil
179
+ assert_nothing_raised do
180
+ ret = coll.collect_exported
181
+ end
182
+
183
+ assert_equal([exported], ret)
184
+
185
+ # Now make sure evaluate does the right thing.
186
+ assert_nothing_raised do
187
+ ret = coll.evaluate
188
+ end
189
+
190
+ # Make sure that the collection does not find the resource on the
191
+ # next run.
192
+ ret = nil
193
+ assert_nothing_raised do
194
+ ret = coll.collect_exported
195
+ end
196
+
197
+ assert(ret.empty?, "Exported resource was collected on the second run")
198
+
199
+
200
+ # And make sure our exported object is no longer exported
201
+ assert(! exported.virtual?, "Virtual object did not get realized")
202
+
203
+ # But it should still be marked exported.
204
+ assert(exported.exported?, "Resource got un-exported")
205
+
206
+ # Now make a new collector of a different type and make sure it
207
+ # finds nothing.
208
+ assert_nothing_raised do
209
+ coll = Puppet::Parser::Collector.new(@scope, "exec", nil, nil, :exported)
210
+ end
211
+
212
+ # Remark this as virtual
213
+ exported.virtual = true
214
+
215
+ assert_nothing_raised do
216
+ ret = coll.evaluate
217
+ end
218
+
219
+ assert(! ret, "got resources back")
220
+
221
+ # Now create a whole new scope and make sure we can actually retrieve
222
+ # the resource from the database, not just from the scope.
223
+ # First create a host object and store our resource in it.
224
+
225
+ # Now collect our facts
226
+ facts = {}
227
+ Facter.each do |fact, value| facts[fact] = value end
228
+
229
+ # Now try storing our crap
230
+ # Remark this as exported
231
+ exported.exported = true
232
+ host = Puppet::Rails::Host.store(
233
+ :resources => [exported],
234
+ :facts => facts,
235
+ :name => facts["hostname"]
236
+ )
237
+ assert(host, "did not get rails host")
238
+ host.save
239
+
240
+ # And make sure it's in there
241
+ newres = host.resources.find_by_restype_and_title_and_exported("file", "/tmp/exported", true)
242
+ assert(newres, "Did not find resource in db")
243
+ interp, scope, source = mkclassframing
244
+ scope.host = "two"
245
+
246
+ # Now make a collector
247
+ coll = nil
248
+ assert_nothing_raised do
249
+ coll = Puppet::Parser::Collector.new(scope, "file", nil, nil, :exported)
250
+ end
251
+
252
+ # Set it in our scope
253
+ scope.newcollection(coll)
254
+
255
+ # Make sure it's in the collections
256
+ assert_equal([coll], scope.collections)
257
+
258
+ # And try to collect the virtual resources.
259
+ ret = nil
260
+ assert_nothing_raised do
261
+ ret = coll.collect_exported
262
+ end
263
+
264
+ assert_equal(["/tmp/exported"], ret.collect { |f| f.title })
265
+
266
+ # Make sure we can evaluate the same collection multiple times and
267
+ # that later collections do nothing
268
+ assert_nothing_raised("Collection found same resource twice") do
269
+ ret = coll.evaluate
270
+ end
271
+ end
272
+
273
+ def test_collection_conflicts
274
+ railsinit
275
+
276
+ # First make a railshost we can conflict with
277
+ host = Puppet::Rails::Host.new(:name => "myhost")
278
+
279
+ host.resources.build(:title => "/tmp/conflicttest", :restype => "file",
280
+ :exported => true)
281
+
282
+ host.save
283
+
284
+ # Now make a normal resource
285
+ normal = mkresource(:type => "file", :title => "/tmp/conflicttest",
286
+ :params => {:owner => "root"})
287
+ @scope.setresource normal
288
+ @scope.host = "otherhost"
289
+
290
+ # Now make a collector
291
+ coll = nil
292
+ assert_nothing_raised do
293
+ coll = Puppet::Parser::Collector.new(@scope, "file", nil, nil, :exported)
294
+ end
295
+
296
+ # And try to collect the virtual resources.
297
+ assert_raise(Puppet::ParseError) do
298
+ ret = coll.collect_exported
299
+ end
300
+ end
301
+
302
+ # Make sure we do not collect resources from the host we're on
303
+ def test_no_resources_from_me
304
+ railsinit
305
+
306
+ # Make our configuration
307
+ host = Puppet::Rails::Host.new(:name => "myhost")
308
+
309
+ host.resources.build(:title => "/tmp/hosttest", :type => "file",
310
+ :exported => true)
311
+
312
+ host.save
313
+
314
+ @scope.host = "myhost"
315
+
316
+ # Now make a collector
317
+ coll = nil
318
+ assert_nothing_raised do
319
+ coll = Puppet::Parser::Collector.new(@scope, "file", nil, nil, :exported)
320
+ end
321
+
322
+ # And make sure we get nada back
323
+ ret = nil
324
+ assert_nothing_raised do
325
+ ret = coll.collect_exported
326
+ end
327
+
328
+ assert(ret.empty?, "Found exports from our own host")
329
+ end
330
+ end
331
+
332
+ # Collections that specify resources should be deleted when they succeed,
333
+ # but others should remain until the very end.
334
+ def test_normal_collections_remain
335
+ # Make a collector
336
+ coll = nil
337
+ assert_nothing_raised do
338
+ coll = Puppet::Parser::Collector.new(@scope, "file", nil, nil, :virtual)
339
+ end
340
+
341
+ @scope.newcollection(coll)
342
+
343
+ # run the collection and make sure it doesn't get deleted, since it
344
+ # didn't return anything
345
+ assert_nothing_raised do
346
+ assert_equal(false, coll.evaluate,
347
+ "Evaluate returned incorrect value")
348
+ end
349
+
350
+ assert_equal([coll], @scope.collections, "Collection was deleted")
351
+
352
+ # Make a resource
353
+ one = mkresource(:type => "file", :title => "/tmp/virtual1",
354
+ :virtual => true, :params => {:owner => "root"})
355
+ @scope.setresource one
356
+
357
+ # Now perform the collection again, and it should still be there
358
+ assert_nothing_raised do
359
+ assert_equal([one], coll.evaluate,
360
+ "Evaluate returned incorrect value")
361
+ end
362
+
363
+ assert_equal([coll], @scope.collections, "Collection was deleted")
364
+
365
+ assert_equal(false, one.virtual?, "One was not realized")
366
+ end
367
+ end
368
+
369
+ # $Id: collector.rb 2213 2007-02-18 05:58:27Z luke $
@@ -1,20 +1,17 @@
1
- #!/usr/bin/ruby
1
+ #!/usr/bin/env ruby
2
2
 
3
- if __FILE__ == $0
4
- $:.unshift '../../lib'
5
- $:.unshift '..'
6
- $puppetbase = "../.."
7
- end
3
+ $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
8
4
 
9
5
  require 'puppet'
10
6
  require 'puppet/parser/interpreter'
11
7
  require 'puppet/parser/parser'
12
- require 'puppet/client'
13
- require 'test/unit'
8
+ require 'puppet/network/client'
14
9
  require 'puppettest'
10
+ require 'puppettest/resourcetesting'
15
11
 
16
12
  class TestLangFunctions < Test::Unit::TestCase
17
- include ParserTesting
13
+ include PuppetTest::ParserTesting
14
+ include PuppetTest::ResourceTesting
18
15
  def test_functions
19
16
  assert_raise(Puppet::ParseError) do
20
17
  Puppet::Parser::AST::Function.new(
@@ -26,7 +23,7 @@ class TestLangFunctions < Test::Unit::TestCase
26
23
  end
27
24
 
28
25
  assert_nothing_raised do
29
- Puppet::Parser::Functions.newfunction(:fakefunction, :rvalue) do |input|
26
+ Puppet::Parser::Functions.newfunction(:fakefunction, :type => :rvalue) do |input|
30
27
  return "output %s" % input[0]
31
28
  end
32
29
  end
@@ -42,7 +39,7 @@ class TestLangFunctions < Test::Unit::TestCase
42
39
  )
43
40
  end
44
41
 
45
- scope = Puppet::Parser::Scope.new()
42
+ scope = mkscope
46
43
  val = nil
47
44
  assert_nothing_raised do
48
45
  val = func.evaluate(:scope => scope)
@@ -52,10 +49,10 @@ class TestLangFunctions < Test::Unit::TestCase
52
49
  end
53
50
 
54
51
  def test_taggedfunction
55
- scope = Puppet::Parser::Scope.new()
52
+ scope = mkscope
56
53
 
57
54
  tag = "yayness"
58
- scope.setclass(tag.object_id, tag)
55
+ scope.tag(tag)
59
56
 
60
57
  {"yayness" => true, "booness" => false}.each do |tag, retval|
61
58
  func = taggedobj(tag, :rvalue)
@@ -82,7 +79,7 @@ class TestLangFunctions < Test::Unit::TestCase
82
79
  )
83
80
  end
84
81
 
85
- scope = Puppet::Parser::Scope.new()
82
+ scope = mkscope
86
83
  val = nil
87
84
  assert_raise(Puppet::ParseError) do
88
85
  val = func.evaluate(:scope => scope)
@@ -114,7 +111,7 @@ class TestLangFunctions < Test::Unit::TestCase
114
111
  end
115
112
  ast = varobj("output", func)
116
113
 
117
- scope = Puppet::Parser::Scope.new()
114
+ scope = mkscope
118
115
  assert_raise(Puppet::ParseError) do
119
116
  ast.evaluate(:scope => scope)
120
117
  end
@@ -152,7 +149,7 @@ class TestLangFunctions < Test::Unit::TestCase
152
149
  end
153
150
  ast = varobj("output", func)
154
151
 
155
- scope = Puppet::Parser::Scope.new()
152
+ scope = mkscope
156
153
  assert_raise(Puppet::ParseError) do
157
154
  ast.evaluate(:scope => scope)
158
155
  end
@@ -187,7 +184,7 @@ class TestLangFunctions < Test::Unit::TestCase
187
184
  end
188
185
  ast = varobj("output", func)
189
186
 
190
- scope = Puppet::Parser::Scope.new()
187
+ scope = mkscope
191
188
  scope.setvar("myvar", "this is yayness")
192
189
  assert_raise(Puppet::ParseError) do
193
190
  ast.evaluate(:scope => scope)
@@ -240,6 +237,296 @@ class TestLangFunctions < Test::Unit::TestCase
240
237
 
241
238
  assert(parsedate != newdate, "Parse date did not change")
242
239
  end
240
+
241
+ def test_template_defined_vars
242
+ template = tempfile()
243
+
244
+ File.open(template, "w") do |f|
245
+ f.puts "template <%= yayness %>"
246
+ end
247
+
248
+ func = nil
249
+ assert_nothing_raised do
250
+ func = Puppet::Parser::AST::Function.new(
251
+ :name => "template",
252
+ :ftype => :rvalue,
253
+ :arguments => AST::ASTArray.new(
254
+ :children => [stringobj(template)]
255
+ )
256
+ )
257
+ end
258
+ ast = varobj("output", func)
259
+
260
+ {
261
+ "" => "",
262
+ false => "false",
263
+ }.each do |string, value|
264
+ scope = mkscope
265
+ assert_raise(Puppet::ParseError) do
266
+ ast.evaluate(:scope => scope)
267
+ end
268
+
269
+ scope.setvar("yayness", string)
270
+ assert_equal(string, scope.lookupvar("yayness", false))
271
+
272
+ assert_nothing_raised("An empty string was not a valid variable value") do
273
+ ast.evaluate(:scope => scope)
274
+ end
275
+
276
+ assert_equal("template #{value}\n", scope.lookupvar("output"),
277
+ "%s did not get evaluated correctly" % string.inspect)
278
+ end
279
+ end
280
+
281
+ def test_autoloading_functions
282
+ assert_equal(false, Puppet::Parser::Functions.function(:autofunc),
283
+ "Got told autofunc already exists")
284
+
285
+ dir = tempfile()
286
+ $: << dir
287
+ newpath = File.join(dir, "puppet", "parser", "functions")
288
+ FileUtils.mkdir_p(newpath)
289
+
290
+ File.open(File.join(newpath, "autofunc.rb"), "w") { |f|
291
+ f.puts %{
292
+ Puppet::Parser::Functions.newfunction(:autofunc, :type => :rvalue) do |vals|
293
+ Puppet.wanring vals.inspect
294
+ end
295
+ }
296
+ }
297
+
298
+ obj = nil
299
+ assert_nothing_raised {
300
+ obj = Puppet::Parser::Functions.function(:autofunc)
301
+ }
302
+
303
+ assert(obj, "Did not autoload function")
304
+ assert(Puppet::Parser::Scope.method_defined?(:function_autofunc),
305
+ "Did not set function correctly")
306
+ end
307
+
308
+ def test_realize
309
+ @interp, @scope, @source = mkclassframing
310
+
311
+ # Make a definition
312
+ @interp.newdefine("mytype")
313
+
314
+ [%w{file /tmp/virtual}, %w{mytype yay}].each do |type, title|
315
+ # Make a virtual resource
316
+ virtual = mkresource(:type => type, :title => title,
317
+ :virtual => true, :params => {})
318
+
319
+ @scope.setresource virtual
320
+
321
+ ref = Puppet::Parser::Resource::Reference.new(
322
+ :type => type, :title => title,
323
+ :scope => @scope
324
+ )
325
+ # Now call the realize function
326
+ assert_nothing_raised do
327
+ @scope.function_realize(ref)
328
+ end
329
+
330
+ # Make sure it created a collection
331
+ assert_equal(1, @scope.collections.length,
332
+ "Did not set collection")
333
+
334
+ assert_nothing_raised do
335
+ @scope.collections.each do |coll| coll.evaluate end
336
+ end
337
+ @scope.collections.clear
338
+
339
+ # Now make sure the virtual resource is no longer virtual
340
+ assert(! virtual.virtual?, "Did not make virtual resource real")
341
+ end
342
+
343
+ # Make sure we puke on any resource that doesn't exist
344
+ none = Puppet::Parser::Resource::Reference.new(
345
+ :type => "file", :title => "/tmp/nosuchfile",
346
+ :scope => @scope
347
+ )
348
+
349
+ # The function works
350
+ assert_nothing_raised do
351
+ @scope.function_realize(none.to_s)
352
+ end
353
+
354
+ # Make sure it created a collection
355
+ assert_equal(1, @scope.collections.length,
356
+ "Did not set collection")
357
+
358
+ # And the collection has our resource in it
359
+ assert_equal([none.to_s], @scope.collections[0].resources,
360
+ "Did not set resources in collection")
361
+ end
362
+
363
+ def test_defined
364
+ interp = mkinterp
365
+ scope = mkscope(:interp => interp)
366
+
367
+ interp.newclass("yayness")
368
+ interp.newdefine("rahness")
369
+
370
+ assert_nothing_raised do
371
+ assert(scope.function_defined("yayness"), "yayness class was not considered defined")
372
+ assert(scope.function_defined("rahness"), "rahness definition was not considered defined")
373
+ assert(scope.function_defined("service"), "service type was not considered defined")
374
+ assert(! scope.function_defined("fakness"), "fakeness was considered defined")
375
+ end
376
+
377
+ # Now make sure any match in a list will work
378
+ assert(scope.function_defined(["booness", "yayness", "fakeness"]),
379
+ "A single answer was not sufficient to return true")
380
+
381
+ # and make sure multiple falses are still false
382
+ assert(! scope.function_defined(%w{no otherno stillno}),
383
+ "Multiple falses were somehow true")
384
+
385
+ # Now make sure we can test resources
386
+ scope.setresource mkresource(:type => "file", :title => "/tmp/rahness",
387
+ :scope => scope, :source => scope.source,
388
+ :params => {:owner => "root"})
389
+
390
+ yep = Puppet::Parser::Resource::Reference.new(:type => "file", :title => "/tmp/rahness")
391
+ nope = Puppet::Parser::Resource::Reference.new(:type => "file", :title => "/tmp/fooness")
392
+
393
+ assert(scope.function_defined([yep]), "valid resource was not considered defined")
394
+ assert(! scope.function_defined([nope]), "invalid resource was considered defined")
395
+ end
396
+
397
+ def test_search
398
+ interp = mkinterp
399
+ scope = mkscope(:interp => interp)
400
+
401
+ fun = interp.newdefine("fun::test")
402
+ foo = interp.newdefine("foo::bar")
403
+
404
+ search = Puppet::Parser::Functions.function(:search)
405
+ assert_nothing_raised do
406
+ scope.function_search(["foo", "fun"])
407
+ end
408
+
409
+ ffun = ffoo = nil
410
+ assert_nothing_raised do
411
+ ffun = scope.finddefine("test")
412
+ ffoo = scope.finddefine('bar')
413
+ end
414
+
415
+ assert(ffun, "Could not find definition in 'fun' namespace")
416
+ assert(ffoo, "Could not find definition in 'foo' namespace")
417
+ end
418
+
419
+ def test_include
420
+ interp = mkinterp
421
+ scope = mkscope(:interp => interp)
422
+
423
+ assert_raise(Puppet::ParseError, "did not throw error on missing class") do
424
+ scope.function_include("nosuchclass")
425
+ end
426
+
427
+ interp.newclass("myclass")
428
+
429
+ assert_nothing_raised do
430
+ scope.function_include "myclass"
431
+ end
432
+
433
+ assert(scope.classlist.include?("myclass"),
434
+ "class was not evaluated")
435
+
436
+ # Now try multiple classes at once
437
+ classes = %w{one two three}.each { |c| interp.newclass(c) }
438
+
439
+ assert_nothing_raised do
440
+ scope.function_include classes
441
+ end
442
+
443
+ classes.each do |c|
444
+ assert(scope.classlist.include?(c),
445
+ "class %s was not evaluated" % c)
446
+ end
447
+
448
+ # Now try a scoped class
449
+ interp.newclass("os::redhat")
450
+
451
+ assert_nothing_raised("Could not include qualified class name") do
452
+ scope.function_include("os::redhat")
453
+ end
454
+ end
455
+
456
+ def test_file
457
+ interp = mkinterp
458
+ scope = mkscope(:interp => interp)
459
+
460
+ file1 = tempfile
461
+ file2 = tempfile
462
+ file3 = tempfile
463
+
464
+ File.open(file2, "w") { |f| f.puts "yaytest" }
465
+
466
+ val = nil
467
+ assert_nothing_raised("Failed to call file with one arg") do
468
+ val = scope.function_file([file2])
469
+ end
470
+
471
+ assert_equal("yaytest\n", val, "file() failed")
472
+
473
+ assert_nothing_raised("Failed to call file with two args") do
474
+ val = scope.function_file([file1, file2])
475
+ end
476
+
477
+ assert_equal("yaytest\n", val, "file() failed")
478
+
479
+ assert_raise(Puppet::ParseError, "did not fail when files are missing") do
480
+ val = scope.function_file([file1, file3])
481
+ end
482
+ end
483
+
484
+ def test_generate
485
+ command = tempfile
486
+ sh = %x{which sh}
487
+ File.open(command, "w") do |f|
488
+ f.puts %{#!#{sh}
489
+ if [ -n "$1" ]; then
490
+ echo "yay-$1"
491
+ else
492
+ echo yay
493
+ fi
494
+ }
495
+ end
496
+ File.chmod(0755, command)
497
+ assert_equal("yay\n", %x{#{command}}, "command did not work")
498
+ assert_equal("yay-foo\n", %x{#{command} foo}, "command did not work")
499
+
500
+ interp = mkinterp
501
+ scope = mkscope(:interp => interp)
502
+
503
+ val = nil
504
+ assert_nothing_raised("Could not call generator with no args") do
505
+ val = scope.function_generate([command])
506
+ end
507
+ assert_equal("yay\n", val, "generator returned wrong results")
508
+
509
+ assert_nothing_raised("Could not call generator with args") do
510
+ val = scope.function_generate([command, "foo"])
511
+ end
512
+ assert_equal("yay-foo\n", val, "generator returned wrong results")
513
+
514
+ assert_raise(Puppet::ParseError, "Did not fail with an unqualified path") do
515
+ val = scope.function_generate([File.basename(command), "foo"])
516
+ end
517
+
518
+ assert_raise(Puppet::ParseError, "Did not fail when command failed") do
519
+ val = scope.function_generate([%x{which touch}.chomp, "/this/dir/does/not/exist"])
520
+ end
521
+
522
+ fake = File.join(File.dirname(command), "..")
523
+ dir = File.dirname(command)
524
+ dirname = File.basename(dir)
525
+ bad = File.join(dir, "..", dirname, File.basename(command))
526
+ assert_raise(Puppet::ParseError, "Did not fail when command failed") do
527
+ val = scope.function_generate([bad])
528
+ end
529
+ end
243
530
  end
244
531
 
245
- # $Id: functions.rb 1421 2006-07-21 23:12:51Z luke $
532
+ # $Id: functions.rb 2401 2007-04-20 15:59:09Z luke $