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,20 +1,28 @@
1
- if __FILE__ == $0
2
- if Dir.getwd =~ /test\/server$/
3
- Dir.chdir("..")
4
- end
5
-
6
- $:.unshift '../lib'
7
- $puppetbase = ".."
1
+ #!/usr/bin/env ruby
8
2
 
9
- end
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
10
4
 
11
- require 'puppet'
12
- require 'puppet/server/fileserver'
13
- require 'test/unit'
14
- require 'puppettest.rb'
5
+ require 'puppettest'
6
+ require 'puppet/network/handler/fileserver'
15
7
 
16
8
  class TestFileServer < Test::Unit::TestCase
17
- include TestPuppet
9
+ include PuppetTest
10
+
11
+ def mkmount(path = nil)
12
+ mount = nil
13
+ name = "yaytest"
14
+ base = path || tempfile()
15
+ unless FileTest.exists?(base)
16
+ Dir.mkdir(base)
17
+ end
18
+ # Create a test file
19
+ File.open(File.join(base, "file"), "w") { |f| f.puts "bazoo" }
20
+ assert_nothing_raised {
21
+ mount = Puppet::Network::Handler.fileserver::Mount.new(name, base)
22
+ }
23
+
24
+ return mount
25
+ end
18
26
  # make a simple file source
19
27
  def mktestdir
20
28
  testdir = File.join(tmpdir(), "remotefilecopytesting")
@@ -37,8 +45,6 @@ class TestFileServer < Test::Unit::TestCase
37
45
  def mktestfiles(testdir)
38
46
  @@tmpfiles << testdir
