puppet 0.23.2 → 0.24.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (629) hide show
  1. data/CHANGELOG +112 -1
  2. data/README +1 -1
  3. data/Rakefile +1 -2
  4. data/bin/filebucket +2 -3
  5. data/bin/puppet +55 -39
  6. data/bin/puppetca +20 -11
  7. data/bin/puppetd +30 -31
  8. data/bin/puppetdoc +27 -28
  9. data/bin/puppetmasterd +24 -42
  10. data/bin/puppetrun +3 -4
  11. data/bin/ralsh +5 -7
  12. data/conf/redhat/puppet.spec +4 -1
  13. data/conf/solaris/smf/svc-puppetd +1 -1
  14. data/conf/solaris/smf/svc-puppetmasterd +1 -1
  15. data/examples/code/allatonce +1 -1
  16. data/examples/code/assignments +1 -1
  17. data/examples/code/components +1 -1
  18. data/examples/code/file.bl +1 -1
  19. data/examples/code/filedefaults +1 -1
  20. data/examples/code/fileparsing +1 -1
  21. data/examples/code/filerecursion +1 -1
  22. data/examples/code/functions +1 -1
  23. data/examples/code/groups +1 -1
  24. data/examples/code/head +1 -1
  25. data/examples/code/importing +1 -1
  26. data/examples/code/modules/sample-module.pp +10 -0
  27. data/examples/code/modules/sample-module/README.txt +17 -0
  28. data/examples/code/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +36 -0
  29. data/examples/code/modules/sample-module/manifests/init.pp +12 -0
  30. data/examples/code/modules/sample-module/templates/sample.erb +5 -0
  31. data/examples/code/nodes +1 -1
  32. data/examples/code/one +1 -1
  33. data/examples/code/relationships +1 -1
  34. data/examples/code/selectors +1 -1
  35. data/examples/code/simpletests +1 -1
  36. data/examples/root/etc/init.d/sleeper +1 -1
  37. data/examples/root/etc/puppet/fileserver.conf +1 -1
  38. data/ext/ldap/puppet.schema +1 -1
  39. data/ext/module_puppet +30 -21
  40. data/ext/puppet-test +3 -3
  41. data/ext/vim/filetype.vim +1 -1
  42. data/install.rb +1 -2
  43. data/lib/puppet.rb +20 -19
  44. data/lib/puppet/checksum.rb +57 -0
  45. data/lib/puppet/config_stores/rest.rb +1 -1
  46. data/lib/puppet/daemon.rb +0 -1
  47. data/lib/puppet/{configuration.rb → defaults.rb} +56 -23
  48. data/lib/puppet/dsl.rb +22 -116
  49. data/lib/puppet/error.rb +0 -9
  50. data/lib/puppet/event.rb +0 -1
  51. data/lib/puppet/external/gratr/rdot.rb +0 -1
  52. data/lib/puppet/external/lock.rb +0 -1
  53. data/lib/puppet/feature/base.rb +3 -2
  54. data/lib/puppet/feature/rails.rb +0 -1
  55. data/lib/puppet/file_serving.rb +7 -0
  56. data/lib/puppet/file_serving/configuration.rb +129 -0
  57. data/lib/puppet/file_serving/configuration/parser.rb +124 -0
  58. data/lib/puppet/file_serving/content.rb +34 -0
  59. data/lib/puppet/file_serving/file_base.rb +63 -0
  60. data/lib/puppet/file_serving/fileset.rb +138 -0
  61. data/lib/puppet/file_serving/indirection_hooks.rb +44 -0
  62. data/lib/puppet/file_serving/metadata.rb +69 -0
  63. data/lib/puppet/file_serving/mount.rb +186 -0
  64. data/lib/puppet/file_serving/terminus_helper.rb +19 -0
  65. data/lib/puppet/indirector.rb +68 -0
  66. data/lib/puppet/indirector/catalog/compiler.rb +173 -0
  67. data/lib/puppet/indirector/catalog/yaml.rb +24 -0
  68. data/lib/puppet/indirector/checksum/file.rb +33 -0
  69. data/lib/puppet/indirector/code.rb +6 -0
  70. data/lib/puppet/indirector/direct_file_server.rb +27 -0
  71. data/lib/puppet/indirector/exec.rb +57 -0
  72. data/lib/puppet/indirector/facts/facter.rb +65 -0
  73. data/lib/puppet/indirector/facts/memory.rb +9 -0
  74. data/lib/puppet/indirector/facts/yaml.rb +7 -0
  75. data/lib/puppet/indirector/file.rb +54 -0
  76. data/lib/puppet/indirector/file_content.rb +5 -0
  77. data/lib/puppet/indirector/file_content/file.rb +11 -0
  78. data/lib/puppet/indirector/file_content/file_server.rb +11 -0
  79. data/lib/puppet/indirector/file_content/modules.rb +11 -0
  80. data/lib/puppet/indirector/file_content/rest.rb +12 -0
  81. data/lib/puppet/indirector/file_metadata.rb +5 -0
  82. data/lib/puppet/indirector/file_metadata/file.rb +26 -0
  83. data/lib/puppet/indirector/file_metadata/file_server.rb +11 -0
  84. data/lib/puppet/indirector/file_metadata/modules.rb +17 -0
  85. data/lib/puppet/indirector/file_metadata/rest.rb +12 -0
  86. data/lib/puppet/indirector/file_server.rb +56 -0
  87. data/lib/puppet/indirector/indirection.rb +237 -0
  88. data/lib/puppet/indirector/ldap.rb +90 -0
  89. data/lib/puppet/indirector/memory.rb +21 -0
  90. data/lib/puppet/indirector/module_files.rb +82 -0
  91. data/lib/puppet/indirector/node/exec.rb +52 -0
  92. data/lib/puppet/indirector/node/ldap.rb +120 -0
  93. data/lib/puppet/indirector/node/memory.rb +10 -0
  94. data/lib/puppet/indirector/node/plain.rb +19 -0
  95. data/lib/puppet/indirector/node/rest.rb +7 -0
  96. data/lib/puppet/indirector/node/yaml.rb +7 -0
  97. data/lib/puppet/indirector/plain.rb +9 -0
  98. data/lib/puppet/indirector/report/processor.rb +50 -0
  99. data/lib/puppet/indirector/rest.rb +8 -0
  100. data/lib/puppet/indirector/ssl_rsa.rb +5 -0
  101. data/lib/puppet/indirector/ssl_rsa/file.rb +33 -0
  102. data/lib/puppet/indirector/terminus.rb +178 -0
  103. data/lib/puppet/indirector/yaml.rb +57 -0
  104. data/lib/puppet/metatype/attributes.rb +3 -3
  105. data/lib/puppet/metatype/closure.rb +0 -66
  106. data/lib/puppet/metatype/container.rb +0 -9
  107. data/lib/puppet/metatype/evaluation.rb +10 -2
  108. data/lib/puppet/metatype/instances.rb +16 -30
  109. data/lib/puppet/metatype/manager.rb +1 -2
  110. data/lib/puppet/metatype/metaparams.rb +27 -21
  111. data/lib/puppet/metatype/providers.rb +3 -2
  112. data/lib/puppet/metatype/relationships.rb +1 -2
  113. data/lib/puppet/metatype/schedules.rb +0 -1
  114. data/lib/puppet/metatype/tags.rb +0 -1
  115. data/lib/puppet/module.rb +60 -32
  116. data/lib/puppet/network/authconfig.rb +0 -1
  117. data/lib/puppet/network/authorization.rb +0 -1
  118. data/lib/puppet/network/authstore.rb +0 -1
  119. data/lib/puppet/network/client.rb +13 -4
  120. data/lib/puppet/network/client/ca.rb +4 -5
  121. data/lib/puppet/network/client/dipper.rb +0 -1
  122. data/lib/puppet/network/client/file.rb +0 -1
  123. data/lib/puppet/network/client/master.rb +127 -235
  124. data/lib/puppet/network/client/proxy.rb +0 -1
  125. data/lib/puppet/network/client/report.rb +0 -1
  126. data/lib/puppet/network/client/resource.rb +0 -1
  127. data/lib/puppet/network/client/runner.rb +0 -1
  128. data/lib/puppet/network/client/status.rb +0 -1
  129. data/lib/puppet/network/client_request.rb +0 -1
  130. data/lib/puppet/network/handler.rb +5 -2
  131. data/lib/puppet/network/handler/ca.rb +1 -2
  132. data/lib/puppet/network/handler/configuration.rb +184 -0
  133. data/lib/puppet/network/handler/filebucket.rb +1 -2
  134. data/lib/puppet/network/handler/fileserver.rb +279 -107
  135. data/lib/puppet/network/handler/master.rb +57 -152
  136. data/lib/puppet/network/handler/report.rb +6 -65
  137. data/lib/puppet/network/handler/resource.rb +5 -13
  138. data/lib/puppet/network/handler/runner.rb +3 -4
  139. data/lib/puppet/network/handler/status.rb +0 -1
  140. data/lib/puppet/network/http.rb +13 -0
  141. data/lib/puppet/network/http/handler.rb +109 -0
  142. data/lib/puppet/network/http/mongrel.rb +54 -0
  143. data/lib/puppet/network/http/mongrel/rest.rb +37 -0
  144. data/lib/puppet/network/http/mongrel/xmlrpc.rb +4 -0
  145. data/lib/puppet/network/http/webrick.rb +51 -0
  146. data/lib/puppet/network/http/webrick/rest.rb +41 -0
  147. data/lib/puppet/network/http/webrick/xmlrpc.rb +4 -0
  148. data/lib/puppet/network/http_server.rb +3 -0
  149. data/lib/puppet/network/{server → http_server}/mongrel.rb +11 -5
  150. data/lib/puppet/network/{server → http_server}/webrick.rb +9 -5
  151. data/lib/puppet/network/rest_controller.rb +2 -0
  152. data/lib/puppet/network/rights.rb +0 -1
  153. data/lib/puppet/network/server.rb +63 -3
  154. data/lib/puppet/network/xmlrpc/client.rb +90 -23
  155. data/lib/puppet/network/xmlrpc/processor.rb +0 -1
  156. data/lib/puppet/network/xmlrpc/server.rb +0 -1
  157. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +0 -1
  158. data/lib/puppet/node.rb +165 -0
  159. data/lib/puppet/node/catalog.rb +480 -0
  160. data/lib/puppet/node/environment.rb +46 -0
  161. data/lib/puppet/node/facts.rb +36 -0
  162. data/lib/puppet/parameter.rb +34 -28
  163. data/lib/puppet/parser/ast.rb +0 -1
  164. data/lib/puppet/parser/ast/astarray.rb +30 -53
  165. data/lib/puppet/parser/ast/branch.rb +0 -10
  166. data/lib/puppet/parser/ast/caseopt.rb +0 -11
  167. data/lib/puppet/parser/ast/casestatement.rb +0 -12
  168. data/lib/puppet/parser/ast/collection.rb +1 -3
  169. data/lib/puppet/parser/ast/collexpr.rb +0 -2
  170. data/lib/puppet/parser/ast/{component.rb → definition.rb} +58 -72
  171. data/lib/puppet/parser/ast/else.rb +0 -10
  172. data/lib/puppet/parser/ast/function.rb +0 -2
  173. data/lib/puppet/parser/ast/hostclass.rb +21 -19
  174. data/lib/puppet/parser/ast/ifstatement.rb +0 -13
  175. data/lib/puppet/parser/ast/leaf.rb +0 -8
  176. data/lib/puppet/parser/ast/node.rb +13 -10
  177. data/lib/puppet/parser/ast/resource.rb +75 -0
  178. data/lib/puppet/parser/ast/{resourcedefaults.rb → resource_defaults.rb} +4 -20
  179. data/lib/puppet/parser/ast/{resourceoverride.rb → resource_override.rb} +3 -5
  180. data/lib/puppet/parser/ast/resource_reference.rb +66 -0
  181. data/lib/puppet/parser/ast/resourceparam.rb +0 -14
  182. data/lib/puppet/parser/ast/selector.rb +0 -10
  183. data/lib/puppet/parser/ast/tag.rb +0 -2
  184. data/lib/puppet/parser/ast/vardef.rb +0 -14
  185. data/lib/puppet/parser/collector.rb +83 -101
  186. data/lib/puppet/parser/compile.rb +509 -0
  187. data/lib/puppet/parser/functions.rb +10 -10
  188. data/lib/puppet/parser/interpreter.rb +44 -662
  189. data/lib/puppet/parser/lexer.rb +1 -3
  190. data/lib/puppet/parser/parser.rb +674 -701
  191. data/lib/puppet/parser/parser_support.rb +33 -24
  192. data/lib/puppet/parser/resource.rb +219 -162
  193. data/lib/puppet/parser/resource/param.rb +1 -2
  194. data/lib/puppet/parser/resource/reference.rb +24 -16
  195. data/lib/puppet/parser/scope.rb +48 -459
  196. data/lib/puppet/parser/templatewrapper.rb +4 -5
  197. data/lib/puppet/pgraph.rb +10 -13
  198. data/lib/puppet/property.rb +25 -41
  199. data/lib/puppet/propertychange.rb +0 -2
  200. data/lib/puppet/provider.rb +15 -11
  201. data/lib/puppet/provider/cron/crontab.rb +6 -7
  202. data/lib/puppet/provider/group/groupadd.rb +0 -1
  203. data/lib/puppet/provider/group/netinfo.rb +0 -1
  204. data/lib/puppet/provider/group/pw.rb +0 -1
  205. data/lib/puppet/provider/host/netinfo.rb +0 -1
  206. data/lib/puppet/provider/host/parsed.rb +0 -1
  207. data/lib/puppet/provider/interface/redhat.rb +90 -91
  208. data/lib/puppet/provider/interface/sunos.rb +98 -81
  209. data/lib/puppet/provider/mailalias/aliases.rb +0 -1
  210. data/lib/puppet/provider/maillist/mailman.rb +2 -3
  211. data/lib/puppet/provider/mount.rb +10 -9
  212. data/lib/puppet/provider/mount/netinfo.rb +0 -1
  213. data/lib/puppet/provider/mount/parsed.rb +0 -1
  214. data/lib/puppet/provider/nameservice.rb +0 -1
  215. data/lib/puppet/provider/nameservice/netinfo.rb +0 -1
  216. data/lib/puppet/provider/nameservice/objectadd.rb +0 -1
  217. data/lib/puppet/provider/nameservice/pw.rb +0 -1
  218. data/lib/puppet/provider/package.rb +0 -2
  219. data/lib/puppet/provider/package/appdmg.rb +0 -1
  220. data/lib/puppet/provider/package/apple.rb +0 -1
  221. data/lib/puppet/provider/package/apt.rb +0 -1
  222. data/lib/puppet/provider/package/aptitude.rb +0 -1
  223. data/lib/puppet/provider/package/aptrpm.rb +0 -1
  224. data/lib/puppet/provider/package/blastwave.rb +0 -1
  225. data/lib/puppet/provider/package/darwinport.rb +0 -1
  226. data/lib/puppet/provider/package/dpkg.rb +9 -1
  227. data/lib/puppet/provider/package/fink.rb +0 -1
  228. data/lib/puppet/provider/package/freebsd.rb +0 -1
  229. data/lib/puppet/provider/package/gem.rb +0 -1
  230. data/lib/puppet/provider/package/openbsd.rb +1 -2
  231. data/lib/puppet/provider/package/pkgdmg.rb +14 -15
  232. data/lib/puppet/provider/package/portage.rb +6 -7
  233. data/lib/puppet/provider/package/ports.rb +1 -4
  234. data/lib/puppet/provider/package/rpm.rb +31 -45
  235. data/lib/puppet/provider/package/sun.rb +0 -3
  236. data/lib/puppet/provider/package/sunfreeware.rb +0 -1
  237. data/lib/puppet/provider/package/up2date.rb +0 -1
  238. data/lib/puppet/provider/package/urpmi.rb +0 -1
  239. data/lib/puppet/provider/package/yum.rb +45 -14
  240. data/lib/puppet/provider/package/yumhelper.py +37 -0
  241. data/lib/puppet/provider/parsedfile.rb +2 -3
  242. data/lib/puppet/provider/port/parsed.rb +0 -1
  243. data/lib/puppet/provider/service/base.rb +4 -1
  244. data/lib/puppet/provider/service/debian.rb +5 -2
  245. data/lib/puppet/provider/service/freebsd.rb +51 -0
  246. data/lib/puppet/provider/service/init.rb +16 -40
  247. data/lib/puppet/provider/service/redhat.rb +1 -6
  248. data/lib/puppet/provider/service/smf.rb +0 -1
  249. data/lib/puppet/provider/sshkey/parsed.rb +0 -1
  250. data/lib/puppet/provider/user/netinfo.rb +0 -1
  251. data/lib/puppet/provider/user/pw.rb +0 -1
  252. data/lib/puppet/provider/user/useradd.rb +0 -1
  253. data/lib/puppet/provider/zone/solaris.rb +0 -1
  254. data/lib/puppet/rails.rb +35 -30
  255. data/lib/puppet/rails/database/schema.rb +0 -1
  256. data/lib/puppet/rails/host.rb +6 -15
  257. data/lib/puppet/rails/param_name.rb +1 -2
  258. data/lib/puppet/rails/param_value.rb +0 -1
  259. data/lib/puppet/rails/puppet_class.rb +0 -1
  260. data/lib/puppet/rails/resource.rb +3 -5
  261. data/lib/puppet/reference/configuration.rb +12 -6
  262. data/lib/puppet/reference/indirection.rb +34 -0
  263. data/lib/puppet/reference/node_source.rb +9 -0
  264. data/lib/puppet/relationship.rb +10 -8
  265. data/lib/puppet/reports.rb +51 -0
  266. data/lib/puppet/reports/log.rb +2 -3
  267. data/lib/puppet/reports/rrdgraph.rb +2 -5
  268. data/lib/puppet/reports/store.rb +6 -7
  269. data/lib/puppet/reports/tagmail.rb +2 -3
  270. data/lib/puppet/resource_reference.rb +79 -0
  271. data/lib/puppet/simple_graph.rb +251 -0
  272. data/lib/puppet/sslcertificates.rb +19 -15
  273. data/lib/puppet/sslcertificates/ca.rb +56 -15
  274. data/lib/puppet/sslcertificates/certificate.rb +0 -1
  275. data/lib/puppet/sslcertificates/inventory.rb +2 -6
  276. data/lib/puppet/sslcertificates/monkey_patch.rb +6 -0
  277. data/lib/puppet/sslcertificates/support.rb +4 -5
  278. data/lib/puppet/transaction.rb +93 -96
  279. data/lib/puppet/transaction/report.rb +5 -1
  280. data/lib/puppet/transportable.rb +79 -125
  281. data/lib/puppet/type.rb +44 -10
  282. data/lib/puppet/type/component.rb +25 -110
  283. data/lib/puppet/type/cron.rb +1 -2
  284. data/lib/puppet/type/exec.rb +19 -13
  285. data/lib/puppet/type/group.rb +0 -1
  286. data/lib/puppet/type/host.rb +0 -1
  287. data/lib/puppet/type/interface.rb +6 -3
  288. data/lib/puppet/type/k5login.rb +87 -0
  289. data/lib/puppet/type/mailalias.rb +0 -1
  290. data/lib/puppet/type/maillist.rb +0 -1
  291. data/lib/puppet/type/mount.rb +7 -13
  292. data/lib/puppet/type/notify.rb +0 -1
  293. data/lib/puppet/type/package.rb +7 -63
  294. data/lib/puppet/type/pfile.rb +25 -32
  295. data/lib/puppet/type/pfile/checksum.rb +0 -1
  296. data/lib/puppet/type/pfile/content.rb +18 -3
  297. data/lib/puppet/type/pfile/ensure.rb +5 -6
  298. data/lib/puppet/type/pfile/group.rb +4 -1
  299. data/lib/puppet/type/pfile/mode.rb +0 -1
  300. data/lib/puppet/type/pfile/owner.rb +6 -9
  301. data/lib/puppet/type/pfile/source.rb +28 -11
  302. data/lib/puppet/type/pfile/target.rb +2 -1
  303. data/lib/puppet/type/pfile/type.rb +0 -1
  304. data/lib/puppet/type/pfilebucket.rb +0 -1
  305. data/lib/puppet/type/port.rb +0 -1
  306. data/lib/puppet/type/resources.rb +0 -1
  307. data/lib/puppet/type/schedule.rb +17 -15
  308. data/lib/puppet/type/service.rb +23 -159
  309. data/lib/puppet/type/sshkey.rb +0 -1
  310. data/lib/puppet/type/tidy.rb +15 -7
  311. data/lib/puppet/type/user.rb +0 -1
  312. data/lib/puppet/type/zone.rb +0 -1
  313. data/lib/puppet/util.rb +1 -2
  314. data/lib/puppet/util/autoload.rb +21 -23
  315. data/lib/puppet/util/checksums.rb +37 -0
  316. data/lib/puppet/util/classgen.rb +0 -1
  317. data/lib/puppet/util/diff.rb +71 -0
  318. data/lib/puppet/util/docs.rb +8 -2
  319. data/lib/puppet/util/errors.rb +0 -1
  320. data/lib/puppet/util/execution.rb +0 -1
  321. data/lib/puppet/util/fact_store.rb +0 -1
  322. data/lib/puppet/util/feature.rb +31 -22
  323. data/lib/puppet/util/fileparsing.rb +3 -2
  324. data/lib/puppet/util/filetype.rb +30 -12
  325. data/lib/puppet/util/graph.rb +0 -1
  326. data/lib/puppet/util/inifile.rb +0 -1
  327. data/lib/puppet/util/instance_loader.rb +11 -4
  328. data/lib/puppet/util/loadedfile.rb +0 -1
  329. data/lib/puppet/util/log.rb +0 -1
  330. data/lib/puppet/util/log_paths.rb +0 -1
  331. data/lib/puppet/util/logging.rb +0 -1
  332. data/lib/puppet/util/metaid.rb +0 -1
  333. data/lib/puppet/util/methodhelper.rb +0 -2
  334. data/lib/puppet/util/metric.rb +1 -2
  335. data/lib/puppet/util/plist.rb +0 -1
  336. data/lib/puppet/util/plist/generator.rb +0 -1
  337. data/lib/puppet/util/plist/parser.rb +0 -1
  338. data/lib/puppet/util/posix.rb +7 -1
  339. data/lib/puppet/util/provider_features.rb +11 -12
  340. data/lib/puppet/util/rails/collection_merger.rb +0 -1
  341. data/lib/puppet/util/reference.rb +2 -3
  342. data/lib/puppet/util/{config.rb → settings.rb} +424 -300
  343. data/lib/puppet/util/storage.rb +1 -3
  344. data/lib/puppet/util/subclass_loader.rb +0 -1
  345. data/lib/puppet/util/suidmanager.rb +25 -42
  346. data/lib/puppet/util/uri_helper.rb +22 -0
  347. data/lib/puppet/util/variables.rb +0 -1
  348. data/lib/puppet/util/warnings.rb +0 -1
  349. data/test/Rakefile +1 -1
  350. data/test/certmgr/ca.rb +8 -2
  351. data/test/certmgr/certmgr.rb +14 -6
  352. data/test/certmgr/inventory.rb +18 -30
  353. data/test/certmgr/support.rb +3 -2
  354. data/test/executables/filebucket.rb +1 -2
  355. data/test/executables/puppetbin.rb +1 -2
  356. data/test/executables/puppetca.rb +7 -2
  357. data/test/executables/puppetd.rb +23 -29
  358. data/test/executables/puppetmasterd.rb +1 -2
  359. data/test/executables/puppetmodule.rb +1 -2
  360. data/test/language/ast.rb +24 -29
  361. data/test/language/ast/casestatement.rb +1 -2
  362. data/test/language/ast/definition.rb +166 -0
  363. data/test/language/ast/hostclass.rb +50 -29
  364. data/test/language/ast/resource.rb +59 -0
  365. data/test/language/ast/{resourceref.rb → resource_reference.rb} +30 -20
  366. data/test/language/ast/selector.rb +1 -2
  367. data/test/language/ast/variable.rb +1 -2
  368. data/test/language/compile.rb +569 -0
  369. data/test/language/functions.rb +57 -76
  370. data/test/language/lexer.rb +20 -3
  371. data/test/language/parser.rb +45 -33
  372. data/test/language/resource.rb +275 -308
  373. data/test/language/scope.rb +135 -410
  374. data/test/language/snippets.rb +19 -41
  375. data/test/language/transportable.rb +8 -29
  376. data/test/lib/mocha/auto_verify.rb +6 -6
  377. data/test/lib/mocha/deprecation.rb +22 -0
  378. data/test/lib/mocha/exception_raiser.rb +17 -0
  379. data/test/lib/mocha/expectation.rb +167 -84
  380. data/test/lib/mocha/infinite_range.rb +4 -6
  381. data/test/lib/mocha/inspect.rb +3 -1
  382. data/test/lib/mocha/is_a.rb +9 -0
  383. data/test/lib/mocha/missing_expectation.rb +27 -0
  384. data/test/lib/mocha/mock.rb +192 -5
  385. data/test/lib/mocha/multiple_yields.rb +20 -0
  386. data/test/lib/mocha/no_yields.rb +11 -0
  387. data/test/lib/mocha/object.rb +11 -1
  388. data/test/lib/mocha/parameter_matchers.rb +9 -0
  389. data/test/lib/mocha/parameter_matchers/all_of.rb +39 -0
  390. data/test/lib/mocha/parameter_matchers/any_of.rb +44 -0
  391. data/test/lib/mocha/parameter_matchers/anything.rb +30 -0
  392. data/test/lib/mocha/parameter_matchers/has_entry.rb +39 -0
  393. data/test/lib/mocha/parameter_matchers/has_key.rb +39 -0
  394. data/test/lib/mocha/parameter_matchers/has_value.rb +39 -0
  395. data/test/lib/mocha/parameter_matchers/includes.rb +37 -0
  396. data/test/lib/mocha/return_values.rb +31 -0
  397. data/test/lib/mocha/single_return_value.rb +24 -0
  398. data/test/lib/mocha/single_yield.rb +18 -0
  399. data/test/lib/mocha/standalone.rb +2 -0
  400. data/test/lib/mocha/stub.rb +18 -0
  401. data/test/lib/mocha/test_case_adapter.rb +3 -3
  402. data/test/lib/mocha/yield_parameters.rb +31 -0
  403. data/test/lib/puppettest.rb +38 -20
  404. data/test/lib/puppettest/certificates.rb +0 -1
  405. data/test/lib/puppettest/exetest.rb +0 -1
  406. data/test/lib/puppettest/fakes.rb +0 -1
  407. data/test/lib/puppettest/fileparsing.rb +8 -15
  408. data/test/lib/puppettest/filetesting.rb +0 -1
  409. data/test/lib/puppettest/parsertesting.rb +37 -23
  410. data/test/lib/puppettest/railstesting.rb +3 -6
  411. data/test/lib/puppettest/reporttesting.rb +0 -1
  412. data/test/lib/puppettest/resourcetesting.rb +6 -34
  413. data/test/lib/puppettest/runnable_test.rb +30 -0
  414. data/test/lib/puppettest/servertest.rb +2 -3
  415. data/test/lib/puppettest/support/assertions.rb +13 -41
  416. data/test/lib/puppettest/support/collection.rb +0 -1
  417. data/test/lib/puppettest/support/helpers.rb +0 -1
  418. data/test/lib/puppettest/support/resources.rb +17 -17
  419. data/test/lib/puppettest/support/utils.rb +45 -27
  420. data/test/lib/puppettest/testcase.rb +2 -21
  421. data/test/lib/rake/puppet_test_loader.rb +0 -1
  422. data/test/lib/rake/puppet_testtask.rb +0 -1
  423. data/test/network/authconfig.rb +1 -2
  424. data/test/network/authorization.rb +1 -2
  425. data/test/network/authstore.rb +1 -2
  426. data/test/network/client/ca.rb +12 -7
  427. data/test/network/client/client.rb +17 -22
  428. data/test/network/client/dipper.rb +1 -2
  429. data/test/network/client/master.rb +70 -184
  430. data/test/network/client/resource.rb +9 -2
  431. data/test/network/client_request.rb +1 -2
  432. data/test/network/daemon.rb +1 -2
  433. data/test/network/handler/bucket.rb +2 -31
  434. data/test/network/handler/ca.rb +9 -3
  435. data/test/network/handler/configuration.rb +160 -0
  436. data/test/network/handler/fileserver.rb +24 -5
  437. data/test/network/handler/handler.rb +1 -2
  438. data/test/network/handler/master.rb +38 -243
  439. data/test/network/handler/report.rb +2 -104
  440. data/test/network/handler/resource.rb +5 -3
  441. data/test/network/handler/runner.rb +22 -60
  442. data/test/network/rights.rb +1 -2
  443. data/test/network/server/mongrel_test.rb +2 -3
  444. data/test/network/server/webrick.rb +17 -11
  445. data/test/network/xmlrpc/client.rb +27 -12
  446. data/test/network/xmlrpc/processor.rb +3 -4
  447. data/test/network/xmlrpc/server.rb +1 -2
  448. data/test/network/xmlrpc/webrick_servlet.rb +8 -2
  449. data/test/other/dsl.rb +2 -4
  450. data/test/other/events.rb +14 -56
  451. data/test/other/overrides.rb +3 -6
  452. data/test/other/propertychange.rb +1 -2
  453. data/test/other/provider.rb +1 -2
  454. data/test/other/puppet.rb +1 -2
  455. data/test/other/relationships.rb +15 -17
  456. data/test/other/report.rb +14 -20
  457. data/test/other/transactions.rb +109 -192
  458. data/test/puppet/conffiles.rb +3 -5
  459. data/test/puppet/defaults.rb +1 -28
  460. data/test/puppet/errortest.rb +1 -2
  461. data/test/puppet/tc_suidmanager.rb +77 -63
  462. data/test/rails/ast.rb +4 -4
  463. data/test/rails/configuration.rb +71 -0
  464. data/test/rails/host.rb +19 -30
  465. data/test/rails/rails.rb +1 -2
  466. data/test/rails/railsparameter.rb +3 -4
  467. data/test/rails/railsresource.rb +6 -5
  468. data/test/ral/manager/attributes.rb +1 -2
  469. data/test/ral/manager/instances.rb +3 -3
  470. data/test/ral/manager/manager.rb +1 -2
  471. data/test/ral/manager/provider.rb +1 -2
  472. data/test/ral/manager/type.rb +89 -93
  473. data/test/ral/providers/cron/crontab.rb +9 -11
  474. data/test/ral/providers/group.rb +1 -2
  475. data/test/ral/providers/host/netinfo.rb +1 -2
  476. data/test/ral/providers/host/parsed.rb +1 -2
  477. data/test/ral/providers/mailalias/aliases.rb +1 -2
  478. data/test/ral/providers/mount/netinfo.rb +1 -2
  479. data/test/ral/providers/nameservice.rb +1 -2
  480. data/test/ral/providers/package.rb +5 -4
  481. data/test/ral/providers/package/apt.rb +0 -1
  482. data/test/ral/providers/package/aptrpm.rb +0 -1
  483. data/test/ral/providers/parsedfile.rb +1 -2
  484. data/test/ral/providers/port/parsed.rb +1 -2
  485. data/test/ral/providers/provider.rb +10 -5
  486. data/test/ral/providers/service/base.rb +1 -2
  487. data/test/ral/providers/service/debian.rb +58 -0
  488. data/test/ral/providers/sshkey/parsed.rb +1 -2
  489. data/test/ral/providers/user.rb +3 -2
  490. data/test/ral/providers/user/useradd.rb +0 -1
  491. data/test/ral/types/basic.rb +4 -9
  492. data/test/ral/types/cron.rb +6 -12
  493. data/test/ral/types/exec.rb +6 -7
  494. data/test/ral/types/file.rb +35 -14
  495. data/test/ral/types/file/target.rb +6 -5
  496. data/test/ral/types/filebucket.rb +3 -2
  497. data/test/ral/types/fileignoresource.rb +10 -42
  498. data/test/ral/types/filesources.rb +21 -60
  499. data/test/ral/types/group.rb +3 -3
  500. data/test/ral/types/host.rb +6 -3
  501. data/test/ral/types/mailalias.rb +1 -2
  502. data/test/ral/types/parameter.rb +5 -3
  503. data/test/ral/types/port.rb +1 -2
  504. data/test/ral/types/property.rb +3 -3
  505. data/test/ral/types/resources.rb +1 -2
  506. data/test/ral/types/service.rb +5 -3
  507. data/test/ral/types/sshkey.rb +5 -3
  508. data/test/ral/types/tidy.rb +63 -3
  509. data/test/ral/types/user.rb +10 -11
  510. data/test/ral/types/yumrepo.rb +1 -1
  511. data/test/ral/types/zone.rb +1 -2
  512. data/test/util/autoload.rb +23 -27
  513. data/test/util/classgen.rb +1 -2
  514. data/test/util/execution.rb +1 -2
  515. data/test/util/features.rb +1 -3
  516. data/test/util/fileparsing.rb +11 -3
  517. data/test/util/filetype.rb +1 -2
  518. data/test/util/inifile.rb +1 -1
  519. data/test/util/instance_loader.rb +5 -6
  520. data/test/util/loadedfile.rb +1 -2
  521. data/test/util/log.rb +1 -2
  522. data/test/util/metrics.rb +1 -2
  523. data/test/util/package.rb +1 -2
  524. data/test/util/posixtest.rb +1 -2
  525. data/test/util/{config.rb → settings.rb} +123 -265
  526. data/test/util/storage.rb +1 -2
  527. data/test/util/subclass_loader.rb +1 -2
  528. data/test/util/utiltest.rb +1 -111
  529. metadata +130 -112
  530. data/ext/tools/passwd2puppet +0 -45
  531. data/lib/puppet/fact_stores/yaml.rb +0 -42
  532. data/lib/puppet/network/handler/facts.rb +0 -70
  533. data/lib/puppet/parser/ast/resourcedef.rb +0 -222
  534. data/lib/puppet/parser/ast/resourceref.rb +0 -58
  535. data/test/language/ast/component.rb +0 -142
  536. data/test/language/collector.rb +0 -179
  537. data/test/language/interpreter.rb +0 -804
  538. data/test/language/node.rb +0 -126
  539. data/test/lib/mocha/mock_methods.rb +0 -122
  540. data/test/lib/puppettest/graph.rb +0 -41
  541. data/test/lib/spec.rb +0 -8
  542. data/test/lib/spec/callback.rb +0 -11
  543. data/test/lib/spec/callback/callback_container.rb +0 -60
  544. data/test/lib/spec/callback/extensions/module.rb +0 -24
  545. data/test/lib/spec/callback/extensions/object.rb +0 -37
  546. data/test/lib/spec/deprecated.rb +0 -3
  547. data/test/lib/spec/expectations.rb +0 -59
  548. data/test/lib/spec/expectations/differs/default.rb +0 -62
  549. data/test/lib/spec/expectations/errors.rb +0 -6
  550. data/test/lib/spec/expectations/extensions.rb +0 -3
  551. data/test/lib/spec/expectations/extensions/object.rb +0 -109
  552. data/test/lib/spec/expectations/extensions/proc.rb +0 -57
  553. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
  554. data/test/lib/spec/expectations/handler.rb +0 -47
  555. data/test/lib/spec/expectations/should.rb +0 -5
  556. data/test/lib/spec/expectations/should/base.rb +0 -64
  557. data/test/lib/spec/expectations/should/change.rb +0 -69
  558. data/test/lib/spec/expectations/should/have.rb +0 -128
  559. data/test/lib/spec/expectations/should/not.rb +0 -74
  560. data/test/lib/spec/expectations/should/should.rb +0 -81
  561. data/test/lib/spec/expectations/sugar.rb +0 -47
  562. data/test/lib/spec/matchers.rb +0 -160
  563. data/test/lib/spec/matchers/be.rb +0 -161
  564. data/test/lib/spec/matchers/be_close.rb +0 -37
  565. data/test/lib/spec/matchers/change.rb +0 -120
  566. data/test/lib/spec/matchers/eql.rb +0 -43
  567. data/test/lib/spec/matchers/equal.rb +0 -43
  568. data/test/lib/spec/matchers/has.rb +0 -44
  569. data/test/lib/spec/matchers/have.rb +0 -140
  570. data/test/lib/spec/matchers/include.rb +0 -50
  571. data/test/lib/spec/matchers/match.rb +0 -41
  572. data/test/lib/spec/matchers/raise_error.rb +0 -100
  573. data/test/lib/spec/matchers/respond_to.rb +0 -35
  574. data/test/lib/spec/matchers/satisfy.rb +0 -47
  575. data/test/lib/spec/matchers/throw_symbol.rb +0 -75
  576. data/test/lib/spec/mocks.rb +0 -232
  577. data/test/lib/spec/mocks/argument_expectation.rb +0 -132
  578. data/test/lib/spec/mocks/error_generator.rb +0 -85
  579. data/test/lib/spec/mocks/errors.rb +0 -10
  580. data/test/lib/spec/mocks/extensions/object.rb +0 -3
  581. data/test/lib/spec/mocks/message_expectation.rb +0 -231
  582. data/test/lib/spec/mocks/methods.rb +0 -40
  583. data/test/lib/spec/mocks/mock.rb +0 -26
  584. data/test/lib/spec/mocks/mock_handler.rb +0 -166
  585. data/test/lib/spec/mocks/order_group.rb +0 -29
  586. data/test/lib/spec/rake/spectask.rb +0 -173
  587. data/test/lib/spec/rake/verify_rcov.rb +0 -47
  588. data/test/lib/spec/runner.rb +0 -132
  589. data/test/lib/spec/runner/backtrace_tweaker.rb +0 -55
  590. data/test/lib/spec/runner/command_line.rb +0 -34
  591. data/test/lib/spec/runner/context.rb +0 -154
  592. data/test/lib/spec/runner/context_eval.rb +0 -142
  593. data/test/lib/spec/runner/context_runner.rb +0 -55
  594. data/test/lib/spec/runner/drb_command_line.rb +0 -21
  595. data/test/lib/spec/runner/execution_context.rb +0 -17
  596. data/test/lib/spec/runner/extensions/kernel.rb +0 -17
  597. data/test/lib/spec/runner/extensions/object.rb +0 -32
  598. data/test/lib/spec/runner/formatter.rb +0 -5
  599. data/test/lib/spec/runner/formatter/base_text_formatter.rb +0 -118
  600. data/test/lib/spec/runner/formatter/html_formatter.rb +0 -219
  601. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -27
  602. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +0 -22
  603. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +0 -23
  604. data/test/lib/spec/runner/heckle_runner.rb +0 -71
  605. data/test/lib/spec/runner/heckle_runner_win.rb +0 -10
  606. data/test/lib/spec/runner/option_parser.rb +0 -224
  607. data/test/lib/spec/runner/reporter.rb +0 -105
  608. data/test/lib/spec/runner/spec_matcher.rb +0 -25
  609. data/test/lib/spec/runner/spec_parser.rb +0 -41
  610. data/test/lib/spec/runner/spec_should_raise_handler.rb +0 -74
  611. data/test/lib/spec/runner/specification.rb +0 -114
  612. data/test/lib/spec/translator.rb +0 -87
  613. data/test/lib/spec/version.rb +0 -30
  614. data/test/network/handler/facts.rb +0 -112
  615. data/test/other/pgraph.rb +0 -290
  616. data/test/other/relationship.rb +0 -74
  617. data/test/puppet/modules.rb +0 -59
  618. data/test/rails/collection.rb +0 -247
  619. data/test/rails/interpreter.rb +0 -91
  620. data/test/ral/providers/mount/parsed.rb +0 -251
  621. data/test/ral/providers/service.rb +0 -235
  622. data/test/ral/types/component.rb +0 -113
  623. data/test/ral/types/interface.rb +0 -40
  624. data/test/ral/types/mount.rb +0 -362
  625. data/test/ral/types/package.rb +0 -154
  626. data/test/ral/types/schedule.rb +0 -357
  627. data/test/tagging/tagging.rb +0 -170
  628. data/test/util/fact_store.rb +0 -67
  629. data/test/util/graph.rb +0 -108
