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,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
3
+ require File.dirname(__FILE__) + '/../lib/puppettest'
4
4
 
5
5
  require 'mocha'
6
6
  require 'puppettest'
@@ -27,79 +27,37 @@ class TestScope < Test::Unit::TestCase
27
27
  end
28
28
 
29
29
  def test_variables
30
- scope = nil
31
- over = "over"
30
+ config = mkcompile
31
+ topscope = config.topscope
32
+ midscope = config.newscope(topscope)
33
+ botscope = config.newscope(midscope)
32
34
 
33
- scopes = []
34
- vars = []
35
- values = {}
36
- ovalues = []
35
+ scopes = {:top => topscope, :mid => midscope, :bot => botscope}
37
36
 
38
- 10.times { |index|
39
- # slap some recursion in there
40
- scope = mkscope(:parent => scope)
41
- scopes.push scope
42
-
43
- var = "var%s" % index
44
- value = rand(1000)
45
- ovalue = rand(1000)
46
-
47
- ovalues.push ovalue
48
-
49
- vars.push var
50
- values[var] = value
51
-
52
- # set the variable in the current scope
53
- assert_nothing_raised {
54
- scope.setvar(var,value)
55
- }
37
+ # Set a variable in the top and make sure all three can get it
38
+ topscope.setvar("first", "topval")
39
+ scopes.each do |name, scope|
40
+ assert_equal("topval", scope.lookupvar("first", false), "Could not find var in %s" % name)
41
+ end
56
42
 
57
- # this should override previous values
58
- assert_nothing_raised {
59
- scope.setvar(over,ovalue)
60
- }
43
+ # Now set a var in the midscope and make sure the mid and bottom can see it but not the top
44
+ midscope.setvar("second", "midval")
45
+ assert_equal(:undefined, scopes[:top].lookupvar("second", false), "Found child var in top scope")
46
+ [:mid, :bot].each do |name|
47
+ assert_equal("midval", scopes[name].lookupvar("second", false), "Could not find var in %s" % name)
48
+ end
61
49
 
62
- assert_equal(value,scope.lookupvar(var))
63
-
64
- #puts "%s vars, %s scopes" % [vars.length,scopes.length]
65
- i = 0
66
- vars.zip(scopes) { |v,s|
67
- # this recurses all the way up the tree as necessary
68
- val = nil
69
- oval = nil
70
-
71
- # look up the values using the bottom scope
72
- assert_nothing_raised {
73
- val = scope.lookupvar(v)
74
- oval = scope.lookupvar(over)
75
- }
76
-
77
- # verify they're correct
78
- assert_equal(values[v],val)
79
- assert_equal(ovalue,oval)
80
-
81
- # verify that we get the most recent value
82
- assert_equal(ovalue,scope.lookupvar(over))
83
-
84
- # verify that they aren't available in upper scopes
85
- if parent = s.parent
86
- val = nil
87
- assert_nothing_raised {
88
- val = parent.lookupvar(v)
89
- }
90
- assert_equal("", val, "Did not get empty string on missing var")
91
-
92
- # and verify that the parent sees its correct value
93
- assert_equal(ovalues[i - 1],parent.lookupvar(over))
94
- end
95
- i += 1
96
- }
97
- }
50
+ # And set something in the bottom, and make sure we only find it there.
51
+ botscope.setvar("third", "botval")
52
+ [:top, :mid].each do |name|
53
+ assert_equal(:undefined, scopes[name].lookupvar("third", false), "Found child var in top scope")
54
+ end
55
+ assert_equal("botval", scopes[:bot].lookupvar("third", false), "Could not find var in bottom scope")
98
56
  end
99
57
 
100
58
  def test_lookupvar
101
- interp = mkinterp
102
- scope = mkscope :interp => interp
59
+ parser = mkparser
60
+ scope = mkscope :parser => parser
103
61
 
104
62
  # first do the plain lookups
105
63
  assert_equal("", scope.lookupvar("var"), "scope did not default to string")
@@ -111,7 +69,7 @@ class TestScope < Test::Unit::TestCase
111
69
  assert_equal("yep", scope.lookupvar("var"), "did not retrieve value correctly")
112
70
 
113
71
  # Now test the parent lookups
114
- subscope = mkscope :interp => interp
72
+ subscope = mkscope :parser => parser
115
73
  subscope.parent = scope
