puppet 0.18.4 → 0.22.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (673) hide show
  1. data/CHANGELOG +288 -0
  2. data/README +2 -2
  3. data/Rakefile +78 -5
  4. data/bin/puppet +28 -36
  5. data/bin/puppetca +81 -38
  6. data/bin/puppetd +65 -62
  7. data/bin/puppetdoc +409 -140
  8. data/bin/puppetmasterd +59 -47
  9. data/bin/puppetrun +38 -23
  10. data/conf/freebsd/puppetd +26 -0
  11. data/conf/freebsd/puppetmasterd +26 -0
  12. data/conf/gentoo/conf.d/puppet +5 -0
  13. data/conf/gentoo/conf.d/puppetmaster +12 -0
  14. data/conf/gentoo/init.d/puppet +38 -0
  15. data/conf/gentoo/init.d/puppetmaster +50 -0
  16. data/conf/gentoo/puppet/fileserver.conf +12 -0
  17. data/conf/gentoo/puppet/puppetca.conf +29 -0
  18. data/conf/gentoo/puppet/puppetd.conf +29 -0
  19. data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
  20. data/conf/redhat/client.init +10 -5
  21. data/conf/redhat/client.sysconfig +1 -1
  22. data/conf/redhat/fileserver.conf +2 -2
  23. data/conf/redhat/logrotate +1 -1
  24. data/conf/redhat/no-lockdir.patch +13 -0
  25. data/conf/redhat/puppet.spec +65 -8
  26. data/conf/redhat/puppetd.conf +0 -4
  27. data/conf/redhat/server.init +3 -6
  28. data/conf/solaris/pkginfo +1 -1
  29. data/conf/solaris/smf/svc-puppetd +2 -2
  30. data/conf/suse/client.init +142 -0
  31. data/conf/suse/puppet.spec +221 -0
  32. data/conf/suse/server.init +162 -0
  33. data/examples/code/mac_automount.pp +16 -0
  34. data/examples/root/bin/sleeper +3 -5
  35. data/examples/root/etc/init.d/sleeper +8 -2
  36. data/examples/root/etc/puppet/fileserver.conf +12 -2
  37. data/examples/root/etc/puppet/namespaceauth.conf +20 -0
  38. data/examples/root/etc/puppet/puppetd.conf +4 -0
  39. data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
  40. data/examples/root/etc/puppet/tagmail.conf +1 -0
  41. data/ext/emacs/puppet-mode.el +46 -1
  42. data/ext/logcheck/puppet +15 -0
  43. data/ext/module_puppet +15 -23
  44. data/ext/vim/puppet.vim +4 -2
  45. data/install.rb +2 -1
  46. data/lib/puppet.rb +76 -207
  47. data/lib/puppet/configuration.rb +331 -0
  48. data/lib/puppet/daemon.rb +63 -246
  49. data/lib/puppet/dsl.rb +371 -0
  50. data/lib/puppet/element.rb +8 -26
  51. data/lib/puppet/error.rb +54 -0
  52. data/lib/puppet/event.rb +8 -243
  53. data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
  54. data/lib/puppet/external/event-loop.rb +1 -0
  55. data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
  56. data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
  57. data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
  58. data/lib/puppet/external/gratr.rb +33 -0
  59. data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
  60. data/lib/puppet/external/gratr/base.rb +34 -0
  61. data/lib/puppet/external/gratr/biconnected.rb +116 -0
  62. data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
  63. data/lib/puppet/external/gratr/common.rb +73 -0
  64. data/lib/puppet/external/gratr/comparability.rb +92 -0
  65. data/lib/puppet/external/gratr/digraph.rb +116 -0
  66. data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
  67. data/lib/puppet/external/gratr/dot.rb +90 -0
  68. data/lib/puppet/external/gratr/edge.rb +145 -0
  69. data/lib/puppet/external/gratr/graph.rb +303 -0
  70. data/lib/puppet/external/gratr/graph_api.rb +83 -0
  71. data/lib/puppet/external/gratr/import.rb +44 -0
  72. data/lib/puppet/external/gratr/labels.rb +90 -0
  73. data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
  74. data/lib/puppet/external/gratr/rdot.rb +327 -0
  75. data/lib/puppet/external/gratr/search.rb +409 -0
  76. data/lib/puppet/external/gratr/strong_components.rb +127 -0
  77. data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
  78. data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
  79. data/lib/puppet/feature/base.rb +20 -0
  80. data/lib/puppet/feature/rails.rb +52 -0
  81. data/lib/puppet/metatype/attributes.rb +719 -0
  82. data/lib/puppet/metatype/closure.rb +111 -0
  83. data/lib/puppet/metatype/container.rb +94 -0
  84. data/lib/puppet/metatype/evaluation.rb +118 -0
  85. data/lib/puppet/metatype/instances.rb +261 -0
  86. data/lib/puppet/metatype/manager.rb +169 -0
  87. data/lib/puppet/metatype/metaparams.rb +409 -0
  88. data/lib/puppet/metatype/providers.rb +260 -0
  89. data/lib/puppet/metatype/relationships.rb +116 -0
  90. data/lib/puppet/metatype/schedules.rb +39 -0
  91. data/lib/puppet/metatype/tags.rb +39 -0
  92. data/lib/puppet/modules.rb +113 -0
  93. data/lib/puppet/network/authconfig.rb +168 -0
  94. data/lib/puppet/network/authorization.rb +84 -0
  95. data/lib/puppet/network/authstore.rb +293 -0
  96. data/lib/puppet/network/client.rb +187 -0
  97. data/lib/puppet/network/client/ca.rb +56 -0
  98. data/lib/puppet/network/client/dipper.rb +81 -0
  99. data/lib/puppet/network/client/file.rb +7 -0
  100. data/lib/puppet/network/client/logger.rb +6 -0
  101. data/lib/puppet/network/client/master.rb +644 -0
  102. data/lib/puppet/{client → network/client}/proxy.rb +3 -3
  103. data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
  104. data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
  105. data/lib/puppet/network/client/runner.rb +13 -0
  106. data/lib/puppet/network/client/status.rb +5 -0
  107. data/lib/puppet/network/client_request.rb +32 -0
  108. data/lib/puppet/network/handler.rb +33 -0
  109. data/lib/puppet/{server → network/handler}/ca.rb +5 -6
  110. data/lib/puppet/network/handler/filebucket.rb +180 -0
  111. data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
  112. data/lib/puppet/{server → network/handler}/logger.rb +3 -5
  113. data/lib/puppet/{server → network/handler}/master.rb +42 -8
  114. data/lib/puppet/network/handler/report.rb +158 -0
  115. data/lib/puppet/network/handler/resource.rb +190 -0
  116. data/lib/puppet/{server → network/handler}/runner.rb +17 -18
  117. data/lib/puppet/network/handler/status.rb +13 -0
  118. data/lib/puppet/network/rights.rb +74 -0
  119. data/lib/puppet/network/server.rb +5 -0
  120. data/lib/puppet/network/server/mongrel.rb +138 -0
  121. data/lib/puppet/network/server/webrick.rb +153 -0
  122. data/lib/puppet/network/xmlrpc/client.rb +129 -0
  123. data/lib/puppet/network/xmlrpc/processor.rb +91 -0
  124. data/lib/puppet/network/xmlrpc/server.rb +20 -0
  125. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
  126. data/lib/puppet/parameter.rb +390 -346
  127. data/lib/puppet/parser/ast.rb +116 -147
  128. data/lib/puppet/parser/ast/astarray.rb +17 -33
  129. data/lib/puppet/parser/ast/branch.rb +2 -0
  130. data/lib/puppet/parser/ast/caseopt.rb +7 -12
  131. data/lib/puppet/parser/ast/casestatement.rb +23 -32
  132. data/lib/puppet/parser/ast/collection.rb +19 -80
  133. data/lib/puppet/parser/ast/collexpr.rb +81 -0
  134. data/lib/puppet/parser/ast/component.rb +160 -89
  135. data/lib/puppet/parser/ast/else.rb +30 -0
  136. data/lib/puppet/parser/ast/function.rb +9 -2
  137. data/lib/puppet/parser/ast/hostclass.rb +47 -131
  138. data/lib/puppet/parser/ast/ifstatement.rb +43 -0
  139. data/lib/puppet/parser/ast/leaf.rb +10 -21
  140. data/lib/puppet/parser/ast/node.rb +32 -79
  141. data/lib/puppet/parser/ast/resourcedef.rb +222 -0
  142. data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
  143. data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
  144. data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
  145. data/lib/puppet/parser/ast/resourceref.rb +44 -0
  146. data/lib/puppet/parser/ast/selector.rb +16 -8
  147. data/lib/puppet/parser/ast/tag.rb +3 -1
  148. data/lib/puppet/parser/ast/vardef.rb +8 -12
  149. data/lib/puppet/parser/collector.rb +181 -0
  150. data/lib/puppet/parser/functions.rb +191 -36
  151. data/lib/puppet/parser/interpreter.rb +802 -380
  152. data/lib/puppet/parser/lexer.rb +86 -19
  153. data/lib/puppet/parser/parser.rb +1123 -960
  154. data/lib/puppet/parser/resource.rb +353 -0
  155. data/lib/puppet/parser/resource/param.rb +57 -0
  156. data/lib/puppet/parser/resource/reference.rb +71 -0
  157. data/lib/puppet/parser/scope.rb +573 -1000
  158. data/lib/puppet/parser/templatewrapper.rb +54 -0
  159. data/lib/puppet/pgraph.rb +208 -0
  160. data/lib/puppet/propertychange.rb +143 -0
  161. data/lib/puppet/provider.rb +302 -0
  162. data/lib/puppet/provider/cron/crontab.rb +187 -0
  163. data/lib/puppet/provider/group/groupadd.rb +29 -0
  164. data/lib/puppet/provider/group/netinfo.rb +12 -0
  165. data/lib/puppet/provider/group/pw.rb +31 -0
  166. data/lib/puppet/provider/host/netinfo.rb +18 -0
  167. data/lib/puppet/provider/host/parsed.rb +73 -0
  168. data/lib/puppet/provider/mount.rb +57 -0
  169. data/lib/puppet/provider/mount/netinfo.rb +38 -0
  170. data/lib/puppet/provider/mount/parsed.rb +37 -0
  171. data/lib/puppet/provider/nameservice.rb +344 -0
  172. data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
  173. data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
  174. data/lib/puppet/provider/nameservice/pw.rb +22 -0
  175. data/lib/puppet/provider/package/apple.rb +53 -0
  176. data/lib/puppet/provider/package/apt.rb +119 -0
  177. data/lib/puppet/provider/package/aptitude.rb +30 -0
  178. data/lib/puppet/provider/package/aptrpm.rb +79 -0
  179. data/lib/puppet/provider/package/blastwave.rb +114 -0
  180. data/lib/puppet/provider/package/darwinport.rb +88 -0
  181. data/lib/puppet/provider/package/dpkg.rb +109 -0
  182. data/lib/puppet/provider/package/freebsd.rb +43 -0
  183. data/lib/puppet/provider/package/gem.rb +104 -0
  184. data/lib/puppet/provider/package/openbsd.rb +93 -0
  185. data/lib/puppet/provider/package/pkgdmg.rb +119 -0
  186. data/lib/puppet/provider/package/portage.rb +112 -0
  187. data/lib/puppet/provider/package/ports.rb +94 -0
  188. data/lib/puppet/provider/package/rpm.rb +125 -0
  189. data/lib/puppet/provider/package/rug.rb +53 -0
  190. data/lib/puppet/provider/package/sun.rb +168 -0
  191. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  192. data/lib/puppet/provider/package/up2date.rb +45 -0
  193. data/lib/puppet/provider/package/yum.rb +54 -0
  194. data/lib/puppet/provider/parsedfile.rb +342 -0
  195. data/lib/puppet/provider/port/parsed.rb +174 -0
  196. data/lib/puppet/provider/service/base.rb +136 -0
  197. data/lib/puppet/provider/service/debian.rb +32 -0
  198. data/lib/puppet/provider/service/gentoo.rb +49 -0
  199. data/lib/puppet/{type → provider}/service/init.rb +42 -40
  200. data/lib/puppet/provider/service/redhat.rb +59 -0
  201. data/lib/puppet/{type → provider}/service/smf.rb +24 -13
  202. data/lib/puppet/provider/sshkey/parsed.rb +36 -0
  203. data/lib/puppet/provider/user/netinfo.rb +106 -0
  204. data/lib/puppet/provider/user/pw.rb +41 -0
  205. data/lib/puppet/provider/user/useradd.rb +67 -0
  206. data/lib/puppet/provider/zone/solaris.rb +208 -0
  207. data/lib/puppet/rails.rb +102 -66
  208. data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
  209. data/lib/puppet/rails/database/schema.rb +89 -0
  210. data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
  211. data/lib/puppet/rails/external/tagging/init.rb +5 -0
  212. data/lib/puppet/rails/external/tagging/tag.rb +50 -0
  213. data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
  214. data/lib/puppet/rails/fact_name.rb +7 -0
  215. data/lib/puppet/rails/fact_value.rb +5 -0
  216. data/lib/puppet/rails/host.rb +95 -46
  217. data/lib/puppet/rails/param_name.rb +28 -0
  218. data/lib/puppet/rails/param_value.rb +5 -0
  219. data/lib/puppet/rails/puppet_class.rb +9 -0
  220. data/lib/puppet/rails/resource.rb +95 -0
  221. data/lib/puppet/rails/source_file.rb +5 -0
  222. data/lib/puppet/relationship.rb +63 -0
  223. data/lib/puppet/reports/log.rb +14 -0
  224. data/lib/puppet/reports/rrdgraph.rb +114 -10
  225. data/lib/puppet/reports/store.rb +64 -0
  226. data/lib/puppet/reports/tagmail.rb +144 -71
  227. data/lib/puppet/sslcertificates.rb +38 -5
  228. data/lib/puppet/sslcertificates/ca.rb +142 -37
  229. data/lib/puppet/sslcertificates/certificate.rb +3 -3
  230. data/lib/puppet/sslcertificates/inventory.rb +53 -0
  231. data/lib/puppet/sslcertificates/support.rb +128 -0
  232. data/lib/puppet/transaction.rb +568 -189
  233. data/lib/puppet/transaction/report.rb +14 -3
  234. data/lib/puppet/transportable.rb +18 -10
  235. data/lib/puppet/type.rb +279 -2299
  236. data/lib/puppet/type/component.rb +63 -63
  237. data/lib/puppet/type/cron.rb +294 -710
  238. data/lib/puppet/type/exec.rb +185 -129
  239. data/lib/puppet/type/group.rb +38 -89
  240. data/lib/puppet/type/host.rb +110 -0
  241. data/lib/puppet/type/mount.rb +189 -0
  242. data/lib/puppet/type/notify.rb +47 -0
  243. data/lib/puppet/type/package.rb +129 -257
  244. data/lib/puppet/type/parsedtype.rb +172 -297
  245. data/lib/puppet/type/pfile.rb +540 -319
  246. data/lib/puppet/type/pfile/checksum.rb +103 -76
  247. data/lib/puppet/type/pfile/content.rb +16 -10
  248. data/lib/puppet/type/pfile/ensure.rb +52 -34
  249. data/lib/puppet/type/pfile/group.rb +25 -18
  250. data/lib/puppet/type/pfile/mode.rb +7 -4
  251. data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
  252. data/lib/puppet/type/pfile/source.rb +119 -124
  253. data/lib/puppet/type/pfile/target.rb +29 -45
  254. data/lib/puppet/type/pfile/type.rb +2 -2
  255. data/lib/puppet/type/pfilebucket.rb +18 -14
  256. data/lib/puppet/type/port.rb +121 -0
  257. data/lib/puppet/type/property.rb +530 -0
  258. data/lib/puppet/type/resources.rb +150 -0
  259. data/lib/puppet/type/schedule.rb +38 -22
  260. data/lib/puppet/type/service.rb +70 -326
  261. data/lib/puppet/type/sshkey.rb +76 -0
  262. data/lib/puppet/type/tidy.rb +197 -97
  263. data/lib/puppet/type/user.rb +107 -183
  264. data/lib/puppet/type/yumrepo.rb +53 -34
  265. data/lib/puppet/type/zone.rb +55 -208
  266. data/lib/puppet/util.rb +239 -201
  267. data/lib/puppet/util/autoload.rb +107 -0
  268. data/lib/puppet/util/classgen.rb +208 -0
  269. data/lib/puppet/{config.rb → util/config.rb} +102 -54
  270. data/lib/puppet/util/docs.rb +104 -0
  271. data/lib/puppet/util/errors.rb +55 -0
  272. data/lib/puppet/util/execution.rb +22 -0
  273. data/lib/puppet/util/feature.rb +76 -0
  274. data/lib/puppet/util/fileparsing.rb +380 -0
  275. data/lib/puppet/util/filetype.rb +300 -0
  276. data/lib/puppet/util/graph.rb +39 -0
  277. data/lib/puppet/util/inifile.rb +209 -0
  278. data/lib/puppet/util/loadedfile.rb +71 -0
  279. data/lib/puppet/util/log.rb +549 -0
  280. data/lib/puppet/util/logging.rb +20 -0
  281. data/lib/puppet/util/metaid.rb +22 -0
  282. data/lib/puppet/util/methodhelper.rb +37 -0
  283. data/lib/puppet/util/metric.rb +160 -0
  284. data/lib/puppet/util/package.rb +31 -0
  285. data/lib/puppet/util/pidlock.rb +68 -0
  286. data/lib/puppet/util/plist.rb +24 -0
  287. data/lib/puppet/util/plist/generator.rb +226 -0
  288. data/lib/puppet/util/plist/parser.rb +227 -0
  289. data/lib/puppet/util/posix.rb +87 -0
  290. data/lib/puppet/util/provider_features.rb +170 -0
  291. data/lib/puppet/util/rails/collection_merger.rb +42 -0
  292. data/lib/puppet/util/storage.rb +103 -0
  293. data/lib/puppet/util/subclass_loader.rb +83 -0
  294. data/lib/puppet/util/suidmanager.rb +86 -0
  295. data/lib/puppet/util/variables.rb +39 -0
  296. data/lib/puppet/util/warnings.rb +15 -0
  297. data/test/Rakefile +97 -0
  298. data/test/certmgr/ca.rb +81 -0
  299. data/test/certmgr/certmgr.rb +77 -50
  300. data/test/certmgr/inventory.rb +79 -0
  301. data/test/certmgr/support.rb +81 -0
  302. data/test/executables/filebucket.rb +49 -0
  303. data/test/executables/puppetbin.rb +28 -12
  304. data/test/executables/puppetca.rb +75 -54
  305. data/test/executables/puppetd.rb +10 -13
  306. data/test/executables/puppetmasterd.rb +12 -17
  307. data/test/executables/puppetmodule.rb +18 -17
  308. data/test/language/ast.rb +242 -798
  309. data/test/language/ast/casestatement.rb +104 -0
  310. data/test/language/ast/component.rb +133 -0
  311. data/test/language/ast/hostclass.rb +162 -0
  312. data/test/language/ast/selector.rb +62 -0
  313. data/test/language/ast/variable.rb +31 -0
  314. data/test/language/collector.rb +369 -0
  315. data/test/language/functions.rb +305 -18
  316. data/test/language/interpreter.rb +894 -125
  317. data/test/language/lexer.rb +98 -12
  318. data/test/language/node.rb +37 -53
  319. data/test/language/parser.rb +455 -148
  320. data/test/language/resource.rb +535 -0
  321. data/test/language/scope.rb +451 -561
  322. data/test/language/snippets.rb +101 -111
  323. data/test/language/transportable.rb +6 -8
  324. data/test/lib/mocha.rb +19 -0
  325. data/test/lib/mocha/any_instance_method.rb +35 -0
  326. data/test/lib/mocha/auto_verify.rb +113 -0
  327. data/test/lib/mocha/central.rb +35 -0
  328. data/test/lib/mocha/class_method.rb +62 -0
  329. data/test/lib/mocha/expectation.rb +295 -0
  330. data/test/lib/mocha/expectation_error.rb +6 -0
  331. data/test/lib/mocha/infinite_range.rb +27 -0
  332. data/test/lib/mocha/inspect.rb +37 -0
  333. data/test/lib/mocha/instance_method.rb +8 -0
  334. data/test/lib/mocha/metaclass.rb +7 -0
  335. data/test/lib/mocha/mock.rb +20 -0
  336. data/test/lib/mocha/mock_methods.rb +122 -0
  337. data/test/lib/mocha/object.rb +100 -0
  338. data/test/lib/mocha/pretty_parameters.rb +28 -0
  339. data/test/lib/mocha/setup_and_teardown.rb +23 -0
  340. data/test/lib/mocha/standalone.rb +30 -0
  341. data/test/lib/mocha/test_case_adapter.rb +49 -0
  342. data/test/lib/mocha_standalone.rb +2 -0
  343. data/test/lib/puppettest.rb +294 -0
  344. data/test/lib/puppettest/certificates.rb +61 -0
  345. data/test/lib/puppettest/exetest.rb +123 -0
  346. data/test/lib/puppettest/fakes.rb +194 -0
  347. data/test/lib/puppettest/fileparsing.rb +33 -0
  348. data/test/lib/puppettest/filetesting.rb +231 -0
  349. data/test/lib/puppettest/graph.rb +41 -0
  350. data/test/lib/puppettest/parsertesting.rb +392 -0
  351. data/test/lib/puppettest/railstesting.rb +56 -0
  352. data/test/lib/puppettest/reporttesting.rb +19 -0
  353. data/test/lib/puppettest/resourcetesting.rb +73 -0
  354. data/test/lib/puppettest/servertest.rb +72 -0
  355. data/test/lib/puppettest/support.rb +8 -0
  356. data/test/lib/puppettest/support/assertions.rb +101 -0
  357. data/test/lib/puppettest/support/helpers.rb +23 -0
  358. data/test/lib/puppettest/support/resources.rb +37 -0
  359. data/test/lib/puppettest/support/utils.rb +160 -0
  360. data/test/lib/puppettest/testcase.rb +48 -0
  361. data/test/lib/rake/puppet_test_loader.rb +17 -0
  362. data/test/lib/rake/puppet_testtask.rb +17 -0
  363. data/test/lib/spec.rb +8 -0
  364. data/test/lib/spec/callback.rb +11 -0
  365. data/test/lib/spec/callback/callback_container.rb +60 -0
  366. data/test/lib/spec/callback/extensions/module.rb +24 -0
  367. data/test/lib/spec/callback/extensions/object.rb +37 -0
  368. data/test/lib/spec/deprecated.rb +3 -0
  369. data/test/lib/spec/expectations.rb +59 -0
  370. data/test/lib/spec/expectations/differs/default.rb +62 -0
  371. data/test/lib/spec/expectations/errors.rb +6 -0
  372. data/test/lib/spec/expectations/extensions.rb +3 -0
  373. data/test/lib/spec/expectations/extensions/object.rb +109 -0
  374. data/test/lib/spec/expectations/extensions/proc.rb +57 -0
  375. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  376. data/test/lib/spec/expectations/handler.rb +47 -0
  377. data/test/lib/spec/expectations/should.rb +5 -0
  378. data/test/lib/spec/expectations/should/base.rb +64 -0
  379. data/test/lib/spec/expectations/should/change.rb +69 -0
  380. data/test/lib/spec/expectations/should/have.rb +128 -0
  381. data/test/lib/spec/expectations/should/not.rb +74 -0
  382. data/test/lib/spec/expectations/should/should.rb +81 -0
  383. data/test/lib/spec/expectations/sugar.rb +47 -0
  384. data/test/lib/spec/matchers.rb +160 -0
  385. data/test/lib/spec/matchers/be.rb +161 -0
  386. data/test/lib/spec/matchers/be_close.rb +37 -0
  387. data/test/lib/spec/matchers/change.rb +120 -0
  388. data/test/lib/spec/matchers/eql.rb +43 -0
  389. data/test/lib/spec/matchers/equal.rb +43 -0
  390. data/test/lib/spec/matchers/has.rb +44 -0
  391. data/test/lib/spec/matchers/have.rb +140 -0
  392. data/test/lib/spec/matchers/include.rb +50 -0
  393. data/test/lib/spec/matchers/match.rb +41 -0
  394. data/test/lib/spec/matchers/raise_error.rb +100 -0
  395. data/test/lib/spec/matchers/respond_to.rb +35 -0
  396. data/test/lib/spec/matchers/satisfy.rb +47 -0
  397. data/test/lib/spec/matchers/throw_symbol.rb +75 -0
  398. data/test/lib/spec/mocks.rb +232 -0
  399. data/test/lib/spec/mocks/argument_expectation.rb +132 -0
  400. data/test/lib/spec/mocks/error_generator.rb +85 -0
  401. data/test/lib/spec/mocks/errors.rb +10 -0
  402. data/test/lib/spec/mocks/extensions/object.rb +3 -0
  403. data/test/lib/spec/mocks/message_expectation.rb +231 -0
  404. data/test/lib/spec/mocks/methods.rb +40 -0
  405. data/test/lib/spec/mocks/mock.rb +26 -0
  406. data/test/lib/spec/mocks/mock_handler.rb +166 -0
  407. data/test/lib/spec/mocks/order_group.rb +29 -0
  408. data/test/lib/spec/rake/spectask.rb +173 -0
  409. data/test/lib/spec/rake/verify_rcov.rb +47 -0
  410. data/test/lib/spec/runner.rb +132 -0
  411. data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
  412. data/test/lib/spec/runner/command_line.rb +34 -0
  413. data/test/lib/spec/runner/context.rb +154 -0
  414. data/test/lib/spec/runner/context_eval.rb +142 -0
  415. data/test/lib/spec/runner/context_runner.rb +55 -0
  416. data/test/lib/spec/runner/drb_command_line.rb +21 -0
  417. data/test/lib/spec/runner/execution_context.rb +17 -0
  418. data/test/lib/spec/runner/extensions/kernel.rb +17 -0
  419. data/test/lib/spec/runner/extensions/object.rb +32 -0
  420. data/test/lib/spec/runner/formatter.rb +5 -0
  421. data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
  422. data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
  423. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
  424. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
  425. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
  426. data/test/lib/spec/runner/heckle_runner.rb +71 -0
  427. data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
  428. data/test/lib/spec/runner/option_parser.rb +224 -0
  429. data/test/lib/spec/runner/reporter.rb +105 -0
  430. data/test/lib/spec/runner/spec_matcher.rb +25 -0
  431. data/test/lib/spec/runner/spec_parser.rb +41 -0
  432. data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
  433. data/test/lib/spec/runner/specification.rb +114 -0
  434. data/test/lib/spec/translator.rb +87 -0
  435. data/test/lib/spec/version.rb +30 -0
  436. data/test/lib/stubba.rb +2 -0
  437. data/test/network/authconfig.rb +72 -0
  438. data/test/network/authorization.rb +138 -0
  439. data/test/network/authstore.rb +450 -0
  440. data/test/network/client/ca.rb +38 -0
  441. data/test/{client → network/client}/client.rb +107 -24
  442. data/test/network/client/dipper.rb +35 -0
  443. data/test/network/client/master.rb +627 -0
  444. data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
  445. data/test/network/client_request.rb +39 -0
  446. data/test/network/daemon.rb +71 -0
  447. data/test/{server → network/handler}/bucket.rb +103 -27
  448. data/test/{server → network/handler}/ca.rb +14 -19
  449. data/test/{server → network/handler}/fileserver.rb +443 -68
  450. data/test/network/handler/handler.rb +64 -0
  451. data/test/{server → network/handler}/logger.rb +26 -26
  452. data/test/network/handler/master.rb +352 -0
  453. data/test/network/handler/report.rb +185 -0
  454. data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
  455. data/test/{server → network/handler}/runner.rb +17 -16
  456. data/test/network/rights.rb +38 -0
  457. data/test/network/server/webrick.rb +140 -0
  458. data/test/network/xmlrpc/client.rb +68 -0
  459. data/test/network/xmlrpc/processor.rb +80 -0
  460. data/test/network/xmlrpc/server.rb +28 -0
  461. data/test/network/xmlrpc/webrick_servlet.rb +26 -0
  462. data/test/other/dsl.rb +218 -0
  463. data/test/other/events.rb +22 -15
  464. data/test/other/overrides.rb +9 -14
  465. data/test/other/pgraph.rb +289 -0
  466. data/test/other/propertychange.rb +142 -0
  467. data/test/other/provider.rb +162 -0
  468. data/test/other/puppet.rb +63 -10
  469. data/test/other/relationship.rb +74 -0
  470. data/test/other/relationships.rb +199 -123
  471. data/test/other/report.rb +152 -23
  472. data/test/other/transactions.rb +824 -78
  473. data/test/puppet/conffiles.rb +16 -11
  474. data/test/puppet/defaults.rb +7 -10
  475. data/test/puppet/{error.rb → errortest.rb} +5 -8
  476. data/test/puppet/modules.rb +58 -0
  477. data/test/puppet/tc_suidmanager.rb +107 -0
  478. data/test/rails/host.rb +177 -0
  479. data/test/rails/rails.rb +27 -0
  480. data/test/rails/railsparameter.rb +62 -0
  481. data/test/rails/railsresource.rb +100 -0
  482. data/test/ral/manager/attributes.rb +296 -0
  483. data/test/ral/manager/manager.rb +55 -0
  484. data/test/ral/manager/provider.rb +54 -0
  485. data/test/ral/manager/type.rb +837 -0
  486. data/test/ral/providers/cron/crontab.rb +346 -0
  487. data/test/ral/providers/group.rb +252 -0
  488. data/test/ral/providers/host/netinfo.rb +58 -0
  489. data/test/ral/providers/host/parsed.rb +226 -0
  490. data/test/ral/providers/mount/netinfo.rb +80 -0
  491. data/test/ral/providers/mount/parsed.rb +223 -0
  492. data/test/ral/providers/nameservice.rb +33 -0
  493. data/test/ral/providers/package.rb +253 -0
  494. data/test/ral/providers/package/apt.rb +89 -0
  495. data/test/ral/providers/package/aptitude.rb +69 -0
  496. data/test/ral/providers/package/aptrpm.rb +89 -0
  497. data/test/ral/providers/package/dpkg.rb +64 -0
  498. data/test/ral/providers/parsedfile.rb +668 -0
  499. data/test/ral/providers/parsedport.rb +233 -0
  500. data/test/ral/providers/provider.rb +423 -0
  501. data/test/{types → ral/providers}/service.rb +20 -121
  502. data/test/ral/providers/service/base.rb +75 -0
  503. data/test/ral/providers/sshkey/parsed.rb +111 -0
  504. data/test/ral/providers/user.rb +567 -0
  505. data/test/ral/providers/user/useradd.rb +250 -0
  506. data/test/ral/types/basic.rb +90 -0
  507. data/test/ral/types/component.rb +113 -0
  508. data/test/ral/types/cron.rb +480 -0
  509. data/test/{types → ral/types}/exec.rb +278 -82
  510. data/test/ral/types/file.rb +1799 -0
  511. data/test/ral/types/file/target.rb +363 -0
  512. data/test/{types → ral/types}/filebucket.rb +15 -17
  513. data/test/{types → ral/types}/fileignoresource.rb +9 -15
  514. data/test/ral/types/filesources.rb +1046 -0
  515. data/test/ral/types/group.rb +169 -0
  516. data/test/ral/types/host.rb +155 -0
  517. data/test/ral/types/mount.rb +312 -0
  518. data/test/ral/types/package.rb +85 -0
  519. data/test/ral/types/parameter.rb +172 -0
  520. data/test/ral/types/port.rb +148 -0
  521. data/test/ral/types/property.rb +343 -0
  522. data/test/ral/types/resources.rb +221 -0
  523. data/test/{types → ral/types}/schedule.rb +34 -12
  524. data/test/ral/types/service.rb +37 -0
  525. data/test/{types → ral/types}/sshkey.rb +75 -65
  526. data/test/ral/types/tidy.rb +240 -0
  527. data/test/ral/types/user.rb +493 -0
  528. data/test/{types → ral/types}/yumrepo.rb +7 -11
  529. data/test/{types → ral/types}/zone.rb +45 -45
  530. data/test/tagging/tagging.rb +17 -26
  531. data/test/util/autoload.rb +130 -0
  532. data/test/util/classgen.rb +227 -0
  533. data/test/{other → util}/config.rb +373 -113
  534. data/test/util/execution.rb +34 -0
  535. data/test/util/features.rb +94 -0
  536. data/test/util/fileparsing.rb +677 -0
  537. data/test/{other → util}/filetype.rb +9 -12
  538. data/test/util/graph.rb +108 -0
  539. data/test/{other → util}/inifile.rb +24 -11
  540. data/test/util/loadedfile.rb +106 -0
  541. data/test/{other → util}/log.rb +96 -50
  542. data/test/{other → util}/metrics.rb +7 -17
  543. data/test/util/package.rb +27 -0
  544. data/test/util/pidlock.rb +126 -0
  545. data/test/util/posixtest.rb +173 -0
  546. data/test/util/storage.rb +123 -0
  547. data/test/util/subclass_loader.rb +100 -0
  548. data/test/util/utiltest.rb +368 -0
  549. metadata +449 -169
  550. data/examples/code/classing +0 -35
  551. data/examples/code/failers/badclassnoparam +0 -10
  552. data/examples/code/failers/badclassparam +0 -10
  553. data/examples/code/failers/badcompnoparam +0 -9
  554. data/examples/code/failers/badcompparam +0 -9
  555. data/examples/code/failers/badtypeparam +0 -3
  556. data/examples/code/failers/noobjectrvalue +0 -1
  557. data/examples/code/snippets/aliastest.pp +0 -16
  558. data/examples/code/snippets/argumentdefaults +0 -14
  559. data/examples/code/snippets/casestatement.pp +0 -58
  560. data/examples/code/snippets/classheirarchy.pp +0 -15
  561. data/examples/code/snippets/classincludes.pp +0 -17
  562. data/examples/code/snippets/classpathtest +0 -11
  563. data/examples/code/snippets/componentmetaparams.pp +0 -11
  564. data/examples/code/snippets/deepclassheirarchy.pp +0 -23
  565. data/examples/code/snippets/defineoverrides.pp +0 -17
  566. data/examples/code/snippets/dirchmod +0 -19
  567. data/examples/code/snippets/emptyclass.pp +0 -9
  568. data/examples/code/snippets/emptyexec.pp +0 -3
  569. data/examples/code/snippets/failmissingexecpath.pp +0 -13
  570. data/examples/code/snippets/falsevalues.pp +0 -3
  571. data/examples/code/snippets/filecreate +0 -11
  572. data/examples/code/snippets/implicititeration +0 -15
  573. data/examples/code/snippets/multipleinstances +0 -7
  574. data/examples/code/snippets/namevartest +0 -9
  575. data/examples/code/snippets/scopetest +0 -13
  576. data/examples/code/snippets/selectorvalues.pp +0 -42
  577. data/examples/code/snippets/simpledefaults +0 -5
  578. data/examples/code/snippets/simpleselector +0 -38
  579. data/examples/code/snippets/singleary.pp +0 -19
  580. data/examples/code/snippets/singlequote.pp +0 -11
  581. data/examples/code/snippets/singleselector.pp +0 -22
  582. data/examples/code/snippets/tag.pp +0 -9
  583. data/examples/code/snippets/tagged.pp +0 -35
  584. data/lib/puppet/client.rb +0 -177
  585. data/lib/puppet/client/ca.rb +0 -21
  586. data/lib/puppet/client/dipper.rb +0 -76
  587. data/lib/puppet/client/file.rb +0 -20
  588. data/lib/puppet/client/log.rb +0 -17
  589. data/lib/puppet/client/master.rb +0 -531
  590. data/lib/puppet/client/runner.rb +0 -17
  591. data/lib/puppet/client/status.rb +0 -7
  592. data/lib/puppet/event-loop.rb +0 -1
  593. data/lib/puppet/filetype.rb +0 -308
  594. data/lib/puppet/inifile.rb +0 -201
  595. data/lib/puppet/log.rb +0 -524
  596. data/lib/puppet/metric.rb +0 -132
  597. data/lib/puppet/networkclient.rb +0 -175
  598. data/lib/puppet/parsedfile.rb +0 -58
  599. data/lib/puppet/parser/ast/classdef.rb +0 -79
  600. data/lib/puppet/parser/ast/compdef.rb +0 -75
  601. data/lib/puppet/parser/ast/nodedef.rb +0 -73
  602. data/lib/puppet/parser/ast/objectdef.rb +0 -284
  603. data/lib/puppet/parser/ast/objectref.rb +0 -77
  604. data/lib/puppet/rails/database.rb +0 -40
  605. data/lib/puppet/rails/rails_object.rb +0 -42
  606. data/lib/puppet/rails/rails_parameter.rb +0 -5
  607. data/lib/puppet/server.rb +0 -196
  608. data/lib/puppet/server/authconfig.rb +0 -177
  609. data/lib/puppet/server/authstore.rb +0 -226
  610. data/lib/puppet/server/filebucket.rb +0 -155
  611. data/lib/puppet/server/pelement.rb +0 -188
  612. data/lib/puppet/server/report.rb +0 -184
  613. data/lib/puppet/server/rights.rb +0 -78
  614. data/lib/puppet/server/servlet.rb +0 -274
  615. data/lib/puppet/statechange.rb +0 -129
  616. data/lib/puppet/storage.rb +0 -98
  617. data/lib/puppet/type/nameservice.rb +0 -264
  618. data/lib/puppet/type/nameservice/netinfo.rb +0 -232
  619. data/lib/puppet/type/nameservice/objectadd.rb +0 -146
  620. data/lib/puppet/type/nameservice/posix.rb +0 -12
  621. data/lib/puppet/type/nameservice/pw.rb +0 -107
  622. data/lib/puppet/type/package/apple.rb +0 -41
  623. data/lib/puppet/type/package/apt.rb +0 -107
  624. data/lib/puppet/type/package/blastwave.rb +0 -136
  625. data/lib/puppet/type/package/darwinport.rb +0 -97
  626. data/lib/puppet/type/package/dpkg.rb +0 -113
  627. data/lib/puppet/type/package/freebsd.rb +0 -19
  628. data/lib/puppet/type/package/gem.rb +0 -119
  629. data/lib/puppet/type/package/openbsd.rb +0 -112
  630. data/lib/puppet/type/package/ports.rb +0 -103
  631. data/lib/puppet/type/package/rpm.rb +0 -121
  632. data/lib/puppet/type/package/sun.rb +0 -174
  633. data/lib/puppet/type/package/sunfreeware.rb +0 -7
  634. data/lib/puppet/type/package/yum.rb +0 -52
  635. data/lib/puppet/type/parsedtype/host.rb +0 -144
  636. data/lib/puppet/type/parsedtype/mount.rb +0 -271
  637. data/lib/puppet/type/parsedtype/port.rb +0 -261
  638. data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
  639. data/lib/puppet/type/service/base.rb +0 -12
  640. data/lib/puppet/type/service/debian.rb +0 -46
  641. data/lib/puppet/type/service/redhat.rb +0 -38
  642. data/lib/puppet/type/state.rb +0 -393
  643. data/lib/puppet/type/symlink.rb +0 -186
  644. data/test/client/master.rb +0 -207
  645. data/test/language/rails.rb +0 -105
  646. data/test/other/parsedfile.rb +0 -58
  647. data/test/other/storage.rb +0 -100
  648. data/test/puppet/utiltest.rb +0 -299
  649. data/test/puppettest.rb +0 -1170
  650. data/test/server/authconfig.rb +0 -56
  651. data/test/server/authstore.rb +0 -218
  652. data/test/server/master.rb +0 -201
  653. data/test/server/report.rb +0 -93
  654. data/test/server/rights.rb +0 -41
  655. data/test/server/server.rb +0 -152
  656. data/test/test +0 -61
  657. data/test/types/basic.rb +0 -117
  658. data/test/types/component.rb +0 -298
  659. data/test/types/cron.rb +0 -718
  660. data/test/types/file.rb +0 -1314
  661. data/test/types/filesources.rb +0 -590
  662. data/test/types/group.rb +0 -323
  663. data/test/types/host.rb +0 -186
  664. data/test/types/mount.rb +0 -294
  665. data/test/types/package.rb +0 -538
  666. data/test/types/parameter.rb +0 -107
  667. data/test/types/port.rb +0 -201
  668. data/test/types/query.rb +0 -101
  669. data/test/types/state.rb +0 -92
  670. data/test/types/symlink.rb +0 -120
  671. data/test/types/tidy.rb +0 -102
  672. data/test/types/type.rb +0 -469
  673. data/test/types/user.rb +0 -563
