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,227 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppet'
6
+ require 'puppettest'
7
+
8
+ class TestPuppetUtilClassGen < Test::Unit::TestCase
9
+ include PuppetTest
10
+
11
+ class FakeBase
12
+ class << self
13
+ attr_accessor :name
14
+ end
15
+ end
16
+
17
+ class GenTest
18
+ class << self
19
+ include Puppet::Util::ClassGen
20
+ end
21
+ end
22
+
23
+ def testclasses(name)
24
+ sub = Class.new(GenTest) do @name = "base#{name.to_s}" end
25
+ self.class.const_set("Base#{name.to_s}", sub)
26
+
27
+ klass = Class.new(FakeBase) do @name = "gen#{name.to_s}"end
28
+
29
+ return sub, klass
30
+ end
31
+
32
+ def test_handleclassconst
33
+ sub, klass = testclasses("const")
34
+ const = nil
35
+ assert_nothing_raised do
36
+ const = sub.send(:handleclassconst, klass, klass.name, {})
37
+ end
38
+
39
+ # make sure the constant is set
40
+ assert(defined?(Baseconst::Genconst), "const was not defined")
41
+ assert_equal(Baseconst::Genconst.object_id, klass.object_id)
42
+
43
+ # Now make sure don't replace by default
44
+ newklass = Class.new(FakeBase) do @name = klass.name end
45
+ assert_raise(Puppet::ConstantAlreadyDefined) do
46
+ const = sub.send(:handleclassconst, newklass, klass.name, {})
47
+ end
48
+ assert_equal(Baseconst::Genconst.object_id, klass.object_id)
49
+
50
+ # Now make sure we can replace it
51
+ assert_nothing_raised do
52
+ const = sub.send(:handleclassconst, newklass, klass.name, :overwrite => true)
53
+ end
54
+ assert_equal(Baseconst::Genconst.object_id, newklass.object_id)
55
+
56
+ # Now make sure we can choose our own constant
57
+ assert_nothing_raised do
58
+ const = sub.send(:handleclassconst, newklass, klass.name,
59
+ :constant => "Fooness")
60
+ end
61
+ assert(defined?(Baseconst::Fooness), "Specified constant was not defined")
62
+
63
+ # And make sure prefixes work
64
+ assert_nothing_raised do
65
+ const = sub.send(:handleclassconst, newklass, klass.name,
66
+ :prefix => "Test")
67
+ end
68
+ assert(defined?(Baseconst::TestGenconst), "prefix was not used")
69
+ end
70
+
71
+ def test_initclass_preinit
72
+ sub, klass = testclasses("preinit")
73
+
74
+ class << klass
75
+ attr_accessor :set
76
+ def preinit
77
+ @set = true
78
+ end
79
+ end
80
+
81
+ assert(!klass.set, "Class was already initialized")
82
+
83
+ assert_nothing_raised do sub.send(:initclass, klass, {}) end
84
+
85
+ assert(klass.set, "Class was not initialized")
86
+ end
87
+
88
+ def test_initclass_initvars
89
+ sub, klass = testclasses("initvars")
90
+
91
+ class << klass
92
+ attr_accessor :set
93
+ def initvars
94
+ @set = true
95
+ end
96
+ end
97
+
98
+ assert(!klass.set, "Class was already initialized")
99
+
100
+ assert_nothing_raised do sub.send(:initclass, klass, {}) end
101
+
102
+ assert(klass.set, "Class was not initialized")
103
+ end
104
+
105
+ def test_initclass_attributes
106
+ sub, klass = testclasses("attributes")
107
+
108
+ class << klass
109
+ attr_accessor :one, :two, :three
110
+ end
111
+
112
+ assert(!klass.one, "'one' was already set")
113
+
114
+ assert_nothing_raised do sub.send(:initclass, klass,
115
+ :attributes => {:one => :a, :two => :b}) end
116
+
117
+ assert_equal(:a, klass.one, "Class was initialized incorrectly")
118
+ assert_equal(:b, klass.two, "Class was initialized incorrectly")
119
+ assert_nil(klass.three, "Class was initialized incorrectly")
120
+ end
121
+
122
+ def test_initclass_include_and_extend
123
+ sub, klass = testclasses("include_and_extend")
124
+
125
+ incl = Module.new do
126
+ attr_accessor :included
127
+ end
128
+ self.class.const_set("Incl", incl)
129
+
130
+ ext = Module.new do
131
+ attr_accessor :extended
132
+ end
133
+ self.class.const_set("Ext", ext)
134
+
135
+ assert(! klass.respond_to?(:extended), "Class already responds to extended")
136
+ assert(! klass.new.respond_to?(:included), "Class already responds to included")
137
+
138
+ assert_nothing_raised do sub.send(:initclass, klass,
139
+ :include => incl, :extend => ext)
140
+ end
141
+
142
+ assert(klass.respond_to?(:extended), "Class did not get extended")
143
+ assert(klass.new.respond_to?(:included), "Class did not include")
144
+ end
145
+
146
+ def test_genclass
147
+ hash = {}
148
+ array = []
149
+
150
+ name = "yayness"
151
+ klass = nil
152
+ assert_nothing_raised {
153
+ klass = GenTest.genclass(name, :array => array,
154
+ :hash => hash, :parent => FakeBase) do
155
+ class << self
156
+ attr_accessor :name
157
+ end
158
+ end
159
+ }
160
+
161
+ assert(klass.respond_to?(:name=), "Class did not execute block")
162
+
163
+ assert(hash.include?(klass.name),
164
+ "Class did not get added to hash")
165
+ assert(array.include?(klass),
166
+ "Class did not get added to array")
167
+ assert_equal(klass.superclass, FakeBase, "Parent class was wrong")
168
+ end
169
+
170
+ # Make sure we call a preinithook, if there is one.
171
+ def test_inithooks
172
+ newclass = Class.new(FakeBase) do
173
+ class << self
174
+ attr_accessor :preinited, :postinited
175
+ end
176
+ def self.preinit
177
+ self.preinited = true
178
+ end
179
+ def self.postinit
180
+ self.postinited = true
181
+ end
182
+ end
183
+
184
+ klass = nil
185
+ assert_nothing_raised {
186
+ klass = GenTest.genclass(:funtest, :parent => newclass)
187
+ }
188
+
189
+ assert(klass.preinited, "prehook did not get called")
190
+ assert(klass.postinited, "posthook did not get called")
191
+ end
192
+
193
+ def test_modulegen
194
+ hash = {}
195
+ array = []
196
+
197
+ name = "modness"
198
+ mod = nil
199
+ assert_nothing_raised {
200
+ mod = GenTest.genmodule(name, :array => array, :hash => hash) do
201
+ class << self
202
+ attr_accessor :yaytest
203
+ end
204
+
205
+ @yaytest = true
206
+ end
207
+ }
208
+
209
+ assert(mod.respond_to?(:yaytest), "Class did not execute block")
210
+
211
+ assert_instance_of(Module, mod)
212
+ assert(hash.include?(mod.name),
213
+ "Class did not get added to hash")
214
+ assert(array.include?(mod),
215
+ "Class did not get added to array")
216
+ end
217
+
218
+ def test_genconst_string
219
+ const = nil
220
+ assert_nothing_raised do
221
+ const = GenTest.send(:genconst_string, :testing, :prefix => "Yayness")
222
+ end
223
+ assert_equal("YaynessTesting", const)
224
+ end
225
+ end
226
+
227
+ # $Id: classgen.rb 1856 2006-11-11 07:40:16Z luke $
@@ -1,18 +1,21 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- if __FILE__ == $0
4
- $:.unshift '..'
5
- $:.unshift '../../lib'
6
- $puppetbase = "../.."
7
- end
3
+ $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
8
4
 