116
74
  assert_equal("", subscope.lookupvar("nope"), "scope did not default to string with parent")
117
75
  assert_equal("", subscope.lookupvar("nope", true), "scope ignored usestring setting with parent")
@@ -129,14 +87,14 @@ class TestScope < Test::Unit::TestCase
129
87
  end
130
88
 
131
89
  def test_lookup_qualified_var
132
- interp = mkinterp
133
- scope = mkscope :interp => interp
90
+ parser = mkparser
91
+ scope = mkscope :parser => parser
134
92
 
135
93
  scopes = {}
136
94
  classes = ["", "one", "one::two", "one::two::three"].each do |name|
137
- klass = interp.newclass(name)
138
- klass.evaluate(:scope => scope)
139
- scopes[name] = scope.class_scope(klass)
95
+ klass = parser.newclass(name)
96
+ Puppet::Parser::Resource.new(:type => "class", :title => name, :scope => scope, :source => mock('source')).evaluate
97
+ scopes[name] = scope.compile.class_scope(klass)
140
98
  end
141
99
 
142
100
  classes.each do |name|
@@ -149,7 +107,7 @@ class TestScope < Test::Unit::TestCase
149
107
 
150
108
  def test_declarative
151
109
  # set to declarative
152
- top = mkscope(:declarative => true)
110
+ top = mkscope
153
111
  sub = mkscope(:parent => top)
154
112
 
155
113
  assert_nothing_raised {
@@ -166,97 +124,78 @@ class TestScope < Test::Unit::TestCase
166
124
  }
167
125
  end
168
126
 
169
- def test_notdeclarative
170
- # set to not declarative
171
- top = mkscope(:declarative => false)
172
- sub = mkscope(:parent => top)
127
+ def test_setdefaults
128
+ config = mkcompile
173
129
 
174
- assert_nothing_raised {
175
- top.setvar("test","value")
176
- }
177
- assert_nothing_raised {
178
- top.setvar("test","other")
179
- }
180
- assert_nothing_raised {
181
- sub.setvar("test","later")
182
- }
183
- assert_nothing_raised {
184
- sub.setvar("test","yayness")
185
- }
186
- end
130
+ scope = config.topscope
187
131
 
188
- def test_setdefaults
189
- interp, scope, source = mkclassframing
132
+ defaults = scope.instance_variable_get("@defaults")
190
133
 
191
- # The setdefaults method doesn't really check what we're doing,
192
- # so we're just going to use fake defaults here.
134
+ # First the case where there are no defaults and we pass a single param
135
+ param = stub :name => "myparam", :file => "f", :line => "l"
136
+ scope.setdefaults(:mytype, param)
137
+ assert_equal({"myparam" => param}, defaults[:mytype], "Did not set default correctly")
193
138
 
194
- # First do a simple local lookup
195
- params = paramify(source, :one => "fun", :two => "shoe")
196
- origshould = {}
197
- params.each do |p| origshould[p.name] = p end
198
- assert_nothing_raised do
199
- scope.setdefaults(:file, params)
200
- end
139
+ # Now the case where we pass in multiple parameters
140
+ param1 = stub :name => "one", :file => "f", :line => "l"
141
+ param2 = stub :name => "two", :file => "f", :line => "l"
142
+ scope.setdefaults(:newtype, [param1, param2])
143
+ assert_equal({"one" => param1, "two" => param2}, defaults[:newtype], "Did not set multiple defaults correctly")
201
144
 
202
- ret = nil
203
- assert_nothing_raised do
204
- ret = scope.lookupdefaults(:file)
145
+ # And the case where there's actually a conflict. Use the first default for this.
146
+ newparam = stub :name => "myparam", :file => "f", :line => "l"
147
+ assert_raise(Puppet::ParseError, "Allowed resetting of defaults") do
148
+ scope.setdefaults(:mytype, param)
205
149
  end
150
+ assert_equal({"myparam" => param}, defaults[:mytype], "Replaced default even though there was a failure")
151
+ end
206
152
 
207
- assert_equal(origshould, ret)
153
+ def test_lookupdefaults
154
+ config = mkcompile
155
+ top = config.topscope
208
156
 