@@ -1,12 +1,8 @@
1
- if __FILE__ == $0
2
- $:.unshift '..'
3
- $:.unshift '../../lib'
4
- $puppetbase = "../.."
5
- end
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
6
4
 
7
- require 'puppet'
8
5
  require 'puppettest'
9
- require 'test/unit'
10
6
 
11
7
  $skipsvcs = false
12
8
  case Facter["operatingsystem"].value
@@ -16,101 +12,8 @@ end
16
12
  if $skipsvcs
17
13
  puts "Skipping service testing on %s" % Facter["operatingsystem"].value
18
14
  else
19
- #class TestInitService < Test::Unit::TestCase
20
- class TestInitService
21
- include TestPuppet
22
-
23
- def setup
24
- super
25
- sleeper = nil
26
- script = File.join($puppetbase,"examples/root/etc/init.d/sleeper")
27
- @init = File.join($puppetbase,"examples/root/etc/init.d")
28
- @status = script + " status"
29
- end
30
-
31
- def teardown
32
- super
33
- stopservices
34
- end
35
-
36
- def tstsvcs
37
- case Facter["operatingsystem"].value.downcase
38
- when "solaris":
39
- return ["smtp", "xf"]
40
- when "redhat":
41
- return ["sshd"]
42
- end
43
- end
44
-
45
- def mksleeper(hash = {})
46
- hash[:name] = "sleeper"
47
- hash[:path] = File.join($puppetbase,"examples/root/etc/init.d")
48
- hash[:ensure] = true
49
- hash[:hasstatus] = true
50
- #hash[:type] = "init"
51
- assert_nothing_raised() {
52
- return Puppet.type(:service).create(hash)
53
- }
54
- end
55
-
56
- def cyclesleeper(sleeper)
57
- assert_nothing_raised() {
58
- sleeper.retrieve
59
- }
60
- assert(!sleeper.insync?())
61
-
62
- comp = newcomp(sleeper)
63
-
64
- assert_events([:service_started], comp)
65
- assert_nothing_raised() {
66
- sleeper.retrieve
67
- }
68
- assert(sleeper.insync?)
69
-
70
- # test refreshing it
71
- assert_nothing_raised() {
72
- sleeper.refresh
73
- }
74
-
75
- assert(sleeper.respond_to?(:refresh))
76
-
77
- # now stop it
78
- assert_nothing_raised() {
79
- sleeper[:ensure] = 0
80
- }
81
- assert_nothing_raised() {
82
- sleeper.retrieve
83
- }
84
- assert(!sleeper.insync?())
85
- assert_events([:service_stopped], comp)
86
- assert_nothing_raised() {
87
- sleeper.retrieve
88
- }
89
- assert(sleeper.insync?)
90
- end
91
-
92
- def test_processStartWithPattern
93
- sleeper = mksleeper(:pattern => "bin/sleeper")
94
-
95
- cyclesleeper(sleeper)
96
- end
97
-
98
- def test_processStartWithStatus
99
- sleeper = mksleeper(:hasstatus => true)
100
- cyclesleeper(sleeper)
101
- end
102
-
103
- def test_invalidpathsremoved
104
- sleeper = mksleeper()
105
- fakedir = [@init, "/thisdirnoexist"]
106
- sleeper[:path] = fakedir
107
-
108
- assert(! sleeper[:path].include?(fakedir))
109
- end
110
- end
111
-
112
15
  class TestLocalService < Test::Unit::TestCase