@@ -1,114 +0,0 @@
1
- module Spec
2
- module Runner
3
- class Specification
4
-
5
- class << self
6
- attr_accessor :current, :generated_description
7
- protected :current=
8
-
9
- callback_events :before_setup, :after_teardown
10
- end
11
-
12
- attr_reader :spec_block
13
- callback_events :before_setup, :after_teardown
14
-
15
- def initialize(name, opts={}, &spec_block)
16
- @from = caller(0)[3]
17
- @description = name
18
- @options = opts
19
- @spec_block = spec_block
20
- @description_generated_callback = lambda { |desc| @generated_description = desc }
21
- end
22
-
23
- def run(reporter, setup_block, teardown_block, dry_run, execution_context)
24
- reporter.spec_started(name) if reporter
25
- return reporter.spec_finished(name) if dry_run
26
-
27
- errors = []
28
- begin
29
- set_current
30
- setup_ok = setup_spec(execution_context, errors, &setup_block)
31
- spec_ok = execute_spec(execution_context, errors) if setup_ok
32
- teardown_ok = teardown_spec(execution_context, errors, &teardown_block)
33
- ensure
34
- clear_current
35
- end
36
-
37
- SpecShouldRaiseHandler.new(@from, @options).handle(errors)
38
- reporter.spec_finished(name, errors.first, failure_location(setup_ok, spec_ok, teardown_ok)) if reporter
39
- end
40
-
41
- def matches?(matcher, description)
42
- matcher.spec_desc = name
43
- matcher.matches?(description)
44
- end
45
-
46
- private
47
- def name
48
- @description == :__generate_description ? generated_description : @description
49
- end
50
-
51
- def generated_description
52
- @generated_description || "NAME NOT GENERATED"
53
- end
54
-
55
- def setup_spec(execution_context, errors, &setup_block)
56
- notify_before_setup(errors)
57
- execution_context.instance_eval(&setup_block) if setup_block
58
- return errors.empty?
59
- rescue => e
60
- errors << e
61
- return false
62
- end
63
-
64
- def execute_spec(execution_context, errors)
65
- begin
66
- execution_context.instance_eval(&spec_block)
67
- return true
68
- rescue Exception => e
69
- errors << e
70
- return false
71
- end
72
- end
73
-
74
- def teardown_spec(execution_context, errors, &teardown_block)
75
- execution_context.instance_eval(&teardown_block) if teardown_block
76
- notify_after_teardown(errors)
77
- return errors.empty?
78
- rescue => e
79
- errors << e
80
- return false
81
- end
82
-
83
- def notify_before_setup(errors)
84
- notify_class_callbacks(:before_setup, self, &append_errors(errors))
85
- notify_callbacks(:before_setup, self, &append_errors(errors))
86
- end
87
-
88
- def notify_after_teardown(errors)
89
- notify_callbacks(:after_teardown, self, &append_errors(errors))
90
- notify_class_callbacks(:after_teardown, self, &append_errors(errors))
91
- end
92
-
93
- def append_errors(errors)
94
- proc {|error| errors << error}
95
- end
96
-
97
- def set_current
98
- Spec::Matchers.description_generated(&@description_generated_callback)
99
- self.class.send(:current=, self)
100
- end
101
-
102
- def clear_current
103
- Spec::Matchers.unregister_callback(:description_generated, @description_generated_callback)
104
- self.class.send(:current=, nil)
105
- end
106
-
107
- def failure_location(setup_ok, spec_ok, teardown_ok)
108
- return 'setup' unless setup_ok
109
- return name unless spec_ok
110
- return 'teardown' unless teardown_ok
111
- end
112
- end
113
- end
114
- end
@@ -1,87 +0,0 @@
1
- require 'fileutils'
2
-
3
- module Spec
4
- class Translator
5
- def translate_dir(from, to)
6
- from = File.expand_path(from)
7
- to = File.expand_path(to)
8
- if File.directory?(from)
9
- FileUtils.mkdir_p(to) unless File.directory?(to)
10
- Dir["#{from}/*"].each do |sub_from|
11
- path = sub_from[from.length+1..-1]
12
- sub_to = File.join(to, path)
13
- translate_dir(sub_from, sub_to)
14
- end
15
- else
16
- translate_file(from, to)
17
- end
18
- end
19
-
20
- def translate_file(from, to)
21
- translation = ""
22
- File.open(from) do |io|
23
- io.each_line do |line|
24
- translation << translate(line)
25
- end
26
- end
27
- File.open(to, "w") do |io|
28
- io.write(translation)
29
- end
30
- end
31
-
32
- def translate(line)
33
- return line if line =~ /(should_not|should)_receive/
34
-
35
- if line =~ /(.*\.)(should_not|should)(?:_be)(?!_)(.*)/m
36
- pre = $1
37
- should = $2
38
- post = $3
39
- be_or_equal = post =~ /(<|>)/ ? "be" : "equal"
40
-
41
- return "#{pre}#{should} #{be_or_equal}#{post}"
42
- end
43
-
44
- if line =~ /(.*\.)(should_not|should)_(?!not)(.*)/m
45
- pre = $1
46
- should = $2
47
- post = $3
48
-
49
- post.gsub!(/^raise/, 'raise_error')
50
- post.gsub!(/^throw/, 'throw_symbol')
51
-
52
- unless standard_matcher?(post)
53
- post = "be_#{post}"
54
- end
55
-
56
- line = "#{pre}#{should} #{post}"
57
- end
58
-
59
- line
60
- end
61
-
62
- def standard_matcher?(matcher)
63
- patterns = [
64
- /^be/,
65
- /^be_close/,
66
- /^eql/,
67
- /^equal/,
68
- /^has/,
69
- /^have/,
70
- /^change/,
71
- /^include/,
72
- /^match/,
73
- /^raise_error/,
74
- /^respond_to/,
75
- /^satisfy/,
76
- /^throw_symbol/,
77
- # Extra ones that we use in spec_helper
78
- /^pass/,
79
- /^fail/,
80
- /^fail_with/,
81
- ]
82
- matched = patterns.detect{ |p| matcher =~ p }
83
- !matched.nil?
84
- end
85
-
86
- end
87
- end
@@ -1,30 +0,0 @@
1
- module Spec
2
- module VERSION
3
- def self.build_tag
4
- tag = "REL_" + [MAJOR, MINOR, TINY].join('_')
5
- if defined?(RELEASE_CANDIDATE)
6
- tag << "_" << RELEASE_CANDIDATE
7
- end
8
- tag
9
- end
10
-
11
- unless defined? MAJOR
12
- MAJOR = 0
13
- MINOR = 8
14
- TINY = 2
15
- # RELEASE_CANDIDATE = "RC1"
16
-
17
- # RANDOM_TOKEN: 0.375509844656552
18
- REV = "$LastChangedRevision: 2283 $".match(/LastChangedRevision: (\d+)/)[1]
19
-
20
- STRING = [MAJOR, MINOR, TINY].join('.')
21
- FULL_VERSION = "#{STRING} (r#{REV})"
22
- TAG = build_tag
23
-
24
- NAME = "RSpec"
25
- URL = "http://rspec.rubyforge.org/"
26
-
27
- DESCRIPTION = "#{NAME}-#{FULL_VERSION} - BDD for Ruby\n#{URL}"
28
- end
29
- end
30
- end
@@ -1,112 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
4
-
5
- require 'puppettest'
6
- require 'mocha'
7
- require 'puppet/network/handler/facts'
8
-
9
- class TestFactsHandler < Test::Unit::TestCase
10
- include PuppetTest::ServerTest
11
-
12
- def setup
13
- super
14
-
15
- @class = Puppet::Network::Handler.handler(:facts)
16
-
17
- @@client_facts = {}
18
-
19
- unless Puppet::Util::FactStore.store(:testing)
20
- Puppet::Util::FactStore.newstore(:testing) do
21
- def get(node)
22
- @@client_facts[node]
23
- end
24
-
25
- def set(node, facts)
26
- @@client_facts[node] = facts
27
- end
28
- end
29
- end
30
-
31
- Puppet[:factstore] = :testing
32
-
33
- @handler = @class.new
34
-
35
- @facts = {:a => :b, :c => :d}
36
- @name = "foo"
37
-
38
- @backend = @handler.instance_variable_get("@backend")
39
- end
40
-
41
- def teardown
42
- @@client_facts.clear
43
- end
44
-
45
- def test_strip_internal
46
- @facts[:_puppet_one] = "yay"
47
- @facts[:_puppet_two] = "boo"
48
- @facts[:_puppetthree] = "foo"
49
-
50
- newfacts = nil
51
- assert_nothing_raised("Could not call strip_internal") do
52
- newfacts = @handler.send(:strip_internal, @facts)
53
- end
54
-
55
- [:_puppet_one, :_puppet_two, :_puppetthree].each do |name|
56
- assert(@facts.include?(name), "%s was removed in strip_internal from original hash" % name)
57
- end
58
- [:_puppet_one, :_puppet_two].each do |name|
59
- assert(! newfacts.include?(name), "%s was not removed in strip_internal" % name)
60
- end
61
- assert_equal("foo", newfacts[:_puppetthree], "_puppetthree was removed in strip_internal")
62
- end
63
-
64
- def test_add_internal
65
- newfacts = nil
66
- assert_nothing_raised("Could not call strip_internal") do
67
- newfacts = @handler.send(:add_internal, @facts)
68
- end
69
-
70
- assert_instance_of(Time, newfacts[:_puppet_timestamp], "Did not set timestamp in add_internal")
71
- assert(! @facts.include?(:_puppet_timestamp), "Modified original hash in add_internal")
72
- end
73
-
74
- def test_set
75
- newfacts = @facts.dup
76
- newfacts[:_puppet_timestamp] = Time.now
77
- @handler.expects(:add_internal).with(@facts).returns(newfacts)
78
- @backend.expects(:set).with(@name, newfacts).returns(nil)
79
-
80
- assert_nothing_raised("Could not set facts") do
81
- assert_nil(@handler.set(@name, @facts), "handler.set did not return nil")
82
- end
83
- end
84
-
85
- def test_get
86
- prefacts = @facts.dup
87
- prefacts[:_puppet_timestamp] = Time.now
88
- @@client_facts[@name] = prefacts
89
- @handler.expects(:strip_internal).with(prefacts).returns(@facts)
90
- @backend.expects(:get).with(@name).returns(prefacts)
91
-
92
- assert_nothing_raised("Could not retrieve facts") do
93
- assert_equal(@facts, @handler.get(@name), "did not get correct answer from handler.get")
94
- end
95
-
96
- @handler = @class.new
97
- assert_nothing_raised("Failed to call 'get' with no stored facts") do
98
- @handler.get("nosuchname")
99
- end
100
- end
101
-
102
- def test_store_date
103
- time = Time.now
104
- @facts[:_puppet_timestamp] = time
105
-
106
- @handler.expects(:get).with(@name).returns(@facts)
107
-
108
- assert_equal(time.to_i, @handler.store_date(@name), "Did not retrieve timestamp correctly")
109
- end
110
- end
111
-
112
- # $Id: facts.rb 2457 2007-05-03 05:24:13Z luke $
@@ -1,290 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Created by Luke Kanies on 2006-11-16.
4
- # Copyright (c) 2006. All rights reserved.
5
-
6
- $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
7
-
8
- require 'puppettest'
9
- require 'puppettest/graph'
10
-
11
- class TestPGraph < Test::Unit::TestCase
12
- include PuppetTest
13
- include PuppetTest::Graph
14
-
15
- Edge = Puppet::Relationship
16
-
17
- def test_clear
18
- graph = Puppet::PGraph.new
19
- graph.add_edge!("a", "b")
20
- graph.add_vertex! "c"
21
- assert_nothing_raised do
22
- graph.clear
23
- end
24
- assert(graph.vertices.empty?, "Still have vertices after clear")
25
- assert(graph.edges.empty?, "still have edges after clear")
26
- end
27
-
28
-
29
- def test_matching_edges
30
- graph = Puppet::PGraph.new
31
-
32
- event = Puppet::Event.new(:source => "a", :event => :yay)
33
- none = Puppet::Event.new(:source => "a", :event => :NONE)
34
-
35
- edges = {}
36
-
37
- edges["a/b"] = Edge["a", "b", {:event => :yay, :callback => :refresh}]
38
- edges["a/c"] = Edge["a", "c", {:event => :yay, :callback => :refresh}]
39
-
40
- graph.add_edge!(edges["a/b"])
41
-
42
- # Try it for the trivial case of one target and a matching event
43
- assert_equal([edges["a/b"]], graph.matching_edges([event]))
44
-
45
- # Make sure we get nothing with a different event
46
- assert_equal([], graph.matching_edges([none]))
47
-
48
- # Set up multiple targets and make sure we get them all back
49
- graph.add_edge!(edges["a/c"])
50
- assert_equal([edges["a/b"], edges["a/c"]].sort, graph.matching_edges([event]).sort)
51
- assert_equal([], graph.matching_edges([none]))
52
- end
53
-
54
- def test_dependencies
55
- graph = Puppet::PGraph.new
56
-
57
- graph.add_edge!("a", "b")
58
- graph.add_edge!("a", "c")
59
- graph.add_edge!("b", "d")
60
-
61
- assert_equal(%w{b c d}.sort, graph.dependents("a").sort)
62
- assert_equal(%w{d}.sort, graph.dependents("b").sort)
63
- assert_equal([].sort, graph.dependents("c").sort)
64
-
65
- assert_equal(%w{a b}, graph.dependencies("d").sort)
66
- assert_equal(%w{a}, graph.dependencies("b").sort)
67
- assert_equal(%w{a}, graph.dependencies("c").sort)
68
- assert_equal([], graph.dependencies("a").sort)
69
-
70
- end
71
-
72
- # Test that we can take a containment graph and rearrange it by dependencies
73
- def test_splice
74
- one, two, three, middle, top = build_tree
75
- empty = Container.new("empty", [])
76
- # Also, add an empty container to top
77
- top.push empty
78
-
79
- contgraph = top.to_graph
80
-
81
- # Now add a couple of child files, so that we can test whether all
82
- # containers get spliced, rather than just components.
83
-
84
- # Now make a dependency graph
85
- deps = Puppet::PGraph.new
86
-
87
- contgraph.vertices.each do |v|
88
- deps.add_vertex(v)
89
- end
90
-
91
- # We have to specify a relationship to our empty container, else it
92
- # never makes it into the dep graph in the first place.
93
- {one => two, "f" => "c", "h" => middle, "c" => empty}.each do |source, target|
94
- deps.add_edge!(source, target, :callback => :refresh)
95
- end
96
-
97
- #contgraph.to_jpg(File.expand_path("~/Desktop/pics"), "main")
98
- #deps.to_jpg(File.expand_path("~/Desktop/pics"), "before")
99
- assert_nothing_raised { deps.splice!(contgraph, Container) }
100
-
101
- assert(! deps.cyclic?, "Created a cyclic graph")
102
-
103
- # Make sure there are no container objects remaining
104
- #deps.to_jpg(File.expand_path("~/Desktop/pics"), "after")
105
- c = deps.vertices.find_all { |v| v.is_a?(Container) }
106
- assert(c.empty?, "Still have containers %s" % c.inspect)
107
-
108
- # Now make sure the containers got spliced correctly.
109
- contgraph.leaves(middle).each do |leaf|
110
- assert(deps.edge?("h", leaf), "no edge for h => %s" % leaf)
111
- end
112
- one.each do |oobj|
113
- two.each do |tobj|
114
- assert(deps.edge?(oobj, tobj), "no %s => %s edge" % [oobj, tobj])
115
- end
116
- end
117
-
118
- nons = deps.vertices.find_all { |v| ! v.is_a?(String) }
119
- assert(nons.empty?,
120
- "still contain non-strings %s" % nons.inspect)
121
-
122
- deps.edges.each do |edge|
123
- assert_equal({:callback => :refresh}, edge.label,
124
- "Label was not copied for %s => %s" % [edge.source, edge.target])
125
- end
126
-
127
- # Now add some relationships to three, but only add labels to one of
128
- # the relationships.
129
-
130
- # Add a simple, label-less relationship
131
- deps.add_edge!(two, three)
132
- assert_nothing_raised { deps.splice!(contgraph, Container) }
133
-
134
- # And make sure it stuck, with no labels.
135
- assert_equal({}, deps.edge_label("c", "i"),
136
- "label was created for c => i")
137
-
138
- # Now add some edges with labels, in a way that should overwrite
139
- deps.add_edge!("c", three, {:callback => :refresh})
140
- assert_nothing_raised { deps.splice!(contgraph, Container) }
141
-
142
- # And make sure the label got copied.
143
- assert_equal({:callback => :refresh}, deps.edge_label("c", "i"),
144
- "label was not copied for c => i")
145
-
146
- # Lastly, add some new label-less edges and make sure the label stays.
147
- deps.add_edge!(middle, three)
148
- assert_nothing_raised { deps.splice!(contgraph, Container) }
149
- assert_equal({:callback => :refresh}, deps.edge_label("c", "i"),
150
- "label was lost for c => i")
151
-
152
- # Now make sure the 'three' edges all have the label we've used.
153
- # Note that this will not work when we support more than one type of
154
- # subscription.
155
- three.each do |child|
156
- edge = deps.edge_class.new("c", child)
157
- assert(deps.edge?(edge), "no c => %s edge" % child)
158
- assert_equal({:callback => :refresh}, deps[edge],
159
- "label was not retained for c => %s" % child)
160
- end
161
- end
162
-
163
- def test_copy_label
164
- graph = Puppet::PGraph.new
165
-
166
- # First make an edge with no label
167
- graph.add_edge!(:a, :b)
168
- assert_nil(graph.edge_label(:a, :b), "Created a label")
169
-
170
- # Now try to copy an empty label in.
171
- graph.copy_label(:a, :b, {})
172
-
173
- # It should just do nothing, since we copied an empty label.
174
- assert_nil(graph.edge_label(:a, :b), "Created a label")
175
-
176
- # Now copy in a real label.
177
- graph.copy_label(:a, :b, {:callback => :yay})
178
- assert_equal({:callback => :yay},
179
- graph.edge_label(:a, :b), "Did not copy label")
180
-
181
- # Now copy in a nil label
182
- graph.copy_label(:a, :b, nil)
183
- assert_equal({:callback => :yay},
184
- graph.edge_label(:a, :b), "lost label")
185
-
186
- # And an empty one.
187
- graph.copy_label(:a, :b, {})
188
- assert_equal({:callback => :yay},
189
- graph.edge_label(:a, :b), "lost label")
190
- end
191
-
192
- def test_fail_on_cycle
193
- {
194
- {:a => :b, :b => :a, :c => :a, :d => :c} => true, # larger tree involving a smaller cycle
195
- {:a => :b, :b => :c, :c => :a} => true,
196
- {:a => :b, :b => :a, :c => :d, :d => :c} => true,
197
- {:a => :b, :b => :c} => false,
198
- }.each do |hash, result|
199
- graph = Puppet::PGraph.new
200
- hash.each do |a,b|
201
- graph.add_edge!(a, b)
202
- end
203
-
204
- if result
205
- assert_raise(Puppet::Error, "%s did not fail" % hash.inspect) do
206
- graph.topsort
207
- end
208
- else
209
- assert_nothing_raised("%s failed" % hash.inspect) do
210
- graph.topsort
211
- end
212
- end
213
- end
214
- end
215
-
216
- # This isn't really a unit test, it's just a way to do some graphing with
217
- # tons of relationships so we can see how it performs.
218
- def disabled_test_lots_of_relationships
219
- containers = Puppet::PGraph.new
220
- relationships = Puppet::PGraph.new
221
- labels = %w{a b c d e}
222
- conts = {}
223
- vertices = {}
224
- labels.each do |label|
225
- vertices[label] = []
226
- end
227
- num = 100
228
- num.times do |i|
229
- labels.each do |label|
230
- vertices[label] << ("%s%s" % [label, i])
231
- end
232
- end
233
- labels.each do |label|
234
- conts[label] = Container.new(label, vertices[label])
235
- end
236
-
237
- conts.each do |label, cont|
238
- cont.each do |child|
239
- containers.add_edge!(cont, child)
240
- end
241
- end
242
- prev = nil
243
- labels.inject(nil) do |prev, label|
244
- if prev
245
- containers.add_edge!(conts[prev], conts[label])
246
- end
247
- label
248
- end
249
-
250
- containers.to_jpg(File.expand_path("~/Desktop/pics/lots"), "start")
251
-
252
- # Now create the relationship graph
253
-
254
- # Make everything in both b and c require d1
255
- %w{b c}.each do |label|
256
- conts[label].each do |v|
257
- relationships.add_edge!(v, "d1")
258
- #relationships.add_edge!(v, conts["d"])
259
- end
260
- end
261
-
262
- # Make most in b also require the appropriate thing in c
263
- conts["b"].each do |v|
264
- i = v.split('')[1]
265
-
266
- relationships.add_edge!(v, "c%s" % i)
267
- end
268
-
269
- # And make d1 require most of e
270
- num.times do |i|
271
- relationships.add_edge!("d1", "e%s" % i)
272
- end
273
-
274
- containers.vertices.each do |v|
275
- relationships.add_vertex!(v)
276
- end
277
- relationships.to_jpg(File.expand_path("~/Desktop/pics/lots"), "relationships")
278
-
279
- time = Benchmark.realtime do
280
- relationships.splice!(containers, Container)
281
- end
282
- relationships.to_jpg(File.expand_path("~/Desktop/pics/lots"), "final")
283
- puts time
284
- time = Benchmark.realtime do
285
- relationships.topsort
286
- end
287
- end
288
- end
289
-
290
- # $Id: pgraph.rb 2521 2007-05-17 20:57:24Z luke $