209
- # Now create a subscope and add some more params.
210
- newscope = scope.newscope
157
+ # Make a subscope
158
+ sub = config.newscope(top)
211
159
 
212
- newparams = paramify(source, :one => "shun", :three => "free")
213
- assert_nothing_raised {
214
- newscope.setdefaults(:file, newparams)
215
- }
160
+ topdefs = top.instance_variable_get("@defaults")
161
+ subdefs = sub.instance_variable_get("@defaults")
216
162
 
217
- # And make sure we get the appropriate ones back
218
- should = {}
219
- params.each do |p| should[p.name] = p end
220
- newparams.each do |p| should[p.name] = p end
163
+ # First add some defaults to our top scope
164
+ topdefs[:t1] = {:p1 => :p2, :p3 => :p4}
165
+ topdefs[:t2] = {:p5 => :p6}
221
166
 
222
- assert_nothing_raised do
223
- ret = newscope.lookupdefaults(:file)
224
- end
225
-
226
- assert_equal(should, ret)
167
+ # Then the sub scope
168
+ subdefs[:t1] = {:p1 => :p7, :p8 => :p9}
169
+ subdefs[:t2] = {:p5 => :p10, :p11 => :p12}
227
170
 
228
- # Make sure we still only get the originals from the top scope
229
- assert_nothing_raised do
230
- ret = scope.lookupdefaults(:file)
171
+ # Now make sure we get the correct list back
172
+ result = nil
173
+ assert_nothing_raised("Could not get defaults") do
174
+ result = sub.lookupdefaults(:t1)
231
175
  end
176
+ assert_equal(:p9, result[:p8], "Did not get child defaults")
177
+ assert_equal(:p4, result[:p3], "Did not override parent defaults with child default")
178
+ assert_equal(:p7, result[:p1], "Did not get parent defaults")
179
+ end
232
180
 
233
- assert_equal(origshould, ret)
181
+ def test_parent
182
+ config = mkcompile
183
+ top = config.topscope
234
184
 
235
- # Now create another scope and make sure we only get the top defaults
236
- otherscope = scope.newscope
237
- assert_equal(origshould, otherscope.lookupdefaults(:file))
185
+ # Make a subscope
186
+ sub = config.newscope(top)
238
187
 
239
- # And make sure none of the scopes has defaults for other types
240
- [scope, newscope, otherscope].each do |sc|
241
- assert_equal({}, sc.lookupdefaults(:exec))
242
- end
188
+ assert_equal(top, sub.parent, "Did not find parent scope correctly")
189
+ assert_equal(top, sub.parent, "Did not find parent scope on second call")
243
190
  end
244
191
 
245
192
  def test_strinterp
246
193
  # Make and evaluate our classes so the qualified lookups work
247
- interp = mkinterp
248
- klass = interp.newclass("")
249
- scope = mkscope(:interp => interp)
250
- klass.evaluate(:scope => scope)
194
+ parser = mkparser
195
+ klass = parser.newclass("")
196
+ scope = mkscope(:parser => parser)
197
+ Puppet::Parser::Resource.new(:type => "class", :title => :main, :scope => scope, :source => mock('source')).evaluate
251
198
 
252
- klass = interp.newclass("one")
253
- klass.evaluate(:scope => scope)
254
-
255
- klass = interp.newclass("one::two")
256
- klass.evaluate(:scope => scope)
257
-
258
-
259
- scope = scope.class_scope("")
260
199
  assert_nothing_raised {
261
200
  scope.setvar("test","value")
262
201
  }
@@ -264,9 +203,9 @@ class TestScope < Test::Unit::TestCase
264
203
  scopes = {"" => scope}
265
204
 
266
205
  %w{one one::two one::two::three}.each do |name|
267
- klass = interp.newclass(name)
268
- klass.evaluate(:scope => scope)
269
- scopes[name] = scope.class_scope(klass)
206
+ klass = parser.newclass(name)
207
+ Puppet::Parser::Resource.new(:type => "class", :title => name, :scope => scope, :source => mock('source')).evaluate
208
+ scopes[name] = scope.compile.class_scope(klass)
270
209
  scopes[name].setvar("test", "value-%s" % name.sub(/.+::/,''))
271
210
  end
272
211
 
@@ -298,7 +237,7 @@ class TestScope < Test::Unit::TestCase
298
237
  tests.each do |input, output|