113
- include TestPuppet
16
+ include PuppetTest
114
17
 
115
18
  def teardown
116
19
  Puppet.type(:service).clear
@@ -118,7 +21,7 @@ class TestLocalService < Test::Unit::TestCase
118
21
  end
119
22
 
120
23
  def mktestsvcs
121
- tstsvcs.collect { |svc,svcargs|
24
+ list = tstsvcs.collect { |svc,svcargs|
122
25
  args = svcargs.dup
123
26
  args[:name] = svc
124
27
  Puppet.type(:service).create(args)
@@ -133,7 +36,7 @@ class TestLocalService < Test::Unit::TestCase
133
36
  return {"smtp" => {}, "xfs" => {}}
134
37
  end
135
38
  when "debian":
136
- return {"hddtemp" => {}}
39
+ return {"hddtemp" => {:hasrestart => true}}
137
40
  when "centos":
138
41
  return {"cups" => {:hasstatus => true}}
139
42
  when "redhat":
@@ -170,8 +73,6 @@ class TestLocalService < Test::Unit::TestCase
170
73
  service.refresh
171
74
  }
172
75
 
173
- assert(service.respond_to?(:refresh))
174
-
175
76
  # now stop it
176
77
  assert_nothing_raised() {
177
78
  service[:ensure] = :stopped
@@ -229,42 +130,41 @@ class TestLocalService < Test::Unit::TestCase
229
130
  mktestsvcs.each { |svc|
230
131
  val = nil
231
132
  assert_nothing_raised("Could not get status") {
232
- val = svc.status
133
+ val = svc.provider.status
233
134
  }
234
135
  assert_instance_of(Symbol, val)
235
136
  }
236
137
  end
237
138
 
238
- unless Process.uid == 0
139
+ unless Puppet::Util::SUIDManager.uid == 0
239
140
  puts "run as root to test service start/stop"
240
141
  else
241
142
  def test_servicestartstop
242
143
  mktestsvcs.each { |svc|
243
- startstate = nil
144
+ startproperty = nil
244
145
  assert_nothing_raised("Could not get status") {
245
- startstate = svc.status
146
+ startproperty = svc.provider.status
246
147
  }
247
148
  cycleservice(svc)
248
149
 
249
- svc[:ensure] = startstate
150
+ svc[:ensure] = startproperty
250
151
  assert_apply(svc)
251
- Puppet.type(:service).clear
252
152
  Puppet.type(:component).clear
253
153
  }
254
154
  end
255
155
 
256
156
  def test_serviceenabledisable
257
157
  mktestsvcs.each { |svc|
258
- startstate = nil
158
+ assert(svc[:name], "Service has no name")
159
+ startproperty = nil
259
160
  svc[:check] = :enable
260
161
  assert_nothing_raised("Could not get status") {
261
- startstate = svc.enabled?
162
+ startproperty = svc.provider.enabled?
262
163
  }
263
164
  cycleenable(svc)
264
165
 
265
- svc[:enable] = startstate
166
+ svc[:enable] = startproperty
266
167
  assert_apply(svc)
267
- Puppet.type(:service).clear
268
168
  Puppet.type(:component).clear
269
169
  }
270
170
  end
@@ -276,8 +176,8 @@ class TestLocalService < Test::Unit::TestCase
276
176
  svc[:check] = [:ensure, :enable]
277
177
  svc.retrieve
278
178
  assert_nothing_raised("Could not get status") {
279
- startenable = svc.state(:enable).is
280
- startensure = svc.state(:ensure).is
179
+ startenable = svc.property(:enable).is
180
+ startensure = svc.property(:ensure).is
281
181
  }
282
182
 
283
183
  svc[:enable] = false
@@ -286,7 +186,7 @@ class TestLocalService < Test::Unit::TestCase
286
186
 
287
187
  sleep 1
288
188
  svc.retrieve
289
- assert(svc.insync?, "Service did not sync both states")
189
+ assert(svc.insync?, "Service did not sync both properties")
290
190
 
291
191
  svc[:enable] = true
292
192
  svc[:ensure] = :running
@@ -294,12 +194,11 @@ class TestLocalService < Test::Unit::TestCase
294
194
 
295
195
  sleep 1
296
196
  svc.retrieve
297
- assert(svc.insync?, "Service did not sync both states")
197
+ assert(svc.insync?, "Service did not sync both properties")
298
198
 
299
199
  svc[:enable] = startenable
300
200
  svc[:ensure] = startensure
301
201
  assert_apply(svc)
302
- Puppet.type(:service).clear
303
202
  Puppet.type(:component).clear
304
203
  end
305
204
  end
@@ -307,4 +206,4 @@ class TestLocalService < Test::Unit::TestCase
307
206
  end
308
207
  end
309
208
 
310
- # $Id: service.rb 1265 2006-06-13 22:55:14Z luke $
209
+ # $Id: service.rb 2236 2007-02-27 23:57:55Z luke $
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke A. Kanies on 2007-01-28.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ $:.unshift("../../../lib") if __FILE__ =~ /\.rb$/
7
+
8
+ require 'puppettest'
9
+
10
+ class TestBaseServiceProvider < Test::Unit::TestCase
11
+ include PuppetTest
12
+
13
+ def test_base
14
+ running = tempfile()
15
+
16
+ commands = {}
17
+ %w{touch rm test}.each do |c|
18
+ path = %x{which #{c}}.chomp
19
+ if path == ""
20
+ $stderr.puts "Cannot find '#{c}'; cannot test base service provider"
21
+ return
22
+ end
23
+ commands[c.to_sym] = path
24
+ end
25
+ service = Puppet::Type.type(:service).create(
26
+ :name => "yaytest", :provider => :base,
27
+ :start => "%s %s" % [commands[:touch], running],
28
+ :status => "%s -f %s" % [commands[:test], running],
29
+ :stop => "%s %s" % [commands[:rm], running]
30
+ )
31
+
32
+ provider = service.provider
33
+ assert(provider, "did not get base provider")
34
+
35
+ assert_nothing_raised do
36
+ provider.start
37
+ end
38
+ assert(FileTest.exists?(running), "start was not called correctly")
39
+ assert_nothing_raised do
40
+ assert_equal(:running, provider.status, "status was not returned correctly")
41
+ end
42
+ assert_nothing_raised do
43
+ provider.stop
44
+ end
45
+ assert(! FileTest.exists?(running), "stop was not called correctly")
46
+ assert_nothing_raised do
47
+ assert_equal(:stopped, provider.status, "status was not returned correctly")
48
+ end
49
+ end
50
+
51
+ # Testing #454
52
+ def test_that_failures_propagate
53
+ nope = "/no/such/command"
54
+ service = Puppet::Type.type(:service).create(
55
+ :name => "yaytest", :provider => :base,
56
+ :start => nope,
57
+ :status => nope,
58
+ :stop => nope,
59
+ :restart => nope
60
+ )
61
+
62
+ provider = service.provider
63
+ assert(provider, "did not get base provider")
64
+
65
+ # We can't fail well when status is messed up, because we depend on the return code
66
+ # of the command for data.
67
+ %w{start stop restart}.each do |command|
68
+ assert_raise(Puppet::Error, "did not throw error when %s failed" % command) do
69
+ provider.send(command)
70
+ end
71
+ end
72
+ end
73
+ end
74
+
75
+ # $Id: base.rb 2170 2007-02-07 17:21:52Z luke $
@@ -0,0 +1,111 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppettest'
6
+ require 'puppettest/fileparsing'
7
+ require 'puppet/type/sshkey'
8
+
9
+ class TestParsedSSHKey < Test::Unit::TestCase
10
+ include PuppetTest
11
+ include PuppetTest::FileParsing
12
+
13
+ def setup
14
+ super
15
+ @provider = Puppet.type(:sshkey).provider(:parsed)
16
+
17
+ @oldfiletype = @provider.filetype
18
+ end
19
+
20
+ def teardown
21
+ Puppet::Util::FileType.filetype(:ram).clear
22
+ @provider.filetype = @oldfiletype
23
+ @provider.clear
24
+ super
25
+ end
26
+
27
+ def mkkey(name = "host.domain.com")
28
+ if defined? @pcount
29
+ @pcount += 1
30
+ else
31
+ @pcount = 1
32
+ end
33
+ args = {
34
+ :name => name || "/fspuppet%s" % @pcount,
35
+ :key => "thisismykey%s" % @pcount,
36
+ :alias => ["host1.domain.com","192.168.0.1"],
37
+ :type => "dss",
38
+ :ensure => :present
39
+ }
40
+
41
+ fakemodel = fakemodel(:sshkey, args[:name])
42
+
43
+ key = @provider.new(fakemodel)
44
+ args.each do |p,v|
45
+ key.send(p.to_s + "=", v)
46
+ end
47
+
48
+ return key
49
+ end
50
+
51
+ def test_keysparse
52
+ fakedata("data/types/sshkey").each { |file|
53
+ fakedataparse(file)
54
+ }
55
+ end
56
+
57
+ def test_simplekey
58
+ @provider.filetype = :ram
59
+ file = @provider.default_target
60
+
61
+ key = nil
62
+ assert_nothing_raised do
63
+ key = mkkey
64
+ end
65
+
66
+ assert(key, "did not create key")
67
+
68
+ assert_nothing_raised do
69
+ key.flush
70
+ end
71
+
72
+ assert(key.alias, "No alias set for key")
73
+
74
+ hash = key.property_hash.dup
75
+ text = @provider.target_object(file).read
76
+ names = [key.name, key.alias].flatten.join(",")
77
+
78
+ assert_equal("#{names} #{key.type} #{key.key}\n", text)
79
+
80
+ assert_nothing_raised do
81
+ @provider.prefetch
82
+ end
83
+
84
+ hash.each do |p, v|
85
+ next unless key.respond_to?(p)
86
+ assert_equal(v, key.send(p), "%s did not match" % p)
87
+ end
88
+
89
+ assert(key.name !~ /,/, "Aliases were not split out during parsing")
90
+ end
91
+
92
+ def test_hooks
93
+ result = nil
94
+ assert_nothing_raised("Could not call post hook") do
95
+ result = @provider.parse_line("one,two type key")
96
+ end
97
+ assert_equal("one", result[:name], "Did not call post hook")
98
+ assert_equal(%w{two}, result[:alias], "Did not call post hook")
99
+
100
+ assert_equal("one,two type key",
101
+ @provider.to_line(:record_type => :parsed,
102
+ :name => "one",
103
+ :alias => %w{two},
104
+ :type => "type",
105
+ :key => "key"),
106
+ "Did not use pre-hook when generating line"
107
+ )
108
+ end
109
+ end
110
+
111
+ # $Id: parsed.rb 2281 2007-03-14 17:49:19Z luke $
@@ -0,0 +1,567 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppettest'
6
+
7
+ class TestUserProvider < Test::Unit::TestCase
8
+ include PuppetTest::FileTesting
9
+
10
+ def setup
11
+ super
12
+ setme()
13
+ @@tmpusers = []
14
+ @provider = nil
15
+ assert_nothing_raised {
16
+ @provider = Puppet::Type.type(:user).defaultprovider
17
+ }
18
+
19
+ assert(@provider, "Could not find default user provider")
20
+
21
+ end
22
+
23
+ def teardown
24
+ @@tmpusers.each { |user|
25
+ unless missing?(user)
26
+ remove(user)
27
+ end
28
+ }
29
+ super
30
+ end
31
+
32
+ case Facter["operatingsystem"].value
33
+ when "Darwin":
34
+ def missing?(user)
35
+ output = %x{nidump -r /users/#{user} / 2>/dev/null}.chomp
36
+
37
+ if output == ""
38
+ return true
39
+ else
40
+ return false
41
+ end
42
+
43
+ assert_equal("", output, "User %s is present:\n%s" % [user, output])
44
+ end
45
+
46
+ def current?(param, user)
47
+ property = Puppet.type(:user).properties.find { |st|
48
+ st.name == param
49
+ }
50
+
51
+ prov = Puppet::Type.type(:user).defaultprovider
52
+ output = prov.report(param)
53
+ # output = %x{nireport / /users name #{prov.netinfokey(param)}}
54
+ output.each { |hash|
55
+ if hash[:name] == user.name
56
+ val = hash[param]
57
+ if val =~ /^[-0-9]+$/
58
+ return Integer(val)
59
+ else
60
+ return val
61
+ end
62
+ end
63
+ }
64
+
65
+ return nil
66
+ end
67
+
68
+ def remove(user)
69
+ system("niutil -destroy / /users/%s" % user)
70
+ end
71
+ else
72
+ def missing?(user)
73
+ begin
74
+ obj = Etc.getpwnam(user)
75
+ return false
76
+ rescue ArgumentError
77
+ return true
78
+ end
79
+ end
80
+
81
+ def current?(param, user)
82
+ property = Puppet.type(:user).properties.find { |st|
83
+ st.name == param
84
+ }
85
+
86
+ assert_nothing_raised {
87
+ obj = Etc.getpwnam(user.name)
88
+ return obj.send(user.posixmethod(param))
89
+ }
90
+
91
+ return nil
92
+ end
93
+
94
+ def remove(user)
95
+ system("userdel %s" % user)
96
+ end
97
+ end
98
+
99
+
100
+ def eachproperty
101
+ Puppet::Type.type(:user).validproperties.each do |property|
102
+ yield property
103
+ end
104
+ end
105
+
106
+ def findshell(old = nil)
107
+ %w{/bin/sh /bin/bash /sbin/sh /bin/ksh /bin/zsh /bin/csh /bin/tcsh
108
+ /usr/bin/sh /usr/bin/bash /usr/bin/ksh /usr/bin/zsh /usr/bin/csh
109
+ /usr/bin/tcsh}.find { |shell|
110
+ if old
111
+ FileTest.exists?(shell) and shell != old
112
+ else
113
+ FileTest.exists?(shell)
114
+ end
115
+ }
116
+ end
117
+
118
+ def fakedata(name, param)
119
+ case param
120
+ when :name: name
121
+ when :ensure: :present
122
+ when :comment: "Puppet's Testing User %s" % name # use a single quote a la #375
123
+ when :gid: nonrootgroup.gid
124
+ when :shell: findshell()
125
+ when :home: "/home/%s" % name
126
+ else
127
+ return nil
128
+ end
129
+ end
130
+
131
+ def fakemodel(*args)
132
+ model = super
133
+
134
+ # Set boolean methods as necessary.
135
+ class << model
136
+ def allowdupe?
137
+ self[:allowdupe]
138
+ end
139
+ def managehome?
140
+ self[:managehome]
141
+ end
142
+ end
143
+ model
144
+ end
145
+
146
+ def mkuser(name)
147
+ fakemodel = fakemodel(:user, name)
148
+ user = nil
149
+ assert_nothing_raised {
150
+ user = @provider.new(fakemodel)
151
+ }
152
+ assert(user, "Could not create provider user")
153
+
154
+ return user
155
+ end
156
+
157
+ def test_list
158
+ names = nil
159
+ assert_nothing_raised {
160
+ names = @provider.listbyname
161
+ }
162
+
163
+ assert(names.length > 0, "Listed no users")
164
+
165
+ # Now try it by object
166
+ assert_nothing_raised {
167
+ names = @provider.list
168
+ }
169
+ assert(names.length > 0, "Listed no users as objects")
170
+
171
+ names.each do |obj|
172
+ assert_instance_of(Puppet::Type.type(:user), obj)
173
+ assert(obj[:provider], "Provider was not set")
174
+ end
175
+ end
176
+
177
+ def test_infocollection
178
+ fakemodel = fakemodel(:user, @me)
179
+
180
+ user = nil
181
+ assert_nothing_raised {
182
+ user = @provider.new(fakemodel)
183
+ }
184
+ assert(user, "Could not create user provider")
185
+
186
+ Puppet::Type.type(:user).validproperties.each do |property|
187
+ next if property == :ensure
188
+ # This is mostly in place for the 'password' stuff.
189
+ next unless user.class.supports_parameter?(property)
190
+ val = nil
191
+ assert_nothing_raised {
192
+ val = user.send(property)
193
+ }
194
+
195
+ assert(val != :absent,
196
+ "Property %s is missing" % property)
197
+
198
+ assert(val, "Did not get value for %s" % property)
199
+ end
200
+ end
201
+
202
+ def test_exists
203
+ user = mkuser("nosuchuserok")
204
+
205
+ assert(! user.exists?,
206
+ "Fake user exists?")
207
+
208
+ user = mkuser(@me)
209
+ assert(user.exists?,
210
+ "I don't exist?")
211
+ end
212
+
213
+ def attrtest_ensure(user)
214
+ old = user.ensure
215
+ assert_nothing_raised {
216
+ user.ensure = :absent
217
+ }
218
+
219
+ assert(missing?(user.name), "User is still present")
220
+ assert_nothing_raised {
221
+ user.ensure = :present
222
+ }
223
+ assert(!missing?(user.name), "User is absent")
224
+ assert_nothing_raised {
225
+ user.ensure = :absent
226
+ }
227
+
228
+ unless old == :absent
229
+ user.ensure = old
230
+ end
231
+ end
232
+
233
+ def attrtest_comment(user)
234
+ old = user.comment
235
+
236
+ newname = "Billy O'Neal" # use a single quote, a la #372
237
+ assert_nothing_raised {
238
+ user.comment = newname
239
+ }
240
+
241
+ assert_equal(newname, current?(:comment, user),
242
+ "Comment was not changed")
243
+
244
+ assert_nothing_raised {
245
+ user.comment = old
246
+ }
247
+
248
+ assert_equal(old, current?(:comment, user),
249
+ "Comment was not reverted")
250
+ end
251
+
252
+ def attrtest_home(user)
253
+ old = current?(:home, user)
254
+
255
+ assert_nothing_raised {
256
+ user.home = "/tmp"
257
+ }
258
+
259
+ assert_equal("/tmp", current?(:home, user), "Home was not changed")
260
+ assert_nothing_raised {
261
+ user.home = old
262
+ }
263
+
264
+ assert_equal(old, current?(:home, user), "Home was not reverted")
265
+ end
266
+
267
+ def attrtest_shell(user)
268
+ old = current?(:shell, user)
269
+
270
+ newshell = findshell(old)
271
+
272
+ unless newshell
273
+ $stderr.puts "Cannot find alternate shell; skipping shell test"
274
+ return
275
+ end
276
+
277
+ assert_nothing_raised {
278
+ user.shell = newshell
279
+ }
280
+
281
+ assert_equal(newshell, current?(:shell, user),
282
+ "Shell was not changed")
283
+
284
+ assert_nothing_raised {
285
+ user.shell = old
286
+ }
287
+
288
+ assert_equal(old, current?(:shell, user), "Shell was not reverted")
289
+ end
290
+
291
+ def attrtest_gid(user)
292
+ old = current?(:gid, user)
293
+
294
+ newgroup = %w{nogroup nobody staff users daemon}.find { |gid|
295
+ begin
296
+ group = Etc.getgrnam(gid)
297
+ rescue ArgumentError => detail
298
+ next
299
+ end
300
+ old != group.gid
301
+ }
302
+ group = Etc.getgrnam(newgroup)
303
+
304
+ unless newgroup
305
+ $stderr.puts "Cannot find alternate group; skipping gid test"
306
+ return
307
+ end
308
+
309
+ # Stupid netinfo
310
+ if Facter.value(:operatingsystem) == "Darwin"
311
+ assert_raise(ArgumentError, "gid allowed a non-integer value") do
312
+ user.gid = group.name
313
+ end
314
+ end
315
+
316
+ assert_nothing_raised("Failed to specify group by id") {
317
+ user.gid = group.gid
318
+ }
319
+
320
+ assert_equal(group.gid, current?(:gid,user), "GID was not changed")
321
+
322
+ assert_nothing_raised("Failed to change back to old gid") {
323
+ user.gid = old
324
+ }
325
+ end
326
+
327
+ def attrtest_uid(user)
328
+ old = current?(:uid, user)
329
+
330
+ newuid = old
331
+ while true
332
+ newuid += 1
333
+
334
+ if newuid - old > 1000
335
+ $stderr.puts "Could not find extra test UID"
336
+ return
337
+ end
338
+ begin
339
+ newuser = Etc.getpwuid(newuid)
340
+ rescue ArgumentError => detail
341
+ break
342
+ end
343
+ end
344
+
345
+ assert_nothing_raised("Failed to change user id") {
346
+ user.uid = newuid
347
+ }
348
+
349
+ assert_equal(newuid, current?(:uid, user), "UID was not changed")
350
+
351
+ assert_nothing_raised("Failed to change user id") {
352
+ user.uid = old
353
+ }
354
+ assert_equal(old, current?(:uid, user), "UID was not changed back")
355
+ end
356
+
357
+ def attrtest_groups(user)
358
+ Etc.setgrent
359
+ max = 0
360
+ while group = Etc.getgrent
361
+ if group.gid > max and group.gid < 5000
362
+ max = group.gid
363
+ end
364
+ end
365
+
366
+ groups = []
367
+ main = []
368
+ extra = []
369
+ 5.times do |i|
370
+ i += 1
371
+ name = "pptstgr%s" % i
372
+ tmpgroup = Puppet.type(:group).create(
373
+ :name => name,
374
+ :gid => max + i
375
+ )
376
+
377
+ groups << tmpgroup
378
+
379
+ cleanup do
380
+ tmpgroup.provider.delete if tmpgroup.provider.exists?
381
+ end
382
+
383
+ if i < 3
384
+ main << name
385
+ else
386
+ extra << name
387
+ end
388
+ end
389
+
390
+ # Create our test groups
391
+ assert_apply(*groups)
392
+
393
+ # Now add some of them to our user
394
+ assert_nothing_raised {
395
+ user.model[:groups] = extra.join(",")
396
+ }
397
+
398
+ # Some tests to verify that groups work correctly startig from nothing
399
+ # Remove our user
400
+ user.ensure = :absent
401
+
402
+ # And add it again
403
+ user.ensure = :present
404
+
405
+ # Make sure that the group list is added at creation time.
406
+ # This is necessary because we don't have default fakedata for groups.
407
+ assert(user.groups, "Did not retrieve group list")
408
+
409
+ list = user.groups.split(",")
410
+ assert_equal(extra.sort, list.sort, "Group list was not set at creation time")
411
+
412
+ # Now set to our main list of groups
413
+ assert_nothing_raised {
414
+ user.groups = main.join(",")
415
+ }
416
+
417
+ list = user.groups.split(",")
418
+ assert_equal(main.sort, list.sort, "Group list is not equal")
419
+ end
420
+
421
+ if Puppet::Util::SUIDManager.uid == 0
422
+ def test_simpleuser
423
+ name = "pptest"
424
+
425
+ assert(missing?(name), "User %s is present" % name)
426
+
427
+ user = mkuser(name)
428
+
429
+ eachproperty do |property|
430
+ if val = fakedata(user.name, property)
431
+ user.model[property] = val
432
+ end
433
+ end
434
+
435
+ @@tmpusers << name
436
+
437
+ assert_nothing_raised {
438
+ user.create
439
+ }
440
+
441
+ assert_equal("Puppet's Testing User pptest",
442
+ user.comment,
443
+ "Comment was not set")
444
+
445
+ assert_nothing_raised {
446
+ user.delete
447
+ }
448
+
449
+ assert(missing?(user.name), "User was not deleted")
450
+ end
451
+
452
+ def test_alluserproperties
453
+ user = nil
454
+ name = "pptest"
455
+
456
+ assert(missing?(name), "User %s is present" % name)
457
+
458
+ user = mkuser(name)
459
+
460
+ eachproperty do |property|
461
+ if val = fakedata(user.name, property)
462
+ user.model[property] = val
463
+ end
464
+ end
465
+
466
+ @@tmpusers << name
467
+
468
+ assert_nothing_raised {
469
+ user.create
470
+ }
471
+ assert_equal("Puppet's Testing User pptest", user.comment,
472
+ "Comment was not set")
473
+
474
+ tests = Puppet::Type.type(:user).validproperties
475
+
476
+ just = nil
477
+ tests.each { |test|
478
+ if self.respond_to?("attrtest_%s" % test)
479
+ self.send("attrtest_%s" % test, user)
480
+ else
481
+ Puppet.err "Not testing attr %s of user" % test
482
+ end
483
+ }
484
+
485
+ assert_nothing_raised {
486
+ user.delete
487
+ }
488
+ end
489
+
490
+ # This is a weird method that shows how annoying the interface between
491
+ # types and providers is. Grr.
492
+ def test_duplicateIDs
493
+ user1 = mkuser("user1")
494
+ user1.create
495
+ user1.uid = 125
496
+ user2 = mkuser("user2")
497
+ user2.model[:uid] = 125
498
+
499
+ cleanup do
500
+ user1.ensure = :absent
501
+ user2.ensure = :absent
502
+ end
503
+
504
+ # Not all OSes fail here, so we can't test that it doesn't work with
505
+ # it off, only that it does work with it on.
506
+ assert_nothing_raised {
507
+ user2.model[:allowdupe] = :true
508
+ }
509
+ assert_nothing_raised { user2.create }
510
+ assert_equal(:present, user2.ensure,
511
+ "User did not get created")
512
+ end
513
+ else
514
+ $stderr.puts "Not root; skipping user creation/modification tests"
515
+ end
516
+
517
+ # Here is where we test individual providers
518
+ def test_useradd_flags
519
+ useradd = nil
520
+ assert_nothing_raised {
521
+ useradd = Puppet::Type.type(:user).provider(:useradd)
522
+ }
523
+ assert(useradd, "Did not retrieve useradd provider")
524
+
525
+ user = nil
526
+ assert_nothing_raised {
527
+ fakemodel = fakemodel(:user, @me)
528
+ user = useradd.new(fakemodel)
529
+ }
530
+
531
+ assert_equal("-d", user.send(:flag, :home),
532
+ "Incorrect home flag")
533
+
534
+ assert_equal("-s", user.send(:flag, :shell),
535
+ "Incorrect shell flag")
536
+ end
537
+
538
+ def test_autogen
539
+ provider = nil
540
+ user = Puppet::Type.type(:user).create(:name => nonrootuser.name)
541
+ provider = user.provider
542
+ assert(provider, "did not get provider")
543
+
544
+ # Everyone should be able to autogenerate a uid
545
+ assert_instance_of(Fixnum, provider.autogen(:uid))
546
+
547
+ # If we're Darwin, then we should get results, but everyone else should
548
+ # get nil
549
+ darwin = (Facter.value(:operatingsystem) == "Darwin")
550
+
551
+ should = {
552
+ :comment => user[:name].capitalize,
553
+ :home => "/var/empty",
554
+ :shell => "/usr/bin/false"
555
+ }
556
+
557
+ should.each do |param, value|
558
+ if darwin
559
+ assert_equal(value, provider.autogen(param), "did not autogen %s for darwin correctly" % param)
560
+ else
561
+ assert_nil(provider.autogen(param), "autogenned %s for non-darwin os" % param)
562
+ end
563
+ end
564
+ end
565
+ end
566
+
567
+ # $Id: user.rb 2444 2007-05-01 03:14:09Z luke $