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
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppettest'
6
+ require 'puppet/network/client/ca'
7
+ require 'puppet/sslcertificates/support'
8
+
9
+ class TestClientCA < Test::Unit::TestCase
10
+ include PuppetTest::ServerTest
11
+
12
+ def setup
13
+ super
14
+ @ca = Puppet::Network::Handler.ca.new
15
+ @client = Puppet::Network::Client.ca.new :CA => @ca
16
+ end
17
+
18
+ def test_request_cert
19
+ assert_nothing_raised("Could not request cert") do
20
+ @client.request_cert
21
+ end
22
+
23
+ [:hostprivkey, :hostcert, :localcacert].each do |name|
24
+ assert(FileTest.exists?(Puppet.config[name]),
25
+ "Did not create cert %s" % name)
26
+ end
27
+ end
28
+
29
+ # Make sure the ca defaults to specific ports and names
30
+ def test_ca_server
31
+ client = nil
32
+ assert_nothing_raised do
33
+ client = Puppet::Network::Client.ca.new
34
+ end
35
+ end
36
+ end
37
+
38
+ # $Id: ca.rb 2263 2007-03-08 00:21:38Z luke $
@@ -1,21 +1,22 @@
1
- if __FILE__ == $0
2
- $:.unshift '..'
3
- $:.unshift '../../lib'
4
- $puppetbase = "../.."
5
- end
1
+ #!/usr/bin/env ruby
6
2
 
7
- require 'puppet'
8
- require 'puppet/client'
9
- require 'puppet/server'
10
- require 'test/unit'
11
- require 'puppettest.rb'
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
12
4
 
13
- # $Id: client.rb 1160 2006-05-02 04:30:40Z luke $
5
+ require 'puppettest'
6
+ require 'mocha'
7
+ require 'puppet/network/client'
14
8
 
15
9
  class TestClient < Test::Unit::TestCase
16
- include ServerTest
10
+ include PuppetTest::ServerTest
11
+ class FakeClient < Puppet::Network::Client
12
+ @drivername = :Test
13
+ end
14
+
15
+ class FakeDriver
16
+ end
17
+
17
18
  # a single run through of connect, auth, etc.
18
- def test_sslInitWithAutosigningLocalServer
19
+ def disabled_test_sslInitWithAutosigningLocalServer
19
20
  # autosign everything, for simplicity
20
21
  Puppet[:autosign] = true
21
22
 
@@ -25,7 +26,7 @@ class TestClient < Test::Unit::TestCase
25
26
  # create our client
26
27
  client = nil