299
238
  assert_nothing_raised("Failed to scan %s" % input.inspect) do
300
239
  assert_equal(output, scope.strinterp(input),
301
- 'did not interpret %s correctly' % input.inspect)
240
+ 'did not parserret %s correctly' % input.inspect)
302
241
  end
303
242
  end
304
243
 
@@ -311,7 +250,7 @@ class TestScope < Test::Unit::TestCase
311
250
  string = "\\" + l
312
251
  assert_nothing_raised do
313
252
  assert_equal(string, scope.strinterp(string),
314
- 'did not interpret %s correctly' % string)
253
+ 'did not parserret %s correctly' % string)
315
254
  end
316
255
 
317
256
  assert(logs.detect { |m| m.message =~ /Unrecognised escape/ },
@@ -320,83 +259,21 @@ class TestScope < Test::Unit::TestCase
320
259
  end
321
260
  end
322
261
 
323
- def test_setclass
324
- interp, scope, source = mkclassframing
325
-
326
- base = scope.findclass("base")
327
- assert(base, "Could not find base class")
328
- assert(! scope.class_scope(base), "Class incorrectly set")
329
- assert(! scope.classlist.include?("base"), "Class incorrectly in classlist")
330
- assert_nothing_raised do
331
- scope.setclass base
332
- end
333
-
334
- assert(scope.class_scope(base), "Class incorrectly unset")
335
- assert(scope.classlist.include?("base"), "Class not in classlist")
336
-
337
- # Make sure we can retrieve the scope.
338
- assert_equal(scope, scope.class_scope(base),
339
- "class scope was not set correctly")
340
-
341
- # Now try it with a normal string
342
- Puppet[:trace] = false
343
- assert_raise(Puppet::DevError) do
344
- scope.setclass "string"
345
- end
346
-
347
- assert(! scope.class_scope("string"), "string incorrectly set")
348
-
349
- # Set "" in the class list, and make sure it doesn't show up in the return
350
- top = scope.findclass("")
351
- assert(top, "Could not find top class")
352
- scope.setclass top
353
-
354
- assert(! scope.classlist.include?(""), "Class list included empty")
355
- end
356
-
357
- def test_validtags
358
- scope = mkscope()
359
-
360
- ["a class", "a.class"].each do |bad|
361
- assert_raise(Puppet::ParseError, "Incorrectly allowed %s" % bad.inspect) do
362
- scope.tag(bad)
363
- end
364
- end
365
-
366
- ["a-class", "a_class", "Class", "class", "yayNess"].each do |good|
367
- assert_nothing_raised("Incorrectly banned %s" % good.inspect) do
368
- scope.tag(good)
369
- end
370
- end
371
-
372
- end
373
-
374
262
  def test_tagfunction
375
- scope = mkscope()
376
-
377
- assert_nothing_raised {
378
- scope.function_tag(["yayness", "booness"])
379
- }
380
-
381
- assert(scope.tags.include?("yayness"), "tag 'yayness' did not get set")
382
- assert(scope.tags.include?("booness"), "tag 'booness' did not get set")
383
-
384
- # Now verify that the 'tagged' function works correctly
385
- assert(scope.function_tagged("yayness"),
386
- "tagged function incorrectly returned false")
387
- assert(scope.function_tagged("booness"),
388
- "tagged function incorrectly returned false")
263
+ scope = mkscope
264
+ resource = mock 'resource'
265
+ scope.resource = resource
266
+ resource.expects(:tag).with("yayness", "booness")
389
267
 
390
- assert(! scope.function_tagged("funtest"),
391
- "tagged function incorrectly returned true")
268
+ scope.function_tag(%w{yayness booness})
392
269
  end
393
270
 
394
271
  def test_includefunction
395
- interp = mkinterp
396
- scope = mkscope :interp => interp
272
+ parser = mkparser
273
+ scope = mkscope :parser => parser
397
274
 
398
- myclass = interp.newclass "myclass"
399
- otherclass = interp.newclass "otherclass"
275
+ myclass = parser.newclass "myclass"
276
+ otherclass = parser.newclass "otherclass"
400
277
 
401
278
  function = Puppet::Parser::AST::Function.new(
402
279
  :name => "include",
@@ -410,19 +287,21 @@ class TestScope < Test::Unit::TestCase
410
287
  function.evaluate :scope => scope
411
288
  end
412
289
 
290
+ scope.compile.send(:evaluate_generators)
291
+
413
292
  [myclass, otherclass].each do |klass|
414
- assert(scope.class_scope(klass),
293
+ assert(scope.compile.class_scope(klass),
415
294
  "%s was not set" % klass.classname)
416
295
  end
417
296
  end
418
297
 
419
298
  def test_definedfunction
420
- interp = mkinterp
299
+ parser = mkparser
421
300
  %w{one two}.each do |name|
422
- interp.newdefine name
301
+ parser.newdefine name
423
302
  end
424
303
 
425
- scope = mkscope :interp => interp
304
+ scope = mkscope :parser => parser
426
305
 
427
306
  assert_nothing_raised {
428
307
  %w{one two file user}.each do |type|
@@ -449,62 +328,19 @@ class TestScope < Test::Unit::TestCase
449
328
  "undef considered true")
450
329
  end
451
330
 
452
- # Verify scope context is handled correctly.
453
- def test_scopeinside
454
- scope = mkscope()
455
-
456
- one = :one
457
- two = :two
458
-
459
- # First just test the basic functionality.
460
- assert_nothing_raised {
461
- scope.inside :one do
462
- assert_equal(:one, scope.inside, "Context did not get set")
463
- end
464
- assert_nil(scope.inside, "Context did not revert")
465
- }
466
-
467
- # Now make sure error settings work.
468
- assert_raise(RuntimeError) {
469
- scope.inside :one do
470
- raise RuntimeError, "This is a failure, yo"
471
- end
472
- }
473
- assert_nil(scope.inside, "Context did not revert")
474
-
475
- # Now test it a bit deeper in.
476
- assert_nothing_raised {
477
- scope.inside :one do
478
- scope.inside :two do
479
- assert_equal(:two, scope.inside, "Context did not get set")
480
- end
481
- assert_equal(:one, scope.inside, "Context did not get set")
482
- end
483
- assert_nil(scope.inside, "Context did not revert")
484
- }
485
-
486
- # And lastly, check errors deeper in
487
- assert_nothing_raised {
488
- scope.inside :one do
489
- begin
490
- scope.inside :two do
491
- raise "a failure"
492
- end
493
- rescue
494
- end
495
- assert_equal(:one, scope.inside, "Context did not get set")
496
- end
497
- assert_nil(scope.inside, "Context did not revert")
498
- }
499
-
500
- end
501
-
502
331
  if defined? ActiveRecord
503
332
  # Verify that we recursively mark as exported the results of collectable
504
333
  # components.
505
334
  def test_exportedcomponents
506
- interp, scope, source = mkclassframing
507
- children = []
335
+ config = mkcompile
336
+ parser = config.parser
337
+
338
+ # Create a default source
339
+ config.topscope.source = parser.newclass "", ""
340
+
341
+ # And a scope resource
342
+ scope_res = stub 'scope_resource', :virtual? => true, :exported? => false, :tags => []
343
+ config.topscope.resource = scope_res
508
344
 
509
345
  args = AST::ASTArray.new(
510
346
  :file => tempfile(),
@@ -513,7 +349,7 @@ class TestScope < Test::Unit::TestCase
513
349
  )
514
350
 
515
351
  # Create a top-level component
516
- interp.newdefine "one", :arguments => [%w{arg}],
352
+ parser.newdefine "one", :arguments => [%w{arg}],
517
353
  :code => AST::ASTArray.new(
518
354
  :children => [
519
355
  resourcedef("file", "/tmp", {"owner" => varref("arg")})
@@ -521,7 +357,7 @@ class TestScope < Test::Unit::TestCase
521
357
  )
522
358
 
523
359
  # And a component that calls it
524
- interp.newdefine "two", :arguments => [%w{arg}],
360
+ parser.newdefine "two", :arguments => [%w{arg}],
525
361
  :code => AST::ASTArray.new(
526
362
  :children => [
527
363
  resourcedef("one", "ptest", {"arg" => varref("arg")})
@@ -529,7 +365,7 @@ class TestScope < Test::Unit::TestCase
529
365
  )
530
366
 
531
367
  # And then a third component that calls the second
532
- interp.newdefine "three", :arguments => [%w{arg}],
368
+ parser.newdefine "three", :arguments => [%w{arg}],
533
369
  :code => AST::ASTArray.new(
534
370
  :children => [
535
371
  resourcedef("two", "yay", {"arg" => varref("arg")})
@@ -542,13 +378,14 @@ class TestScope < Test::Unit::TestCase
542
378
  # And mark it as exported
543
379
  obj.exported = true
544
380
 
545
- obj.evaluate :scope => scope
546
-
547
381
  # And then evaluate it
548
- interp.evaliterate(scope)
382
+ obj.evaluate :scope => config.topscope
549
383
 
550
- %w{file}.each do |type|
551
- objects = scope.lookupexported(type)
384
+ # And run the loop.
385
+ config.send(:evaluate_generators)
386
+
387
+ %w{File}.each do |type|
388
+ objects = config.resources.find_all { |r| r.type == type and r.exported }
552
389
 
553
390
  assert(!objects.empty?, "Did not get an exported %s" % type)
554
391
  end
@@ -562,35 +399,30 @@ class TestScope < Test::Unit::TestCase
562
399
  Puppet::Rails.init
563
400
  sleep 1
564
401
  children = []
565
- file = tempfile()
566
- File.open(file, "w") { |f|
567
- f.puts "
402
+ Puppet[:code] = "
568
403
  class yay {
569
404
  @@host { myhost: ip => \"192.168.0.2\" }
570
405
  }
571
406
  include yay
572
407
  @@host { puppet: ip => \"192.168.0.3\" }
573
408
  Host <<||>>"
574
- }
575
409
 
576
410
  interp = nil
577
411
  assert_nothing_raised {
578
- interp = Puppet::Parser::Interpreter.new(
579
- :Manifest => file,
580
- :UseNodes => false,
581
- :ForkSave => false
582
- )
412
+ interp = Puppet::Parser::Interpreter.new
583
413
  }
584
414
 
585
- objects = nil
415
+ config = nil
586
416
  # We run it twice because we want to make sure there's no conflict
587
417
  # if we pull it up from the database.
418
+ node = mknode
419
+ node.parameters = {"hostname" => node.name}
588
420
  2.times { |i|
589
421
  assert_nothing_raised {
590
- objects = interp.run("localhost", {"hostname" => "localhost"})
422
+ config = interp.compile(node)
591
423
  }
592
424
 
593
- flat = objects.flatten
425
+ flat = config.extract.flatten
594
426
 
595
427
  %w{puppet myhost}.each do |name|
596
428
  assert(flat.find{|o| o.name == name }, "Did not find #{name}")
@@ -601,94 +433,8 @@ Host <<||>>"
601
433
  $stderr.puts "No ActiveRecord -- skipping collection tests"
602
434
  end
603
435
 
604
- # Make sure tags behave appropriately.
605
- def test_tags
606
- interp, scope, source = mkclassframing
607
-
608
- # First make sure we can only set legal tags
609
- ["an invalid tag", "-anotherinvalid", "bad*tag"].each do |tag|
610
- assert_raise(Puppet::ParseError, "Tag #{tag} was considered valid") do
611
- scope.tag tag
612
- end
613
- end
614
-
615
- # Now make sure good tags make it through.
616
- tags = %w{good-tag yaytag GoodTag another_tag a ab A}
617
- tags.each do |tag|
618
- assert_nothing_raised("Tag #{tag} was considered invalid") do
619
- scope.tag tag
620
- end
621
- end
622
-
623
- # And make sure we get each of them.
624
- ptags = scope.tags
625
- tags.each do |tag|
626
- assert(ptags.include?(tag), "missing #{tag}")
627
- end
628
-
629
-
630
- # Now create a subscope and set some tags there
631
- newscope = scope.newscope(:type => 'subscope')
632
-
633
- # set some tags
634
- newscope.tag "onemore", "yaytag"
635
-
636
- # And make sure we get them plus our parent tags
637
- assert_equal((ptags + %w{onemore subscope}).sort, newscope.tags.sort)
638
- end
639
-
640
- # Make sure we successfully translate objects
641
- def test_translate
642
- interp, scope, source = mkclassframing
643
-
644
- # Create a define that we'll be using
645
- interp.newdefine("wrapper", :code => AST::ASTArray.new(:children => [
646
- resourcedef("file", varref("name"), "owner" => "root")
647
- ]))
648
-
649
- # Now create a resource that uses that define
650
- define = mkresource(:type => "wrapper", :title => "/tmp/testing",
651
- :scope => scope, :source => source, :params => :none)
652
-
653
- scope.setresource define
654
-
655
- # And a normal resource
656
- scope.setresource mkresource(:type => "file", :title => "/tmp/rahness",
657
- :scope => scope, :source => source,
658
- :params => {:owner => "root"})
659
-
660
- # Evaluate the the define thing.
661
- define.evaluate
662
-
663
- # Now the scope should have a resource and a subscope. Translate the
664
- # whole thing.
665
- ret = nil
666
- assert_nothing_raised do
667
- ret = scope.translate
668
- end
669
-
670
- assert_instance_of(Puppet::TransBucket, ret)
671
-
672
- ret.each do |obj|
673
- assert(obj.is_a?(Puppet::TransBucket) || obj.is_a?(Puppet::TransObject),
674
- "Got a non-transportable object %s" % obj.class)
675
- end
676
-
677
- rahness = ret.find { |c| c.type == "file" and c.name == "/tmp/rahness" }
678
- assert(rahness, "Could not find top-level file")
679
- assert_equal("root", rahness["owner"])
680
-
681
- bucket = ret.find { |c| c.class == Puppet::TransBucket and c.name == "/tmp/testing" }
682
- assert(bucket, "Could not find define bucket")
683
-
684
- testing = bucket.find { |c| c.type == "file" and c.name == "/tmp/testing" }
685
- assert(testing, "Could not find define file")
686
- assert_equal("root", testing["owner"])
687
-
688
- end
689
-
690
436
  def test_namespaces
691
- interp, scope, source = mkclassframing
437
+ scope = mkscope
692
438
 
693
439
  assert_equal([""], scope.namespaces,
694
440
  "Started out with incorrect namespaces")
@@ -701,17 +447,17 @@ Host <<||>>"
701
447
  end
702
448
 
703
449
  def test_findclass_and_finddefine
704
- interp = mkinterp
450
+ parser = mkparser
705
451
 
706
- # Make sure our scope calls the interp findclass method with
452
+ # Make sure our scope calls the parser findclass method with
707
453
  # the right namespaces
708
- scope = mkscope :interp => interp
454
+ scope = mkscope :parser => parser
709
455
 
710
- interp.metaclass.send(:attr_accessor, :last)
456
+ parser.metaclass.send(:attr_accessor, :last)
711
457
 
712
458
  methods = [:findclass, :finddefine]
713
459
  methods.each do |m|
714
- interp.meta_def(m) do |namespace, name|
460
+ parser.meta_def(m) do |namespace, name|
715
461
  @checked ||= []
716
462
  @checked << [namespace, name]
717
463
 
@@ -727,7 +473,7 @@ Host <<||>>"
727
473
  end
728
474
 
729
475
  test = proc do |should|
730
- interp.last = scope.namespaces[-1]
476
+ parser.last = scope.namespaces[-1]
731
477
  methods.each do |method|
732
478
  result = scope.send(method, "testing")
733
479
  assert_equal(should, result,
@@ -760,26 +506,5 @@ Host <<||>>"
760
506
  assert_equal("", scope.lookupvar("testing", true),
761
507
  "undef was not returned as '' when string")
762
508
  end
763
-
764
- # #620 - Nodes and classes should conflict, else classes don't get evaluated
765
- def test_nodes_and_classes_name_conflict
766
- scope = mkscope
767
-
768
- node = AST::Node.new :classname => "test", :namespace => ""
769
- scope.setclass(node)
770
-
771
- assert(scope.nodescope?, "Scope was not marked a node scope when a node was set")
772
-
773
- # Now make a subscope that will be a class scope
774
- klass = AST::HostClass.new :classname => "test", :namespace => ""
775
- kscope = klass.subscope(scope)
776
-
777
- # Now make sure we throw a failure, because we're trying to do a class and node
778
- # with the same name
779
- assert_raise(Puppet::ParseError, "Did not fail on class and node with same name") do
780
- kscope.class_scope(klass)
781
- end
782
- end
783
509
  end
784
510
 
785
- # $Id: scope.rb 2646 2007-07-04 21:06:26Z luke $