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 'puppet'
6
6
  require 'puppet/network/client'
@@ -140,4 +140,3 @@ class TestPuppetMasterD < Test::Unit::TestCase
140
140
  end
141
141
  end
142
142
 
143
- # $Id: puppetmasterd.rb 2259 2007-03-06 19:03:05Z luke $
@@ -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 'puppettest'
6
6
 
@@ -53,4 +53,3 @@ class TestPuppetModule < Test::Unit::TestCase
53
53
  end
54
54
  end
55
55
 
56
- # $Id: puppetmodule.rb 2259 2007-03-06 19:03:05Z luke $
@@ -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 'puppettest'
6
6
  require 'puppet/parser/interpreter'
@@ -49,29 +49,26 @@ class TestAST < Test::Unit::TestCase
49
49
 
50
50
  # Make sure our override object behaves "correctly"
51
51
  def test_override
52
- interp, scope, source = mkclassframing
52
+ scope = mkscope
53
53
 
54
54
  ref = nil
55
55
  assert_nothing_raised do
56
- ref = resourceoverride("resource", "yaytest", "one" => "yay", "two" => "boo")
56
+ ref = resourceoverride("file", "/yayness", "owner" => "blah", "group" => "boo")
57
57
  end
58
58
 
59
+ Puppet::Parser::Resource.expects(:new).with { |o| o.is_a?(Hash) }.returns(:override)
60
+ scope.compile.expects(:store_override).with(:override)
59
61
  ret = nil
60
62
  assert_nothing_raised do
61
63
  ret = ref.evaluate :scope => scope
62
64
  end
63
65
 
64
- assert_instance_of(Puppet::Parser::Resource, ret)
65
-
66
- assert(ret.override?, "Resource was not an override resource")
67
-
68
- assert(scope.overridetable[ret.ref].include?(ret),
69
- "Was not stored in the override table")
66
+ assert_equal(:override, ret, "Did not return override")
70
67
  end
71
68
 
72
69
  # make sure our resourcedefaults ast object works correctly.
73
70
  def test_resourcedefaults
74
- interp, scope, source = mkclassframing
71
+ scope = mkscope
75
72
 
76
73
  # Now make some defaults for files
77
74
  args = {:source => "/yay/ness", :group => "yayness"}
@@ -82,7 +79,7 @@ class TestAST < Test::Unit::TestCase
82
79
 
83
80
  hash = nil
84
81
  assert_nothing_raised do
85
- hash = scope.lookupdefaults("file")
82
+ hash = scope.lookupdefaults("File")
86
83
  end
87
84
 
88
85
  hash.each do |name, value|
@@ -97,16 +94,16 @@ class TestAST < Test::Unit::TestCase
97
94
  end
98
95
 
99
96
  def test_node
100
- interp = mkinterp
101
- scope = mkscope(:interp => interp)
97
+ scope = mkscope
98
+ parser = scope.compile.parser
102
99
 
103
100
  # Define a base node