9
5
  require 'puppet'
10
- require 'puppet/config'
6
+ require 'puppet/util/config'
11
7
  require 'puppettest'
12
- require 'test/unit'
8
+ require 'puppettest/parsertesting'
13
9
 
14
10
  class TestConfig < Test::Unit::TestCase
15
- include TestPuppet
11
+ include PuppetTest
12
+ include PuppetTest::ParserTesting
13
+
14
+ def setup
15
+ super
16
+ @config = mkconfig
17
+ end
18
+
16
19
 
17
20
  def check_for_users
18
21
  count = Puppet::Type.type(:user).inject(0) { |c,o|
@@ -46,21 +49,16 @@ class TestConfig < Test::Unit::TestCase
46
49
  }
47
50
 
48
51
  Puppet[:parseonly] = true
49
- parser = Puppet::Parser::Parser.new()
50
52
 
51
- objects = nil
52
- assert_nothing_raised("Could not parse generated manifest") {
53
- parser.string = manifest
54
- objects = parser.parse
55
- }
56
- scope = Puppet::Parser::Scope.new
57
- assert_nothing_raised("Could not compile objects") {
58
- scope.evaluate(:ast => objects)
59
- }
53
+ interp = nil
54
+ assert_nothing_raised do
55
+ interp = mkinterp :Code => manifest, :UseNodes => false
56
+ end
57
+
60
58
  trans = nil
61
- assert_nothing_raised("Could not convert objects to transportable") {
62
- trans = scope.to_trans
63
- }
59
+ assert_nothing_raised do
60
+ trans = interp.evaluate(nil, {})
61
+ end
64
62
  assert_nothing_raised("Could not instantiate objects") {
65
63
  trans.to_type
66
64
  }
@@ -95,63 +93,60 @@ class TestConfig < Test::Unit::TestCase
95
93
  def mkconfig
96
94
  c = nil