27
28
  assert_nothing_raised {
28
- client = Puppet::Client::MasterClient.new(
29
+ client = Puppet::Network::Client.master.new(
29
30
  :Server => "localhost",
30
31
  :Port => @@port
31
32
  )
@@ -62,13 +63,13 @@ class TestClient < Test::Unit::TestCase
62
63
 
63
64
 
64
65
  # here we create two servers; we
65
- def test_failureWithUntrustedCerts
66
+ def disabled_test_failureWithUntrustedCerts
66
67
  Puppet[:autosign] = true
67
68
 
68
69
  # create a pair of clients with no certs
69
70
  nonemaster = nil
70
71
  assert_nothing_raised {
71
- nonemaster = Puppet::Client::MasterClient.new(
72
+ nonemaster = Puppet::Network::Client.master.new(
72
73
  :Server => "localhost",
73
74
  :Port => @@port
74
75
  )
@@ -76,7 +77,7 @@ class TestClient < Test::Unit::TestCase
76
77
 
77
78
  nonebucket = nil
78
79
  assert_nothing_raised {
79
- nonebucket = Puppet::Client::Dipper.new(
80
+ nonebucket = Puppet::Network::Client.dipper.new(
80
81
  :Server => "localhost",
81
82
  :Port => @@port
82
83
  )
@@ -86,7 +87,7 @@ class TestClient < Test::Unit::TestCase
86
87
  # make a new ssldir for it
87
88
  ca = nil
88
89
  assert_nothing_raised {
89
- ca = Puppet::Client::CA.new(
90
+ ca = Puppet::Network::Client.ca.new(
90
91
  :CA => true, :Local => true
91
92
  )
92
93
  ca.requestcert
@@ -95,7 +96,7 @@ class TestClient < Test::Unit::TestCase
95
96
  # initialize our clients with this set of certs
96
97
  certmaster = nil
97
98
  assert_nothing_raised {
98
- certmaster = Puppet::Client::MasterClient.new(
99
+ certmaster = Puppet::Network::Client.master.new(
99
100
  :Server => "localhost",
100
101
  :Port => @@port
101
102
  )
@@ -103,7 +104,7 @@ class TestClient < Test::Unit::TestCase
103
104
 
104
105
  certbucket = nil
105
106
  assert_nothing_raised {
106
- certbucket = Puppet::Client::Dipper.new(
107
+ certbucket = Puppet::Network::Client.dipper.new(
107
108
  :Server => "localhost",
108
109
  :Port => @@port
109
110
  )
@@ -129,11 +130,11 @@ class TestClient < Test::Unit::TestCase
129
130
  certmaster.getconfig
130
131
  }
131
132
 
132
- assert_raise(Puppet::NetworkClientError,
133
+ assert_raise(Puppet::Network::XMLRPCClientError,
133
134
  "Client was allowed to call backup with no certs") {
134
135
  nonebucket.backup("/etc/passwd")
135
136
  }
136
- assert_raise(Puppet::NetworkClientError,
137
+ assert_raise(Puppet::Network::XMLRPCClientError,
137
138
  "Client was allowed to call backup with untrusted certs") {
138
139
  certbucket.backup("/etc/passwd")
139
140
  }
@@ -148,14 +149,14 @@ class TestClient < Test::Unit::TestCase
148
149
 
149
150
  master = client = nil
150
151
  assert_nothing_raised() {
151
- master = Puppet::Server::Master.new(
152
+ master = Puppet::Network::Handler.master.new(
152
153
  :Manifest => manifest,
153
154
  :UseNodes => false,
154
155
  :Local => false
155
156
  )
156
157
  }
157
158
  assert_nothing_raised() {
158
- client = Puppet::Client::MasterClient.new(
159
+ client = Puppet::Network::Client.master.new(
159
160
  :Master => master
160
161
  )
161
162
  }
@@ -173,4 +174,86 @@ class TestClient < Test::Unit::TestCase
173
174
 
174
175
  assert_equal(%w{bootest yaytest}, classes.sort)
175
176
  end
177
+
178
+ def test_client_loading
179
+ # Make sure we don't get a failure but that we also get nothing back
180
+ assert_nothing_raised do
181
+ assert_nil(Puppet::Network::Client.client(:fake),
182
+ "Got something back from a missing client")
183
+ assert_nil(Puppet::Network::Client.fake,
184
+ "Got something back from missing client method")
185
+ end
186
+ # Make a fake client
187
+ dir = tempfile()
188
+ libdir = File.join([dir, %w{puppet network client}].flatten)
189
+ FileUtils.mkdir_p(libdir)
190
+
191
+ file = File.join(libdir, "faker.rb")
192
+ File.open(file, "w") do |f|
193
+ f.puts %{class Puppet::Network::Client
194
+ class Faker < Client
195
+ end
196
+ end
197
+ }
198
+ end
199
+
200
+ $: << dir
201
+ cleanup { $:.delete(dir) if $:.include?(dir) }
202
+
203
+ client = nil
204
+ assert_nothing_raised do
205
+ client = Puppet::Network::Client.client(:faker)
206
+ end
207
+ assert(client, "did not load client")
208
+ assert_nothing_raised do
209
+ assert_equal(client, Puppet::Network::Client.faker,
210
+ "Did not get client back from client method")
211
+ end
212
+
213
+ # Now make sure the client behaves correctly
214
+ assert_equal(:Faker, client.name, "name was not calculated correctly")
215
+ end
216
+
217
+ # Make sure we get a client class for each handler type.
218
+ def test_loading_all_clients
219
+ %w{ca dipper file logger master report resource runner status}.each do |name|
220
+ client = nil
221
+ assert_nothing_raised do
222
+ client = Puppet::Network::Client.client(name)
223
+ end
224
+ assert(client, "did not get client for %s" % name)
225
+ [:name, :handler, :drivername].each do |thing|
226
+ assert(client.send(thing), "did not get %s for %s" % [thing, name])
227
+ end
228
+ end
229
+ end
230
+
231
+ # Make sure that reading the cert in also sets up the cert stuff for the driver
232
+ def test_read_cert
233
+ ca = Puppet::Network::Handler.ca.new
234
+ caclient = Puppet::Network::Client.ca.new :CA => ca
235
+
236
+ caclient.request_cert
237
+
238
+ # First make sure it doesn't get called when the driver doesn't support :cert_setup
239
+ client = FakeClient.new :Test => FakeDriver.new
240
+ driver = client.driver
241
+
242
+ assert_nothing_raised("Could not read cert") do
243
+ client.read_cert
244
+ end
245
+
246
+ # And then that it does when the driver supports it
247
+ client = FakeClient.new :Test => FakeDriver.new
248
+
249
+ driver = client.driver
250
+ driver.meta_def(:cert_setup) { |c| }
251
+ driver.expects(:cert_setup).with(client)
252
+
253
+ assert_nothing_raised("Could not read cert") do
254
+ client.read_cert
255
+ end
256
+ end
176
257
  end
258
+
259
+ # $Id: client.rb 2375 2007-03-30 23:17:40Z luke $
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppettest'
6
+ require 'puppet/network/client/resource'
7
+
8
+ class TestDipperClient < Test::Unit::TestCase
9
+ include PuppetTest::ServerTest
10
+
11
+ def setup
12
+ super
13
+ @dipper = Puppet::Network::Client.dipper.new(:Path => tempfile)
14
+ end
15
+
16
+ # Make sure we can create a new file with 'restore'.
17
+ def test_restore_to_new_file
18
+ file = tempfile
19
+ text = "asdf;lkajseofiqwekj"
20
+ File.open(file, "w") { |f| f.puts text }
21
+ md5 = nil
22
+ assert_nothing_raised("Could not send file") do
23
+ md5 = @dipper.backup(file)
24
+ end
25
+
26
+ newfile = tempfile
27
+ assert_nothing_raised("could not restore to new path") do
28
+ @dipper.restore(newfile, md5)
29
+ end
30
+
31
+ assert_equal(File.read(file), File.read(newfile), "did not restore correctly")
32
+ end
33
+ end
34
+
35
+ # $Id: dipper.rb 2348 2007-03-24 21:16:20Z luke $
@@ -0,0 +1,627 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
+
5
+ require 'puppettest'
6
+
7
+ class TestMasterClient < Test::Unit::TestCase
8
+ include PuppetTest::ServerTest
9
+
10
+ class FakeTrans
11
+ def initialize
12
+ @counters = Hash.new { |h,k| h[k] = 0 }
13
+ end
14
+ [:evaluate, :report, :cleanup, :addtimes, :tags, :ignoreschedules].each do |m|
15
+ define_method(m.to_s + "=") do |*args|
16
+ @counters[m] += 1
17
+ end
18
+ define_method(m) do |*args|
19
+ @counters[m] += 1
20
+ end
21
+ define_method(m.to_s + "?") do
22
+ @counters[m]
23
+ end
24
+ end
25
+ end
26
+ class FakeComponent
27
+ attr_accessor :trans
28
+ def evaluate
29
+ @trans = FakeTrans.new
30
+ @trans
31
+ end
32
+
33
+ def finalize
34
+ @finalized = true
35
+ end
36
+
37
+ def finalized?
38
+ @finalized
39
+ end
40
+ end
41
+
42
+ def setup
43
+ super
44
+ @master = Puppet::Network::Client.master
45
+ end
46
+
47
+ def mkmaster(file = nil)
48
+ master = nil
49
+
50
+ file ||= mktestmanifest()
51
+ # create our master
52
+ assert_nothing_raised() {
53
+ # this is the default server setup
54
+ master = Puppet::Network::Handler.master.new(
55
+ :Manifest => file,
56
+ :UseNodes => false,
57
+ :Local => true
58
+ )
59
+ }
60
+ return master
61
+ end
62
+
63
+ def mkclient(master = nil)
64
+ master ||= mkmaster()
65
+ client = nil
66
+ assert_nothing_raised() {
67
+ client = Puppet::Network::Client.master.new(
68
+ :Master => master
69
+ )
70
+ }
71
+
72
+ return client
73
+ end
74
+
75
+ def mk_fake_client
76
+ server = Puppet::Network::Handler.master.new :Code => ""
77
+ master = Puppet::Network::Client.master.new :Server => server, :Local => true
78
+
79
+ # Now create some objects
80
+ objects = FakeComponent.new
81
+
82
+ master.send(:instance_variable_set, "@objects", objects)
83
+
84
+ class << master
85
+ def report(r)
86
+ @reported ||= 0
87
+ @reported += 1
88
+ end
89
+ def reported
90
+ @reported ||= 0
91
+ @reported
92
+ end
93
+ end
94
+ return master, objects
95
+ end
96
+
97
+ def test_apply
98
+ master, objects = mk_fake_client
99
+
100
+ check = Proc.new do |hash|
101
+ assert(objects.trans, "transaction was not created")
102
+ trans = objects.trans
103
+ hash[:yes].each do |m|
104
+ assert_equal(1, trans.send(m.to_s + "?"), "did not call #{m} enough times")
105
+ end
106
+ hash[:no].each do |m|
107
+ assert_equal(0, trans.send(m.to_s + "?"), "called #{m} too many times")
108
+ end
109
+ end
110
+
111
+ # First try it with no arguments
112
+ assert_nothing_raised do
113
+ master.apply
114
+ end
115
+ check.call :yes => %w{evaluate cleanup addtimes}, :no => %w{report tags ignoreschedules}
116
+ assert_equal(0, master.reported, "master sent report with reports disabled")
117
+
118
+
119
+ # Now enable reporting and make sure the report method gets called
120
+ Puppet[:report] = true
121
+ assert_nothing_raised do
122
+ master.apply
123
+ end
124
+ check.call :yes => %w{evaluate cleanup addtimes}, :no => %w{tags ignoreschedules}
125
+ assert_equal(1, master.reported, "master did not send report")
126
+
127
+ # Now try it with tags enabled
128
+ assert_nothing_raised do
129
+ master.apply("tags")
130
+ end
131
+ check.call :yes => %w{evaluate cleanup tags addtimes}, :no => %w{ignoreschedules}
132
+ assert_equal(2, master.reported, "master did not send report")
133
+
134
+ # and ignoreschedules
135
+ assert_nothing_raised do
136
+ master.apply("tags", true)
137
+ end
138
+ check.call :yes => %w{evaluate cleanup tags ignoreschedules addtimes}, :no => %w{}
139
+ assert_equal(3, master.reported, "master did not send report")
140
+ end
141
+
142
+ def test_getconfig
143
+ client = mkclient
144
+
145
+ $methodsrun = []
146
+ cleanup { $methodsrun = nil }
147
+ client.meta_def(:getplugins) do
148
+ $methodsrun << :getplugins
149
+ end
150
+ client.meta_def(:get_actual_config) do
151
+ $methodsrun << :get_actual_config
152
+ result = Puppet::TransBucket.new()
153
+ result.type = "testing"
154
+ result.name = "yayness"
155
+ result
156
+ end
157
+
158
+ assert_nothing_raised do
159
+ client.getconfig
160
+ end
161
+ [:get_actual_config].each do |method|
162
+ assert($methodsrun.include?(method), "method %s was not run" % method)
163
+ end
164
+ assert(! $methodsrun.include?(:getplugins), "plugins were synced even tho disabled")
165
+
166
+ # Now set pluginsync
167
+ Puppet[:pluginsync] = true
168
+ $methodsrun.clear
169
+
170
+ assert_nothing_raised do
171
+ client.getconfig
172
+ end
173
+ [:getplugins, :get_actual_config].each do |method|
174
+ assert($methodsrun.include?(method), "method %s was not run" % method)
175
+ end
176
+
177
+ objects = client.objects
178
+ assert(objects.finalized?, "objects were not finalized")
179
+ end
180
+
181
+ def test_disable
182
+ FileUtils.mkdir_p(Puppet[:statedir])
183
+ manifest = mktestmanifest
184
+
185
+ master = mkmaster(manifest)
186
+
187
+ client = mkclient(master)
188
+
189
+ assert(! FileTest.exists?(@createdfile))
190
+
191
+ assert_nothing_raised {
192
+ client.disable
193
+ }
194
+
195
+ assert_nothing_raised {
196
+ client.run
197
+ }
198
+
199
+ assert(! FileTest.exists?(@createdfile), "Disabled client ran")
200
+
201
+ assert_nothing_raised {
202
+ client.enable
203
+ }
204
+
205
+ assert_nothing_raised {
206
+ client.run
207
+ }
208
+
209
+ assert(FileTest.exists?(@createdfile), "Enabled client did not run")
210
+ end
211
+
212
+ # Make sure we're getting the client version in our list of facts
213
+ def test_clientversionfact
214
+ facts = nil
215
+ assert_nothing_raised {
216
+ facts = Puppet::Network::Client.master.facts
217
+ }
218
+
219
+ assert_equal(Puppet.version.to_s, facts["clientversion"])
220
+
221
+ end
222
+
223
+ # Make sure non-string facts don't make things go kablooie
224
+ def test_nonstring_facts
225
+ FileUtils.mkdir_p(Puppet[:statedir])
226
+ # Add a nonstring fact
227
+ Facter.add("nonstring") do
228
+ setcode { 1 }
229
+ end
230
+
231
+ assert_equal(1, Facter.nonstring, "Fact was a string from facter")
232
+
233
+ client = mkclient()
234
+
235
+ assert(! FileTest.exists?(@createdfile))
236
+
237
+ assert_nothing_raised {
238
+ client.run
239
+ }
240
+ end
241
+
242
+ # This method is supposed
243
+ def test_download
244
+ source = tempfile()
245
+ dest = tempfile()
246
+ sfile = File.join(source, "file")
247
+ dfile = File.join(dest, "file")
248
+ Dir.mkdir(source)
249
+ File.open(sfile, "w") {|f| f.puts "yay"}
250
+
251
+ files = []
252
+ assert_nothing_raised do
253
+ files = Puppet::Network::Client.master.download(:dest => dest, :source => source, :name => "testing")
254
+ end
255
+
256
+ assert(FileTest.directory?(dest), "dest dir was not created")
257
+ assert(FileTest.file?(dfile), "dest file was not created")
258
+ assert_equal(File.read(sfile), File.read(dfile), "Dest file had incorrect contents")
259
+ assert_equal([dest, dfile].sort, files.sort, "Changed files were not returned correctly")
260
+ end
261
+
262
+ def test_getplugins
263
+ Puppet[:pluginsource] = tempfile()
264
+ Dir.mkdir(Puppet[:pluginsource])
265
+
266
+ myplugin = File.join(Puppet[:pluginsource], "myplugin.rb")
267
+ File.open(myplugin, "w") do |f|
268
+ f.puts %{Puppet::Type.newtype(:myplugin) do
269
+ newparam(:argument) do
270
+ isnamevar
271
+ end
272
+ end
273
+ }
274
+ end
275
+
276
+ assert_nothing_raised {
277
+ Puppet::Network::Client.master.getplugins
278
+ }
279
+
280
+ destfile = File.join(Puppet[:plugindest], "myplugin.rb")
281
+
282
+ assert(File.exists?(destfile), "Did not get plugin")
283
+
284
+ obj = Puppet::Type.type(:myplugin)
285
+
286
+ assert(obj, "Did not define type")
287
+
288
+ assert(obj.validattr?(:argument),
289
+ "Did not get namevar")
290
+
291
+ # Now modify the file and make sure the type is replaced
292
+ File.open(myplugin, "w") do |f|
293
+ f.puts %{Puppet::Type.newtype(:myplugin) do
294
+ newparam(:yayness) do
295
+ isnamevar
296
+ end
297
+
298
+ newparam(:rahness) do
299
+ end
300
+ end
301
+ }
302
+ end
303
+
304
+ assert_nothing_raised {
305
+ Puppet::Network::Client.master.getplugins
306
+ }
307
+
308
+ destfile = File.join(Puppet[:pluginpath], "myplugin.rb")
309
+
310
+ obj = Puppet::Type.type(:myplugin)
311
+
312
+ assert(obj, "Did not define type")
313
+
314
+ assert(obj.validattr?(:yayness),
315
+ "Did not get namevar")
316
+
317
+ assert(obj.validattr?(:rahness),
318
+ "Did not get other var")
319
+
320
+ assert(! obj.validattr?(:argument),
321
+ "Old namevar is still valid")
322
+
323
+ # Now try it again, to make sure we don't have any objects lying around
324
+ assert_nothing_raised {
325
+ Puppet::Network::Client.master.getplugins
326
+ }
327
+ end
328
+
329
+ def test_getfacts
330
+ Puppet[:factsource] = tempfile()
331
+ Dir.mkdir(Puppet[:factsource])
332
+ hostname = Facter.value(:hostname)
333
+
334
+ myfact = File.join(Puppet[:factsource], "myfact.rb")
335
+ File.open(myfact, "w") do |f|
336
+ f.puts %{Facter.add("myfact") do
337
+ setcode { "yayness" }
338
+ end
339
+ }
340
+ end
341
+
342
+ assert_nothing_raised {
343
+ Puppet::Network::Client.master.getfacts
344
+ }
345
+
346
+ destfile = File.join(Puppet[:factdest], "myfact.rb")
347
+
348
+ assert(File.exists?(destfile), "Did not get fact")
349
+
350
+ assert_equal(hostname, Facter.value(:hostname),
351
+ "Lost value to hostname")
352
+ assert_equal("yayness", Facter.value(:myfact),
353
+ "Did not get correct fact value")
354
+
355
+ # Now modify the file and make sure the type is replaced
356
+ File.open(myfact, "w") do |f|
357
+ f.puts %{Facter.add("myfact") do
358
+ setcode { "funtest" }
359
+ end
360
+ }
361
+ end
362
+
363
+ assert_nothing_raised {
364
+ Puppet::Network::Client.master.getfacts
365
+ }
366
+
367
+ assert_equal("funtest", Facter.value(:myfact),
368
+ "Did not reload fact")
369
+ assert_equal(hostname, Facter.value(:hostname),
370
+ "Lost value to hostname")
371
+
372
+ # Now run it again and make sure the fact still loads
373
+ assert_nothing_raised {
374
+ Puppet::Network::Client.master.getfacts
375
+ }
376
+
377
+ assert_equal("funtest", Facter.value(:myfact),
378
+ "Did not reload fact")
379
+ assert_equal(hostname, Facter.value(:hostname),
380
+ "Lost value to hostname")
381
+ end
382
+
383
+ # Make sure we load all facts on startup.
384
+ def test_loadfacts
385
+ dirs = [tempfile(), tempfile()]
386
+ count = 0
387
+ names = []
388
+ dirs.each do |dir|
389
+ Dir.mkdir(dir)
390
+ name = "fact%s" % count
391
+ names << name
392
+ file = File.join(dir, "%s.rb" % name)
393
+
394
+ # Write out a plugin file
395
+ File.open(file, "w") do |f|
396
+ f.puts %{Facter.add("#{name}") do setcode { "#{name}" } end }
397
+ end
398
+ count += 1
399
+ end
400
+
401
+ Puppet[:factpath] = dirs.join(":")
402
+
403
+ names.each do |name|
404
+ assert_nil(Facter.value(name), "Somehow retrieved invalid fact")
405
+ end
406
+
407
+ assert_nothing_raised {
408
+ Puppet::Network::Client.master.loadfacts
409
+ }
410
+
411
+ names.each do |name|
412
+ assert_equal(name, Facter.value(name),
413
+ "Did not retrieve facts")
414
+ end
415
+ end
416
+
417
+ if Process.uid == 0
418
+ # Testing #283. Make sure plugins et al are downloaded as the running user.
419
+ def test_download_ownership
420
+ dir = tstdir()
421
+ dest = tstdir()
422
+ file = File.join(dir, "file")
423
+ File.open(file, "w") { |f| f.puts "funtest" }
424
+
425
+ user = nonrootuser()
426
+ group = nonrootgroup()
427
+ chowner = Puppet::Type.type(:file).create :path => dir,
428
+ :owner => user.name, :group => group.name, :recurse => true
429
+ assert_apply(chowner)
430
+ chowner.remove
431
+
432
+ assert_equal(user.uid, File.stat(file).uid)
433
+ assert_equal(group.gid, File.stat(file).gid)
434
+
435
+
436
+ assert_nothing_raised {
437
+ Puppet::Network::Client.master.download(:dest => dest, :source => dir,
438
+ :name => "testing"
439
+ ) {}
440
+ }
441
+
442
+ destfile = File.join(dest, "file")
443
+
444
+ assert(FileTest.exists?(destfile), "Did not create destfile")
445
+
446
+ assert_equal(Process.uid, File.stat(destfile).uid)
447
+ end
448
+ end
449
+
450
+ # Test retrieving all of the facts.
451
+ def test_facts
452
+ facts = nil
453
+ assert_nothing_raised do
454
+ facts = Puppet::Network::Client.master.facts
455
+ end
456
+ Facter.to_hash.each do |fact, value|
457
+ assert_equal(facts[fact.downcase], value, "%s is not equal" % fact.inspect)
458
+ end
459
+
460
+ # Make sure the puppet version got added
461
+ assert_equal(Puppet::PUPPETVERSION, facts["clientversion"], "client version did not get added")
462
+
463
+ # And make sure the ruby version is in there
464
+ assert_equal(RUBY_VERSION, facts["rubyversion"], "ruby version did not get added")
465
+ end
466
+
467
+ # #424
468
+ def test_caching_of_compile_time
469
+ file = tempfile()
470
+ manifest = tempfile()
471
+ File.open(manifest, "w") { |f| f.puts "file { '#{file}': content => yay }" }
472
+
473
+ driver = mkmaster(manifest)
474
+ driver.local = false
475
+ master = mkclient(driver)
476
+
477
+ # We have to make everything thinks it's remote, because there's no local caching info
478
+ master.local = false
479
+
480
+ assert(! master.fresh?(master.class.facts),
481
+ "Considered fresh with no compile at all")
482
+
483
+ assert_nothing_raised { master.run }
484
+ assert(master.fresh?(master.class.facts),
485
+ "not considered fresh after compile")
486
+
487
+ # Now make sure the config time is cached
488
+ assert(master.compile_time, "No stored config time")
489
+ assert_equal(master.compile_time, Puppet::Util::Storage.cache(:configuration)[:compile_time], "times did not match")
490
+ time = master.compile_time
491
+ master.clear
492
+ File.unlink(file)
493
+ Puppet::Util::Storage.store
494
+
495
+ # Now make a new master
496
+ Puppet::Util::Storage.clear
497
+ master = mkclient(driver)
498
+ master.run
499
+ assert_equal(time, master.compile_time, "time was not retrieved from cache")
500
+ assert(FileTest.exists?(file), "file was not created on second run")
501
+ end
502
+
503
+ def test_default_objects
504
+ # Make sure they start out missing
505
+ assert_nil(Puppet::Type.type(:filebucket)["puppet"],
506
+ "default filebucket already exists")
507
+ assert_nil(Puppet::Type.type(:schedule)["daily"],
508
+ "default schedules already exists")
509
+
510
+ master = mkclient()
511
+
512
+ # Now make sure they got created
513
+ assert(Puppet::Type.type(:filebucket)["puppet"],
514
+ "default filebucket not found")
515
+ assert(Puppet::Type.type(:schedule)["daily"],
516
+ "default schedules not found")
517
+
518
+ # clear everything, and make sure we can recreate them
519
+ Puppet::Type.allclear
520
+ assert_nil(Puppet::Type.type(:filebucket)["puppet"],
521
+ "default filebucket not removed")
522
+ assert_nil(Puppet::Type.type(:schedule)["daily"],
523
+ "default schedules not removed")
524
+ assert_nothing_raised { master.mkdefault_objects }
525
+ assert(Puppet::Type.type(:filebucket)["puppet"],
526
+ "default filebucket not found")
527
+ assert(Puppet::Type.type(:schedule)["daily"],
528
+ "default schedules not found")
529
+
530
+
531
+ # Make sure we've got schedules
532
+ assert(Puppet::Type.type(:schedule)["hourly"], "Could not retrieve hourly schedule")
533
+ assert(Puppet::Type.type(:filebucket)["puppet"], "Could not retrieve default bucket")
534
+ end
535
+
536
+ # #540 - make sure downloads aren't affected by noop
537
+ def test_download_in_noop
538
+ source = tempfile
539
+ File.open(source, "w") { |f| f.puts "something" }
540
+ dest = tempfile
541
+ Puppet[:noop] = true
542
+ assert_nothing_raised("Could not download in noop") do
543
+ @master.download(:dest => dest, :source => source, :tag => "yay")
544
+ end
545
+
546
+ assert(FileTest.exists?(dest), "did not download in noop mode")
547
+
548
+ assert(Puppet[:noop], "noop got disabled in run")
549
+ end
550
+
551
+ # #491 - make sure a missing config doesn't kill us
552
+ def test_missing_localconfig
553
+ master = mkclient
554
+ master.local = false
555
+ driver = master.send(:instance_variable_get, "@driver")
556
+ driver.local = false
557
+ # Retrieve the configuration
558
+ master.getconfig
559
+
560
+ # Now the config is up to date, so get rid of the @objects var and
561
+ # the cached config
562
+ master.clear
563
+ File.unlink(master.cachefile)
564
+
565
+ assert_nothing_raised("Missing cache file threw error") do
566
+ master.getconfig
567
+ end
568
+
569
+ assert(! @logs.detect { |l| l.message =~ /Could not load/},
570
+ "Tried to load cache when it is non-existent")
571
+ end
572
+
573
+ # #519 - cache the facts so that we notice if they change.
574
+ def test_factchanges_cause_recompile
575
+ $value = "one"
576
+ Facter.add(:testfact) do
577
+ setcode { $value }
578
+ end
579
+ assert_equal("one", Facter.value(:testfact), "fact was not set correctly")
580
+ master = mkclient
581
+ master.local = false
582
+ driver = master.send(:instance_variable_get, "@driver")
583
+ driver.local = false
584
+
585
+ assert_nothing_raised("Could not compile config") do
586
+ master.getconfig
587
+ end
588
+
589
+ $value = "two"
590
+ Facter.clear
591
+ Facter.loadfacts
592
+ Facter.add(:testfact) do
593
+ setcode { $value }
594
+ end
595
+ facts = master.class.facts
596
+ assert_equal("two", Facter.value(:testfact), "fact did not change")
597
+
598
+ assert(master.send(:facts_changed?, facts),
599
+ "master does not think facts changed")
600
+ assert(! master.fresh?(facts),
601
+ "master is considered fresh after facts changed")
602
+
603
+ assert_nothing_raised("Could not recompile when facts changed") do
604
+ master.getconfig
605
+ end
606
+
607
+ end
608
+
609
+ def test_locking
610
+ master = mkclient
611
+
612
+ class << master
613
+ def getconfig
614
+ raise ArgumentError, "Just testing"
615
+ end
616
+ end
617
+
618
+ assert_raise(ArgumentError, "did not fail") do
619
+ master.run
620
+ end
621
+
622
+ assert(! master.send(:lockfile).locked?,
623
+ "Master is still locked after failure")
624
+ end
625
+ end
626
+
627
+ # $Id: master.rb 2326 2007-03-19 19:39:26Z luke $