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,55 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke A. Kanies on 2006-11-29.
4
+ # Copyright (c) 2006. All rights reserved.
5
+
6
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
7
+
8
+ require 'puppettest'
9
+
10
+ class TestTypeManager < Test::Unit::TestCase
11
+ include PuppetTest
12
+
13
+ class FakeManager
14
+ extend Puppet::MetaType::Manager
15
+ def self.clear
16
+ @types = {}
17
+ end
18
+ end
19
+
20
+ def teardown
21
+ super
22
+ FakeManager.clear
23
+ end
24
+
25
+ # Make sure we can remove defined types
26
+ def test_rmtype
27
+ assert_nothing_raised {
28
+ FakeManager.newtype :testing do
29
+ newparam(:name, :namevar => true)
30
+ end
31
+ }
32
+ assert(FakeManager.type(:testing), "Did not get fake type")
33
+
34
+ assert_nothing_raised do
35
+ FakeManager.rmtype(:testing)
36
+ end
37
+
38
+ assert_nil(FakeManager.type(:testing), "Type was not removed")
39
+ assert(! defined?(FakeManager::Testing), "Constant was not removed")
40
+ end
41
+
42
+ def test_newtype
43
+ assert_nothing_raised do
44
+ FakeManager.newtype(:testing, :self_refresh => true) do
45
+ newparam(:name, :namevar => true)
46
+ end
47
+ end
48
+
49
+ test = FakeManager.type(:testing)
50
+ assert(test, "did not get type")
51
+ assert(test.self_refresh, "did not set attribute")
52
+ end
53
+ end
54
+
55
+ # $Id: manager.rb 2169 2007-02-07 06:47:10Z luke $
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppettest'
6
+ require 'mocha'
7
+
8
+ class TestTypeProviders < Test::Unit::TestCase
9
+ include PuppetTest
10
+
11
+ # Make sure default providers behave correctly
12
+ def test_defaultproviders
13
+ # Make a fake type
14
+ type = Puppet::Type.newtype(:defaultprovidertest) do
15
+ newparam(:name) do end
16
+ end
17
+
18
+ cleanup { Puppet::Type.rmtype(:defaultprovidertest) }
19
+
20
+ basic = type.provide(:basic) do
21
+ defaultfor :operatingsystem => :somethingelse,
22
+ :operatingsystemrelease => :yayness
23
+ end
24
+
25
+ assert_equal(basic, type.defaultprovider)
26
+ type.defaultprovider = nil
27
+
28
+ greater = type.provide(:greater) do
29
+ defaultfor :operatingsystem => Facter.value("operatingsystem")
30
+ end
31
+
32
+ assert_equal(greater, type.defaultprovider)
33
+ end
34
+
35
+ # Make sure the provider is always the first parameter created.
36
+ def test_provider_sorting
37
+ type = Puppet::Type.newtype(:sorttest) do
38
+ newparam(:name) {}
39
+ ensurable
40
+ end
41
+ cleanup { Puppet::Type.rmtype(:sorttest) }
42
+
43
+ should = [:name, :ensure]
44
+ assert_equal(should, type.allattrs.reject { |p| ! should.include?(p) },
45
+ "Got wrong order of parameters")
46
+
47
+ type.provide(:yay) { }
48
+ should = [:name, :provider, :ensure]
49
+ assert_equal(should, type.allattrs.reject { |p| ! should.include?(p) },
50
+ "Providify did not reorder parameters")
51
+ end
52
+ end
53
+
54
+ # $Id: provider.rb 2428 2007-04-28 01:18:23Z luke $
@@ -0,0 +1,837 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppettest'
6
+ require 'mocha'
7
+
8
+ class TestType < Test::Unit::TestCase
9
+ include PuppetTest
10
+ def test_typemethods
11
+ Puppet::Type.eachtype { |type|
12
+ name = nil
13
+ assert_nothing_raised("Searching for name for %s caused failure" %
14
+ type.to_s) {
15
+ name = type.name
16
+ }
17
+
18
+ assert(name, "Could not find name for %s" % type.to_s)
19
+
20
+ assert_equal(
21
+ type,
22
+ Puppet::Type.type(name),
23
+ "Failed to retrieve %s by name" % name
24
+ )
25
+
26
+ # Skip types with no parameters or valid properties
27
+ #unless ! type.parameters.empty? or ! type.validproperties.empty?
28
+ # next
29
+ #end
30
+
31
+ assert_nothing_raised {
32
+ assert(
33
+ type.namevar,
34
+ "Failed to retrieve namevar for %s" % name
35
+ )
36
+
37
+ assert_not_nil(
38
+ type.properties,
39
+ "Properties for %s are nil" % name
40
+ )
41
+
42
+ assert_not_nil(
43
+ type.validproperties,
44
+ "Valid properties for %s are nil" % name
45
+ )
46
+ }
47
+ }
48
+ end
49
+
50
+ def test_stringvssymbols
51
+ file = nil
52
+ path = tempfile()
53
+ assert_nothing_raised() {
54
+ system("rm -f %s" % path)
55
+ file = Puppet.type(:file).create(
56
+ :path => path,
57
+ :ensure => "file",
58
+ :recurse => true,
59
+ :checksum => "md5"
60
+ )
61
+ }
62
+ assert_nothing_raised() {
63
+ file.retrieve
64
+ }
65
+ assert_nothing_raised() {
66
+ file.evaluate
67
+ }
68
+ Puppet.type(:file).clear
69
+ assert_nothing_raised() {
70
+ system("rm -f %s" % path)
71
+ file = Puppet.type(:file).create(
72
+ "path" => path,
73
+ "ensure" => "file",
74
+ "recurse" => true,
75
+ "checksum" => "md5"
76
+ )
77
+ }
78
+ assert_nothing_raised() {
79
+ file.retrieve
80
+ }
81
+ assert_nothing_raised() {
82
+ file[:path]
83
+ }
84
+ assert_nothing_raised() {
85
+ file["path"]
86
+ }
87
+ assert_nothing_raised() {
88
+ file[:recurse]
89
+ }
90
+ assert_nothing_raised() {
91
+ file["recurse"]
92
+ }
93
+ assert_nothing_raised() {
94
+ file.evaluate
95
+ }
96
+ end
97
+
98
+ # This was supposed to test objects whose name was a property, but that
99
+ # fundamentally doesn't make much sense, and we now don't have any such
100
+ # types.
101
+ def disabled_test_nameasproperty
102
+ # currently groups are the only objects with the namevar as a property
103
+ group = nil
104
+ assert_nothing_raised {
105
+ group = Puppet.type(:group).create(
106
+ :name => "testing"
107
+ )
108
+ }
109
+
110
+ assert_equal("testing", group.name, "Could not retrieve name")
111
+ end
112
+
113
+ # Verify that values get merged correctly
114
+ def test_mergepropertyvalues
115
+ file = tempfile()
116
+
117
+ # Create the first version
118
+ assert_nothing_raised {
119
+ Puppet.type(:file).create(
120
+ :path => file,
121
+ :owner => ["root", "bin"]
122
+ )
123
+ }
124
+
125
+ # Make sure no other statements are allowed
126
+ assert_raise(Puppet::Error) {
127
+ Puppet.type(:file).create(
128
+ :path => file,
129
+ :group => "root"
130
+ )
131
+ }
132
+ end
133
+
134
+ # Verify that aliasing works
135
+ def test_aliasing
136
+ file = tempfile()
137
+
138
+ baseobj = nil
139
+ assert_nothing_raised {
140
+ baseobj = Puppet.type(:file).create(
141
+ :name => file,
142
+ :ensure => "file",
143
+ :alias => ["funtest"]
144
+ )
145
+ }
146
+
147
+ # Verify our adding ourselves as an alias isn't an error.
148
+ assert_nothing_raised {
149
+ baseobj[:alias] = file
150
+ }
151
+
152
+ assert_instance_of(Puppet.type(:file), Puppet.type(:file)["funtest"],
153
+ "Could not retrieve alias")
154
+
155
+ end
156
+
157
+ # Verify that requirements don't depend on file order
158
+ def test_prereqorder
159
+ one = tempfile()
160
+ two = tempfile()
161
+
162
+ twoobj = nil
163
+ oneobj = nil
164
+ assert_nothing_raised("Could not create prereq that doesn't exist yet") {
165
+ twoobj = Puppet.type(:file).create(
166
+ :name => two,
167
+ :require => [:file, one]
168
+ )
169
+ }
170
+
171
+ assert_nothing_raised {
172
+ oneobj = Puppet.type(:file).create(
173
+ :name => one
174
+ )
175
+ }
176
+
177
+ comp = newcomp(twoobj, oneobj)
178
+
179
+ assert_nothing_raised {
180
+ comp.finalize
181
+ }
182
+
183
+
184
+ assert(twoobj.requires?(oneobj), "Requirement was not created")
185
+ end
186
+
187
+ # Verify that names are aliases, not equivalents
188
+ def test_nameasalias
189
+ file = nil
190
+ # Create the parent dir, so we make sure autorequiring the parent dir works
191
+ parentdir = tempfile()
192
+ dir = Puppet.type(:file).create(
193
+ :name => parentdir,
194
+ :ensure => "directory"
195
+ )
196
+ assert_apply(dir)
197
+ path = File.join(parentdir, "subdir")
198
+ name = "a test file"
199
+ transport = Puppet::TransObject.new(name, "file")
200
+ transport[:path] = path
201
+ transport[:ensure] = "file"
202
+ assert_nothing_raised {
203
+ file = transport.to_type
204
+ }
205
+
206
+ assert_equal(path, file[:path])
207
+ assert_equal(name, file.title)
208
+
209
+ assert_nothing_raised {
210
+ file.retrieve
211
+ }
212
+
213
+ assert_apply(file)
214
+
215
+ assert(Puppet.type(:file)[name], "Could not look up object by name")
216
+ end
217
+
218
+ def test_ensuredefault
219
+ user = nil
220
+ assert_nothing_raised {
221
+ user = Puppet.type(:user).create(
222
+ :name => "pptestAA",
223
+ :check => [:uid]
224
+ )
225
+ }
226
+
227
+ # make sure we don't get :ensure for unmanaged files
228
+ assert(! user.property(:ensure), "User got an ensure property")
229
+
230
+ assert_nothing_raised {
231
+ user = Puppet.type(:user).create(
232
+ :name => "pptestAB",
233
+ :comment => "Testingness"
234
+ )
235
+ }
236
+ # but make sure it gets added once we manage them
237
+ assert(user.property(:ensure), "User did not add ensure property")
238
+
239
+ assert_nothing_raised {
240
+ user = Puppet.type(:user).create(
241
+ :name => "pptestBC",
242
+ :comment => "A fake user"
243
+ )
244
+ }
245
+
246
+ # and make sure managed objects start with them
247
+ assert(user.property(:ensure), "User did not get an ensure property")
248
+ end
249
+
250
+ # Make sure removal works
251
+ def test_remove
252
+ objects = {}
253
+ top = Puppet.type(:component).create(:name => "top")
254
+ objects[top.class] = top
255
+
256
+ base = tempfile()
257
+
258
+ # now make a two-tier, 5 piece tree
259
+ %w{a b}.each do |letter|
260
+ name = "comp%s" % letter
261
+ comp = Puppet.type(:component).create(:name => name)
262
+ top.push comp
263
+ objects[comp.class] = comp
264
+
265
+ 5.times do |i|
266
+ file = base + letter + i.to_s
267
+
268
+ obj = Puppet.type(:file).create(:name => file, :ensure => "file")
269
+
270
+ comp.push obj
271
+ objects[obj.class] = obj
272
+ end
273
+ end
274
+
275
+ assert_nothing_raised do
276
+ top.remove
277
+ end
278
+
279
+ objects.each do |klass, obj|
280
+ assert_nil(klass[obj.name], "object %s was not removed" % obj.name)
281
+ end
282
+ end
283
+
284
+ # Verify that objects can't be their own children.
285
+ def test_object_recursion
286
+ comp = Puppet.type(:component).create(:name => "top")
287
+
288
+ file = Puppet.type(:file).create(:path => tempfile, :ensure => :file)
289
+
290
+ assert_raise(Puppet::DevError) do
291
+ comp.push(comp)
292
+ end
293
+
294
+ assert_raise(Puppet::DevError) do
295
+ file.push(file)
296
+ end
297
+
298
+ assert_raise(Puppet::DevError) do
299
+ comp.parent = comp
300
+ end
301
+
302
+ assert_raise(Puppet::DevError) do
303
+ file.parent = file
304
+ end
305
+
306
+ assert_nothing_raised {
307
+ comp.push(file)
308
+ }
309
+
310
+ assert_raise(Puppet::DevError) do
311
+ file.push(comp)
312
+ end
313
+
314
+ assert_raise(Puppet::DevError) do
315
+ comp.parent = file
316
+ end
317
+ end
318
+
319
+ def test_loadplugins
320
+ names = %w{loadedplugin1 loadplugin2 loadplugin3}
321
+ dirs = []
322
+ 3.times { dirs << tempfile() }
323
+ # Set plugindest to something random
324
+ Puppet[:plugindest] = tempfile()
325
+
326
+ Puppet[:pluginpath] = dirs.join(":")
327
+
328
+ names.each do |name|
329
+ dir = dirs.shift
330
+ Dir.mkdir(dir)
331
+
332
+ # Create an extra file for later
333
+ [name, name + "2ness"].each do |n|
334
+ file = File.join(dir, n + ".rb")
335
+ File.open(file, "w") do |f|
336
+ f.puts %{Puppet::Type.newtype('#{n}') do
337
+ newparam(:argument) do
338
+ isnamevar
339
+ end
340
+ end
341
+ }
342
+ end
343
+ end
344
+
345
+ assert(Puppet::Type.type(name),
346
+ "Did not get loaded plugin")
347
+
348
+ assert_nothing_raised {
349
+ Puppet::Type.type(name).create(
350
+ :name => "myname"
351
+ )
352
+ }
353
+ end
354
+
355
+ # Now make sure the plugindest got added to our pluginpath
356
+ assert(Puppet[:pluginpath].split(":").include?(Puppet[:plugindest]),
357
+ "Plugin dest did not get added to plugin path")
358
+
359
+ # Now make sure it works with just a single path, using the extra files
360
+ # created above.
361
+ Puppet[:pluginpath] = Puppet[:pluginpath].split(":")[0]
362
+ assert(Puppet::Type.type("loadedplugin12ness"),
363
+ "Did not get loaded plugin")
364
+
365
+ end
366
+
367
+ def test_newtype_methods
368
+ assert_nothing_raised {
369
+ Puppet::Type.newtype(:mytype) do
370
+ newparam(:wow) do isnamevar end
371
+ end
372
+ }
373
+
374
+ assert(Puppet::Type.respond_to?(:newmytype),
375
+ "new<type> method did not get created")
376
+
377
+ obj = nil
378
+ assert_nothing_raised {
379
+ obj = Puppet::Type.newmytype(:wow => "yay")
380
+ }
381
+
382
+ assert(obj.is_a?(Puppet::Type.type(:mytype)),
383
+ "Obj is not the correct type")
384
+
385
+ # Now make the type again, just to make sure it works on refreshing.
386
+ assert_nothing_raised {
387
+ Puppet::Type.newtype(:mytype) do
388
+ newparam(:yay) do isnamevar end
389
+ end
390
+ }
391
+
392
+ obj = nil
393
+ # Make sure the old class was thrown away and only the new one is sitting
394
+ # around.
395
+ assert_raise(Puppet::Error) {
396
+ obj = Puppet::Type.newmytype(:wow => "yay")
397
+ }
398
+ assert_nothing_raised {
399
+ obj = Puppet::Type.newmytype(:yay => "yay")
400
+ }
401
+
402
+ # Now make sure that we don't replace existing, non-type methods
403
+ parammethod = Puppet::Type.method(:newparam)
404
+
405
+ assert_nothing_raised {
406
+ Puppet::Type.newtype(:param) do
407
+ newparam(:rah) do isnamevar end
408
+ end
409
+ }
410
+ assert_equal(parammethod, Puppet::Type.method(:newparam),
411
+ "newparam method got replaced by newtype")
412
+ end
413
+
414
+ def test_newproperty_options
415
+ # Create a type with a fake provider
416
+ providerclass = Class.new do
417
+ def method_missing(method, *args)
418
+ return method
419
+ end
420
+ end
421
+ self.class.const_set("ProviderClass", providerclass)
422
+
423
+ type = Puppet::Type.newtype(:mytype) do
424
+ newparam(:name) do
425
+ isnamevar
426
+ end
427
+ def provider
428
+ @provider ||= ProviderClass.new
429
+
430
+ @provider
431
+ end
432
+ end
433
+
434
+ # Now make a property with no options.
435
+ property = nil
436
+ assert_nothing_raised do
437
+ property = type.newproperty(:noopts) do
438
+ end
439
+ end
440
+
441
+ # Now create an instance
442
+ obj = type.create(:name => :myobj)
443
+
444
+ inst = property.new(:parent => obj)
445
+
446
+ # And make sure it's correctly setting @is
447
+ ret = nil
448
+ assert_nothing_raised {
449
+ ret = inst.retrieve
450
+ }
451
+
452
+ assert_equal(:noopts, inst.is)
453
+
454
+ # Now create a property with a different way of doing it
455
+ property = nil
456
+ assert_nothing_raised do
457
+ property = type.newproperty(:setretrieve, :retrieve => :yayness)
458
+ end
459
+
460
+ inst = property.new(:parent => obj)
461
+
462
+ # And make sure it's correctly setting @is
463
+ ret = nil
464
+ assert_nothing_raised {
465
+ ret = inst.retrieve
466
+ }
467
+
468
+ assert_equal(:yayness, inst.is)
469
+ end
470
+
471
+ def test_name_vs_title
472
+ path = tempfile()
473
+
474
+ trans = nil
475
+
476
+ assert_nothing_raised {
477
+ trans = Puppet::TransObject.new(path, :file)
478
+ }
479
+
480
+ file = nil
481
+ assert_nothing_raised {
482
+ file = Puppet::Type.newfile(trans)
483
+ }
484
+
485
+ assert(file.respond_to?(:title),
486
+ "No 'title' method")
487
+
488
+ assert(file.respond_to?(:name),
489
+ "No 'name' method")
490
+
491
+ assert_equal(file.title, file.name,
492
+ "Name and title were not marked equal")
493
+
494
+ assert_nothing_raised {
495
+ file.title = "My file"
496
+ }
497
+
498
+ assert_equal("My file", file.title)
499
+ assert_equal(path, file.name)
500
+ end
501
+
502
+ # Make sure the title is sufficiently differentiated from the namevar.
503
+ def test_title_at_creation_with_hash
504
+ file = nil
505
+ fileclass = Puppet::Type.type(:file)
506
+
507
+ path = tempfile()
508
+ assert_nothing_raised do
509
+ file = fileclass.create(
510
+ :title => "Myfile",
511
+ :path => path
512
+ )
513
+ end
514
+
515
+ assert_equal("Myfile", file.title, "Did not get correct title")
516
+ assert_equal(path, file[:name], "Did not get correct name")
517
+
518
+ file = nil
519
+ Puppet::Type.type(:file).clear
520
+
521
+ # Now make sure we can specify both and still get the right answers
522
+ assert_nothing_raised do
523
+ file = fileclass.create(
524
+ :title => "Myfile",
525
+ :name => path
526
+ )
527
+ end
528
+
529
+ assert_instance_of(fileclass, file)
530
+
531
+ assert_equal("Myfile", file.title, "Did not get correct title")
532
+ assert_equal(path, file[:name], "Did not get correct name")
533
+ end
534
+
535
+ # Make sure the "create" class method behaves appropriately.
536
+ def test_class_create
537
+ title = "Myfile"
538
+ validate = proc do |element|
539
+ assert(element, "Did not create file")
540
+ assert_instance_of(Puppet::Type.type(:file), element)
541
+ assert_equal(title, element.title, "Title is not correct")
542
+ end
543
+ type = :file
544
+ args = {:path => tempfile(), :owner => "root"}
545
+
546
+ trans = Puppet::TransObject.new(title, type)
547
+ args.each do |name, val| trans[name] = val end
548
+
549
+ # First call it on the appropriate typeclass
550
+ obj = nil
551
+ assert_nothing_raised do
552
+ obj = Puppet::Type.type(:file).create(trans)
553
+ end
554
+
555
+ validate.call(obj)
556
+
557
+ # Now try it using the class method on Type
558
+ oldid = obj.object_id
559
+ obj = nil
560
+ Puppet::Type.type(:file).clear
561
+
562
+ assert_nothing_raised {
563
+ obj = Puppet::Type.create(trans)
564
+ }
565
+
566
+ validate.call(obj)
567
+ assert(oldid != obj.object_id, "Got same object back")
568
+
569
+ # Now try the same things with hashes instead of a transobject
570
+ oldid = obj.object_id
571
+ obj = nil
572
+ Puppet::Type.type(:file).clear
573
+ hash = {
574
+ :type => :file,
575
+ :title => "Myfile",
576
+ :path => tempfile(),
577
+ :owner => "root"
578
+ }
579
+
580
+ # First call it on the appropriate typeclass
581
+ obj = nil
582
+ assert_nothing_raised do
583
+ obj = Puppet::Type.type(:file).create(hash)
584
+ end
585
+
586
+ validate.call(obj)
587
+ assert_equal(:file, obj.should(:type),
588
+ "Type param did not pass through")
589
+
590
+ assert(oldid != obj.object_id, "Got same object back")
591
+
592
+ # Now try it using the class method on Type
593
+ oldid = obj.object_id
594
+ obj = nil
595
+ Puppet::Type.type(:file).clear
596
+
597
+ assert_nothing_raised {
598
+ obj = Puppet::Type.create(hash)
599
+ }
600
+
601
+ validate.call(obj)
602
+ assert(oldid != obj.object_id, "Got same object back")
603
+ assert_nil(obj.should(:type),
604
+ "Type param passed through")
605
+ end
606
+
607
+ def test_multiplenames
608
+ obj = nil
609
+ path = tempfile()
610
+ assert_raise ArgumentError do
611
+ obj = Puppet::Type.type(:file).create(
612
+ :name => path,
613
+ :path => path
614
+ )
615
+ end
616
+ end
617
+
618
+ def test_title_and_name
619
+ obj = nil
620
+ path = tempfile()
621
+ fileobj = Puppet::Type.type(:file)
622
+
623
+ assert_nothing_raised do
624
+ obj = fileobj.create(
625
+ :title => "myfile",
626
+ :path => path
627
+ )
628
+ end
629
+
630
+ assert_equal(obj, fileobj["myfile"],
631
+ "Could not retrieve obj by title")
632
+
633
+ assert_equal(obj, fileobj[path],
634
+ "Could not retrieve obj by name")
635
+ end
636
+
637
+ # Make sure default providers behave correctly
638
+ def test_defaultproviders
639
+ # Make a fake type
640
+ type = Puppet::Type.newtype(:defaultprovidertest) do
641
+ newparam(:name) do end
642
+ end
643
+
644
+ basic = type.provide(:basic) do
645
+ defaultfor :operatingsystem => :somethingelse,
646
+ :operatingsystemrelease => :yayness
647
+ end
648
+
649
+ assert_equal(basic, type.defaultprovider)
650
+ type.defaultprovider = nil
651
+
652
+ greater = type.provide(:greater) do
653
+ defaultfor :operatingsystem => Facter.value("operatingsystem")
654
+ end
655
+
656
+ assert_equal(greater, type.defaultprovider)
657
+ end
658
+
659
+ # Make sure that we can have multiple isomorphic objects with the same name,
660
+ # but not with non-isomorphic objects.
661
+ def test_isomorphic_names
662
+ # First do execs, since they're not isomorphic.
663
+ echo = Puppet::Util.binary "echo"
664
+ exec1 = exec2 = nil
665
+ assert_nothing_raised do
666
+ exec1 = Puppet::Type.type(:exec).create(
667
+ :title => "exec1",
668
+ :command => "#{echo} funtest"
669
+ )
670
+ end
671
+ assert_nothing_raised do
672
+ exec2 = Puppet::Type.type(:exec).create(
673
+ :title => "exec2",
674
+ :command => "#{echo} funtest"
675
+ )
676
+ end
677
+
678
+ assert_apply(exec1, exec2)
679
+
680
+ # Now do files, since they are. This should fail.
681
+ file1 = file2 = nil
682
+ path = tempfile()
683
+ assert_nothing_raised do
684
+ file1 = Puppet::Type.type(:file).create(
685
+ :title => "file1",
686
+ :path => path,
687
+ :content => "yayness"
688
+ )
689
+ end
690
+
691
+ # This will fail, but earlier systems will catch it.
692
+ assert_raise(Puppet::Error) do
693
+ file2 = Puppet::Type.type(:file).create(
694
+ :title => "file2",
695
+ :path => path,
696
+ :content => "rahness"
697
+ )
698
+ end
699
+
700
+ assert(file1, "Did not create first file")
701
+ assert_nil(file2, "Incorrectly created second file")
702
+ end
703
+
704
+ def test_tags
705
+ obj = Puppet::Type.type(:file).create(:path => tempfile())
706
+
707
+ tags = [:some, :test, :tags]
708
+
709
+ obj.tags = tags
710
+
711
+ assert_equal(tags + [:file], obj.tags)
712
+ end
713
+
714
+ def disabled_test_list
715
+ Puppet::Type.loadall
716
+
717
+ Puppet::Type.eachtype do |type|
718
+ next if type.name == :symlink
719
+ next if type.name == :component
720
+ next if type.name == :tidy
721
+ assert(type.respond_to?(:list), "%s does not respond to list" % type.name)
722
+ end
723
+ end
724
+
725
+ def test_to_hash
726
+ file = Puppet::Type.newfile :path => tempfile(), :owner => "luke",
727
+ :recurse => true, :loglevel => "warning"
728
+
729
+ hash = nil
730
+ assert_nothing_raised do
731
+ hash = file.to_hash
732
+ end
733
+
734
+ [:path, :owner, :recurse, :loglevel].each do |param|
735
+ assert(hash[param], "Hash did not include %s" % param)
736
+ end
737
+ end
738
+
739
+ # Make sure that classes behave like hashes.
740
+ def test_class_hash_behaviour
741
+ path = tempfile()
742
+
743
+ filetype = Puppet::Type.type(:file)
744
+ one = Puppet::Type.newfile :path => path
745
+
746
+ assert_equal(one, filetype[path], "Did not get file back")
747
+
748
+ assert_raise(Puppet::Error) do
749
+ filetype[path] = one
750
+ end
751
+ end
752
+
753
+ def test_ref
754
+ path = tempfile()
755
+ Puppet::Type.type(:exec) # uggh, the methods need to load the types
756
+ file = Puppet::Type.newfile(:path => path)
757
+ assert_equal("File[#{path}]", file.ref)
758
+
759
+ exec = Puppet::Type.newexec(:title => "yay", :command => "/bin/echo yay")
760
+ assert_equal("Exec[yay]", exec.ref)
761
+ end
762
+
763
+ def test_noop_metaparam
764
+ file = Puppet::Type.newfile :path => tempfile
765
+ assert(!file.noop, "file incorrectly in noop")
766
+
767
+ assert_nothing_raised do
768
+ file[:noop] = true
769
+ end
770
+ assert(file.noop, "file should be in noop")
771
+
772
+ # Now set the main one
773
+ Puppet[:noop] = true
774
+ assert(file.noop, "file should be in noop")
775
+ file[:noop] = false
776
+ assert(file.noop, "file should be in noop")
777
+ end
778
+
779
+ def test_path
780
+ # Check that our paths are built correctly. Just pick a random, "normal" type.
781
+ type = Puppet::Type.type(:exec)
782
+ mk = Proc.new do |i, hash|
783
+ hash[:title] = "exec%s" % i
784
+ hash[:command] = "/bin/echo"
785
+ type.create(hash)
786
+ end
787
+
788
+ exec = mk.call(1, {})
789
+
790
+ assert_equal("/Exec[exec1]", exec.path)
791
+
792
+ comp = Puppet::Type.newcomponent :title => "My[component]", :type => "Yay"
793
+
794
+ exec = mk.call(2, :parent => comp)
795
+
796
+ assert_equal("/My[component]/Exec[exec2]", exec.path)
797
+
798
+ comp = Puppet::Type.newcomponent :name => "Other[thing]"
799
+ exec = mk.call(3, :parent => comp)
800
+ assert_equal("/Other[thing]/Exec[exec3]", exec.path)
801
+
802
+ comp = Puppet::Type.newcomponent :type => "server", :name => "server"
803
+ exec = mk.call(4, :parent => comp)
804
+ assert_equal("/server/Exec[exec4]", exec.path)
805
+
806
+ comp = Puppet::Type.newcomponent :type => "whatever", :name => "main[top]"
807
+ exec = mk.call(5, :parent => comp)
808
+ assert_equal("//Exec[exec5]", exec.path)
809
+
810
+ comp = Puppet::Type.newcomponent :type => "yay", :name => "Good[bad]", :parent => comp
811
+ exec = mk.call(6, :parent => comp)
812
+ assert_equal("//Good[bad]/Exec[exec6]", exec.path)
813
+ end
814
+
815
+ def test_evaluate
816
+ faketype = Puppet::Type.newtype(:faketype) do
817
+ newparam(:name) {}
818
+ end
819
+ cleanup { Puppet::Type.rmtype(:faketype) }
820
+ faketype.provide(:fake) do
821
+ def prefetch
822
+ end
823
+ end
824
+
825
+ obj = faketype.create :name => "yayness", :provider => :fake
826
+ assert(obj, "did not create object")
827
+
828
+ obj.provider.expects(:prefetch)
829
+ obj.expects(:retrieve)
830
+ obj.expects(:propertychanges).returns([])
831
+ obj.expects(:cache)
832
+
833
+ obj.evaluate
834
+ end
835
+ end
836
+
837
+ # $Id: type.rb 2275 2007-03-08 21:18:43Z luke $