97
95
  assert_nothing_raised {
98
- c = Puppet::Config.new
96
+ c = Puppet::Util::Config.new
99
97
  }
100
98
  return c
101
99
  end
102
100
 
103
101
  def test_addbools
104
- c = mkconfig
105
-
106
102
  assert_nothing_raised {
107
- c.setdefaults(:testing, :booltest => [true, "testing"])
103
+ @config.setdefaults(:testing, :booltest => [true, "testing"])
108
104
  }
109
105
 
110
- assert(c[:booltest])
111
- c = mkconfig
106
+ assert(@config[:booltest])
107
+ @config = mkconfig
112
108
 
113
109
  assert_nothing_raised {
114
- c.setdefaults(:testing, :booltest => ["true", "testing"])
110
+ @config.setdefaults(:testing, :booltest => ["true", "testing"])
115
111
  }
116
112
 
117
- assert(c[:booltest])
113
+ assert(@config[:booltest])
118
114
 
119
115
  assert_nothing_raised {
120
- c[:booltest] = false
116
+ @config[:booltest] = false
121
117
  }
122
118
 
123
- assert(! c[:booltest], "Booltest is not false")
119
+ assert(! @config[:booltest], "Booltest is not false")
124
120
 
125
121
  assert_nothing_raised {
126
- c[:booltest] = "false"
122
+ @config[:booltest] = "false"
127
123
  }
128
124
 
129
- assert(! c[:booltest], "Booltest is not false")
125
+ assert(! @config[:booltest], "Booltest is not false")
130
126
 
131
127
  assert_raise(Puppet::Error) {
132
- c[:booltest] = "yayness"
128
+ @config[:booltest] = "yayness"
133
129
  }
134
130
 
135
131
  assert_raise(Puppet::Error) {
136
- c[:booltest] = "/some/file"
132
+ @config[:booltest] = "/some/file"
137
133
  }
138
134
  end
139
135
 
140
136
  def test_strings
141
- c = mkconfig
142
137
  val = "this is a string"
143
138
  assert_nothing_raised {
144
- c.setdefaults(:testing, :strtest => [val, "testing"])
139
+ @config.setdefaults(:testing, :strtest => [val, "testing"])
145
140
  }
146
141
 
147
- assert_equal(val, c[:strtest])
142
+ assert_equal(val, @config[:strtest])
148
143
 
149
144
  # Verify that variables are interpolated
150
145
  assert_nothing_raised {
151
- c.setdefaults(:testing, :another => ["another $strtest", "testing"])
146
+ @config.setdefaults(:testing, :another => ["another $strtest", "testing"])
152
147
  }
153
148
 
154
- assert_equal("another #{val}", c[:another])
149
+ assert_equal("another #{val}", @config[:another])
155
150
  end
156
151
 
157
152
  def test_files
@@ -159,47 +154,46 @@ class TestConfig < Test::Unit::TestCase
159
154
 
160
155
  parent = "/puppet"
161
156
  assert_nothing_raised {
162
- c.setdefaults(:testing, :parentdir => [parent, "booh"])
157
+ @config.setdefaults(:testing, :parentdir => [parent, "booh"])
163
158
  }
164
159
 
165
160
  assert_nothing_raised {
166
- c.setdefaults(:testing, :child => ["$parent/child", "rah"])
161
+ @config.setdefaults(:testing, :child => ["$parent/child", "rah"])
167
162
  }
168
163
 
169
- assert_equal(parent, c[:parentdir])
170
- assert_equal("/puppet/child", File.join(c[:parentdir], "child"))
164
+ assert_equal(parent, @config[:parentdir])
165
+ assert_equal("/puppet/child", File.join(@config[:parentdir], "child"))
171
166
  end
172
167
 
173
168
  def test_getset
174
- c = mkconfig
175
169
  initial = "an initial value"
176
170
  assert_raise(Puppet::Error) {
177
- c[:yayness] = initial
171
+ @config[:yayness] = initial
178
172
  }
179
173
 
180
174
  default = "this is a default"
181
175
  assert_nothing_raised {
182
- c.setdefaults(:testing, :yayness => [default, "rah"])
176
+ @config.setdefaults(:testing, :yayness => [default, "rah"])
183
177
  }
184
178
 
185
- assert_equal(default, c[:yayness])
179
+ assert_equal(default, @config[:yayness])
186
180
 
187
181
  assert_nothing_raised {
188
- c[:yayness] = initial
182
+ @config[:yayness] = initial
189
183
  }
190
184
 
191
- assert_equal(initial, c[:yayness])
185
+ assert_equal(initial, @config[:yayness])
192
186
 
193
187
  assert_nothing_raised {
194
- c.clear
188
+ @config.clear
195
189
  }
196
190
 
197
- assert_equal(default, c[:yayness])
191
+ assert_equal(default, @config[:yayness])
198
192
 