39
47
  assert_nothing_raised {
40
- Dir.mkdir(testdir)
41
- @@tmpfiles << testdir
42
48
  files = %w{a b c d e}.collect { |l|
43
49
  name = File.join(testdir, "file%s" % l)
44
50
  File.open(name, "w") { |f|
@@ -66,27 +72,17 @@ class TestFileServer < Test::Unit::TestCase
66
72
  def test_namefailures
67
73
  server = nil
68
74
  assert_nothing_raised {
69
- server = Puppet::Server::FileServer.new(
75
+ server = Puppet::Network::Handler.fileserver.new(
70
76
  :Local => true,
71
77
  :Config => false
72
78
  )
73
79
  }
74
80
 
75
- assert_raise(Puppet::FileServerError) {
76
- server.mount("/tmp", "invalid+name")
77
- }
78
-
79
- assert_raise(Puppet::FileServerError) {
80
- server.mount("/tmp", "invalid-name")
81
- }
82
-
83
- assert_raise(Puppet::FileServerError) {
84
- server.mount("/tmp", "invalid name")
85
- }
86
-
87
- assert_raise(Puppet::FileServerError) {
88
- server.mount("/tmp", "")
89
- }
81
+ [" ", "=" "+", "&", "#", "*"].each do |char|
82
+ assert_raise(Puppet::Network::Handler::FileServerError, "'%s' did not throw a failure in fileserver module names" % char) {
83
+ server.mount("/tmp", "invalid%sname" % char)
84
+ }
85
+ end
90
86
  end
91
87
 
92
88
  # verify that listing the root behaves as expected
@@ -95,11 +91,11 @@ class TestFileServer < Test::Unit::TestCase
95
91
  testdir, pattern, tmpfile = mktestdir()
96
92
 
97
93
  file = nil
98
- checks = Puppet::Server::FileServer::CHECKPARAMS
94
+ checks = Puppet::Network::Handler.fileserver::CHECKPARAMS
99
95
 
100
96
  # and make our fileserver
101
97
  assert_nothing_raised {
102
- server = Puppet::Server::FileServer.new(
98
+ server = Puppet::Network::Handler.fileserver.new(
103
99
  :Local => true,
104
100
  :Config => false
105
101
  )
@@ -133,7 +129,7 @@ class TestFileServer < Test::Unit::TestCase
133
129
  file = nil
134
130
 
135
131
  assert_nothing_raised {
136
- server = Puppet::Server::FileServer.new(
132
+ server = Puppet::Network::Handler.fileserver.new(
137
133
  :Local => true,
138
134
  :Config => false
139
135
  )
@@ -188,10 +184,10 @@ class TestFileServer < Test::Unit::TestCase
188
184
 
189
185
  # go through the whole schtick again...
190
186
  file = nil
191
- checks = Puppet::Server::FileServer::CHECKPARAMS
187
+ checks = Puppet::Network::Handler.fileserver::CHECKPARAMS
192
188
 
193
189
  assert_nothing_raised {
194
- server = Puppet::Server::FileServer.new(
190
+ server = Puppet::Network::Handler.fileserver.new(
195
191
  :Local => true,
196
192
  :Config => false
197
193
  )
@@ -226,10 +222,10 @@ class TestFileServer < Test::Unit::TestCase
226
222
 
227
223
  # verify we can mount /, which is what local file servers will
228
224
  # normally do
229
- def test_zmountroot
225
+ def test_mountroot
230
226
  server = nil
231
227
  assert_nothing_raised {
232
- server = Puppet::Server::FileServer.new(
228
+ server = Puppet::Network::Handler.fileserver.new(
233
229
  :Local => true,
234
230
  :Config => false
235
231
  )
@@ -258,7 +254,7 @@ class TestFileServer < Test::Unit::TestCase
258
254
  def test_recursionlevels
259
255
  server = nil
260
256
  assert_nothing_raised {
261
- server = Puppet::Server::FileServer.new(
257
+ server = Puppet::Network::Handler.fileserver.new(
262
258
  :Local => true,
263
259
  :Config => false
264
260
  )
@@ -309,7 +305,7 @@ class TestFileServer < Test::Unit::TestCase
309
305
  def test_listedpath
310
306
  server = nil
311
307
  assert_nothing_raised {
312
- server = Puppet::Server::FileServer.new(
308
+ server = Puppet::Network::Handler.fileserver.new(
313
309
  :Local => true,
314
310
  :Config => false
315
311
  )
@@ -352,7 +348,7 @@ class TestFileServer < Test::Unit::TestCase
352
348
  def test_widelists
353
349
  server = nil
354
350
  assert_nothing_raised {
355
- server = Puppet::Server::FileServer.new(
351
+ server = Puppet::Network::Handler.fileserver.new(
356
352
  :Local => true,
357
353
  :Config => false
358
354
  )
@@ -385,14 +381,14 @@ class TestFileServer < Test::Unit::TestCase
385
381
  # verify that 'describe' works as advertised
386
382
  def test_describe
387
383
  server = nil
388
- testdir = tempfile()
384
+ testdir = tstdir()
389
385
  files = mktestfiles(testdir)
390
386
 
391
387
  file = nil
392
- checks = Puppet::Server::FileServer::CHECKPARAMS
388
+ checks = Puppet::Network::Handler.fileserver::CHECKPARAMS
393
389
 
394
390
  assert_nothing_raised {
395
- server = Puppet::Server::FileServer.new(
391
+ server = Puppet::Network::Handler.fileserver.new(
396
392
  :Local => true,
397
393
  :Config => false
398
394
  )
@@ -433,7 +429,7 @@ class TestFileServer < Test::Unit::TestCase
433
429
 
434
430
  # Now try to describe some sources that don't even exist
435
431
  retval = nil
436
- assert_raise(Puppet::FileServerError,
432
+ assert_raise(Puppet::Network::Handler::FileServerError,
437
433
  "Describing non-existent mount did not raise an error") {
438
434
  retval = server.describe("/notmounted/" + "noexisties")
439
435
  }
@@ -450,8 +446,9 @@ class TestFileServer < Test::Unit::TestCase
450
446
  # make some dirs for mounting
451
447
  Dir.mkdir(basedir)
452
448
  mounts = {}
453
- %w{thing thus these those}.each { |dir|
449
+ %w{thing thus the-se those}.each { |dir|
454
450
  path = File.join(basedir, dir)
451
+ Dir.mkdir(path)
455
452
  mounts[dir] = mktestfiles(path)
456
453
 
457
454
  }
@@ -472,8 +469,8 @@ class TestFileServer < Test::Unit::TestCase
472
469
  allow *.madstop.com, *.kanies.com
473
470
  deny *.sub.madstop.com
474
471
 
475
- [these]
476
- path #{basedir}/these
472
+ [the-se]
473
+ path #{basedir}/the-se
477
474
 
478
475
  [those]
479
476
  path #{basedir}/those
@@ -484,8 +481,8 @@ class TestFileServer < Test::Unit::TestCase
484
481
 
485
482
  # create a server with the file
486
483
  assert_nothing_raised {
487
- server = Puppet::Server::FileServer.new(
488
- :Local => true,
484
+ server = Puppet::Network::Handler.fileserver.new(
485
+ :Local => false,
489
486
  :Config => conffile
490
487
  )
491
488
  }
@@ -544,7 +541,7 @@ class TestFileServer < Test::Unit::TestCase
544
541
 
545
542
  case type
546
543
  when :deny:
547
- assert_raise(Puppet::Server::AuthorizationError,
544
+ assert_raise(Puppet::AuthorizationError,
548
545
  "Host %s, ip %s, allowed %s" %
549
546
  [host, ip, mount]) {
550
547
  list = server.list(mount, :ignore, true, false, host, ip)
@@ -597,13 +594,13 @@ class TestFileServer < Test::Unit::TestCase
597
594
  # create a server with the file
598
595
  server = nil
599
596
  assert_nothing_raised {
600
- server = Puppet::Server::FileServer.new(
597
+ server = Puppet::Network::Handler.fileserver.new(
601
598
  :Local => true,
602
599
  :Config => conffile
603
600
  )
604
601
  }
605
602
 
606
- assert_raise(Puppet::FileServerError,
603
+ assert_raise(Puppet::Network::Handler::FileServerError,
607
604
  "Invalid mount was mounted") {
608
605
  server.list(mount, :ignore)
609
606
  }
@@ -617,9 +614,9 @@ class TestFileServer < Test::Unit::TestCase
617
614
 
618
615
  # create a server with the file
619
616
  server = nil
620
- assert_raise(Puppet::FileServerError,
617
+ assert_raise(Puppet::Network::Handler::FileServerError,
621
618
  "Invalid config %s did not raise error" % i) {
622
- server = Puppet::Server::FileServer.new(
619
+ server = Puppet::Network::Handler.fileserver.new(
623
620
  :Local => true,
624
621
  :Config => conffile
625
622
  )
@@ -631,12 +628,10 @@ class TestFileServer < Test::Unit::TestCase
631
628
  def test_filereread
632
629
  server = nil
633
630
 
631
+ conffile = tempfile()
634
632
  dir = tstdir()
635
633
 
636
634
  files = mktestfiles(dir)
637
-
638
- conffile = tempfile()
639
-
640
635
  File.open(conffile, "w") { |f|
641
636
  f.print "# a test config file
642
637
 
@@ -646,12 +641,13 @@ class TestFileServer < Test::Unit::TestCase
646
641
  "
647
642
  }
648
643
 
644
+ # Reset the timeout, so we reload faster
645
+ Puppet[:filetimeout] = 0.5
649
646
 
650
647
  # start our server with a fast timeout
651
648
  assert_nothing_raised {
652
- server = Puppet::Server::FileServer.new(
653
- :Local => true,
654
- :ConfigTimeout => 0.5,
649
+ server = Puppet::Network::Handler.fileserver.new(
650
+ :Local => false,
655
651
  :Config => conffile
656
652
  )
657
653
  }
@@ -663,7 +659,7 @@ class TestFileServer < Test::Unit::TestCase
663
659
  }
664
660
  assert(list != "", "List returned nothing in rereard test")
665
661
 
666
- assert_raise(Puppet::Server::AuthorizationError, "List allowed invalid host") {
662
+ assert_raise(Puppet::AuthorizationError, "List allowed invalid host") {
667
663
  list = server.list("/thing/", :ignore, false, false,
668
664
  "test2.domain.com", "127.0.0.1")
669
665
  }
@@ -678,7 +674,7 @@ class TestFileServer < Test::Unit::TestCase
678
674
  "
679
675
  }
680
676
 
681
- assert_raise(Puppet::Server::AuthorizationError, "List allowed invalid host") {
677
+ assert_raise(Puppet::AuthorizationError, "List allowed invalid host") {
682
678
  list = server.list("/thing/", :ignore, false, false,
683
679
  "test1.domain.com", "127.0.0.1")
684
680
  }
@@ -699,7 +695,7 @@ class TestFileServer < Test::Unit::TestCase
699
695
  name = "yaytest"
700
696
  path = tmpdir()
701
697
  assert_nothing_raised {
702
- mount = Puppet::Server::FileServer::Mount.new(name, path)
698
+ mount = Puppet::Network::Handler.fileserver::Mount.new(name, path)
703
699
  }
704
700
 
705
701
  assert_equal("mount[#{name}]", mount.to_s)
@@ -714,7 +710,7 @@ class TestFileServer < Test::Unit::TestCase
714
710
  File.open(file, "w") { |f| f.puts "yay" }
715
711
  File.symlink(file, link)
716
712
  assert_nothing_raised {
717
- server = Puppet::Server::FileServer.new(
713
+ server = Puppet::Network::Handler.fileserver.new(
718
714
  :Local => true,
719
715
  :Config => false
720
716
  )
@@ -728,7 +724,7 @@ class TestFileServer < Test::Unit::TestCase
728
724
  results = {}
729
725
  assert_nothing_raised {
730
726
  server.describe("/mount/link", :follow).split("\t").zip(
731
- Puppet::Server::FileServer::CHECKPARAMS
727
+ Puppet::Network::Handler.fileserver::CHECKPARAMS
732
728
  ).each { |v,p| results[p] = v }
733
729
  }
734
730
 
@@ -738,7 +734,7 @@ class TestFileServer < Test::Unit::TestCase
738
734
  results = {}
739
735
  assert_nothing_raised {
740
736
  server.describe("/mount/link", :ignore).split("\t").zip(
741
- Puppet::Server::FileServer::CHECKPARAMS
737
+ Puppet::Network::Handler.fileserver::CHECKPARAMS
742
738
  ).each { |v,p| results[p] = v }
743
739
  }
744
740
 
@@ -749,7 +745,386 @@ class TestFileServer < Test::Unit::TestCase
749
745
  assert(v != "", "%s has no value" % p)
750
746
  }
751
747
  end
748
+
749
+ # Test that substitution patterns in the path are exapanded
750
+ # properly. Disabled, because it was testing too much of the process
751
+ # and in a non-portable way. This is a thorough enough test that it should
752
+ # be kept, but it should be done in a way that is clearly portable (e.g.,
753
+ # no md5 sums of file paths).
754
+ def test_host_specific
755
+ client1 = "client1.example.com"
756
+ client2 = "client2.example.com"
757
+ ip = "127.0.0.1"
758
+
759
+ # Setup a directory hierarchy for the tests
760
+ fsdir = File.join(tmpdir(), "host-specific")
761
+ @@tmpfiles << fsdir
762
+ hostdir = File.join(fsdir, "host")
763
+ fqdndir = File.join(fsdir, "fqdn")
764
+ client1_hostdir = File.join(hostdir, "client1")
765
+ client2_fqdndir = File.join(fqdndir, client2)
766
+ contents = {
767
+ client1_hostdir => "client1\n",
768
+ client2_fqdndir => client2 + "\n"
769
+ }
770
+ [fsdir, hostdir, fqdndir,
771
+ client1_hostdir, client2_fqdndir].each { |d| Dir.mkdir(d) }
772
+
773
+ [client1_hostdir, client2_fqdndir].each do |d|
774
+ File.open(File.join(d, "file.txt"), "w") do |f|
775
+ f.print contents[d]
776
+ end
777
+ end
778
+ conffile = tempfile()
779
+ File.open(conffile, "w") do |f|
780
+ f.print("
781
+ [host]
782
+ path #{hostdir}/%h
783
+ allow *
784
+ [fqdn]
785
+ path #{fqdndir}/%H
786
+ allow *
787
+ ")
788
+ end
789
+
790
+ server = nil
791
+ assert_nothing_raised {
792
+ server = Puppet::Network::Handler.fileserver.new(
793
+ :Local => true,
794
+ :Config => conffile
795
+ )
796
+ }
797
+
798
+ # check that list returns the correct thing for the two clients
799
+ list = nil
800
+ sfile = "/host/file.txt"
801
+ assert_nothing_raised {
802
+ list = server.list(sfile, :ignore, true, false, client1, ip)
803
+ }
804
+ assert_equal("/\tfile", list)
805
+ assert_nothing_raised {
806
+ list = server.list(sfile, :ignore, true, false, client2, ip)
807
+ }
808
+ assert_equal("", list)
809
+
810
+ sfile = "/fqdn/file.txt"
811
+ assert_nothing_raised {
812
+ list = server.list(sfile, :ignore, true, false, client1, ip)
813
+ }
814
+ assert_equal("", list)
815
+ assert_nothing_raised {
816
+ list = server.list(sfile, :ignore, true, false, client2, ip)
817
+ }
818
+ assert_equal("/\tfile", list)
819
+
820
+ # check describe
821
+ sfile = "/host/file.txt"
822
+ assert_nothing_raised {
823
+ list = server.describe(sfile, :ignore, client1, ip).split("\t")
824
+ }
825
+ assert_equal(5, list.size)
826
+ assert_equal("file", list[1])
827
+ md5 = Digest::MD5.hexdigest(contents[client1_hostdir])
828
+ assert_equal("{md5}#{md5}", list[4])
829
+
830
+ assert_nothing_raised {
831
+ list = server.describe(sfile, :ignore, client2, ip).split("\t")
832
+ }
833
+ assert_equal([], list)
834
+
835
+ sfile = "/fqdn/file.txt"
836
+ assert_nothing_raised {
837
+ list = server.describe(sfile, :ignore, client1, ip).split("\t")
838
+ }
839
+ assert_equal([], list)
840
+
841
+ assert_nothing_raised {
842
+ list = server.describe(sfile, :ignore, client2, ip).split("\t")
843
+ }
844
+ assert_equal(5, list.size)
845
+ assert_equal("file", list[1])
846
+ md5 = Digest::MD5.hexdigest(contents[client2_fqdndir])
847
+ assert_equal("{md5}#{md5}", list[4])
848
+
849
+ # Check retrieve
850
+ sfile = "/host/file.txt"
851
+ assert_nothing_raised {
852
+ list = server.retrieve(sfile, :ignore, client1, ip).chomp
853
+ }
854
+ assert_equal(contents[client1_hostdir].chomp, list)
855
+
856
+ assert_nothing_raised {
857
+ list = server.retrieve(sfile, :ignore, client2, ip).chomp
858
+ }
859
+ assert_equal("", list)
860
+
861
+ sfile = "/fqdn/file.txt"
862
+ assert_nothing_raised {
863
+ list = server.retrieve(sfile, :ignore, client1, ip).chomp
864
+ }
865
+ assert_equal("", list)
866
+
867
+ assert_nothing_raised {
868
+ list = server.retrieve(sfile, :ignore, client2, ip).chomp
869
+ }
870
+ assert_equal(contents[client2_fqdndir].chomp, list)
871
+ end
872
+
873
+ # Make sure the 'subdir' method in Mount works.
874
+ def test_mount_subdir
875
+ mount = nil
876
+ base = tempfile()
877
+ Dir.mkdir(base)
878
+ subdir = File.join(base, "subdir")
879
+ Dir.mkdir(subdir)
880
+ [base, subdir].each do |d|
881
+ File.open(File.join(d, "file"), "w") { |f| f.puts "bazoo" }
882
+ end
883
+ mount = mkmount(base)
884
+
885
+ assert_equal(base, mount.subdir(), "Did not default to base path")
886
+ assert_equal(subdir, mount.subdir("subdir"), "Did not default to base path")
887
+ end
888
+
889
+ # Make sure mounts get correctly marked expandable or not, depending on
890
+ # the path.
891
+ def test_expandable
892
+ name = "yaytest"
893
+ dir = tempfile()
894
+ Dir.mkdir(dir)
895
+
896
+ mount = mkmount()
897
+ assert_nothing_raised {
898
+ mount.path = dir
899
+ }
900
+
901
+ assert(! mount.expandable?, "Mount incorrectly called expandable")
902
+
903
+ assert_nothing_raised {
904
+ mount.path = "/dir/a%a"
905
+ }
906
+ assert(mount.expandable?, "Mount not called expandable")
907
+
908
+ # This isn't a valid replacement pattern, so it should throw an error
909
+ # because the dir doesn't exist
910
+ assert_raise(Puppet::Network::Handler::FileServerError) {
911
+ mount.path = "/dir/a%"
912
+ }
913
+
914
+ # Now send it back to a normal path
915
+ assert_nothing_raised {
916
+ mount.path = dir
917
+ }
918
+ # Make sure it got reverted
919
+ assert(! mount.expandable?, "Mount incorrectly called expandable")
920
+
921
+
922
+ end
923
+
924
+ def test_mount_expand
925
+ mount = mkmount()
926
+
927
+ check = proc do |client, pattern, repl|
928
+ path = "/my/#{pattern}/file"
929
+ assert_equal("/my/#{repl}/file", mount.expand(path, client))
930
+ end
931
+
932
+ # Do a round of checks with a fake client
933
+ client = "host.domain.com"
934
+ {"%h" => "host", # Short name
935
+ "%H" => client, # Full name
936
+ "%d" => "domain.com", # domain
937
+ "%%" => "%", # escape
938
+ "%o" => "%o" # other
939
+ }.each do |pat, repl|
940
+ result = check.call(client, pat, repl)
941
+ end
942
+
943
+ # Now, check that they use Facter info
944
+ Puppet.notice "The following messages are normal"
945
+ client = nil
946
+ local = Facter["hostname"].value
947
+ domain = Facter["domain"].value
948
+ fqdn = [local, domain].join(".")
949
+ {"%h" => local, # Short name
950
+ "%H" => fqdn, # Full name
951
+ "%d" => domain, # domain
952
+ "%%" => "%", # escape
953
+ "%o" => "%o" # other
954
+ }.each do |pat, repl|
955
+ check.call(client, pat, repl)
956
+ end
957
+
958
+ end
959
+
960
+ # Test that the fileserver expands the %h and %d things.
961
+ def test_fileserver_expansion
962
+ server = nil
963
+ assert_nothing_raised {
964
+ server = Puppet::Network::Handler.fileserver.new(
965
+ :Local => true,
966
+ :Config => false
967
+ )
968
+ }
969
+
970
+ dir = tempfile()
971
+ ip = Facter.value(:ipaddress)
972
+
973
+ Dir.mkdir(dir)
974
+ host = "host.domain.com"
975
+ {
976
+ "%H" => "host.domain.com", "%h" => "host", "%d" => "domain.com"
977
+ }.each do |pattern, string|
978
+ file = File.join(dir, string)
979
+ mount = File.join(dir, pattern)
980
+ File.open(file, "w") do |f| f.puts "yayness: %s" % string end
981
+ name = "name"
982
+ obj = nil
983
+ assert_nothing_raised {
984
+ obj = server.mount(mount, name)
985
+ }
986
+ obj.allow "*"
987
+
988
+ ret = nil
989
+ assert_nothing_raised do
990
+ ret = server.list("/name", :ignore, false, false, host, ip)
991
+ end
992
+
993
+ assert_equal("/\tfile", ret)
994
+
995
+ assert_nothing_raised do
996
+ ret = server.describe("/name", :ignore, host, ip)
997
+ end
998
+ assert(ret =~ /\tfile\t/, "Did not get valid a description")
999
+
1000
+ assert_nothing_raised do
1001
+ ret = server.retrieve("/name", :ignore, host, ip)
1002
+ end
1003
+
1004
+ assert_equal(ret, File.read(file))
1005
+
1006
+ server.umount(name)
1007
+
1008
+ File.unlink(file)
1009
+ end
1010
+ end
1011
+
1012
+ # Test the default modules fileserving
1013
+ def test_modules_default
1014
+ moddir = tempfile
1015
+ Dir.mkdir(moddir)
1016
+ mounts = {}
1017
+ Puppet[:modulepath] = moddir
1018
+
1019
+ mods = %w{green red}.collect do |name|
1020
+ path = File::join(moddir, name, Puppet::Module::FILES)
1021
+ FileUtils::mkdir_p(path)
1022
+ if name == "green"
1023
+ file = File::join(path, "test.txt")
1024
+ File::open(file, "w") { |f| f.print name }
1025
+ end
1026
+
1027
+ Puppet::Module::find(name)
1028
+ end
1029
+
1030
+ conffile = tempfile
1031
+ @@tmpfiles << conffile
1032
+
1033
+ File.open(conffile, "w") { |f| f.puts "# a test config file" }
1034
+
1035
+ # create a server with the file
1036
+ server = nil
1037
+ assert_nothing_raised {
1038
+ server = Puppet::Network::Handler::FileServer.new(
1039
+ :Local => false ,
1040
+ :Config => conffile
1041
+ )
1042
+ }
1043
+
1044
+ mods.each do |mod|
1045
+ mount = "/#{mod.name}/"
1046
+ list = nil
1047
+ assert_nothing_raised {
1048
+ list = server.list(mount, :ignore, true, false)
1049
+ }
1050
+ list = list.split("\n")
1051
+ if mod.name == "green"
1052
+ assert_equal(2, list.size)
1053
+ assert_equal("/\tdirectory", list[0])
1054
+ assert_equal("/test.txt\tfile", list[1])
1055
+ else
1056
+ assert_equal(1, list.size)
1057
+ assert_equal("/\tdirectory", list[0])
1058
+ end
1059
+
1060
+ assert_nothing_raised("Host 'allow' denied #{mount}") {
1061
+ server.list(mount, :ignore, true, false,
1062
+ 'allow.example.com', "192.168.0.1")
1063
+ }
1064
+ end
1065
+ end
1066
+
1067
+ # Test that configuring deny/allow for modules works
1068
+ def test_modules_config
1069
+ moddir = tempfile
1070
+ Dir.mkdir(moddir)
1071
+ mounts = {}
1072
+ Puppet[:modulepath] = moddir
1073
+
1074
+ path = File::join(moddir, "amod", Puppet::Module::FILES)
1075
+ file = File::join(path, "test.txt")
1076
+ FileUtils::mkdir_p(path)
1077
+ File::open(file, "w") { |f| f.print "Howdy" }
1078
+
1079
+ mod = Puppet::Module::find("amod")
1080
+
1081
+ conffile = tempfile
1082
+ @@tmpfiles << conffile
1083
+
1084
+ File.open(conffile, "w") { |f|
1085
+ f.print "# a test config file
1086
+ [modules]
1087
+ path #{basedir}/thing
1088
+ allow 192.168.0.*
1089
+ "
1090
+ }
1091
+
1092
+ # create a server with the file
1093
+ server = nil
1094
+ assert_nothing_raised {
1095
+ server = Puppet::Network::Handler::FileServer.new(
1096
+ :Local => false,
1097
+ :Config => conffile
1098
+ )
1099
+ }
1100
+
1101
+ list = nil
1102
+ mount = "/#{mod.name}/"
1103
+ assert_nothing_raised {
1104
+ list = server.list(mount, :ignore, true, false)
1105
+ }
1106
+
1107
+ assert_nothing_raised {
1108
+ list.split("\n").each { |line|
1109
+ file, type = line.split("\t")
1110
+ server.describe(mount + file)
1111
+ }
1112
+ }
1113
+
1114
+ assert_describe(mount, file, server)
1115
+
1116
+ # now let's check that things are being correctly forbidden
1117
+ assert_raise(Puppet::AuthorizationError,
1118
+ "Host 'deny' allowed #{mount}") {
1119
+ server.list(mount, :ignore, true, false,
1120
+ 'deny.example.com', "192.168.1.1")
1121
+ }
1122
+ assert_nothing_raised("Host 'allow' denied #{mount}") {
1123
+ server.list(mount, :ignore, true, false,
1124
+ 'allow.example.com', "192.168.0.1")
1125
+ }
1126
+ end
752
1127
  end
753
1128
 
754
- # $Id: fileserver.rb 1016 2006-03-12 03:29:13Z luke $
1129
+ # $Id: fileserver.rb 2443 2007-04-30 21:08:06Z luke $
755
1130