104
- basenode = interp.newnode "basenode", :code => AST::ASTArray.new(:children => [
101
+ basenode = parser.newnode "basenode", :code => AST::ASTArray.new(:children => [
105
102
  resourcedef("file", "/tmp/base", "owner" => "root")
106
103
  ])
107
104
 
108
105
  # Now define a subnode
109
- nodes = interp.newnode ["mynode", "othernode"],
106
+ nodes = parser.newnode ["mynode", "othernode"],
110
107
  :code => AST::ASTArray.new(:children => [
111
108
  resourcedef("file", "/tmp/mynode", "owner" => "root"),
112
109
  resourcedef("file", "/tmp/basenode", "owner" => "daemon")
@@ -116,13 +113,13 @@ class TestAST < Test::Unit::TestCase
116
113
 
117
114
  # Make sure we can find them all.
118
115
  %w{mynode othernode}.each do |node|
119
- assert(interp.nodesearch_code(node), "Could not find %s" % node)
116
+ assert(parser.nodes[node], "Could not find %s" % node)
120
117
  end
121
- mynode = interp.nodesearch_code("mynode")
118
+ mynode = parser.nodes["mynode"]
122
119
 
123
120
  # Now try evaluating the node
124
121
  assert_nothing_raised do
125
- mynode.evaluate :scope => scope
122
+ mynode.evaluate :scope => scope, :resource => scope.resource
126
123
  end
127
124
 
128
125
  # Make sure that we can find each of the files
@@ -135,11 +132,11 @@ class TestAST < Test::Unit::TestCase
135
132
  assert_equal("daemon", basefile[:owner])
136
133
 
137
134
  # Now make sure we can evaluate nodes with parents
138
- child = interp.newnode(%w{child}, :parent => "basenode").shift
135
+ child = parser.newnode(%w{child}, :parent => "basenode").shift
139
136
 
140
- newscope = mkscope :interp => interp
137
+ newscope = mkscope :parser => parser
141
138
  assert_nothing_raised do
142
- child.evaluate :scope => newscope
139
+ child.evaluate :scope => newscope, :resource => scope.resource
143
140
  end
144
141
 
145
142
  assert(newscope.findresource("File[/tmp/base]"),
@@ -147,8 +144,7 @@ class TestAST < Test::Unit::TestCase
147
144
  end
148
145
 
149
146
  def test_collection
150
- interp = mkinterp
151
- scope = mkscope(:interp => interp)
147
+ scope = mkscope
152
148
 
153
149
  coll = nil
154
150
  assert_nothing_raised do
@@ -165,20 +161,21 @@ class TestAST < Test::Unit::TestCase
165
161
  assert_instance_of(Puppet::Parser::Collector, ret)
166
162
 
167
163
  # Now make sure we get it back from the scope
168
- assert_equal([ret], scope.collections)
164
+ colls = scope.compile.instance_variable_get("@collections")
165
+ assert_equal([ret], colls, "Did not store collector in config's collection list")
169
166
  end
170
167
 
171
168
  def test_virtual_collexp
172
- @interp, @scope, @source = mkclassframing
169
+ scope = mkscope
173
170
 
174
171
  # make a resource
175
172
  resource = mkresource(:type => "file", :title => "/tmp/testing",
176
- :params => {:owner => "root", :group => "bin", :mode => "644"})
173
+ :scope => scope, :params => {:owner => "root", :group => "bin", :mode => "644"})
177
174
 
178
175
  run_collection_queries(:virtual) do |string, result, query|
179
176
  code = nil
180
177
  assert_nothing_raised do
181
- str, code = query.evaluate :scope => @scope
178
+ str, code = query.evaluate :scope => scope
182
179
  end
183
180
 
184
181
  assert_instance_of(Proc, code)
@@ -189,5 +186,3 @@ class TestAST < Test::Unit::TestCase
189
186
  end
190
187
  end
191
188
  end
192
-
193
- # $Id: ast.rb 2597 2007-06-17 21:41:50Z luke $
@@ -3,7 +3,7 @@
3
3
  # Created by Luke A. Kanies on 2006-12-22.
4
4
  # Copyright (c) 2006. All rights reserved.
5
5
 
6
- $:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
6
+ require File.dirname(__FILE__) + '/../../lib/puppettest'
7
7
 
8
8
  require 'puppettest'
9
9
  require 'puppettest/parsertesting'
@@ -101,4 +101,3 @@ class TestCaseStatement < Test::Unit::TestCase
101
101
  end
102
102
  end
103
103
 
104
- # $Id: casestatement.rb 2231 2007-02-27 21:31:02Z luke $
@@ -0,0 +1,166 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke A. Kanies on 2006-02-20.
4
+ # Copyright (c) 2006. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../lib/puppettest'
7
+
8
+ require 'puppettest'
9
+ require 'mocha'
10
+ require 'puppettest/parsertesting'
11
+ require 'puppettest/resourcetesting'
12
+
13
+ class TestASTDefinition < Test::Unit::TestCase
14
+ include PuppetTest
15
+ include PuppetTest::ParserTesting
16
+ include PuppetTest::ResourceTesting
17
+ AST = Puppet::Parser::AST
18
+
19
+ def test_initialize
20
+ parser = mkparser
21
+
22
+ # Create a new definition
23
+ klass = parser.newdefine "yayness",
24
+ :arguments => [["owner", stringobj("nobody")], %w{mode}],
25
+ :code => AST::ASTArray.new(
26
+ :children => [resourcedef("file", "/tmp/$name",
27
+ "owner" => varref("owner"), "mode" => varref("mode"))]
28
+ )
29
+
30
+ # Test validattr? a couple different ways
31
+ [:owner, "owner", :schedule, "schedule"].each do |var|
32
+ assert(klass.validattr?(var), "%s was not considered valid" % var.inspect)
33
+ end
34
+
35
+ [:random, "random"].each do |var|
36
+ assert(! klass.validattr?(var), "%s was considered valid" % var.inspect)
37
+ end
38
+
39
+ end
40
+
41
+ def test_evaluate
42
+ parser = mkparser
43
+ config = mkcompile
44
+ config.send(:evaluate_main)
45
+ scope = config.topscope
46
+ klass = parser.newdefine "yayness",
47
+ :arguments => [["owner", stringobj("nobody")], %w{mode}],
48
+ :code => AST::ASTArray.new(
49
+ :children => [resourcedef("file", "/tmp/$name",
50
+ "owner" => varref("owner"), "mode" => varref("mode"))]
51
+ )
52
+
53
+ resource = Puppet::Parser::Resource.new(
54
+ :title => "first",
55
+ :type => "yayness",
56
+ :exported => false,
57
+ :virtual => false,
58
+ :scope => scope,
59
+ :source => scope.source
60
+ )
61
+ resource.send(:set_parameter, "name", "first")
62
+ resource.send(:set_parameter, "mode", "755")
63
+
64
+ resource.stubs(:title)
65
+ assert_nothing_raised do
66
+ klass.evaluate(:scope => scope, :resource => resource)
67
+ end
68
+
69
+ firstobj = config.findresource("File[/tmp/first]")
70
+ assert(firstobj, "Did not create /tmp/first obj")
71
+
72
+ assert_equal("File", firstobj.type)
73
+ assert_equal("/tmp/first", firstobj.title)
74
+ assert_equal("nobody", firstobj[:owner])
75
+ assert_equal("755", firstobj[:mode])
76
+
77
+ # Make sure we can't evaluate it with the same args
78
+ assert_raise(Puppet::ParseError) do
79
+ klass.evaluate(:scope => scope, :resource => resource)
80
+ end
81
+
82
+ # Now create another with different args
83
+ resource2 = Puppet::Parser::Resource.new(
84
+ :title => "second",
85
+ :type => "yayness",
86
+ :exported => false,
87
+ :virtual => false,
88
+ :scope => scope,
89
+ :source => scope.source
90
+ )
91
+ resource2.send(:set_parameter, "name", "second")
92
+ resource2.send(:set_parameter, "mode", "755")
93
+ resource2.send(:set_parameter, "owner", "daemon")
94
+
95
+ assert_nothing_raised do
96
+ klass.evaluate(:scope => scope, :resource => resource2)
97
+ end
98
+
99
+ secondobj = config.findresource("File[/tmp/second]")
100
+ assert(secondobj, "Did not create /tmp/second obj")
101
+
102
+ assert_equal("File", secondobj.type)
103
+ assert_equal("/tmp/second", secondobj.title)
104
+ assert_equal("daemon", secondobj[:owner])
105
+ assert_equal("755", secondobj[:mode])
106
+ end
107
+
108
+ # #539 - definitions should support both names and titles
109
+ def test_names_and_titles
110
+ parser = mkparser
111
+ scope = mkscope :parser => parser
112
+
113
+ [
114
+ {:name => "one", :title => "two"},
115
+ {:title => "mytitle"}
116
+ ].each_with_index do |hash, i|
117
+ # Create a definition that uses both name and title. Put this
118
+ # inside the loop so the subscope expectations work.
119
+ klass = parser.newdefine "yayness%s" % i
120
+
121
+ resource = Puppet::Parser::Resource.new(
122
+ :title => hash[:title],
123
+ :type => "yayness%s" % i,
124
+ :exported => false,
125
+ :virtual => false,
126
+ :scope => scope,
127
+ :source => scope.source
128
+ )
129
+
130
+ subscope = klass.subscope(scope, resource)
131
+
132
+ klass.expects(:subscope).returns(subscope)
133
+
134
+ if hash[:name]
135
+ resource.stubs(:to_hash).returns({:name => hash[:name]})
136
+ end
137
+
138
+ assert_nothing_raised("Could not evaluate definition with %s" % hash.inspect) do
139
+ klass.evaluate(:scope => scope, :resource => resource)
140
+ end
141
+
142
+ name = hash[:name] || hash[:title]
143
+ title = hash[:title]
144
+
145
+ assert_equal(name, subscope.lookupvar("name"),
146
+ "Name did not get set correctly")
147
+ assert_equal(title, subscope.lookupvar("title"),
148
+ "title did not get set correctly")
149
+
150
+ [:name, :title].each do |param|
151
+ val = resource.send(param)
152
+ assert(subscope.tags.include?(val),
153
+ "Scope was not tagged with %s '%s'" % [param, val])
154
+ end
155
+ end
156
+ end
157
+
158
+ # Testing the root cause of #615. We should be using the fqname for the type, instead
159
+ # of just the short name.
160
+ def test_fully_qualified_types
161
+ parser = mkparser
162
+ klass = parser.newclass("one::two")
163
+
164
+ assert_equal("one::two", klass.classname, "Class did not get fully qualified class name")
165
+ end
166
+ end
@@ -3,7 +3,7 @@
3
3
  # Created by Luke A. Kanies on 2006-02-20.
4
4
  # Copyright (c) 2006. All rights reserved.
5
5
 
6
- $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
6
+ require File.dirname(__FILE__) + '/../../lib/puppettest'
7
7
 
8
8
  require 'puppettest'
9
9
  require 'puppettest/parsertesting'
@@ -17,25 +17,27 @@ class TestASTHostClass < Test::Unit::TestCase
17
17
  AST = Puppet::Parser::AST
18
18
 
19
19
  def test_hostclass
20
- interp, scope, source = mkclassframing
20
+ scope = mkscope
21
+ parser = scope.compile.parser
21
22
 
22
23
  # Create the class we're testing, first with no parent
23
- klass = interp.newclass "first",
24
+ klass = parser.newclass "first",
24
25
  :code => AST::ASTArray.new(
25
26
  :children => [resourcedef("file", "/tmp",
26
27
  "owner" => "nobody", "mode" => "755")]
27
28
  )
28
29
 
30
+ resource = Puppet::Parser::Resource.new(:type => "class", :title => "first", :scope => scope)
29
31
  assert_nothing_raised do
30
- klass.evaluate(:scope => scope)
32
+ klass.evaluate(:scope => scope, :resource => resource)
31
33
  end
32
34
 
33
35
  # Then try it again
34
36
  assert_nothing_raised do
35
- klass.evaluate(:scope => scope)
37
+ klass.evaluate(:scope => scope, :resource => resource)
36
38
  end
37
39
 
38
- assert(scope.class_scope(klass), "Class was not considered evaluated")
40
+ assert(scope.compile.class_scope(klass), "Class was not considered evaluated")
39
41
 
40
42
  tmp = scope.findresource("File[/tmp]")
41
43
  assert(tmp, "Could not find file /tmp")
@@ -43,13 +45,13 @@ class TestASTHostClass < Test::Unit::TestCase
43
45
  assert_equal("755", tmp[:mode])
44
46
 
45
47
  # Now create a couple more classes.
46
- newbase = interp.newclass "newbase",
48
+ newbase = parser.newclass "newbase",
47
49
  :code => AST::ASTArray.new(
48
50
  :children => [resourcedef("file", "/tmp/other",
49
51
  "owner" => "nobody", "mode" => "644")]
50
52
  )
51
53
 
52
- newsub = interp.newclass "newsub",
54
+ newsub = parser.newclass "newsub",
53
55
  :parent => "newbase",
54
56
  :code => AST::ASTArray.new(
55
57
  :children => [resourcedef("file", "/tmp/yay",
@@ -60,7 +62,7 @@ class TestASTHostClass < Test::Unit::TestCase
60
62
  )
61
63
 
62
64
  # Override a different variable in the top scope.
63
- moresub = interp.newclass "moresub",
65
+ moresub = parser.newclass "moresub",
64
66
  :parent => "newbase",
65
67
  :code => AST::ASTArray.new(
66
68
  :children => [resourceoverride("file", "/tmp/other",
@@ -68,15 +70,15 @@ class TestASTHostClass < Test::Unit::TestCase
68
70
  )
69
71
 
70
72
  assert_nothing_raised do
71
- newsub.evaluate(:scope => scope)
73
+ newsub.evaluate(:scope => scope, :resource => resource)
72
74
  end
73
75
 
74
76
  assert_nothing_raised do
75
- moresub.evaluate(:scope => scope)
77
+ moresub.evaluate(:scope => scope, :resource => resource)
76
78
  end
77
79
 
78
- assert(scope.class_scope(newbase), "Did not eval newbase")
79
- assert(scope.class_scope(newsub), "Did not eval newsub")
80
+ assert(scope.compile.class_scope(newbase), "Did not eval newbase")
81
+ assert(scope.compile.class_scope(newsub), "Did not eval newsub")
80
82
 
81
83
  yay = scope.findresource("File[/tmp/yay]")
82
84
  assert(yay, "Did not find file /tmp/yay")
@@ -92,19 +94,20 @@ class TestASTHostClass < Test::Unit::TestCase
92
94
  # Make sure that classes set their namespaces to themselves. This
93
95
  # way they start looking for definitions in their own namespace.
94
96
  def test_hostclass_namespace
95
- interp, scope, source = mkclassframing
97
+ scope = mkscope
98
+ parser = scope.compile.parser
96
99
 
97
100
  # Create a new class
98
101
  klass = nil
99
102
  assert_nothing_raised do
100
- klass = interp.newclass "funtest"
103
+ klass = parser.newclass "funtest"
101
104
  end
102
105
 
103
106
  # Now define a definition in that namespace
104
107
 
105
108
  define = nil
106
109
  assert_nothing_raised do
107
- define = interp.newdefine "funtest::mydefine"
110
+ define = parser.newdefine "funtest::mydefine"
108
111
  end
109
112
 
110
113
  assert_equal("funtest", klass.namespace,
@@ -113,7 +116,7 @@ class TestASTHostClass < Test::Unit::TestCase
113
116
  assert_equal("funtest", define.namespace,
114
117
  "component namespace was not set in the definition")
115
118
 
116
- newscope = klass.subscope(scope)
119
+ newscope = klass.subscope(scope, mock("resource"))
117
120
 
118
121
  assert_equal(["funtest"], newscope.namespaces,
119
122
  "Scope did not inherit namespace")
@@ -127,24 +130,27 @@ class TestASTHostClass < Test::Unit::TestCase
127
130
  # At the same time, make sure definitions in the parent class can be
128
131
  # found within the subclass (#517).
129
132
  def test_parent_scope_from_parentclass
130
- interp = mkinterp
133
+ scope = mkscope
134
+ parser = scope.compile.parser
131
135
 
132
- interp.newclass("base")
133
- fun = interp.newdefine("base::fun")
134
- interp.newclass("middle", :parent => "base")
135
- interp.newclass("sub", :parent => "middle")
136
- scope = mkscope :interp => interp
136
+ source = parser.newclass ""
137
+ parser.newclass("base")
138
+ fun = parser.newdefine("base::fun")
139
+ parser.newclass("middle", :parent => "base")
140
+ parser.newclass("sub", :parent => "middle")
141
+ scope = mkscope :parser => parser
137
142
 
138
143
  ret = nil
139
144
  assert_nothing_raised do
140
- ret = scope.evalclasses("sub")
145
+ ret = scope.compile.evaluate_classes(["sub"], scope)
141
146
  end
147
+ scope.compile.send(:evaluate_generators)
142
148
 
143
- subscope = scope.class_scope(scope.findclass("sub"))
149
+ subscope = scope.compile.class_scope(scope.findclass("sub"))
144
150
  assert(subscope, "could not find sub scope")
145
- mscope = scope.class_scope(scope.findclass("middle"))
151
+ mscope = scope.compile.class_scope(scope.findclass("middle"))
146
152
  assert(mscope, "could not find middle scope")
147
- pscope = scope.class_scope(scope.findclass("base"))
153
+ pscope = scope.compile.class_scope(scope.findclass("base"))
148
154
  assert(pscope, "could not find parent scope")
149
155
 
150
156
  assert(pscope == mscope.parent, "parent scope of middle was not set correctly")
@@ -158,6 +164,21 @@ class TestASTHostClass < Test::Unit::TestCase
158
164
  assert(result, "could not find parent-defined definition from sub")
159
165
  assert(fun == result, "found incorrect parent-defined definition from sub")
160
166
  end
161
- end
162
167
 
163
- # $Id: hostclass.rb 2730 2007-07-31 02:34:07Z luke $
168
+ # #795 - make sure the subclass's tags get set before we
169
+ # evaluate the parent class, so we can be sure that the parent
170
+ # class can switch based on the sub classes.
171
+ def test_tags_set_before_parent_is_evaluated
172
+ scope = mkscope
173
+ parser = scope.compile.parser
174
+ base = parser.newclass "base"
175
+ sub = parser.newclass "sub", :parent => "base"
176
+
177
+ base.expects(:safeevaluate).with do |args|
178
+ assert(scope.compile.catalog.tags.include?("sub"), "Did not tag with sub class name before evaluating base class")
179
+ base.evaluate(args)
180
+ true
181
+ end
182
+ sub.evaluate :scope => scope, :resource => scope.resource
183
+ end
184
+ end