199
193
  assert_nothing_raised {
200
- c[:yayness] = "not default"
194
+ @config[:yayness] = "not default"
201
195
  }
202
- assert_equal("not default", c[:yayness])
196
+ assert_equal("not default", @config[:yayness])
203
197
  end
204
198
 
205
199
  def test_parse
@@ -221,9 +215,8 @@ yay = /a/path
221
215
  file = tempfile()
222
216
  File.open(file, "w") { |f| f.puts text }
223
217
 
224
- c = mkconfig
225
218
  assert_nothing_raised {
226
- c.setdefaults("puppet",
219
+ @config.setdefaults("puppet",
227
220
  :one => ["a", "one"],
228
221
  :two => ["a", "two"],
229
222
  :yay => ["/default/path", "boo"],
@@ -232,7 +225,7 @@ yay = /a/path
232
225
  }
233
226
 
234
227
  assert_nothing_raised {
235
- c.setdefaults("section1",
228
+ @config.setdefaults("section1",
236
229
  :attr => ["a", "one"],
237
230
  :attrdir => ["/another/dir", "two"],
238
231
  :attr3 => ["$attrdir/maybe", "boo"]
@@ -240,17 +233,17 @@ yay = /a/path
240
233
  }
241
234
 
242
235
  assert_nothing_raised {
243
- c.parse(file)
236
+ @config.parse(file)
244
237
  }
245
238
 
246
- assert_equal("value", c[:attr])
247
- assert_equal("/some/dir", c[:attrdir])
248
- assert_equal(:directory, c.element(:attrdir).type)
249
- assert_equal("/some/dir/other", c[:attr3])
239
+ assert_equal("value", @config[:attr])
240
+ assert_equal("/some/dir", @config[:attrdir])
241
+ assert_equal(:directory, @config.element(:attrdir).type)
242
+ assert_equal("/some/dir/other", @config[:attr3])
250
243
 
251
244
  elem = nil
252
245
  assert_nothing_raised {
253
- elem = c.element(:attr3)
246
+ elem = @config.element(:attr3)
254
247
  }
255
248
 
256
249
  assert(elem)
@@ -258,27 +251,27 @@ yay = /a/path
258
251
 
259
252
  config = nil
260
253
  assert_nothing_raised {
261
- config = c.to_config
254
+ config = @config.to_config
262
255
  }
263
256
 
264
257
  assert_nothing_raised("Could not create transportable config") {
265
- c.to_transportable
258
+ @config.to_transportable
266
259
  }
267
260
 
268
- check_to_comp(c)
261
+ check_to_comp(@config)
269
262
  Puppet::Type.allclear
270
- check_to_manifest(c)
263
+ check_to_manifest(@config)
271
264
  Puppet::Type.allclear
272
- check_to_config(c)
265
+ check_to_config(@config)
273
266
  Puppet::Type.allclear
274
- check_to_transportable(c)
267
+ check_to_transportable(@config)
275
268
  end
276
269
 
277
270
  def test_arghandling
278
271
  c = mkconfig
279
272
 
280
273
  assert_nothing_raised {
281
- c.setdefaults("testing",
274
+ @config.setdefaults("testing",
282
275
  :onboolean => [true, "An on bool"],
283
276
  :offboolean => [false, "An off bool"],
284
277
  :string => ["a string", "A string arg"],
@@ -296,7 +289,7 @@ yay = /a/path
296
289
  values.each { |val|
297
290
  opt = nil
298
291
  arg = nil
299
- if c.boolean?(param)
292
+ if @config.boolean?(param)
300
293
  if val
301
294
  opt = "--%s" % param
302
295
  else
@@ -310,7 +303,7 @@ yay = /a/path
310
303
  assert_nothing_raised("Could not handle arg %s with value %s" %
311
304
  [opt, val]) {
312
305
 
313
- c.handlearg(opt, arg)
306
+ @config.handlearg(opt, arg)
314
307
  }
315
308
  }
316
309
  }
@@ -320,7 +313,7 @@ yay = /a/path
320
313
  c = mkconfig
321
314
 
322
315
  assert_nothing_raised {
323
- c.setdefaults("testing",
316
+ @config.setdefaults("testing",
324
317
  :onboolean => [true, "An on bool"],
325
318
  :offboolean => [false, "An off bool"],
326
319
  :string => ["a string", "A string arg"],
@@ -329,15 +322,15 @@ yay = /a/path
329
322
  }
330
323
  options = []
331
324
 
332
- c.addargs(options)
325
+ @config.addargs(options)
333
326
 
334
- c.each { |param, obj|
327
+ @config.each { |param, obj|
335
328
  opt = "--%s" % param
336
329
  assert(options.find { |ary|
337
330
  ary[0] == opt
338
331
  }, "Argument %s was not added" % opt)
339
332
 
340
- if c.boolean?(param)
333
+ if @config.boolean?(param)
341
334
  o = "--no-%s" % param
342
335
  assert(options.find { |ary|
343
336
  ary[0] == o
@@ -347,6 +340,10 @@ yay = /a/path
347
340
  end
348
341
 
349
342
  def test_usesection
343
+ # We want to make sure that config processes do not result in graphing.
344
+ Puppet[:graphdir] = tempfile()
345
+ Puppet[:graph] = true
346
+ Dir.mkdir(Puppet[:graphdir])
350
347
  c = mkconfig
351
348
 
352
349
  dir = tempfile()
@@ -355,7 +352,7 @@ yay = /a/path
355
352
  otherfile = File.join(dir, "otherfile")
356
353
  section = "testing"
357
354
  assert_nothing_raised {
358
- c.setdefaults(section,
355
+ @config.setdefaults(section,
359
356
  :mydir => [dir, "A dir arg"],
360
357
  :otherfile => {
361
358
  :default => "$mydir/otherfile",
@@ -367,12 +364,16 @@ yay = /a/path
367
364
  }
368
365
 
369
366
  assert_nothing_raised("Could not use a section") {
370
- c.use(section)
367
+ @config.use(section)
371
368
  }
372
369
 
373
370
  assert_nothing_raised("Could not reuse a section") {
374
- c.use(section)
371
+ @config.use(section)
375
372
  }
373
+
374
+ # Make sure it didn't graph anything, which is the only real way
375
+ # to test that the transaction was marked as a configurator.
376
+ assert(Dir.entries(Puppet[:graphdir]).reject { |f| f =~ /^\.\.?$/ }.empty?, "Graphed config process")
376
377
 
377
378
  assert(FileTest.directory?(dir), "Did not create directory")
378
379
  assert(FileTest.exists?(otherfile), "Did not create file")
@@ -383,28 +384,28 @@ yay = /a/path
383
384
  c = mkconfig
384
385
 
385
386
  assert_nothing_raised {
386
- c.setdefaults("yay",
387
+ @config.setdefaults("yay",
387
388
  :a => [false, "some value"],
388
389
  :b => ["/my/file", "a file"]
389
390
  )
390
391
  }
391
392
 
392
- assert_equal(false, c[:a], "Values are not equal")
393
- assert_equal("/my/file", c[:b], "Values are not equal")
393
+ assert_equal(false, @config[:a], "Values are not equal")
394
+ assert_equal("/my/file", @config[:b], "Values are not equal")
394
395
  end
395
396
 
396
397
  def test_setdefaultshash
397
398
  c = mkconfig
398
399
 
399
400
  assert_nothing_raised {
400
- c.setdefaults("yay",
401
+ @config.setdefaults("yay",
401
402
  :a => {:default => false, :desc => "some value"},
402
403
  :b => {:default => "/my/file", :desc => "a file"}
403
404
  )
404
405
  }
405
406
 
406
- assert_equal(false, c[:a], "Values are not equal")
407
- assert_equal("/my/file", c[:b], "Values are not equal")
407
+ assert_equal(false, @config[:a], "Values are not equal")
408
+ assert_equal("/my/file", @config[:b], "Values are not equal")
408
409
  end
409
410
 
410
411
  def test_reuse
@@ -413,13 +414,13 @@ yay = /a/path
413
414
  file = tempfile()
414
415
  section = "testing"
415
416
  assert_nothing_raised {
416
- c.setdefaults(section,
417
- :myfile => {:default => file, :create => true}
417
+ @config.setdefaults(section,
418
+ :myfile => {:default => file, :create => true, :desc => "yay"}
418
419
  )
419
420
  }
420
421
 
421
422
  assert_nothing_raised("Could not use a section") {
422
- c.use(section)
423
+ @config.use(section)
423
424
  }
424
425
 
425
426
  assert(FileTest.exists?(file), "Did not create file")
@@ -428,7 +429,7 @@ yay = /a/path
428
429
 
429
430
  File.unlink(file)
430
431
 
431
- c.reuse
432
+ @config.reuse
432
433
  assert(FileTest.exists?(file), "Did not create file")
433
434
  end
434
435
 
@@ -438,12 +439,13 @@ yay = /a/path
438
439
  file = tempfile()
439
440
  section = "testing"
440
441
  assert_nothing_raised {
441
- c.setdefaults(section,
442
+ @config.setdefaults(section,
442
443
  :mkusers => [false, "yay"],
443
444
  :myfile => {
444
445
  :default => file,
445
446
  :owner => "pptest",
446
447
  :group => "pptest",
448
+ :desc => "yay",
447
449
  :create => true
448
450
  }
449
451
  )
@@ -451,7 +453,7 @@ yay = /a/path
451
453
 
452
454
  comp = nil
453
455
  assert_nothing_raised {
454
- comp = c.to_component
456
+ comp = @config.to_component
455
457
  }
456
458
 
457
459
  [:user, :group].each do |type|
@@ -463,26 +465,38 @@ yay = /a/path
463
465
  end
464
466
  comp.each { |o| o.remove }
465
467
 
466
- c[:mkusers] = true
468
+ @config[:mkusers] = true
467
469
 
468
470
  assert_nothing_raised {
469
- c.to_component
471
+ @config.to_component
470
472
  }
471
473
 
472
- assert(Puppet.type(:user)["pptest"], "User object did not get created")
473
- assert(Puppet.type(:user)["pptest"].managed?,
474
- "User object is not managed."
475
- )
476
- assert(Puppet.type(:group)["pptest"], "Group object did not get created")
477
- assert(Puppet.type(:group)["pptest"].managed?,
474
+ user = Puppet.type(:user)["pptest"]
475
+ assert(user, "User object did not get created")
476
+ assert(user.managed?, "User object is not managed.")
477
+ assert(user.should(:comment), "user does not have a comment set")
478
+
479
+ group = Puppet.type(:group)["pptest"]
480
+ assert(group, "Group object did not get created")
481
+ assert(group.managed?,
478
482
  "Group object is not managed."
479
483
  )
484
+
485
+ if Process.uid == 0
486
+ cleanup do
487
+ user[:ensure] = :absent
488
+ group[:ensure] = :absent
489
+ assert_apply(user, group)
490
+ end
491
+
492
+ assert_apply(user, group)
493
+ end
480
494
  end
481
495
 
482
496
  def test_notmanagingdev
483
497
  c = mkconfig
484
498
  path = "/dev/testing"
485
- c.setdefaults(:test,
499
+ @config.setdefaults(:test,
486
500
  :file => {
487
501
  :default => path,
488
502
  :mode => 0640,
@@ -491,7 +505,7 @@ yay = /a/path
491
505
  )
492
506
 
493
507
  assert_nothing_raised {
494
- c.to_component
508
+ @config.to_component
495
509
  }
496
510
 
497
511
  assert(! Puppet.type(:file)["/dev/testing"], "Created dev file")
@@ -503,13 +517,13 @@ yay = /a/path
503
517
  group = "yayness"
504
518
 
505
519
  File.open(cfile, "w") do |f|
506
- f.puts "[#{Puppet.name}]
520
+ f.puts "[#{Puppet[:name]}]
507
521
  group = #{group}
508
522
  "
509
523
  end
510
524
 
511
525
  config = mkconfig
512
- config.setdefaults(Puppet.name, :group => ["puppet", "a group"])
526
+ config.setdefaults(Puppet[:name], :group => ["puppet", "a group"])
513
527
 
514
528
  assert_nothing_raised {
515
529
  config.parse(cfile)
@@ -521,17 +535,19 @@ yay = /a/path
521
535
  # provide a method to modify and create files w/out specifying the info
522
536
  # already stored in a config
523
537
  def test_writingfiles
538
+ File.umask(0022)
539
+
524
540
  path = tempfile()
525
541
  mode = 0644
526
542
 
527
543
  config = mkconfig
528
544
 
529
- args = { :default => path, :mode => mode }
545
+ args = { :default => path, :mode => mode, :desc => "yay" }
530
546
 
531
547
  user = nonrootuser()
532
548
  group = nonrootgroup()
533
549
 
534
- if Process.uid == 0
550
+ if Puppet::Util::SUIDManager.uid == 0
535
551
  args[:owner] = user.name
536
552
  args[:group] = group.name
537
553
  end
@@ -547,7 +563,7 @@ yay = /a/path
547
563
  assert_equal(mode, filemode(path), "Modes are not equal")
548
564
 
549
565
  # OS X is broken in how it chgrps files
550
- if Process.uid == 0
566
+ if Puppet::Util::SUIDManager.uid == 0
551
567
  assert_equal(user.uid, File.stat(path).uid, "UIDS are not equal")
552
568
 
553
569
  case Facter["operatingsystem"].value
@@ -559,17 +575,19 @@ yay = /a/path
559
575
  end
560
576
 
561
577
  def test_mkdir
578
+ File.umask(0022)
579
+
562
580
  path = tempfile()
563
581
  mode = 0755
564
582
 
565
583
  config = mkconfig
566
584
 
567
- args = { :default => path, :mode => mode }
585
+ args = { :default => path, :mode => mode, :desc => "a file" }
568
586
 
569
587
  user = nonrootuser()
570
588
  group = nonrootgroup()
571
589
 
572
- if Process.uid == 0
590
+ if Puppet::Util::SUIDManager.uid == 0
573
591
  args[:owner] = user.name
574
592
  args[:group] = group.name
575
593
  end
@@ -584,7 +602,7 @@ yay = /a/path
584
602
 
585
603
 
586
604
  # OS X and *BSD is broken in how it chgrps files
587
- if Process.uid == 0
605
+ if Puppet::Util::SUIDManager.uid == 0
588
606
  assert_equal(user.uid, File.stat(path).uid, "UIDS are not equal")
589
607
 
590
608
  case Facter["operatingsystem"].value
@@ -665,9 +683,9 @@ inttest = 27
665
683
  def test_correct_type_assumptions
666
684
  config = mkconfig
667
685
 
668
- file = Puppet::Config::CFile
669
- element = Puppet::Config::CElement
670
- bool = Puppet::Config::CBoolean
686
+ file = Puppet::Util::Config::CFile
687
+ element = Puppet::Util::Config::CElement
688
+ bool = Puppet::Util::Config::CBoolean
671
689
 
672
690
  # We have to keep these ordered, unfortunately.
673
691
  [
@@ -686,6 +704,7 @@ inttest = 27
686
704
  elem = config.newelement(
687
705
  :name => value,
688
706
  :default => value,
707
+ :desc => name.to_s,
689
708
  :section => :yayness
690
709
  )
691
710
  }
@@ -807,6 +826,247 @@ inttest = 27
807
826
 
808
827
 
809
828
  end
829
+
830
+ # Test that config parameters correctly call passed-in blocks when the value
831
+ # is set.
832
+ def test_paramblocks
833
+ config = mkconfig()
834
+
835
+ testing = nil
836
+ elem = nil
837
+ assert_nothing_raised do
838
+ elem = config.newelement :default => "yay",
839
+ :name => :blocktest,
840
+ :desc => "boo",
841
+ :section => :test,
842
+ :hook => proc { |value| testing = value }
843
+ end
844
+
845
+ assert_nothing_raised do
846
+ assert_equal("yay", elem.value)
847
+ end
848
+
849
+ assert_nothing_raised do
850
+ elem.value = "yaytest"
851
+ end
852
+
853
+ assert_nothing_raised do
854
+ assert_equal("yaytest", elem.value)
855
+ end
856
+ assert_equal("yaytest", testing)
857
+
858
+ assert_nothing_raised do
859
+ elem.value = "another"
860
+ end
861
+
862
+ assert_nothing_raised do
863
+ assert_equal("another", elem.value)
864
+ end
865
+ assert_equal("another", testing)
866
+
867
+ # Now verify it works from setdefault
868
+ assert_nothing_raised do
869
+ config.setdefaults :test,
870
+ :blocktest2 => {
871
+ :default => "yay",
872
+ :desc => "yay",
873
+ :hook => proc { |v| testing = v }
874
+ }
875
+ end
876
+
877
+ assert_equal("yay", config[:blocktest2])
878
+
879
+ assert_nothing_raised do
880
+ config[:blocktest2] = "footest"
881
+ end
882
+ assert_equal("footest", config[:blocktest2])
883
+ assert_equal("footest", testing)
884
+ end
885
+
886
+ def test_no_modify_root
887
+ config = mkconfig
888
+ config.setdefaults(:yay,
889
+ :mydir => {:default => tempfile(),
890
+ :mode => 0644,
891
+ :owner => "root",
892
+ :group => "root",
893
+ :desc => "yay"
894
+ },
895
+ :mkusers => [false, "yay"]
896
+ )
897
+
898
+ assert_nothing_raised do
899
+ config.use(:yay)
900
+ end
901
+
902
+ # Now enable it so they'll be added
903
+ config[:mkusers] = true
904
+
905
+ comp = config.to_component
906
+
907
+ Puppet::Type.type(:user).each do |u|
908
+ assert(u.name != "root", "Tried to manage root user")
909
+ end
910
+ Puppet::Type.type(:group).each do |u|
911
+ assert(u.name != "root", "Tried to manage root group")
912
+ assert(u.name != "wheel", "Tried to manage wheel group")
913
+ end
914
+
915
+ # assert(yay, "Did not find yay component")
916
+ # yay.each do |c|
917
+ # puts @config.ref
918
+ # end
919
+ # assert(! yay.find { |o| o.class.name == :user and o.name == "root" },
920
+ # "Found root user")
921
+ # assert(! yay.find { |o| o.class.name == :group and o.name == "root" },
922
+ # "Found root group")
923
+ end
924
+
925
+ # #415
926
+ def test_remove_trailing_spaces
927
+ config = mkconfig()
928
+ config.setdefaults(:yay, :rah => ["testing", "a desc"])
929
+
930
+ file = tempfile()
931
+ File.open(file, "w") { |f| f.puts "rah = something " }
932
+
933
+ assert_nothing_raised { config.parse(file) }
934
+ assert_equal("something", config[:rah], "did not remove trailing whitespace in parsing")
935
+ end
936
+
937
+ # #484
938
+ def test_parsing_unknown_variables
939
+ logstore()
940
+ config = mkconfig()
941
+ config.setdefaults(:mysection, :one => ["yay", "yay"])
942
+ file = tempfile()
943
+ File.open(file, "w") { |f|
944
+ f.puts %{[mysection]\n
945
+ one = one
946
+ two = yay
947
+ }
948
+ }
949
+
950
+ assert_nothing_raised("Unknown parameter threw an exception") do
951
+ config.parse(file)
952
+ end
953
+
954
+ assert(@logs.detect { |l| l.message =~ /unknown configuration/ and l.level == :warning },
955
+ "Did not generate warning message")
956
+ end
957
+
958
+ def test_multiple_interpolations
959
+ @config.setdefaults(:section,
960
+ :one => ["oneval", "yay"],
961
+ :two => ["twoval", "yay"],
962
+ :three => ["$one/$two", "yay"]
963
+ )
964
+
965
+ assert_equal("oneval/twoval", @config[:three],
966
+ "Did not interpolate multiple variables")
967
+ end
968
+
969
+ # Make sure we can replace ${style} var names
970
+ def test_curly_replacements
971
+ @config.setdefaults(:section,
972
+ :one => ["oneval", "yay"],
973
+ :two => ["twoval", "yay"],
974
+ :three => ["$one/${two}/${one}/$two", "yay"]
975
+ )
976
+
977
+ assert_equal("oneval/twoval/oneval/twoval", @config[:three],
978
+ "Did not interpolate curlied variables")
979
+ end
980
+
981
+ # #489
982
+ def test_modes
983
+ Puppet[:name] = "puppet"
984
+ config = tempfile()
985
+
986
+ check = Proc.new do |string, int|
987
+ trans = @config.section_to_transportable(:puppet)
988
+ ssldir = trans.find { |o| o.type == "file" }
989
+ assert(ssldir, "could not find trans object")
990
+
991
+ if ssldir[:mode].is_a?(Fixnum)
992
+ assert_equal(int, ssldir[:mode], "mode not set correctly")
993
+ else
994
+ assert_equal(string, ssldir[:mode], "mode not set correctly")
995
+ end
996
+
997
+ obj = nil
998
+ assert_nothing_raised { obj = ssldir.to_type }
999
+
1000
+ assert(obj, "did not create object")
1001
+ assert_equal(int, obj.should(:mode),
1002
+ "did not pass mode correctly to file")
1003
+
1004
+ obj.class.clear
1005
+ end
1006
+
1007
+ file = tempfile
1008
+ @config.setdefaults(:puppet, :mode => ["644", "yay"])
1009
+ @config.setdefaults(:puppet, :ssldir => {
1010
+ :mode => 0644,
1011
+ :desc => "yay",
1012
+ :default => "/some/file"})
1013
+
1014
+ # Convert it first using the number
1015
+ check.call("644", 0644)
1016
+
1017
+ File.open(config, "w") { |f| f.puts "[puppet]
1018
+ mode = 750
1019
+ ssldir = #{file}
1020
+ "}
1021
+
1022
+ @config.parse(config)
1023
+
1024
+ assert_equal("750", @config[:mode],
1025
+ "Did not parse mode correctly")
1026
+
1027
+ check.call("750", 0750)
1028
+ end
1029
+
1030
+ def test_only_set_metas_when_valid
1031
+ file = tempfile
1032
+ config = tempfile
1033
+ @config.setdefaults(Puppet[:name], :ssldir => {
1034
+ :mode => 0644,
1035
+ :group => "yayness",
1036
+ :desc => "yay",
1037
+ :default => "/some/file"})
1038
+
1039
+ File.open(config, "w") { |f| f.puts "[#{Puppet[:name]}]
1040
+ mode = 755
1041
+ group = foo
1042
+ ssldir = #{file}
1043
+ "}
1044
+
1045
+ assert_nothing_raised do
1046
+ @config.parse(config)
1047
+ end
1048
+
1049
+ assert_raise(ArgumentError) do
1050
+ @config[:mode]
1051
+ end
1052
+ assert_raise(ArgumentError) do
1053
+ @config[:group]
1054
+ end
1055
+
1056
+ # Now make them valid params
1057
+ @config.setdefaults(Puppet[:name], :group => ["blah", "yay"])
1058
+ @config.setdefaults(Puppet[:name], :mode => ["750", "yay"])
1059
+
1060
+ assert_nothing_raised do
1061
+ @config.parse(config)
1062
+ end
1063
+
1064
+ assert_equal("foo", @config[:group],
1065
+ "Did not store group when it is a valid config")
1066
+ assert_equal("755", @config[:mode],
1067
+ "Did not store mode when it is a valid config")
1068
+
1069
+ end
810
1070
  end
811
1071
 
812
- # $Id: config.rb 1420 2006-07-21 21:16:09Z luke $
1072
+ # $Id: config.rb 2273 2007-03-08 17:35:18Z luke $